Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/en/books/porters-handbook/makefiles/_index.po
18099 views
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
"POT-Creation-Date: 2026-02-22 15:58+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. type: YAML Front Matter: description
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1
#, no-wrap
msgid "Configuring the Makefile for FreeBSD Ports"
msgstr ""

#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1
#, no-wrap
msgid "Chapter 5. Configuring the Makefile"
msgstr ""

#. type: Title =
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:14
#, no-wrap
msgid "Configuring the Makefile"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:55
msgid ""
"Configuring the [.filename]#Makefile# is pretty simple, and again we suggest "
"looking at existing examples before starting.  Also, there is a "
"crossref:porting-samplem[porting-samplem,sample Makefile] in this handbook, "
"so take a look and please follow the ordering of variables and sections in "
"that template to make the port easier for others to read."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:57
msgid ""
"Consider these problems in sequence during the design of the new "
"[.filename]#Makefile#:"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:59
#, no-wrap
msgid "The Original Source"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:63
msgid ""
"Does it live in `DISTDIR` as a standard ``gzip``ped tarball named something "
"like [.filename]#foozolix-1.2.tar.gz#? If so, go on to the next step.  If "
"not, the distribution file format might require overriding one or more of "
"`DISTVERSION`, `DISTNAME`, `EXTRACT_CMD`, `EXTRACT_BEFORE_ARGS`, "
"`EXTRACT_AFTER_ARGS`, `EXTRACT_SUFX`, or `DISTFILES`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:66
msgid ""
"In the worst case, create a custom `do-extract` target to override the "
"default.  This is rarely, if ever, necessary."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:68
#, no-wrap
msgid "Naming"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:71
msgid ""
"The first part of the port's [.filename]#Makefile# names the port, describes "
"its version number, and lists it in the correct category."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:73
#, no-wrap
msgid "`PORTNAME`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:77
msgid ""
"Set `PORTNAME` to the base name of the software.  It is used as the base for "
"the FreeBSD package, and for crossref:makefiles[makefile-"
"distname,`DISTNAME`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:84
msgid ""
"The package name must be unique across the entire ports tree.  Make sure "
"that the `PORTNAME` is not already in use by an existing port, and that no "
"other port already has the same `PKGBASE`.  If the name has already been "
"used, add either crossref:makefiles[porting-pkgnameprefix-"
"suffix,`PKGNAMEPREFIX` or `PKGNAMESUFFIX`]."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:87
#, no-wrap
msgid "Versions, `DISTVERSION` _or_ `PORTVERSION`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:90
msgid "Set `DISTVERSION` to the version number of the software."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:94
msgid ""
"`PORTVERSION` is the version used for the FreeBSD package.  It will be "
"automatically derived from `DISTVERSION` to be compatible with FreeBSD's "
"package versioning scheme.  If the version contains _letters_, it might be "
"needed to set `PORTVERSION` and not `DISTVERSION`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:98
msgid "Only one of `PORTVERSION` and `DISTVERSION` can be set at a time."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:101
msgid ""
"From time to time, some software will use a version scheme that is not "
"compatible with how `DISTVERSION` translates in `PORTVERSION`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:106
msgid ""
"When updating a port, it is possible to use the `-t` argument of man:pkg-"
"version[8] to check if the new version is greater or lesser than before.  "
"See below on how to use man:pkg-version[8] to compare versions."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:109
#, no-wrap
msgid "Using man:pkg-version[8] to Compare Versions"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:113
msgid ""
"`pkg version -t` takes two versions as arguments, it will respond with `<`, "
"`=` or `>` if the first version is less, equal, or more than the second "
"version, respectively."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:128
#, no-wrap
msgid ""
"% pkg version -t 1.2 1.3\n"
" < <.>\n"
"% pkg version -t 1.2 1.2\n"
" = <.>\n"
"% pkg version -t 1.2 1.2.0\n"
" = <.>\n"
"% pkg version -t 1.2 1.2.p1\n"
" > <.>\n"
"% pkg version -t 1.2.a1 1.2.b1\n"
" < <.>\n"
"% pkg version -t 1.2 1.2p1\n"
" < <.>\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:131
msgid "`1.2` is before `1.3`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:132
msgid "`1.2` and `1.2` are equal as they have the same version."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:133
msgid "`1.2` and `1.2.0` are equal as nothing equals zero."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:134
msgid "`1.2` is after `1.2.p1` as `.p1`, think \"pre-release 1\"."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:135
msgid ""
"`1.2.a1` is before `1.2.b1`, think \"alpha\" and \"beta\", and `a` is before "
"`b`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:136
msgid ""
"`1.2` is before `1.2p1` as `2p1`, think \"2, patch level 1\" which is a "
"version after any `2.X` but before `3`."
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:141
msgid ""
"In here, the `a`, `b`, and `p` are used as if meaning \"alpha\", \"beta\" or "
"\"pre-release\" and \"patch level\", but they are only letters and are "
"sorted alphabetically, so any letter can be used, and they will be sorted "
"appropriately."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:145
#, no-wrap
msgid "Examples of `DISTVERSION` and the Derived `PORTVERSION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:149
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:499
#, no-wrap
msgid "DISTVERSION"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:151
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:500
#, no-wrap
msgid "PORTVERSION"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:152
#, no-wrap
msgid "0.7.1d"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:154
#, no-wrap
msgid "0.7.1.d"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:155
#, no-wrap
msgid "10Alpha3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:157
#, no-wrap
msgid "10.a3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:158
#, no-wrap
msgid "3Beta7-pre2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:160
#, no-wrap
msgid "3.b7.p2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:161
#, no-wrap
msgid "8:f_17"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:162
#, no-wrap
msgid "8f.17"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:165
#, no-wrap
msgid "Using `DISTVERSION`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:169
msgid ""
"When the version only contains numbers separated by dots, dashes or "
"underscores, use `DISTVERSION`."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:174
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"DISTVERSION=\t1.2-4\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:177
msgid "It will generate a `PORTVERSION` of `1.2.4`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:180
#, no-wrap
msgid "Using `DISTVERSION` When the Version Starts with a Letter or a Prefix"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:184
msgid ""
"When the version starts or ends with a letter, or a prefix or a suffix that "
"is not part of the version, use `DISTVERSIONPREFIX`, `DISTVERSION`, and "
"`DISTVERSIONSUFFIX`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:186
msgid "If the version is `v1.2-4`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:192
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"DISTVERSIONPREFIX=  v\n"
"DISTVERSION=\t1_2_4\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:196
msgid ""
"Some of the time, projects using GitHub will use their name in their "
"versions.  For example, the version could be `nekoto-1.2-4`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:202
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"DISTVERSIONPREFIX=  nekoto-\n"
"DISTVERSION=\t1.2_4\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:205
msgid ""
"Those projects also sometimes use some string at the end of the version, for "
"example, `1.2-4_RELEASE`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:211
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"DISTVERSION=\t1.2-4\n"
"DISTVERSIONSUFFIX=  _RELEASE\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:214
msgid "Or they do both, for example, `nekoto-1.2-4_RELEASE`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:221
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"DISTVERSIONPREFIX=  nekoto-\n"
"DISTVERSION=\t1.2-4\n"
"DISTVERSIONSUFFIX=  _RELEASE\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:224
msgid ""
"`DISTVERSIONPREFIX` and `DISTVERSIONSUFFIX` will not be used while "
"constructing `PORTVERSION`, but only used in `DISTNAME`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:226
msgid "All will generate a `PORTVERSION` of `1.2.4`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:229
#, no-wrap
msgid "Using `DISTVERSION` When the Version Contains Letters Meaning \"alpha\", \"beta\", or \"pre-release\""
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:233
msgid ""
"When the version contains numbers separated by dots, dashes or underscores, "
"and letters are used to mean \"alpha\", \"beta\" or \"pre-release\", which "
"is, before the version without the letters, use `DISTVERSION`."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:238
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"DISTVERSION=\t1.2-pre4\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:244
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"DISTVERSION=\t1.2p4\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:247
msgid ""
"Both will generate a `PORTVERSION` of `1.2.p4` which is before than 1.2. "
"man:pkg-version[8] can be used to check that fact:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:252
#, no-wrap
msgid ""
"% pkg version -t 1.2.p4 1.2\n"
"<\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:257
#, no-wrap
msgid "Not Using `DISTVERSION` When the Version Contains Letters Meaning \"Patch Level\""
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:261
msgid ""
"When the version contains letters that are not meant as \"alpha\", \"beta\", "
"or \"pre\", but more in a \"patch level\", and meaning after the version "
"without the letters, use `PORTVERSION`."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:266
#, no-wrap
msgid ""
"PORTNAME=   nekoto\n"
"PORTVERSION=\t1.2p4\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:270
msgid ""
"In this case, using `DISTVERSION` is not possible because it would generate "
"a version of `1.2.p4` which would be before `1.2` and not after.  man:pkg-"
"version[8] will verify this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:277
#, no-wrap
msgid ""
"% pkg version -t 1.2 1.2.p4\n"
"> <.>\n"
"% pkg version -t 1.2 1.2p4\n"
"< <.>\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:280
msgid "`1.2` is after `1.2.p4`, which is _wrong_ in this case."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:281
msgid "`1.2` is before `1.2p4`, which is what was needed."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:287
msgid ""
"For some more advanced examples of setting `PORTVERSION`, when the "
"software's versioning is really not compatible with FreeBSD's, or `DISTNAME` "
"when the distribution file does not contain the version itself, see "
"crossref:makefiles[makefile-distname, `DISTNAME`]."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:289
#, no-wrap
msgid "`PORTREVISION` and `PORTEPOCH`"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:292
#, no-wrap
msgid "`PORTREVISION`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:296
msgid ""
"`PORTREVISION` is a monotonically increasing value which is reset to 0 with "
"every increase of `DISTVERSION`, typically every time there is a new "
"official vendor release. If `PORTREVISION` is non-zero, the value is "
"appended to the package name.  Changes to `PORTREVISION` are used by "
"automated tools like man:pkg-version[8] to determine that a new package is "
"available."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:300
msgid ""
"`PORTREVISION` must be increased each time a change is made to the port that "
"changes the generated package in any way.  That includes changes that only "
"affect a package built with non-default crossref:makefiles[makefile-"
"options,options]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:302
msgid "Examples of when `PORTREVISION` must be bumped:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:304
msgid ""
"Addition of patches to correct security vulnerabilities, bugs, or to add new "
"functionality to the port."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:305
msgid ""
"Changes to the port [.filename]#Makefile# to enable or disable compile-time "
"options in the package."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:306
msgid ""
"Changes in the packing list or the install-time behavior of the package. For "
"example, a change to a script which generates initial data for the package, "
"like man:ssh[1] host keys."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:307
msgid ""
"Version bump of a port's shared library dependency (in this case, someone "
"trying to install the old package after installing a newer version of the "
"dependency will fail since it will look for the old libfoo.x instead of "
"libfoo.(x+1))."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:308
msgid ""
"Silent changes to the port distfile which have significant functional "
"differences. For example, changes to the distfile requiring a correction to "
"[.filename]#distinfo# with no corresponding change to `DISTVERSION`, where a "
"`diff -ru` of the old and new versions shows non-trivial changes to the code."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:309
msgid "Changes to `MAINTAINER`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:311
msgid "Examples of changes which do not require a `PORTREVISION` bump:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:313
msgid ""
"Style changes to the port skeleton with no functional change to what appears "
"in the resulting package."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:314
msgid ""
"Changes to `MASTER_SITES` or other functional changes to the port which do "
"not affect the resulting package."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:315
msgid ""
"Trivial patches to the distfile such as correction of typos, which are not "
"important enough that users of the package have to go to the trouble of "
"upgrading."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:316
msgid ""
"Build fixes which cause a package to become compilable where it was "
"previously failing. As long as the changes do not introduce any functional "
"change on any other platforms on which the port did previously build. Since "
"`PORTREVISION` reflects the content of the package, if the package was not "
"previously buildable then there is no need to increase `PORTREVISION` to "
"mark a change."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:321
msgid ""
"A rule of thumb is to decide whether a change committed to a port is "
"something which _some_ people would benefit from having.  Either because of "
"an enhancement, fix, or by virtue that the new package will actually work at "
"all.  Then weigh that against that fact that it will cause everyone who "
"regularly updates their ports tree to be compelled to update.  If yes, "
"`PORTREVISION` must be bumped."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:326
msgid ""
"People using binary packages will _never_ see the update if `PORTREVISION` "
"is not bumped.  Without increasing `PORTREVISION`, the package builders have "
"no way to detect the change and thus, will not rebuild the package."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:329
#, no-wrap
msgid "`PORTEPOCH`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:333
msgid ""
"From time to time a software vendor or FreeBSD porter will do something "
"silly and release a version of their software which is actually numerically "
"less than the previous version.  An example of this is a port which goes "
"from foo-20000801 to foo-1.0 (the former will be incorrectly treated as a "
"newer version since 20000801 is a numerically greater value than 1)."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:339
msgid ""
"The results of version number comparisons are not always obvious.  `pkg "
"version` (see man:pkg-version[8]) can be used to test the comparison of two "
"version number strings.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:344
#, no-wrap
msgid ""
"% pkg version -t 0.031 0.29\n"
">\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:347
msgid ""
"The `>` output indicates that version 0.031 is considered greater than "
"version 0.29, which may not have been obvious to the porter."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:354
msgid ""
"In situations such as this, `PORTEPOCH` must be increased.  If `PORTEPOCH` "
"is nonzero it is appended to the package name as described in section 0 "
"above.  `PORTEPOCH` must never be decreased or reset to zero, because that "
"would cause comparison to a package from an earlier epoch to fail.  For "
"example, the package would not be detected as out of date.  The new version "
"number, `1.0,1` in the above example, is still numerically less than the "
"previous version, 20000801, but the `,1` suffix is treated specially by "
"automated tools and found to be greater than the implied suffix `,0` on the "
"earlier package."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:357
msgid ""
"Dropping or resetting `PORTEPOCH` incorrectly leads to no end of grief.  If "
"the discussion above was not clear enough, please consult the {freebsd-"
"ports}."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:361
msgid ""
"It is expected that `PORTEPOCH` will not be used for the majority of ports, "
"and that sensible use of `DISTVERSION`, or that use `PORTVERSION` carefully, "
"can often preempt it becoming necessary if a future release of the software "
"changes the version structure.  However, care is needed by FreeBSD porters "
"when a vendor release is made without an official version number - such as a "
"code \"snapshot\" release.  The temptation is to label the release with the "
"release date, which will cause problems as in the example above when a new "
"\"official\" release is made."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:364
msgid ""
"For example, if a snapshot release is made on the date `20000917`, and the "
"previous version of the software was version `1.2`, do not use `20000917` "
"for `DISTVERSION`.  The correct way is a `DISTVERSION` of `1.2.20000917`, or "
"similar, so that the succeeding release, say `1.3`, is still a numerically "
"greater value."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:366
#, no-wrap
msgid "Example of `PORTREVISION` and `PORTEPOCH` Usage"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:369
msgid ""
"The `gtkmumble` port, version `0.10`, is committed to the ports collection:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:374
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.10\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:377
msgid "`PKGNAME` becomes `gtkmumble-0.10`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:380
msgid ""
"A security hole is discovered which requires a local FreeBSD patch.  "
"`PORTREVISION` is bumped accordingly."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:386
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.10\n"
"PORTREVISION=\t1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:389
msgid "`PKGNAME` becomes `gtkmumble-0.10_1`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:393
msgid ""
"A new version is released by the vendor, numbered `0.2` (it turns out the "
"author actually intended `0.10` to actually mean `0.1.0`, not \"what comes "
"after 0.9\" - oops, too late now).  Since the new minor version `2` is "
"numerically less than the previous version `10`, `PORTEPOCH` must be bumped "
"to manually force the new package to be detected as \"newer\".  Since it is "
"a new vendor release of the code, `PORTREVISION` is reset to 0 (or removed "
"from the [.filename]#Makefile#)."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:399
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.2\n"
"PORTEPOCH=\t1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:402
msgid "`PKGNAME` becomes `gtkmumble-0.2,1`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:405
msgid ""
"The next release is 0.3.  Since `PORTEPOCH` never decreases, the version "
"variables are now:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:411
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.3\n"
"PORTEPOCH=\t1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:414
msgid "`PKGNAME` becomes `gtkmumble-0.3,1`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:419
msgid ""
"If `PORTEPOCH` were reset to `0` with this upgrade, someone who had "
"installed the `gtkmumble-0.10_1` package would not detect the "
"`gtkmumble-0.3` package as newer, since `3` is still numerically less than "
"`10`.  Remember, this is the whole point of `PORTEPOCH` in the first place."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:422
#, no-wrap
msgid "`PKGNAMEPREFIX` and `PKGNAMESUFFIX`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:429
msgid ""
"Two optional variables, `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, are combined "
"with `PORTNAME` and `PORTVERSION` to form `PKGNAME` as `${PKGNAMEPREFIX}$"
"{PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}`.  Make sure this conforms to our "
"crossref:makefiles[porting-pkgname,guidelines for a good package name].  In "
"particular, the use of a hyphen (`-`) in `PORTVERSION` is _not_ allowed.  "
"Also, if the package name has the _language-_ or the _-compiled.specifics_ "
"part (see below), use `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, respectively.  Do "
"not make them part of `PORTNAME`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:431
#, no-wrap
msgid "Package Naming Conventions"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:435
msgid ""
"These are the conventions to follow when naming packages.  This is to make "
"the package directory easy to scan, as there are already thousands of "
"packages and users are going to turn away if they hurt their eyes!"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:437
msgid ""
"Package names take the form of [.filename]#language_region-name-"
"compiled.specifics-version.numbers#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:440
msgid ""
"The package name is defined as `${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-$"
"{PORTVERSION}`.  Make sure to set the variables to conform to that format."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:442
#, no-wrap
msgid "[.filename]#language_region-#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:446
msgid ""
"FreeBSD strives to support the native language of its users.  The _language-"
"_ part is a two letter abbreviation of the natural language defined by "
"ISO-639 when the port is specific to a certain language.  Examples are `ja` "
"for Japanese, `ru` for Russian, `vi` for Vietnamese, `zh` for Chinese, `ko` "
"for Korean and `de` for German."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:449
msgid ""
"If the port is specific to a certain region within the language area, add "
"the two letter country code as well.  Examples are `en_US` for US English "
"and `fr_CH` for Swiss French."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:451
msgid "The _language-_ part is set in `PKGNAMEPREFIX`."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:453
#, no-wrap
msgid "[.filename]#name#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:458
msgid ""
"Make sure that the port's name and version are clearly separated and placed "
"into `PORTNAME` and `DISTVERSION`.  The only reason for `PORTNAME` to "
"contain a version part is if the upstream distribution is really named that "
"way, as in the package:textproc/libxml2[] or package:japanese/kinput2-"
"freewnn[] ports.  Otherwise, `PORTNAME` cannot contain any version-specific "
"information.  It is quite normal for several ports to have the same "
"`PORTNAME`, as the package:www/apache*[] ports do; in that case, different "
"versions (and different index entries) are distinguished by `PKGNAMEPREFIX` "
"and `PKGNAMESUFFIX` values."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:461
msgid ""
"There is a tradition of naming `Perl 5` modules by prepending `p5-` and "
"converting the double-colon separator to a hyphen.  For example, the "
"`Data::Dumper` module becomes `p5-Data-Dumper`."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:462
#, no-wrap
msgid "[.filename]#-compiled.specifics#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:467
msgid ""
"If the port can be built with different crossref:makefiles[makefile-"
"masterdir,hardcoded defaults] (usually part of the directory name in a "
"family of ports), the _-compiled.specifics_ part states the compiled-in "
"defaults.  The hyphen is optional.  Examples are paper size and font units."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:469
msgid "The _-compiled.specifics_ part is set in `PKGNAMESUFFIX`."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:471
#, no-wrap
msgid "[.filename]#-version.numbers#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:477
msgid ""
"The version string follows a dash (`-`) and is a period-separated list of "
"integers and single lowercase alphabetics.  In particular, it is not "
"permissible to have another dash inside the version string.  The only "
"exception is the string `pl` (meaning \"patchlevel\"), which can be used "
"_only_ when there are no major and minor version numbers in the software.  "
"If the software version has strings like \"alpha\", \"beta\", \"rc\", or "
"\"pre\", take the first letter and put it immediately after a period.  If "
"the version string continues after those names, the numbers follow the "
"single alphabet without an extra period between them (for example, `1.0b2`)."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:481
msgid ""
"The idea is to make it easier to sort ports by looking at the version "
"string.  In particular, make sure version number components are always "
"delimited by a period, and if the date is part of the string, use the "
"`d__yyyy.mm.dd__` format, not `_dd.mm.yyyy_` or the non-Y2K compliant "
"`_yy.mm.dd_` format.  It is important to prefix the version with a letter, "
"here `d` (for date), in case a release with an actual version number is "
"made, which would be numerically less than `_yyyy_`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:487
msgid ""
"Package name must be unique among all of the ports tree, check that there is "
"not already a port with the same `PORTNAME` and if there is add one of "
"crossref:makefiles[porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` or "
"`PKGNAMESUFFIX`]."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:490
msgid ""
"Here are some (real) examples on how to convert the name as called by the "
"software authors to a suitable package name, for each line, only one of "
"`DISTVERSION` or `PORTVERSION` is set in, depending on which would be used "
"in the port's [.filename]#Makefile#:"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:491
#, no-wrap
msgid "Package Naming Examples"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:495
#, no-wrap
msgid "Distribution Name"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:496
#, no-wrap
msgid "PKGNAMEPREFIX"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:497
#, no-wrap
msgid "PORTNAME"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:498
#, no-wrap
msgid "PKGNAMESUFFIX"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:502
#, no-wrap
msgid "Reason or comment"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:503
#, no-wrap
msgid "mule-2.2.2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:504
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:506
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:512
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:520
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:522
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:528
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:530
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:536
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:538
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:544
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:546
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:552
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:554
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:560
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:562
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:568
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:570
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:576
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:578
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:586
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:592
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:600
#, no-wrap
msgid "(empty)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:505
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:513
#, no-wrap
msgid "mule"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:507
#, no-wrap
msgid "2.2.2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:510
#, no-wrap
msgid "No changes required"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:511
#, no-wrap
msgid "mule-1.0.1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:514
#, no-wrap
msgid "1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:515
#, no-wrap
msgid "1.0.1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:518
#, no-wrap
msgid "This is version 1 of mule, and version 2 already exists"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:519
#, no-wrap
msgid "EmiClock-1.0.2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:521
#, no-wrap
msgid "emiclock"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:523
#, no-wrap
msgid "1.0.2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:526
#, no-wrap
msgid "No uppercase names for single programs"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:527
#, no-wrap
msgid "rdist-1.3alpha"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:529
#, no-wrap
msgid "rdist"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:531
#, no-wrap
msgid "1.3alpha"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:534
#, no-wrap
msgid "Version will be `1.3.a`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:535
#, no-wrap
msgid "es-0.9-beta1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:537
#, no-wrap
msgid "es"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:539
#, no-wrap
msgid "0.9-beta1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:542
#, no-wrap
msgid "Version will be `0.9.b1`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:543
#, no-wrap
msgid "mailman-2.0rc3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:545
#, no-wrap
msgid "mailman"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:547
#, no-wrap
msgid "2.0rc3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:550
#, no-wrap
msgid "Version will be `2.0.r3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:551
#, no-wrap
msgid "v3.3beta021.src"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:553
#, no-wrap
msgid "tiff"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:556
#, no-wrap
msgid "3.3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:558
#, no-wrap
msgid "What the heck was that anyway?"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:559
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:561
#, no-wrap
msgid "tvtwm"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:564
#, no-wrap
msgid "p11"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:566
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:574
#, no-wrap
msgid "No version in the filename, use what upstream says it is"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:567
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:569
#, no-wrap
msgid "piewm"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:571
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:603
#, no-wrap
msgid "1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:575
#, no-wrap
msgid "xvgr-2.10pl1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:577
#, no-wrap
msgid "xvgr"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:580
#, no-wrap
msgid "2.10.pl1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:582
#, no-wrap
msgid "In that case, `pl1` means patch level, so using DISTVERSION is not possible."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:583
#, no-wrap
msgid "gawk-2.15.6"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:584
#, no-wrap
msgid "ja-"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:585
#, no-wrap
msgid "gawk"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:587
#, no-wrap
msgid "2.15.6"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:590
#, no-wrap
msgid "Japanese language version"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:591
#, no-wrap
msgid "psutils-1.13"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:593
#, no-wrap
msgid "psutils"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:594
#, no-wrap
msgid "-letter"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:595
#, no-wrap
msgid "1.13"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:598
#, no-wrap
msgid "Paper size hardcoded at package build time"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:599
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:601
#, no-wrap
msgid "pkfonts"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:602
#, no-wrap
msgid "300"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:605
#, no-wrap
msgid "Package for 300dpi fonts"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:609
msgid ""
"If there is absolutely no trace of version information in the original "
"source and it is unlikely that the original author will ever release another "
"version, just set the version string to `1.0` (like the `piewm` example "
"above).  Otherwise, ask the original author or use the date string the "
"source file was released on (`d__yyyy.mm.dd__`, or `d__yyyymmdd__`) as the "
"version."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:614
msgid ""
"Use any letter.  Here, `d` here stands for date, if the source is a Git "
"repository, `g` followed by the commit date is commonly used, using `s` for "
"snapshot is also common."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:617
#, no-wrap
msgid "Categorization"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:620
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4870
#, no-wrap
msgid "`CATEGORIES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:626
msgid ""
"When a package is created, it is put under [.filename]#/usr/ports/packages/"
"All# and links are made from one or more subdirectories of [.filename]#/usr/"
"ports/packages#.  The names of these subdirectories are specified by the "
"variable `CATEGORIES`.  It is intended to make life easier for the user when "
"he is wading through the pile of packages on the FTP site or the CDROM.  "
"Please take a look at the crossref:makefiles[porting-categories,current list "
"of categories] and pick the ones that are suitable for the port."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:630
msgid ""
"This list also determines where in the ports tree the port is imported.  If "
"there is more than one category here, the port files must be put in the "
"subdirectory with the name of the first category.  See "
"crossref:makefiles[choosing-categories,below] for more discussion about how "
"to pick the right categories."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:632
#, no-wrap
msgid "Current List of Categories"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:637
msgid ""
"Here is the current list of port categories.  Those marked with an asterisk "
"(`*`) are _virtual_ categories-those that do not have a corresponding "
"subdirectory in the ports tree.  They are only used as secondary categories, "
"and only for search purposes."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:641
msgid ""
"For non-virtual categories, there is a one-line description in `COMMENT` in "
"that subdirectory's [.filename]#Makefile#."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:647
#, no-wrap
msgid "Category"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:648
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1481
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1890
#, no-wrap
msgid "Description"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:650
#, no-wrap
msgid "Notes"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:651
#, no-wrap
msgid "[.filename]#accessibility#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:652
#, no-wrap
msgid "Ports to help disabled users."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:655
#, no-wrap
msgid "[.filename]#afterstep#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:656
#, no-wrap
msgid "Ports to support the http://www.afterstep.org/[AfterStep] window manager."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:659
#, no-wrap
msgid "[.filename]#arabic#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:660
#, no-wrap
msgid "Arabic language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:663
#, no-wrap
msgid "[.filename]#archivers#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:664
#, no-wrap
msgid "Archiving tools."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:667
#, no-wrap
msgid "[.filename]#astro#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:668
#, no-wrap
msgid "Astronomical ports."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:671
#, no-wrap
msgid "[.filename]#audio#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:672
#, no-wrap
msgid "Sound support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:675
#, no-wrap
msgid "[.filename]#benchmarks#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:676
#, no-wrap
msgid "Benchmarking utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:679
#, no-wrap
msgid "[.filename]#biology#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:680
#, no-wrap
msgid "Biology-related software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:683
#, no-wrap
msgid "[.filename]#budgie#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:684
#, no-wrap
msgid "Software related to the Budgie desktop environment."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:687
#, no-wrap
msgid "[.filename]#cad#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:688
#, no-wrap
msgid "Computer aided design tools."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:691
#, no-wrap
msgid "[.filename]#chinese#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:692
#, no-wrap
msgid "Chinese language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:695
#, no-wrap
msgid "[.filename]#comms#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:696
#, no-wrap
msgid "Communication software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:698
#, no-wrap
msgid "Mostly software to talk to the serial port."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:699
#, no-wrap
msgid "[.filename]#converters#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:700
#, no-wrap
msgid "Character code converters."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:703
#, no-wrap
msgid "[.filename]#databases#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:704
#, no-wrap
msgid "Databases."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:707
#, no-wrap
msgid "[.filename]#deskutils#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:708
#, no-wrap
msgid "Things that used to be on the desktop before computers were invented."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:711
#, no-wrap
msgid "[.filename]#devel#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:712
#, no-wrap
msgid "Development utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:714
#, no-wrap
msgid "Do not put libraries here just because they are libraries. They should _not_ be in this category unless they truly do not belong anywhere else."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:715
#, no-wrap
msgid "[.filename]#dns#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:716
#, no-wrap
msgid "DNS-related software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:719
#, no-wrap
msgid "[.filename]#docs#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:720
#, no-wrap
msgid "Meta-ports for FreeBSD documentation."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:723
#, no-wrap
msgid "[.filename]#editors#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:724
#, no-wrap
msgid "General editors."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:726
#, no-wrap
msgid "Specialized editors go in the section for those tools. For example, a mathematical-formula editor will go in [.filename]#math#, and have [.filename]#editors# as a second category."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:727
#, no-wrap
msgid "[.filename]#education#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:728
#, no-wrap
msgid "Education-related software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:730
#, no-wrap
msgid "This includes applications, utilities, or games primarily or substantially designed to help the user learn a specific topic or study in general. It also includes course-writing applications, course-delivery applications, and classroom or school management applications"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:731
#, no-wrap
msgid "[.filename]#elisp#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:732
#, no-wrap
msgid "Emacs-lisp ports."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:735
#, no-wrap
msgid "[.filename]#emulators#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:736
#, no-wrap
msgid "Emulators for other operating systems."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:738
#, no-wrap
msgid "Terminal emulators do _not_ belong here. X-based ones go to [.filename]#x11# and text-based ones to either [.filename]#comms# or [.filename]#misc#, depending on the exact functionality."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:739
#, no-wrap
msgid "[.filename]#enlightenment#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:740
#, no-wrap
msgid "Ports related to the Enlightenment window manager."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:743
#, no-wrap
msgid "[.filename]#filesystems#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:744
#, no-wrap
msgid "File systems and related utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:747
#, no-wrap
msgid "[.filename]#finance#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:748
#, no-wrap
msgid "Monetary, financial and related applications."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:751
#, no-wrap
msgid "[.filename]#french#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:752
#, no-wrap
msgid "French language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:755
#, no-wrap
msgid "[.filename]#ftp#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:756
#, no-wrap
msgid "FTP client and server utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:758
#, no-wrap
msgid "If the port speaks both FTP and HTTP, put it in [.filename]#ftp# with a secondary category of [.filename]#www#."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:759
#, no-wrap
msgid "[.filename]#games#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:760
#, no-wrap
msgid "Games."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:763
#, no-wrap
msgid "[.filename]#geography#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:764
#, no-wrap
msgid "Geography-related software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:767
#, no-wrap
msgid "[.filename]#german#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:768
#, no-wrap
msgid "German language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:771
#, no-wrap
msgid "[.filename]#gnome#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:772
#, no-wrap
msgid "Ports from the https://www.gnome.org/[GNOME] Project."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:775
#, no-wrap
msgid "[.filename]#gnustep#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:776
#, no-wrap
msgid "Software related to the GNUstep desktop environment."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:779
#, no-wrap
msgid "[.filename]#graphics#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:780
#, no-wrap
msgid "Graphics utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:783
#, no-wrap
msgid "[.filename]#hamradio#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:784
#, no-wrap
msgid "Software for amateur radio."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:787
#, no-wrap
msgid "[.filename]#haskell#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:788
#, no-wrap
msgid "Software related to the Haskell language."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:791
#, no-wrap
msgid "[.filename]#hebrew#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:792
#, no-wrap
msgid "Hebrew language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:795
#, no-wrap
msgid "[.filename]#hungarian#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:796
#, no-wrap
msgid "Hungarian language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:799
#, no-wrap
msgid "[.filename]#irc#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:800
#, no-wrap
msgid "Internet Relay Chat utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:803
#, no-wrap
msgid "[.filename]#japanese#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:804
#, no-wrap
msgid "Japanese language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:807
#, no-wrap
msgid "[.filename]#java#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:808
#, no-wrap
msgid "Software related to the Java(TM) language."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:810
#, no-wrap
msgid "The [.filename]#java# category must not be the only one for a port. Save for ports directly related to the Java language, porters are also encouraged not to use [.filename]#java# as the main category of a port."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:811
#, no-wrap
msgid "[.filename]#kde#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:812
#, no-wrap
msgid "Ports from the https://www.kde.org/[KDE] Project (generic)."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:815
#, no-wrap
msgid "[.filename]#kde-applications#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:816
#, no-wrap
msgid "Applications from the https://www.kde.org/[KDE] Project."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:819
#, no-wrap
msgid "[.filename]#kde-frameworks#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:820
#, no-wrap
msgid "Add-on libraries from the https://www.kde.org/[KDE] Project for programming with Qt."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:823
#, no-wrap
msgid "[.filename]#kde-plasma#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:824
#, no-wrap
msgid "Desktop from the https://www.kde.org/[KDE] Project."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:827
#, no-wrap
msgid "[.filename]#kld#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:828
#, no-wrap
msgid "Kernel loadable modules."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:831
#, no-wrap
msgid "[.filename]#korean#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:832
#, no-wrap
msgid "Korean language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:835
#, no-wrap
msgid "[.filename]#lang#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:836
#, no-wrap
msgid "Programming languages."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:839
#, no-wrap
msgid "[.filename]#linux#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:840
#, no-wrap
msgid "Linux applications and support utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:843
#, no-wrap
msgid "[.filename]#lisp#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:844
#, no-wrap
msgid "Software related to the Lisp language."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:847
#, no-wrap
msgid "[.filename]#mail#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:848
#, no-wrap
msgid "Mail software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:851
#, no-wrap
msgid "[.filename]#mate#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:852
#, no-wrap
msgid "Ports related to the MATE desktop environment, a fork of GNOME 2."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:855
#, no-wrap
msgid "[.filename]#math#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:856
#, no-wrap
msgid "Numerical computation software and other utilities for mathematics."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:859
#, no-wrap
msgid "[.filename]#mbone#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:860
#, no-wrap
msgid "MBone applications."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:863
#, no-wrap
msgid "[.filename]#misc#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:864
#, no-wrap
msgid "Miscellaneous utilities"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:866
#, no-wrap
msgid "Things that do not belong anywhere else. If at all possible, try to find a better category for the port than `misc`, as ports tend to be overlooked in here."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:867
#, no-wrap
msgid "[.filename]#multimedia#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:868
#, no-wrap
msgid "Multimedia software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:871
#, no-wrap
msgid "[.filename]#net#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:872
#, no-wrap
msgid "Miscellaneous networking software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:875
#, no-wrap
msgid "[.filename]#net-im#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:876
#, no-wrap
msgid "Instant messaging software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:879
#, no-wrap
msgid "[.filename]#net-mgmt#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:880
#, no-wrap
msgid "Networking management software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:883
#, no-wrap
msgid "[.filename]#net-p2p#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:884
#, no-wrap
msgid "Peer to peer network applications."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:887
#, no-wrap
msgid "[.filename]#net-vpn#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:888
#, no-wrap
msgid "Virtual Private Network applications."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:891
#, no-wrap
msgid "[.filename]#news#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:892
#, no-wrap
msgid "USENET news software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:895
#, no-wrap
msgid "[.filename]#parallel#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:896
#, no-wrap
msgid "Applications dealing with parallelism in computing."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:899
#, no-wrap
msgid "[.filename]#pear#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:900
#, no-wrap
msgid "Ports related to the Pear PHP framework."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:903
#, no-wrap
msgid "[.filename]#perl5#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:904
#, no-wrap
msgid "Ports that require Perl version 5 to run."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:907
#, no-wrap
msgid "[.filename]#plan9#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:908
#, no-wrap
msgid "Various programs from https://9p.io/wiki/plan9/Download/index.html[Plan9]."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:911
#, no-wrap
msgid "[.filename]#polish#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:912
#, no-wrap
msgid "Polish language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:915
#, no-wrap
msgid "[.filename]#ports-mgmt#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:916
#, no-wrap
msgid "Ports for managing, installing and developing FreeBSD ports and packages."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:919
#, no-wrap
msgid "[.filename]#portuguese#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:920
#, no-wrap
msgid "Portuguese language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:923
#, no-wrap
msgid "[.filename]#print#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:924
#, no-wrap
msgid "Printing software."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:926
#, no-wrap
msgid "Desktop publishing tools (previewers, etc.) belong here too."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:927
#, no-wrap
msgid "[.filename]#python#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:928
#, no-wrap
msgid "Software related to the https://www.python.org/[Python] language."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:931
#, no-wrap
msgid "[.filename]#ruby#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:932
#, no-wrap
msgid "Software related to the https://www.ruby-lang.org/[Ruby] language."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:935
#, no-wrap
msgid "[.filename]#rubygems#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:936
#, no-wrap
msgid "Ports of https://www.rubygems.org/[RubyGems] packages."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:939
#, no-wrap
msgid "[.filename]#russian#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:940
#, no-wrap
msgid "Russian language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:943
#, no-wrap
msgid "[.filename]#scheme#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:944
#, no-wrap
msgid "Software related to the Scheme language."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:947
#, no-wrap
msgid "[.filename]#science#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:948
#, no-wrap
msgid "Scientific ports that do not fit into other categories such as [.filename]#astro#, [.filename]#biology# and [.filename]#math#."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:951
#, no-wrap
msgid "[.filename]#security#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:952
#, no-wrap
msgid "Security utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:955
#, no-wrap
msgid "[.filename]#shells#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:956
#, no-wrap
msgid "Command line shells."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:959
#, no-wrap
msgid "[.filename]#spanish#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:960
#, no-wrap
msgid "Spanish language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:963
#, no-wrap
msgid "[.filename]#sysutils#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:964
#, no-wrap
msgid "System utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:967
#, no-wrap
msgid "[.filename]#tcl#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:968
#, no-wrap
msgid "Ports that use Tcl to run."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:971
#, no-wrap
msgid "[.filename]#textproc#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:972
#, no-wrap
msgid "Text processing utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:974
#, no-wrap
msgid "It does not include desktop publishing tools, which go to [.filename]#print#."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:975
#, no-wrap
msgid "[.filename]#tk#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:976
#, no-wrap
msgid "Ports that use Tk to run."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:979
#, no-wrap
msgid "[.filename]#ukrainian#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:980
#, no-wrap
msgid "Ukrainian language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:983
#, no-wrap
msgid "[.filename]#vietnamese#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:984
#, no-wrap
msgid "Vietnamese language support."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:987
#, no-wrap
msgid "[.filename]#wayland#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:988
#, no-wrap
msgid "Ports to support the Wayland display server."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:991
#, no-wrap
msgid "[.filename]#windowmaker#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:992
#, no-wrap
msgid "Ports to support the Window Maker window manager."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:995
#, no-wrap
msgid "[.filename]#www#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:996
#, no-wrap
msgid "Software related to the World Wide Web."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:998
#, no-wrap
msgid "HTML language support belongs here too."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:999
#, no-wrap
msgid "[.filename]#x11#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1000
#, no-wrap
msgid "The X Window System and friends."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1002
#, no-wrap
msgid "This category is only for software that directly supports the window system. Do not put regular X applications here. Most of them go into other [.filename]#x11-*# categories (see below)."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1003
#, no-wrap
msgid "[.filename]#x11-clocks#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1004
#, no-wrap
msgid "X11 clocks."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1007
#, no-wrap
msgid "[.filename]#x11-drivers#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1008
#, no-wrap
msgid "X11 drivers."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1011
#, no-wrap
msgid "[.filename]#x11-fm#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1012
#, no-wrap
msgid "X11 file managers."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1015
#, no-wrap
msgid "[.filename]#x11-fonts#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1016
#, no-wrap
msgid "X11 fonts and font utilities."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1019
#, no-wrap
msgid "[.filename]#x11-servers#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1020
#, no-wrap
msgid "X11 servers."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1023
#, no-wrap
msgid "[.filename]#x11-themes#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1024
#, no-wrap
msgid "X11 themes."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1027
#, no-wrap
msgid "[.filename]#x11-toolkits#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1028
#, no-wrap
msgid "X11 toolkits."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1031
#, no-wrap
msgid "[.filename]#x11-wm#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1032
#, no-wrap
msgid "X11 window managers."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1035
#, no-wrap
msgid "[.filename]#xfce#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1036
#, no-wrap
msgid "Ports related to the https://www.xfce.org/[Xfce] desktop environment."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1039
#, no-wrap
msgid "[.filename]#zope#`*`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1040
#, no-wrap
msgid "https://www.zope.org/[Zope] support."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1044
#, no-wrap
msgid "Choosing the Right Category"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1049
msgid ""
"As many of the categories overlap, choosing which of the categories will be "
"the primary category of the port can be tedious.  There are several rules "
"that govern this issue.  Here is the list of priorities, in decreasing order "
"of precedence:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1052
msgid ""
"The first category must be a physical category (see "
"crossref:makefiles[porting-categories,above]). This is necessary to make the "
"packaging work. Virtual categories and physical categories may be intermixed "
"after that."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1053
msgid ""
"Language specific categories always come first. For example, if the port "
"installs Japanese X11 fonts, then the `CATEGORIES` line would read "
"[.filename]#japanese x11-fonts#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1054
msgid ""
"Specific categories are listed before less-specific ones. For instance, an "
"HTML editor is listed as [.filename]#www editors#, not the other way around. "
"Also, do not list [.filename]#net# when the port belongs to any of "
"[.filename]#irc#, [.filename]#mail#, [.filename]#news#, "
"[.filename]#security#, or [.filename]#www#, as [.filename]#net# is included "
"implicitly."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1055
msgid ""
"[.filename]#x11# is used as a secondary category only when the primary "
"category is a natural language. In particular, do not put [.filename]#x11# "
"in the category line for X applications."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1056
msgid ""
"Emacs modes are placed in the same ports category as the application "
"supported by the mode, not in [.filename]#editors#. For example, an Emacs "
"mode to edit source files of some programming language goes into "
"[.filename]#lang#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1057
msgid ""
"Ports installing loadable kernel modules also have the virtual category "
"[.filename]#kld# in their `CATEGORIES` line. This is one of the things "
"handled automatically by adding `USES=kmod`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1058
msgid ""
"[.filename]#misc# does not appear with any other non-virtual category. If "
"there is `misc` with something else in `CATEGORIES`, that means `misc` can "
"safely be deleted and the port placed only in the other subdirectory."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1059
msgid ""
"If the port truly does not belong anywhere else, put it in [.filename]#misc#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1063
msgid ""
"If the category is not clearly defined, please put a comment to that effect "
"in the https://bugs.freebsd.org/submit/[port submission] in the bug database "
"so we can discuss it before we import it.  As a committer, send a note to "
"the {freebsd-ports} so we can discuss it first.  Too often, new ports are "
"imported to the wrong category only to be moved right away."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1065
#, no-wrap
msgid "Proposing a New Category"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1070
msgid ""
"As the Ports Collection has grown over time, various new categories have "
"been introduced.  New categories can either be _virtual_ categories-those "
"that do not have a corresponding subdirectory in the ports tree- or "
"_physical_ categories-those that do. This section discusses the issues "
"involved in creating a new physical category.  Read it thoroughly before "
"proposing a new one."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1072
msgid ""
"Our existing practice has been to avoid creating a new physical category "
"unless either a large number of ports would logically belong to it, or the "
"ports that would belong to it are a logically distinct group that is of "
"limited general interest (for instance, categories related to spoken human "
"languages), or preferably both."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1076
msgid ""
"The rationale for this is that such a change creates a extref:{committers-"
"guide}[fair amount of work, ports] for both the committers and also for all "
"users who track changes to the Ports Collection.  In addition, proposed "
"category changes just naturally seem to attract controversy.  (Perhaps this "
"is because there is no clear consensus on when a category is \"too big\", "
"nor whether categories should lend themselves to browsing (and thus what "
"number of categories would be an ideal number), and so forth.)"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1078
msgid "Here is the procedure:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1082
msgid ""
"Propose the new category on {freebsd-ports}. Include a detailed rationale "
"for the new category, including why the existing categories are not"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1085
msgid ""
"sufficient, and the list of existing ports proposed to move. (If there are "
"new ports pending in Bugzilla that would fit this category, list them too.) "
"Indicating that the updater is also the maintainer or submitter may be "
"helpful to the case."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1086
msgid "Participate in the discussion."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1087
msgid ""
"If it seems that there is support for the idea, file a PR which includes "
"both the rationale and the list of existing ports that need to be moved. "
"Ideally, this PR would also include these patches:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1089
msgid "[.filename]##Makefile##s for the new ports once they are repocopied"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1090
msgid "[.filename]#Makefile# for the new category"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1091
msgid "[.filename]#Makefile# for the old ports' categories"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1092
msgid "[.filename]##Makefile##s for ports that depend on the old ports"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1093
msgid ""
"(for extra credit, include the other files that have to change, as per the "
"procedure in the Committer's Guide.)"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1095
msgid ""
"Since it affects the ports infrastructure and involves moving and patching "
"many ports but also possibly running regression tests on the build cluster, "
"assign the PR to the {portmgr}."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1096
msgid ""
"If that PR is approved, a committer will need to follow the rest of the "
"procedure that is extref:{committers-guide}[outlined in the Committer's "
"Guide, ports]."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1099
msgid ""
"Proposing a new virtual category is similar to the above but much less "
"involved, since no ports will actually have to move.  In this case, the only "
"patches to include in the PR would be those to add the new category to "
"`CATEGORIES` of the affected ports."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1101
#, no-wrap
msgid "Proposing Reorganizing All the Categories"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1107
msgid ""
"Occasionally someone proposes reorganizing the categories with either a 2-"
"level structure, or some other kind of keyword structure.  To date, nothing "
"has come of any of these proposals because, while they are very easy to "
"make, the effort involved to retrofit the entire existing ports collection "
"with any kind of reorganization is daunting to say the very least.  Please "
"read the history of these proposals in the mailing list archives before "
"posting this idea.  Furthermore, be prepared to be challenged to offer a "
"working prototype."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1109
#, no-wrap
msgid "The Distribution Files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1112
msgid ""
"The second part of the [.filename]#Makefile# describes the files that must "
"be downloaded to build the port, and where they can be downloaded."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1114
#, no-wrap
msgid "`DISTNAME`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1121
msgid ""
"`DISTNAME` is the name of the port as called by the authors of the "
"software.  `DISTNAME` defaults to `${PORTNAME}-${DISTVERSIONPREFIX}$"
"{DISTVERSION}${DISTVERSIONSUFFIX}`, and if not set, `DISTVERSION` defaults "
"to `${PORTVERSION}` so override `DISTNAME` only if necessary.  `DISTNAME` is "
"only used in two places.  First, the distribution file list (`DISTFILES`) "
"defaults to `${DISTNAME}${EXTRACT_SUFX}`.  Second, the distribution file is "
"expected to extract into a subdirectory named `WRKSRC`, which defaults to "
"[.filename]#work/${DISTNAME}#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1124
msgid ""
"Some vendor's distribution names which do not fit into the `${PORTNAME}-$"
"{PORTVERSION}`-scheme can be handled automatically by setting "
"`DISTVERSIONPREFIX`, `DISTVERSION`, and `DISTVERSIONSUFFIX`.  `PORTVERSION` "
"will be derived from `DISTVERSION` automatically."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1129
msgid ""
"Only one of `PORTVERSION` and `DISTVERSION` can be set at a time.  If "
"`DISTVERSION` does not derive a correct `PORTVERSION`, do not use "
"`DISTVERSION`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1133
msgid ""
"If the upstream version scheme can be derived into a ports-compatible "
"version scheme, set some variable to the upstream version, _do not_ use "
"`DISTVERSION` as the variable name.  Set `PORTVERSION` to the computed "
"version based on the created variable and set `DISTNAME` accordingly."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1135
msgid ""
"If the upstream version scheme cannot easily be coerced into a ports-"
"compatible value, set `PORTVERSION` to a sensible value, and set `DISTNAME` "
"with `PORTNAME` with the verbatim upstream version."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1137
#, no-wrap
msgid "Deriving `PORTVERSION` Manually"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1143
msgid ""
"BIND9 uses a version scheme that is not compatible with the ports versions "
"(it has `-` in its versions) and cannot be derived using `DISTVERSION` "
"because after the 9.9.9 release, it will release a \"patchlevels\" in the "
"form of `9.9.9-P1`.  DISTVERSION would translate that into `9.9.9.p1`, "
"which, in the ports versioning scheme means 9.9.9 pre-release 1, which is "
"before 9.9.9 and not after.  So `PORTVERSION` is manually derived from an "
"`ISCVERSION` variable to output `9.9.9p1`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1145
msgid ""
"The order into which the ports framework, and pkg, will sort versions is "
"checked using the `-t` argument of man:pkg-version[8]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1152
#, no-wrap
msgid ""
"% pkg version -t 9.9.9 9.9.9.p1\n"
"> <.>\n"
"% pkg version -t 9.9.9 9.9.9p1\n"
"< <.>\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1155
msgid ""
"The `>` sign means that the first argument passed to `-t` is greater than "
"the second argument. `9.9.9` is after `9.9.9.p1`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1156
msgid ""
"The `<` sign means that the first argument passed to `-t` is less than the "
"second argument. `9.9.9` is before `9.9.9p1`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1158
msgid ""
"In the port [.filename]#Makefile#, for example package:dns/bind99[], it is "
"achieved by:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1167
#, no-wrap
msgid ""
"PORTNAME=\tbind\n"
"PORTVERSION=\t${ISCVERSION:S/-P/P/:S/b/.b/:S/a/.a/:S/rc/.rc/}\n"
"CATEGORIES=\tdns net\n"
"MASTER_SITES=\tISC/bind9/${ISCVERSION}\n"
"PKGNAMESUFFIX=\t99\n"
"DISTNAME=\t${PORTNAME}-${ISCVERSION}\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1171
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\n"
"COMMENT=\tBIND DNS suite with updated DNSSEC and DNS64\n"
"WWW=\t\thttps://www.isc.org/bind/\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1173
#, no-wrap
msgid "LICENSE=\tISCL\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1176
#, no-wrap
msgid ""
"# ISC releases things like 9.8.0-P1 or 9.8.1rc1, which our versioning does not like\n"
"ISCVERSION=\t9.9.9-P6\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1182
msgid ""
"Define upstream version in `ISCVERSION`, with a comment saying _why_ it is "
"needed.  Use `ISCVERSION` to get a ports-compatible `PORTVERSION`.  Use "
"`ISCVERSION` directly to get the correct URL for fetching the distribution "
"file.  Use `ISCVERSION` directly to name the distribution file."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1185
#, no-wrap
msgid "Derive `DISTNAME` from `PORTVERSION`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1189
msgid ""
"From time to time, the distribution file name has little or no relation to "
"the version of the software."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1191
msgid ""
"In package:comms/kermit[], only the last element of the version is present "
"in the distribution file:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1199
#, no-wrap
msgid ""
"PORTNAME=\tkermit\n"
"PORTVERSION=\t9.0.304\n"
"CATEGORIES=\tcomms ftp net\n"
"MASTER_SITES=\tftp://ftp.kermitproject.org/kermit/test/tar/\n"
"DISTNAME=\tcku${PORTVERSION:E}-dev20\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1203
msgid ""
"The `:E` man:make[1] modifier returns the suffix of the variable, in this "
"case, `304`.  The distribution file is correctly generated as `cku304-"
"dev20.tar.gz`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1206
#, no-wrap
msgid "Exotic Case 1"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1210
msgid ""
"Sometimes, there is no relation between the software name, its version, and "
"the distribution file it is distributed in."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1212
msgid "From package:audio/libworkman[]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1220
#, no-wrap
msgid ""
"PORTNAME=       libworkman\n"
"PORTVERSION=    1.4\n"
"CATEGORIES=     audio\n"
"MASTER_SITES=   LOCAL/jim\n"
"DISTNAME=       ${PORTNAME}-1999-06-20\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1225
#, no-wrap
msgid "Exotic Case 2"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1230
msgid ""
"In package:comms/librs232[], the distribution file is not versioned, so "
"using crossref:makefiles[makefile-dist_subdir,`DIST_SUBDIR`] is needed:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1239
#, no-wrap
msgid ""
"PORTNAME=       librs232\n"
"PORTVERSION=    20160710\n"
"CATEGORIES=     comms\n"
"MASTER_SITES=   http://www.teuniz.net/RS-232/\n"
"DISTNAME=       RS-232\n"
"DIST_SUBDIR=\t${PORTNAME}-${PORTVERSION}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1247
msgid ""
"`PKGNAMEPREFIX` and `PKGNAMESUFFIX` do not affect `DISTNAME`.  Also note "
"that if `WRKSRC` is equal to [.filename]#${WRKDIR}/${DISTNAME}# while the "
"original source archive is named something other than `${PORTNAME}-$"
"{PORTVERSION}${EXTRACT_SUFX}`, leave `DISTNAME` alone- defining only "
"`DISTFILES` is easier than both `DISTNAME` and `WRKSRC` (and possibly "
"`EXTRACT_SUFX`)."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1250
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4900
#, no-wrap
msgid "`MASTER_SITES`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1254
msgid ""
"Record the directory part of the FTP/HTTP-URL pointing at the original "
"tarball in `MASTER_SITES`.  Do not forget the trailing slash ([.filename]#/"
"#)!"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1256
msgid ""
"The `make` macros will try to use this specification for grabbing the "
"distribution file with `FETCH` if they cannot find it already on the system."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1259
msgid ""
"It is recommended that multiple sites are included on this list, preferably "
"from different continents.  This will safeguard against wide-area network "
"problems."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1267
msgid ""
"`MASTER_SITES` must not be blank.  It must point to the actual site hosting "
"the distribution files.  It cannot point to web archives, or the FreeBSD "
"distribution files cache sites.  The only exception to this rule is ports "
"that do not have any distribution files.  For example, meta-ports do not "
"have any distribution files, so `MASTER_SITES` does not need to be set."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1270
#, no-wrap
msgid "Using `MASTER_SITE_*` Variables"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1273
msgid ""
"Shortcut abbreviations are available for popular archives like SourceForge "
"(`SOURCEFORGE`), GNU (`GNU`), or Perl CPAN (`PERL_CPAN`). `MASTER_SITES` can "
"use them directly:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1277
#, no-wrap
msgid "MASTER_SITES=\tGNU/make\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1281
msgid ""
"The older expanded format still works, but all ports have been converted to "
"the compact format.  The expanded format looks like this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1286
#, no-wrap
msgid ""
"MASTER_SITES=\t\t${MASTER_SITE_GNU}\n"
"MASTER_SITE_SUBDIR=\tmake\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1290
msgid ""
"These values and variables are defined in https://cgit.freebsd.org/ports/"
"tree/Mk/bsd.sites.mk[Mk/bsd.sites.mk].  New entries are added often, so make "
"sure to check the latest version of this file before submitting a port."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1295
msgid ""
"For any `MASTER_SITE_FOO` variable, the shorthand `_FOO_` can be used.  For "
"example, use:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1299
#, no-wrap
msgid "MASTER_SITES=\tFOO\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1302
msgid "If `MASTER_SITE_SUBDIR` is needed, use this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1306
#, no-wrap
msgid "MASTER_SITES=\tFOO/bar\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1313
msgid ""
"Some `MASTER_SITE_*` names are quite long, and for ease of use, shortcuts "
"have been defined:"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1315
#, no-wrap
msgid "Shortcuts for `MASTER_SITE_*` Macros"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1319
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1377
#, no-wrap
msgid "Macro"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1321
#, no-wrap
msgid "Shortcut"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1322
#, no-wrap
msgid "`PERL_CPAN`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1324
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1395
#, no-wrap
msgid "`CPAN`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1325
#, no-wrap
msgid "`GITHUB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1327
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1416
#, no-wrap
msgid "`GH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1328
#, no-wrap
msgid "`GITHUB_CLOUD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1330
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1419
#, no-wrap
msgid "`GHC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1331
#, no-wrap
msgid "`LIBREOFFICE_DEV`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1333
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1437
#, no-wrap
msgid "`LODEV`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1334
#, no-wrap
msgid "`NETLIB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1336
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1446
#, no-wrap
msgid "`NL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1337
#, no-wrap
msgid "`RUBYGEMS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1339
#, no-wrap
msgid "`RG`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1340
#, no-wrap
msgid "`SOURCEFORGE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1341
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1458
#, no-wrap
msgid "`SF`"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1345
#, no-wrap
msgid "Magic MASTER_SITES Macros"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1350
msgid ""
"Several \"magic\" macros exist for popular sites with a predictable "
"directory structure.  For these, just use the abbreviation and the system "
"will choose a subdirectory automatically.  For a port named `Stardict`, of "
"version `1.2.3`, and hosted on SourceForge, adding this line:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1354
#, no-wrap
msgid "MASTER_SITES=\tSF\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1358
msgid ""
"infers a subdirectory named `/project/stardict/stardict/1.2.3`.  If the "
"inferred directory is incorrect, it can be overridden:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1362
#, no-wrap
msgid "MASTER_SITES=\tSF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1365
msgid "This can also be written as"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1370
#, no-wrap
msgid ""
"MASTER_SITES=\tSF\n"
"MASTER_SITE_SUBDIR=\tstardict/WyabdcRealPeopleTTS/${PORTVERSION}\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1373
#, no-wrap
msgid "Magic `MASTER_SITES` Macros"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1379
#, no-wrap
msgid "Assumed subdirectory"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1380
#, no-wrap
msgid "`APACHE_COMMONS_BINARIES`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1382
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1385
#, no-wrap
msgid "`${PORTNAME:S,commons-,,}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1383
#, no-wrap
msgid "`APACHE_COMMONS_SOURCE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1386
#, no-wrap
msgid "`APACHE_JAKARTA`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1388
#, no-wrap
msgid "`${PORTNAME:S,-,/,}/source`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1389
#, no-wrap
msgid "`BERLIOS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1391
#, no-wrap
msgid "`${PORTNAME:tl}.berlios`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1392
#, no-wrap
msgid "`PYPI`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1394
#, no-wrap
msgid "`source/${DISTNAME:C/(.).\\*/\\1/}/${DISTNAME:C/(.*)-[0-9].*/\\1/}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1397
#, no-wrap
msgid "`${PORTNAME:C/-.*//}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1398
#, no-wrap
msgid "`DEBIAN`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1400
#, no-wrap
msgid "`pool/main/${PORTNAME:C/^((lib)?.).*$/\\1/}/${PORTNAME}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1401
#, no-wrap
msgid "`FARSIGHT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1403
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1427
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1430
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1433
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1436
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1439
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1448
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1454
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1487
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1491
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1900
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1904
#, no-wrap
msgid "`${PORTNAME}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1404
#, no-wrap
msgid "`FESTIVAL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1406
#, no-wrap
msgid "`${PORTREVISION}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1407
#, no-wrap
msgid "`GCC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1409
#, no-wrap
msgid "`releases/${DISTNAME}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1410
#, no-wrap
msgid "`GENTOO`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1412
#, no-wrap
msgid "`distfiles`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1413
#, no-wrap
msgid "`GIMP`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1415
#, no-wrap
msgid "`${PORTNAME}/${PORTVERSION:R}/`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1418
#, no-wrap
msgid "`${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1421
#, no-wrap
msgid "`${GH_ACCOUNT}/${GH_PROJECT}/`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1422
#, no-wrap
msgid "`GNOME`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1424
#, no-wrap
msgid "`sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1425
#, no-wrap
msgid "`GNU`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1428
#, no-wrap
msgid "`GNUPG`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1431
#, no-wrap
msgid "`GNU_ALPHA`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1434
#, no-wrap
msgid "`HORDE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1440
#, no-wrap
msgid "`MATE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1442
#, no-wrap
msgid "`${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1443
#, no-wrap
msgid "`MOZDEV`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1445
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1457
#, no-wrap
msgid "`${PORTNAME:tl}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1449
#, no-wrap
msgid "`QT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1451
#, no-wrap
msgid "`archive/qt/${PORTVERSION:R}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1452
#, no-wrap
msgid "`SAMBA`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1455
#, no-wrap
msgid "`SAVANNAH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1459
#, no-wrap
msgid "`${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION}`"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1462
#, no-wrap
msgid "`USE_GITHUB`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1466
msgid ""
"If the distribution file comes from a specific commit or tag on https://"
"github.com/[GitHub] for which there is no officially released file, there is "
"an easy way to set the right `DISTNAME` and `MASTER_SITES` automatically."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1471
msgid ""
"As of 2023-02-21 link:https://github.blog/2023-02-21-update-on-the-future-"
"stability-of-source-code-archives-and-hashes/[GitHub] have announced that "
"source downloads will be stable for a year.  Please switch to release assets "
"and if not available ask upstream to generate ones."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1474
msgid "These variables are available:"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1476
#, no-wrap
msgid "`USE_GITHUB` Description"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1480
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1889
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3684
#, no-wrap
msgid "Variable"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1483
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1892
#, no-wrap
msgid "Default"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1484
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4882
#, no-wrap
msgid "`GH_ACCOUNT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1485
#, no-wrap
msgid "Account name of the GitHub user hosting the project"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1488
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4883
#, no-wrap
msgid "`GH_PROJECT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1489
#, no-wrap
msgid "Name of the project on GitHub"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1492
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4885
#, no-wrap
msgid "`GH_TAGNAME`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1493
#, no-wrap
msgid "Name of the tag to download (2.0.1, hash, ...) Using the name of a branch here is incorrect. It is also possible to use the hash of a commit id to do a snapshot."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1495
#, no-wrap
msgid "`${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1496
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4884
#, no-wrap
msgid "`GH_SUBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1499
#, no-wrap
msgid ""
"When the software needs an additional distribution file to be extracted within\n"
"`${WRKSRC}`, this variable can be used. See the examples in\n"
"crossref:makefiles[makefile-master_sites-github-multiple, Fetching Multiple Files from GitHub] for more information."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1501
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1914
#, no-wrap
msgid "(none)"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1502
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4886
#, no-wrap
msgid "`GH_TUPLE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1503
#, no-wrap
msgid "`GH_TUPLE` allows putting `GH_ACCOUNT`, `GH_PROJECT`, `GH_TAGNAME`, and `GH_SUBDIR` into a single variable. The format is _account_`:`_project_`:`_tagname_`:`_group_`/`_subdir_. The `/`_subdir_ part is optional. It is helpful when there is more than one GitHub project from which to fetch."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1509
msgid ""
"Do not use `GH_TUPLE` for the default distribution file, as it has no "
"default."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1512
#, no-wrap
msgid "Simple Use of `USE_GITHUB`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1517
msgid ""
"While trying to make a port for version `1.2.7` of pkg from the FreeBSD user "
"on github, at https://github.com/freebsd/pkg/[], The [.filename]#Makefile# "
"would end up looking like this (slightly stripped for the example):"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1522
#, no-wrap
msgid ""
"PORTNAME=\tpkg\n"
"DISTVERSION=\t1.2.7\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1525
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tfreebsd\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1528
msgid ""
"It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to `$"
"{WRKDIR}/pkg-1.2.7`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1531
#, no-wrap
msgid "More Complete Use of `USE_GITHUB`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1535
msgid ""
"While trying to make a port for the bleeding edge version of pkg from the "
"FreeBSD user on github, at https://github.com/freebsd/pkg/[], the "
"[.filename]#Makefile# ends up looking like this (slightly stripped for the "
"example):"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1540
#, no-wrap
msgid ""
"PORTNAME=\tpkg-devel\n"
"DISTVERSION=\t1.3.0.a.20140411\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1545
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tfreebsd\n"
"GH_PROJECT=\tpkg\n"
"GH_TAGNAME=\t6dbb17b\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1548
msgid ""
"It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to `$"
"{WRKDIR}/pkg-6dbb17b`."
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1552
msgid ""
"`20140411` is the date of the commit referenced in `GH_TAGNAME`, not the "
"date the [.filename]#Makefile# is edited, or the date the commit is made."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1557
#, no-wrap
msgid "Use of `USE_GITHUB` with `DISTVERSIONPREFIX`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1563
msgid ""
"From time to time, `GH_TAGNAME` is a slight variation from `DISTVERSION`.  "
"For example, if the version is `1.0.2`, the tag is `v1.0.2`.  In those "
"cases, it is possible to use `DISTVERSIONPREFIX` or `DISTVERSIONSUFFIX`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1569
#, no-wrap
msgid ""
"PORTNAME=\tfoo\n"
"DISTVERSIONPREFIX=\tv\n"
"DISTVERSION=\t1.0.2\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1571
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1635
#, no-wrap
msgid "USE_GITHUB=\tyes\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1574
msgid ""
"It will automatically set `GH_TAGNAME` to `v1.0.2`, while `WRKSRC` will be "
"kept to `${WRKDIR}/foo-1.0.2`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1577
#, no-wrap
msgid "Using `USE_GITHUB` When Upstream Does Not Use Versions"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1582
msgid ""
"If there never was a version upstream, do not invent one like `0.1` or "
"`1.0`.  Create the port with a `DISTVERSION` of `g__YYYYMMDD__`, where `g` "
"is for Git, and `_YYYYMMDD_` represents the date the commit referenced in "
"`GH_TAGNAME`."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1587
#, no-wrap
msgid ""
"PORTNAME=\tbar\n"
"DISTVERSION=\tg20140411\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1590
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_TAGNAME=\tc472d66b\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1594
msgid ""
"This creates a versioning scheme that increases over time, and that is still "
"before version `0`.  See crossref:makefiles[makefile-versions-ex-pkg-"
"version, this secion on how to compare versions] using man:pkg-version[8]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1599
#, no-wrap
msgid ""
"% pkg version -t g20140411 0\n"
"<\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1602
msgid ""
"Which means using `PORTEPOCH` will not be needed in case upstream decides to "
"cut versions in the future."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1605
#, no-wrap
msgid "Using `USE_GITHUB` to Access a Commit Between Two Versions"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1609
msgid ""
"If the current version of the software uses a Git tag, and the port needs to "
"be updated to a newer, intermediate version, without a tag, use man:git-"
"describe[1] to find out the version to use:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1614
#, no-wrap
msgid ""
"% git describe --tags f0038b1\n"
"v0.7.3-14-gf0038b1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1617
msgid "`v0.7.3-14-gf0038b1` can be split into three parts:"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1618
#, no-wrap
msgid "`v0.7.3`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1620
msgid ""
"This is the last Git tag that appears in the commit history before the "
"requested commit."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1621
#, no-wrap
msgid "`-14`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1623
msgid ""
"This means that the requested commit, `f0038b1`, is the 14th commit after "
"the `v0.7.3` tag."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1624
#, no-wrap
msgid "`-gf0038b1`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1626
msgid ""
"The `-g` means \"Git\", and the `f0038b1` is the commit hash that this "
"reference points to."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1633
#, no-wrap
msgid ""
"PORTNAME=\tbar\n"
"DISTVERSIONPREFIX=  v\n"
"DISTVERSION=\t0.7.3-14\n"
"DISTVERSIONSUFFIX=  -gf0038b1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1639
msgid ""
"This creates a versioning scheme that increases over time (well, over "
"commits), and does not conflict with the creation of a `0.7.4` version.  See "
"crossref:makefiles[makefile-versions-ex-pkg-version, this section for how to "
"compare versions] using man:pkg-version[8]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1646
#, no-wrap
msgid ""
"% pkg version -t 0.7.3 0.7.3.14\n"
"<\n"
"% pkg version -t 0.7.3.14 0.7.4\n"
"<\n"
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1652
msgid ""
"If the requested commit is the same as a tag, a shorter description is shown "
"by default.  The longer version is equivalent:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1657
#, no-wrap
msgid ""
"% git describe --tags c66c71d\n"
"v0.7.3\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1660
#, no-wrap
msgid ""
"% git describe --tags --long c66c71d\n"
"v0.7.3-0-gc66c71d\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1667
#, no-wrap
msgid "Fetching Multiple Files from GitHub"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1671
msgid ""
"The `USE_GITHUB` framework also supports fetching multiple distribution "
"files from different places in GitHub.  It works in a way very similar to "
"crossref:makefiles[porting-master-sites-n, Multiple Distribution or Patches "
"Files from Multiple Locations]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1677
msgid ""
"Multiple values are added to `GH_ACCOUNT`, `GH_PROJECT`, and `GH_TAGNAME`.  "
"Each different value is assigned a group.  The main value can either have no "
"group, or the `:DEFAULT` group.  A value can be omitted if it is the same as "
"the default as listed in crossref:makefiles[makefile-master_sites-github-"
"description,`USE_GITHUB` Description]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1680
msgid ""
"`GH_TUPLE` can also be used when there are a lot of distribution files.  It "
"helps keep the account, project, tagname, and group information at the same "
"place."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1683
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1987
msgid ""
"For each group, a `${WRKSRC_group}` helper variable is created, containing "
"the directory into which the file has been extracted.  The `${WRKSRC_group}` "
"variables can be used to move directories around during `post-extract`, or "
"add to `CONFIGURE_ARGS`, or whatever is needed so that the software builds "
"correctly."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1688
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1992
msgid ""
"The `:__group__` part _must_ be used for _only one_ distribution file.  It "
"is used as a unique key and using it more than once will overwrite the "
"previous values."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1695
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1999
msgid ""
"As this is only syntactic sugar above `DISTFILES` and `MASTER_SITES`, the "
"group names must adhere to the restrictions on group names outlined in "
"crossref:makefiles[porting-master-sites-n, Multiple Distribution or Patches "
"Files from Multiple Locations]"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1699
msgid ""
"When fetching multiple files from GitHub, sometimes the default distribution "
"file is not fetched from GitHub.  To disable fetching the default "
"distribution, set:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1703
#, no-wrap
msgid "USE_GITHUB=\tnodefault\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1708
msgid ""
"When using `USE_GITHUB=nodefault`, the [.filename]#Makefile# must set "
"`DISTFILES` in its crossref:porting-order[porting-order-portname,top block]. "
"The definition should be:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1712
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2018
#, no-wrap
msgid "DISTFILES=    ${DISTNAME}${EXTRACT_SUFX}\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1717
#, no-wrap
msgid "Use of `USE_GITHUB` with Multiple Distribution Files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1723
msgid ""
"From time to time, there is a need to fetch more than one distribution "
"file.  For example, when the upstream git repository uses submodules.  This "
"can be done easily using groups in the `GH_*` variables:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1728
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1774
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2034
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2080
#, no-wrap
msgid ""
"PORTNAME=\tfoo\n"
"DISTVERSION=\t1.0.2\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1734
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tbar:icons,contrib\n"
"GH_PROJECT=\tfoo-icons:icons foo-contrib:contrib\n"
"GH_TAGNAME=\t1.0:icons fa579bc:contrib\n"
"GH_SUBDIR=\text/icons:icons\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1736
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1780
#, no-wrap
msgid "CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1743
msgid ""
"This will fetch three distribution files from github.  The default one comes "
"from [.filename]#foo/foo# and is version `1.0.2`.  The second one, with the "
"`icons` group, comes from [.filename]#bar/foo-icons# and is in version "
"`1.0`.  The third one comes from [.filename]#bar/foo-contrib# and uses the "
"Git commit `fa579bc`.  The distribution files are named [.filename]#foo-"
"foo-1.0.2_GH0.tar.gz#, [.filename]#bar-foo-icons-1.0_GH0.tar.gz#, and "
"[.filename]#bar-foo-contrib-fa579bc_GH0.tar.gz#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1749
msgid ""
"All the distribution files are extracted in `${WRKDIR}` in their respective "
"subdirectories.  The default file is still extracted in `${WRKSRC}`, in this "
"case, [.filename]#${WRKDIR}/foo-1.0.2#.  Each additional distribution file "
"is extracted in `${WRKSRC_group}`.  Here, for the `icons` group, it is "
"called `${WRKSRC_icons}` and it contains [.filename]#${WRKDIR}/foo-"
"icons-1.0#.  The file with the `contrib` group is called `${WRKSRC_contrib}` "
"and contains `${WRKDIR}/foo-contrib-fa579bc`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1753
msgid ""
"The software's build system expects to find the icons in a [.filename]#ext/"
"icons# subdirectory in its sources, so `GH_SUBDIR` is used.  `GH_SUBDIR` "
"makes sure that [.filename]#ext# exists, but that [.filename]#ext/icons# "
"does not already exist.  Then it does this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1758
#, no-wrap
msgid ""
"post-extract:\n"
"      @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1763
#, no-wrap
msgid "Use of `USE_GITHUB` with Multiple Distribution Files Using `GH_TUPLE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1769
msgid ""
"This is functionally equivalent to crossref:makefiles[makefile-master_sites-"
"github-multi,Use of `USE_GITHUB` with Multiple Distribution Files], but "
"using `GH_TUPLE`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1778
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_TUPLE=\tbar:foo-icons:1.0:icons/ext/icons \\\n"
"\t\tbar:foo-contrib:fa579bc:contrib\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1784
msgid ""
"Grouping was used in the previous example with `bar:icons,contrib`.  Some "
"redundant information is present with `GH_TUPLE` because grouping is not "
"possible."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1787
#, no-wrap
msgid "How to Use `USE_GITHUB` with Git Submodules?"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1792
msgid ""
"Ports with GitHub as an upstream repository sometimes use submodules.  See "
"man:git-submodule[1] for more information."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1795
msgid ""
"The problem with submodules is that each is a separate repository.  As such, "
"they each must be fetched separately."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1800
msgid ""
"Using package:finance/moneymanagerex[] as an example, its GitHub repository "
"is https://github.com/moneymanagerex/moneymanagerex/[].  It has a https://"
"github.com/moneymanagerex/moneymanagerex/blob/"
"master/.gitmodules[.gitmodules] file at the root.  This file describes all "
"the submodules used in this repository, and lists additional repositories "
"needed.  This file will tell what additional repositories are needed:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1816
#, no-wrap
msgid ""
"[submodule \"lib/wxsqlite3\"]\n"
"\tpath = lib/wxsqlite3\n"
"\turl = https://github.com/utelle/wxsqlite3.git\n"
"[submodule \"3rd/mongoose\"]\n"
"\tpath = 3rd/mongoose\n"
"\turl = https://github.com/cesanta/mongoose.git\n"
"[submodule \"3rd/LuaGlue\"]\n"
"\tpath = 3rd/LuaGlue\n"
"\turl = https://github.com/moneymanagerex/LuaGlue.git\n"
"[submodule \"3rd/cgitemplate\"]\n"
"\tpath = 3rd/cgitemplate\n"
"\turl = https://github.com/moneymanagerex/html-template.git\n"
"[...]\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1820
msgid ""
"The only information missing from that file is the commit hash or tag to use "
"as a version.  This information is found after cloning the repository:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1849
#, no-wrap
msgid ""
"% git clone --recurse-submodules https://github.com/moneymanagerex/moneymanagerex.git\n"
"Cloning into 'moneymanagerex'...\n"
"remote: Counting objects: 32387, done.\n"
"[...]\n"
"Submodule '3rd/LuaGlue' (https://github.com/moneymanagerex/LuaGlue.git) registered for path '3rd/LuaGlue'\n"
"Submodule '3rd/cgitemplate' (https://github.com/moneymanagerex/html-template.git) registered for path '3rd/cgitemplate'\n"
"Submodule '3rd/mongoose' (https://github.com/cesanta/mongoose.git) registered for path '3rd/mongoose'\n"
"Submodule 'lib/wxsqlite3' (https://github.com/utelle/wxsqlite3.git) registered for path 'lib/wxsqlite3'\n"
"[...]\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/LuaGlue'...\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/cgitemplate'...\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/mongoose'...\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/lib/wxsqlite3'...\n"
"[...]\n"
"Submodule path '3rd/LuaGlue': checked out 'c51d11a247ee4d1e9817dfa2a8da8d9e2f97ae3b'\n"
"Submodule path '3rd/cgitemplate': checked out 'cd434eeeb35904ebcd3d718ba29c281a649b192c'\n"
"Submodule path '3rd/mongoose': checked out '2140e5992ab9a3a9a34ce9a281abf57f00f95cda'\n"
"Submodule path 'lib/wxsqlite3': checked out 'fb66eb230d8aed21dec273b38c7c054dcb7d6b51'\n"
"[...]\n"
"% cd moneymanagerex\n"
"% git submodule status\n"
" c51d11a247ee4d1e9817dfa2a8da8d9e2f97ae3b 3rd/LuaGlue (heads/master)\n"
" cd434eeeb35904ebcd3d718ba29c281a649b192c 3rd/cgitemplate (cd434ee)\n"
" 2140e5992ab9a3a9a34ce9a281abf57f00f95cda 3rd/mongoose (6.2-138-g2140e59)\n"
" fb66eb230d8aed21dec273b38c7c054dcb7d6b51 lib/wxsqlite3 (v3.4.0)\n"
"[...]\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1853
msgid ""
"It can also be found on GitHub.  Each subdirectory that is a submodule is "
"shown as `_directory @ hash_`, for example, `mongoose @ 2140e59`."
msgstr ""

#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1859
msgid ""
"While getting the information from GitHub seems more straightforward, the "
"information found using `git submodule status` will provide more meaningful "
"information.  For example, here, ``lib/wxsqlite3``'s commit hash `fb66eb2` "
"correspond to `v3.4.0`.  Both can be used interchangeably, but when a tag is "
"available, use it."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1862
msgid ""
"Now that all the required information has been gathered, the "
"[.filename]#Makefile# can be written (only GitHub-related lines are shown):"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1868
#, no-wrap
msgid ""
"PORTNAME=\tmoneymanagerex\n"
"DISTVERSIONPREFIX=\tv\n"
"DISTVERSION=\t1.3.0\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1875
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_TUPLE=\tutelle:wxsqlite3:v3.4.0:wxsqlite3/lib/wxsqlite3 \\\n"
"\t\tmoneymanagerex:LuaGlue:c51d11a:lua_glue/3rd/LuaGlue \\\n"
"\t\tmoneymanagerex:html-template:cd434ee:html_template/3rd/cgitemplate \\\n"
"\t\tcesanta:mongoose:2140e59:mongoose/3rd/mongoose \\\n"
"\t\t[...]\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1880
#, no-wrap
msgid "`USE_GITLAB`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1883
msgid ""
"Similar to GitHub, if the distribution file comes from https://gitlab.com/"
"[gitlab.com] or is hosting the GitLab software, these variables are "
"available for use and might need to be set."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1885
#, no-wrap
msgid "`USE_GITLAB` Description"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1893
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4890
#, no-wrap
msgid "`GL_SITE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1894
#, no-wrap
msgid "Site name hosting the GitLab project"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1896
#, no-wrap
msgid "https://gitlab.com/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1897
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4887
#, no-wrap
msgid "`GL_ACCOUNT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1898
#, no-wrap
msgid "Account name of the GitLab user hosting the project"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1901
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4889
#, no-wrap
msgid "`GL_PROJECT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1902
#, no-wrap
msgid "Name of the project on GitLab"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1905
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4888
#, no-wrap
msgid "`GL_COMMIT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1906
#, no-wrap
msgid "The commit hash to download. Must be the full 160 bit, 40 character hex sha1 hash. This is a required variable for GitLab."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1908
#, no-wrap
msgid "`(none)`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1909
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4891
#, no-wrap
msgid "`GL_SUBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1912
#, no-wrap
msgid ""
"When the software needs an additional distribution file to be extracted within\n"
"`${WRKSRC}`, this variable can be used. See the examples in\n"
"\tcrossref:makefiles[makefile-master_sites-gitlab-multiple, Fetching Multiple Files from GitLab] for more information."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1915
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4892
#, no-wrap
msgid "`GL_TUPLE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1916
#, no-wrap
msgid "`GL_TUPLE` allows putting `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT`, `GL_COMMIT`, and `GL_SUBDIR` into a single variable. The format is _site_`:`_account_`:`_project_`:`_commit_`:`_group_`/`_subdir_. The _site_`:` and `/`_subdir_ part is optional. It is helpful when there are more than one GitLab project from which to fetch."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1920
#, no-wrap
msgid "Simple Use of `USE_GITLAB`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1924
msgid ""
"While trying to make a port for version `1.14` of libsignon-glib from the "
"accounts-sso user on gitlab.com, at https://gitlab.com/accounts-sso/"
"libsignon-glib/[], The [.filename]#Makefile# would end up looking like this "
"for fetching the distribution files:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1929
#, no-wrap
msgid ""
"PORTNAME=\tlibsignon-glib\n"
"DISTVERSION=\t1.14\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1933
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_ACCOUNT=\taccounts-sso\n"
"GL_COMMIT=\te90302e342bfd27bc8c9132ab9d0ea3d8723fd03\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1936
msgid ""
"It will automatically have `MASTER_SITES` set to https://gitlab.com/"
"[gitlab.com] and `WRKSRC` to `${WRKDIR}/libsignon-glib-"
"e90302e342bfd27bc8c9132ab9d0ea3d8723fd03-"
"e90302e342bfd27bc8c9132ab9d0ea3d8723fd03`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1939
#, no-wrap
msgid "More Complete Use of `USE_GITLAB`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1944
msgid ""
"A more complete use of the above if port had no versioning and foobar from "
"the foo user on project bar on a self hosted GitLab site `https://"
"gitlab.example.com/`, the [.filename]#Makefile# ends up looking like this "
"for fetching distribution files:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1949
#, no-wrap
msgid ""
"PORTNAME=\tfoobar\n"
"DISTVERSION=\tg20170906\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1955
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_SITE=\thttps://gitlab.example.com\n"
"GL_ACCOUNT=\tfoo\n"
"GL_PROJECT=\tbar\n"
"GL_COMMIT=\t9c1669ce60c3f4f5eb43df874d7314483fb3f8a6\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1958
msgid ""
"It will have `MASTER_SITES` set to `\"https://gitlab.example.com\"` and "
"`WRKSRC` to `${WRKDIR}/"
"bar-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6`."
msgstr ""

#. type: delimited block = 6
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1962
msgid ""
"`20170906` is the date of the commit referenced in `GL_COMMIT`, not the date "
"the [.filename]#Makefile# is edited, or the date the commit to the FreeBSD "
"ports tree is made."
msgstr ""

#. type: delimited block = 6
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1967
msgid ""
"``GL_SITE``'s protocol, port and webroot can all be modified in the same "
"variable."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1972
#, no-wrap
msgid "Fetching Multiple Files from GitLab"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1977
msgid ""
"The `USE_GITLAB` framework also supports fetching multiple distribution "
"files from different places from GitLab and GitLab hosted sites.  It works "
"in a way very similar to crossref:makefiles[porting-master-sites-n, Multiple "
"Distribution or Patches Files from Multiple Locations] and "
"crossref:makefiles[makefile-master_sites-gitlab-multiple, Fetching Multiple "
"Files from GitLab]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1981
msgid ""
"Multiple values are added to `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT` and "
"`GL_COMMIT`.  Each different value is assigned a group.  "
"crossref:makefiles[makefile-master_sites-gitlab-description,`USE_GITLAB` "
"Description]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1984
msgid ""
"`GL_TUPLE` can also be used when there are a lot of distribution files.  It "
"helps keep the site, account, project, commit, and group information at the "
"same place."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2003
msgid ""
"When fetching multiple files using GitLab, sometimes the default "
"distribution file is not fetched from a GitLab site.  To disable fetching "
"the default distribution, set:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2007
#, no-wrap
msgid "USE_GITLAB=\tnodefault\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2014
msgid ""
"When using `USE_GITLAB=nodefault`, the [.filename]#Makefile# must set "
"`DISTFILES` in its crossref:makefiles[porting-order-portname,top block].  "
"The definition should be:"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2023
#, no-wrap
msgid "Use of `USE_GITLAB` with Multiple Distribution Files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2029
msgid ""
"From time to time, there is a need to fetch more than one distribution "
"file.  For example, when the upstream git repository uses submodules.  This "
"can be done easily using groups in the `GL_*` variables:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2041
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_SITE=\thttps://gitlab.example.com:9434/gitlab:icons\n"
"GL_ACCOUNT=\tbar:icons,contrib\n"
"GL_PROJECT=\tfoo-icons:icons foo-contrib:contrib\n"
"GL_COMMIT=\tc189207a55da45305c884fe2b50e086fcad4724b ae7368cab1ca7ca754b38d49da064df87968ffe4:icons 9e4dd76ad9b38f33fdb417a4c01935958d5acd2a:contrib\n"
"GL_SUBDIR=\text/icons:icons\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2043
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2087
#, no-wrap
msgid "CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2050
msgid ""
"This will fetch two distribution files from gitlab.com and one from "
"`gitlab.example.com` hosting GitLab.  The default one comes from "
"[.filename]#https://gitlab.com/foo/foo# and commit is "
"`c189207a55da45305c884fe2b50e086fcad4724b`.  The second one, with the "
"`icons` group, comes from [.filename]#https://gitlab.example.com:9434/gitlab/"
"bar/foo-icons# and commit is `ae7368cab1ca7ca754b38d49da064df87968ffe4`.  "
"The third one comes from [.filename]#https://gitlab.com/bar/foo-contrib# and "
"is commit `9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`.  The distribution "
"files are named [.filename]#foo-foo-"
"c189207a55da45305c884fe2b50e086fcad4724b_GL0.tar.gz#, [.filename]#bar-foo-"
"icons-ae7368cab1ca7ca754b38d49da064df87968ffe4_GL0.tar.gz#, and "
"[.filename]#bar-foo-"
"contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a_GL0.tar.gz#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2056
msgid ""
"All the distribution files are extracted in `${WRKDIR}` in their respective "
"subdirectories.  The default file is still extracted in `${WRKSRC}`, in this "
"case, [.filename]#${WRKDIR}/foo-c189207a55da45305c884fe2b50e086fcad4724b-"
"c189207a55da45305c884fe2b50e086fcad4724b#.  Each additional distribution "
"file is extracted in `${WRKSRC_group}`.  Here, for the `icons` group, it is "
"called `${WRKSRC_icons}` and it contains [.filename]#${WRKDIR}/foo-icons-"
"ae7368cab1ca7ca754b38d49da064df87968ffe4-"
"ae7368cab1ca7ca754b38d49da064df87968ffe4#.  The file with the `contrib` "
"group is called `${WRKSRC_contrib}` and contains `${WRKDIR}/foo-"
"contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2060
msgid ""
"The software's build system expects to find the icons in a [.filename]#ext/"
"icons# subdirectory in its sources, so `GL_SUBDIR` is used.  `GL_SUBDIR` "
"makes sure that [.filename]#ext# exists, but that [.filename]#ext/icons# "
"does not already exist.  Then it does this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2065
#, no-wrap
msgid ""
"post-extract:\n"
"        @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2070
#, no-wrap
msgid "Use of `USE_GITLAB` with Multiple Distribution Files Using `GL_TUPLE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2075
msgid ""
"This is functionally equivalent to crossref:makefiles[makefile-master_sites-"
"gitlab-multi,Use of `USE_GITLAB` with Multiple Distribution Files], but "
"using `GL_TUPLE`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2085
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_COMMIT=\tc189207a55da45305c884fe2b50e086fcad4724b\n"
"GL_TUPLE=\thttps://gitlab.example.com:9434/gitlab:bar:foo-icons:ae7368cab1ca7ca754b38d49da064df87968ffe4:icons/ext/icons \\\n"
"\t\tbar:foo-contrib:9e4dd76ad9b38f33fdb417a4c01935958d5acd2a:contrib\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2091
msgid ""
"Grouping was used in the previous example with `bar:icons,contrib`.  Some "
"redundant information is present with `GL_TUPLE` because grouping is not "
"possible."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2094
#, no-wrap
msgid "`EXTRACT_SUFX`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2097
msgid ""
"If there is one distribution file, and it uses an odd suffix to indicate the "
"compression mechanism, set `EXTRACT_SUFX`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2099
msgid ""
"For example, if the distribution file was named [.filename]#foo.tar.gzip# "
"instead of the more normal [.filename]#foo.tar.gz#, write:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2104
#, no-wrap
msgid ""
"DISTNAME=\tfoo\n"
"EXTRACT_SUFX=\t.tar.gzip\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2108
msgid ""
"The `USES=tar[:__xxx__]`, `USES=lha` or `USES=zip` automatically set "
"`EXTRACT_SUFX` to the most common archives extensions as necessary, see "
"crossref:uses[uses,Using `USES` Macros] for more details.  If neither of "
"these are set then `EXTRACT_SUFX` defaults to `.tar.gz`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2112
msgid "As `EXTRACT_SUFX` is only used in `DISTFILES`, only set one of them.."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2115
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4879
#, no-wrap
msgid "`DISTFILES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2120
msgid ""
"Sometimes the names of the files to be downloaded have no resemblance to the "
"name of the port.  For example, it might be called "
"[.filename]#source.tar.gz# or similar.  In other cases the application's "
"source code might be in several different archives, all of which must be "
"downloaded."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2122
msgid ""
"If this is the case, set `DISTFILES` to be a space separated list of all the "
"files that must be downloaded."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2126
#, no-wrap
msgid "DISTFILES=\tsource1.tar.gz source2.tar.gz\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2129
msgid ""
"If not explicitly set, `DISTFILES` defaults to `${DISTNAME}${EXTRACT_SUFX}`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2131
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4880
#, no-wrap
msgid "`EXTRACT_ONLY`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2134
msgid ""
"If only some of the `DISTFILES` must be extracted-for example, one of them "
"is the source code, while another is an uncompressed document-list the "
"filenames that must be extracted in `EXTRACT_ONLY`."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2139
#, no-wrap
msgid ""
"DISTFILES=\tsource.tar.gz manual.html\n"
"EXTRACT_ONLY=\tsource.tar.gz\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2142
msgid ""
"When none of the `DISTFILES` need to be uncompressed, set `EXTRACT_ONLY` to "
"the empty string."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2146
#, no-wrap
msgid "EXTRACT_ONLY=\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2149
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4901
#, no-wrap
msgid "`PATCHFILES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2152
msgid ""
"If the port requires some additional patches that are available by FTP or "
"HTTP, set `PATCHFILES` to the names of the files and `PATCH_SITES` to the "
"URL of the directory that contains them (the format is the same as "
"`MASTER_SITES`)."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2155
msgid ""
"If the patch is not relative to the top of the source tree (that is, "
"`WRKSRC`) because it contains some extra pathnames, set `PATCH_DIST_STRIP` "
"accordingly.  For instance, if all the pathnames in the patch have an extra "
"`foozolix-1.0/` in front of the filenames, then set `PATCH_DIST_STRIP=-p1`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2157
msgid ""
"Do not worry if the patches are compressed; they will be decompressed "
"automatically if the filenames end with [.filename]#.Z#, [.filename]#.gz#, "
"[.filename]#.bz2# or [.filename]#.xz#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2163
msgid ""
"If the patch is distributed with some other files, such as documentation, in "
"a compressed tarball, using `PATCHFILES` is not possible.  If that is the "
"case, add the name and the location of the patch tarball to `DISTFILES` and "
"`MASTER_SITES`.  Then, use `EXTRA_PATCHES` to point to those files and "
"[.filename]#bsd.port.mk# will automatically apply them.  In particular, do "
"_not_ copy patch files into [.filename]#${PATCHDIR}#.  That directory may "
"not be writable."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2167
msgid ""
"If there are multiple patches and they need mixed values for the strip "
"parameter, it can be added alongside the patch name in `PATCHFILES`, e.g:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2171
#, no-wrap
msgid "PATCHFILES=\tpatch1 patch2:-p1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2174
msgid ""
"This does not conflict with crossref:makefiles[porting-master-sites-n,the "
"master site grouping feature], adding a group also works:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2178
#, no-wrap
msgid "PATCHFILES=\tpatch2:-p1:source2\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2186
msgid ""
"The tarball will have been extracted alongside the regular source by then, "
"so there is no need to explicitly extract it if it is a regular compressed "
"tarball. Take extra care not to overwrite something that already exists in "
"that directory if extracting it manually.  Also, do not forget to add a "
"command to remove the copied patch in the `pre-clean` target."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2189
#, no-wrap
msgid "Multiple Distribution or Patches Files from Multiple Locations"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2192
msgid ""
"(Consider this to be a somewhat \"advanced topic\"; those new to this "
"document may wish to skip this section at first)."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2195
msgid ""
"This section has information on the fetching mechanism known as both "
"`MASTER_SITES:n` and `MASTER_SITES_NN`.  We will refer to this mechanism as "
"`MASTER_SITES:n`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2200
msgid ""
"A little background first.  OpenBSD has a neat feature inside `DISTFILES` "
"and `PATCHFILES` which allows files and patches to be postfixed with `:n` "
"identifiers.  Here, `n` can be any word containing `[0-9a-zA-Z_]` and denote "
"a group designation.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2204
#, no-wrap
msgid "DISTFILES=\talpha:0 beta:1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2207
msgid ""
"In OpenBSD, distribution file [.filename]#alpha# will be associated with "
"variable `MASTER_SITES0` instead of our common `MASTER_SITES` and "
"[.filename]#beta# with `MASTER_SITES1`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2209
msgid ""
"This is a very interesting feature which can decrease that endless search "
"for the correct download site."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2212
msgid ""
"Just picture 2 files in `DISTFILES` and 20 sites in `MASTER_SITES`, the "
"sites slow as hell where [.filename]#beta# is carried by all sites in "
"`MASTER_SITES`, and [.filename]#alpha# can only be found in the 20th site.  "
"It would be such a waste to check all of them if the maintainer knew this "
"beforehand, would it not? Not a good start for that lovely weekend!"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2215
msgid ""
"Once the concept is clear, just imagine more `DISTFILES` and more "
"`MASTER_SITES`.  Surely our \"distfiles survey meister\" would appreciate "
"the relief to network strain that this would bring."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2218
msgid ""
"In the next sections, information will follow on the FreeBSD implementation "
"of this idea.  We improved a bit on OpenBSD's concept."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2223
msgid ""
"The group names cannot have dashes in them (`-`), in fact, they cannot have "
"any characters out of the `[a-zA-Z0-9_]` range.  This is because, while "
"man:make[1] is ok with variable names containing dashes, man:sh[1] is not."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2226
#, no-wrap
msgid "Simplified Information"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2233
msgid ""
"This section explains how to quickly prepare fine grained fetching of "
"multiple distribution files and patches from different sites and "
"subdirectories.  We describe here a case of simplified `MASTER_SITES:n` "
"usage.  This will be sufficient for most scenarios.  More detailed "
"information are available in crossref:makefiles[ports-master-sites-n-"
"detailed, Detailed Information]."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2237
msgid ""
"Some applications consist of multiple distribution files that must be "
"downloaded from a number of different sites.  For example, Ghostscript "
"consists of the core of the program, and then a large number of driver files "
"that are used depending on the user's printer.  Some of these driver files "
"are supplied with the core, but many others must be downloaded from a "
"variety of different sites."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2240
msgid ""
"To support this, each entry in `DISTFILES` may be followed by a colon and a "
"\"group name\".  Each site listed in `MASTER_SITES` is then followed by a "
"colon, and the group that indicates which distribution files are downloaded "
"from this site."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2244
msgid ""
"For example, consider an application with the source split in two parts, "
"[.filename]#source1.tar.gz# and [.filename]#source2.tar.gz#, which must be "
"downloaded from two different sites.  The port's [.filename]#Makefile# would "
"include lines like crossref:makefiles[ports-master-sites-n-example-simple-"
"use-one-file-per-site,Simplified Use of `MASTER_SITES:n` with One File Per "
"Site]."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2246
#, no-wrap
msgid "Simplified Use of `MASTER_SITES:n` with One File Per Site"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2256
#, no-wrap
msgid ""
"MASTER_SITES=\tftp://ftp1.example.com/:source1 \\\n"
"\t\thttp://www.example.com/:source2\n"
"DISTFILES=\tsource1.tar.gz:source1 \\\n"
"\t\tsource2.tar.gz:source2\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2264
msgid ""
"Multiple distribution files can have the same group.  Continuing the "
"previous example, suppose that there was a third distfile, "
"[.filename]#source3.tar.gz#, that is downloaded from `ftp.example2.com`.  "
"The [.filename]#Makefile# would then be written like "
"crossref:makefiles[ports-master-sites-n-example-simple-use-more-than-one-"
"file-per-site,Simplified Use of `MASTER_SITES:n` with More Than One File Per "
"Site]."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2266
#, no-wrap
msgid "Simplified Use of `MASTER_SITES:n` with More Than One File Per Site"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2277
#, no-wrap
msgid ""
"MASTER_SITES=\tftp://ftp.example.com/:source1 \\\n"
"\t\thttp://www.example.com/:source2\n"
"DISTFILES=\tsource1.tar.gz:source1 \\\n"
"\t\tsource2.tar.gz:source2 \\\n"
"\t\tsource3.tar.gz:source2\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2282
#, no-wrap
msgid "Detailed Information"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2285
msgid ""
"Okay, so the previous example did not reflect the new port's needs? In this "
"section we will explain in detail how the fine grained fetching mechanism "
"`MASTER_SITES:n` works and how it can be used."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2287
msgid ""
"Elements can be postfixed with `:__n__` where _n_ is `[^:,]\\+`, that is, "
"_n_ could conceptually be any alphanumeric string but we will limit it to "
"`[a-zA-Z_][0-9a-zA-Z_]+` for now."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2289
msgid ""
"Moreover, string matching is case sensitive; that is, `n` is different from "
"`N`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2295
msgid ""
"However, these words cannot be used for postfixing purposes since they yield "
"special meaning: `default`, `all` and `ALL` (they are used internally in "
"item crossref:makefiles[porting-master-sites-n-what-changes-in-port-targets, "
"ii]).  Furthermore, `DEFAULT` is a special purpose word (check item "
"crossref:makefiles[porting-master-sites-n-DEFAULT-group,3])."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2296
msgid ""
"Elements postfixed with `:n` belong to the group `n`, `:m` belong to group "
"`m` and so forth."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2301
msgid ""
"[[porting-master-sites-n-DEFAULT-group]] Elements without a postfix are "
"groupless, they all belong to the special group `DEFAULT`. Any elements "
"postfixed with `DEFAULT`, is just being redundant unless an element belongs "
"to both `DEFAULT` and other groups at the same time (check item "
"crossref:makefiles[porting-master-sites-n-comma-operator,5])."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2303
msgid "These examples are equivalent but the first one is preferred:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2307
#, no-wrap
msgid "MASTER_SITES=\talpha\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2312
#, no-wrap
msgid "MASTER_SITES=\talpha:DEFAULT\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2315
msgid ""
"Groups are not exclusive, an element may belong to several different groups "
"at the same time and a group can either have either several different "
"elements or none at all."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2317
msgid ""
"[[porting-master-sites-n-comma-operator]] When an element belongs to several "
"groups at the same time, use the comma operator (`,`)."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2320
msgid ""
"Instead of repeating it several times, each time with a different postfix, "
"we can list several groups at once in a single postfix.  For instance, "
"`:m,n,o` marks an element that belongs to group `m`, `n` and `o`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2322
msgid "All these examples are equivalent but the last one is preferred:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2326
#, no-wrap
msgid "MASTER_SITES=\talpha alpha:SOME_SITE\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2331
#, no-wrap
msgid "MASTER_SITES=\talpha:DEFAULT alpha:SOME_SITE\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2336
#, no-wrap
msgid "MASTER_SITES=\talpha:SOME_SITE,DEFAULT\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2341
#, no-wrap
msgid "MASTER_SITES=\talpha:DEFAULT,SOME_SITE\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2344
msgid ""
"All sites within a given group are sorted according to `MASTER_SORT_AWK`. "
"All groups within `MASTER_SITES` and `PATCH_SITES` are sorted as well."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2346
msgid ""
"[[porting-master-sites-n-group-semantics]] Group semantics can be used in "
"any of the variables `MASTER_SITES`, `PATCH_SITES`, `MASTER_SITE_SUBDIR`, "
"`PATCH_SITE_SUBDIR`, `DISTFILES`, and `PATCHFILES` according to this syntax:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2360
msgid ""
"All `MASTER_SITES`, `PATCH_SITES`, `MASTER_SITE_SUBDIR` and "
"`PATCH_SITE_SUBDIR` elements must be terminated with the forward slash `/` "
"character. If any elements belong to any groups, the group postfix `:__n__` "
"must come right after the terminator `/`. The `MASTER_SITES:n` mechanism "
"relies on the existence of the terminator `/` to avoid confusing elements "
"where a `:n` is a valid part of the element with occurrences where `:n` "
"denotes group `n`. For compatibility purposes, since the `/` terminator was "
"not required before in both `MASTER_SITE_SUBDIR` and `PATCH_SITE_SUBDIR` "
"elements, if the postfix immediate preceding character is not a `/` then "
"`:n` will be considered a valid part of the element instead of a group "
"postfix even if an element is postfixed with `:n`. See both "
"crossref:makefiles[ports-master-sites-n-example-detailed-use-master-site-"
"subdir,Detailed Use of `MASTER_SITES:n` in `MASTER_SITE_SUBDIR`] and "
"crossref:makefiles[ports-master-sites-n-example-detailed-use-complete-"
"example-master-sites,Detailed Use of `MASTER_SITES:n` with Comma Operator, "
"Multiple Files, Multiple Sites and Multiple Subdirectories]."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2362
#, no-wrap
msgid "Detailed Use of `MASTER_SITES:n` in `MASTER_SITE_SUBDIR`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2369
#, no-wrap
msgid "MASTER_SITE_SUBDIR=\told:n new/:NEW\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2372
msgid "Directories within group `DEFAULT` -> old:n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2373
msgid "Directories within group `NEW` -> new"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2377
#, no-wrap
msgid "Detailed Use of `MASTER_SITES:n` with Comma Operator, Multiple Files, Multiple Sites and Multiple Subdirectories"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2395
#, no-wrap
msgid ""
"MASTER_SITES=\thttp://site1/%SUBDIR%/ http://site2/:DEFAULT \\\n"
"\t\thttp://site3/:group3 http://site4/:group4 \\\n"
"\t\thttp://site5/:group5 http://site6/:group6 \\\n"
"\t\thttp://site7/:DEFAULT,group6 \\\n"
"\t\thttp://site8/%SUBDIR%/:group6,group7 \\\n"
"\t\thttp://site9/:group8\n"
"DISTFILES=\tfile1 file2:DEFAULT file3:group3 \\\n"
"\t\tfile4:group4,group5,group6 file5:grouping \\\n"
"\t\tfile6:group7\n"
"MASTER_SITE_SUBDIR=\tdirectory-trial:1 directory-n/:groupn \\\n"
"\t\tdirectory-one/:group6,DEFAULT \\\n"
"\t\tdirectory\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2399
msgid ""
"The previous example results in this fine grained fetching.  Sites are "
"listed in the exact order they will be used."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2401
msgid "[.filename]#file1# will be fetched from"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2403
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2413
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2423
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2429
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2439
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2444
msgid "`MASTER_SITE_OVERRIDE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2404
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2414
msgid "http://site1/directory-trial:1/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2405
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2415
msgid "http://site1/directory-one/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2406
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2416
msgid "http://site1/directory/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2407
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2417
msgid "http://site2/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2408
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2418
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2433
msgid "http://site7/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2409
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2419
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2425
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2435
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2440
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2446
msgid "`MASTER_SITE_BACKUP`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2411
msgid ""
"[.filename]#file2# will be fetched exactly as [.filename]#file1# since they "
"both belong to the same group"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2421
msgid "[.filename]#file3# will be fetched from"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2424
msgid "http://site3/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2427
msgid "[.filename]#file4# will be fetched from"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2430
msgid "http://site4/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2431
msgid "http://site5/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2432
msgid "http://site6/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2434
msgid "http://site8/directory-one/"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2437
msgid "[.filename]#file5# will be fetched from"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2442
msgid "[.filename]#file6# will be fetched from"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2445
msgid "http://site8/"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2450
msgid ""
"How do I group one of the special macros from [.filename]#bsd.sites.mk#, for "
"example, SourceForge (`SF`)?"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2454
msgid ""
"This has been simplified as much as possible.  See crossref:makefiles[ports-"
"master-sites-n-example-detailed-use-master-site-sourceforge,Detailed Use of "
"`MASTER_SITES:n` with SourceForge (`SF`)]."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2456
#, no-wrap
msgid "Detailed Use of `MASTER_SITES:n` with SourceForge (`SF`)"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2464
#, no-wrap
msgid ""
"MASTER_SITES=\thttp://site1/ SF/something/1.0:sourceforge,TEST\n"
"DISTFILES=\tsomething.tar.gz:sourceforge\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2467
msgid ""
"[.filename]#something.tar.gz# will be fetched from all sites within "
"SourceForge."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2469
msgid "How do I use this with `PATCH*`?"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2473
msgid ""
"All examples were done with `MASTER*` but they work exactly the same for "
"`PATCH*` ones as can be seen in crossref:makefiles[ports-master-sites-n-"
"example-detailed-use-patch-sites,Simplified Use of `MASTER_SITES:n` with "
"`PATCH_SITES`]."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2475
#, no-wrap
msgid "Simplified Use of `MASTER_SITES:n` with `PATCH_SITES`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2483
#, no-wrap
msgid ""
"PATCH_SITES=\thttp://site1/ http://site2/:test\n"
"PATCHFILES=\tpatch1:test\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2488
#, no-wrap
msgid "What Does Change for Ports? What Does Not?"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2495
msgid ""
"All current ports remain the same. The `MASTER_SITES:n` feature code is only "
"activated if there are elements postfixed with `:__n__` like elements "
"according to the aforementioned syntax rules, especially as shown in item "
"crossref:makefiles[porting-master-sites-n-group-semantics, 7]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2497
msgid ""
"[[porting-master-sites-n-what-changes-in-port-targets]] The port targets "
"remain the same: `checksum`, `makesum`, `patch`, `configure`, `build`, etc. "
"With the obvious exceptions of `do-fetch`, `fetch-list`, `master-sites` and "
"`patch-sites`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2503
msgid ""
"`do-fetch`: deploys the new grouping postfixed `DISTFILES` and `PATCHFILES` "
"with their matching group elements within both `MASTER_SITES` and "
"`PATCH_SITES` which use matching group elements within both "
"`MASTER_SITE_SUBDIR` and `PATCH_SITE_SUBDIR`. Check crossref:makefiles[ports-"
"master-sites-n-example-detailed-use-complete-example-master-sites,Detailed "
"Use of `MASTER_SITES:n` with Comma Operator, Multiple Files, Multiple Sites "
"and Multiple Subdirectories]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2504
msgid ""
"`fetch-list`: works like old `fetch-list` with the exception that it groups "
"just like `do-fetch`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2505
msgid ""
"`master-sites` and `patch-sites`: (incompatible with older versions) only "
"return the elements of group `DEFAULT`; in fact, they execute targets "
"`master-sites-default` and `patch-sites-default` respectively."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2510
msgid ""
"Furthermore, using target either `master-sites-all` or `patch-sites-all` is "
"preferred to directly checking either `MASTER_SITES` or `PATCH_SITES`.  "
"Also, directly checking is not guaranteed to work in any future versions.  "
"Check item crossref:makefiles[porting-master-sites-n-new-port-targets-master-"
"sites-all, B] for more information on these new port targets."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2512
msgid "New port targets"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2513
msgid ""
"There are `master-sites-_n_` and `patch-sites-_n_` targets which will list "
"the elements of the respective group _n_ within `MASTER_SITES` and "
"`PATCH_SITES` respectively. For instance, both `master-sites-DEFAULT` and "
"`patch-sites-DEFAULT` will return the elements of group `DEFAULT`, `master-"
"sites-test` and `patch-sites-test` of group `test`, and thereon."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2515
msgid ""
"[[porting-master-sites-n-new-port-targets-master-sites-all]] There are new "
"targets `master-sites-all` and `patch-sites-all` which do the work of the "
"old `master-sites` and `patch-sites` ones. They return the elements of all "
"groups as if they all belonged to the same group with the caveat that it "
"lists as many `MASTER_SITE_BACKUP` and `MASTER_SITE_OVERRIDE` as there are "
"groups defined within either `DISTFILES` or `PATCHFILES`; respectively for "
"`master-sites-all` and `patch-sites-all`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2517
#, no-wrap
msgid "`DIST_SUBDIR`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2522
msgid ""
"Do not let the port clutter [.filename]#/usr/ports/distfiles#.  If the port "
"requires a lot of files to be fetched, or contains a file that has a name "
"that might conflict with other ports (for example, [.filename]#Makefile#), "
"set `DIST_SUBDIR` to the name of the port (`${PORTNAME}` or `${PKGNAMEPREFIX}"
"${PORTNAME}` are fine).  This will change `DISTDIR` from the default "
"[.filename]#/usr/ports/distfiles# to [.filename]#/usr/ports/distfiles/$"
"{DIST_SUBDIR}#, and in effect puts everything that is required for the port "
"into that subdirectory."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2524
msgid ""
"It will also look at the subdirectory with the same name on the backup "
"master site at http://distcache.FreeBSD.org[http://distcache.FreeBSD.org] "
"(Setting `DISTDIR` explicitly in [.filename]#Makefile# will not accomplish "
"this, so please use `DIST_SUBDIR`.)"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2528
msgid ""
"This does not affect `MASTER_SITES` defined in the [.filename]#Makefile#."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2531
#, no-wrap
msgid "`MAINTAINER`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2534
msgid "Set the mail-address here. Please. _:-)_"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2539
msgid ""
"Only a single address without the comment part is allowed as a `MAINTAINER` "
"value.  The format used is `[email protected]`.  Please do not include "
"any descriptive text such as a real name in this entry.  That merely "
"confuses the Ports infrastructure and most tools using it."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2542
msgid ""
"The maintainer is responsible for keeping the port up to date and making "
"sure that it works correctly.  For a detailed description of the "
"responsibilities of a port maintainer, refer to extref:{contributing}[The "
"challenge for port maintainers, maintain-port]."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2551
msgid ""
"A maintainer volunteers to keep a port in good working order.  Maintainers "
"have the primary responsibility for their ports, but not exclusive "
"ownership.  Ports exist for the benefit of the community and, in reality, "
"belong to the community.  What this means is that people other than the "
"maintainer can make changes to a port.  Large changes to the Ports "
"Collection might require changes to many ports.  The FreeBSD Ports "
"Management Team or members of other teams might modify ports to fix "
"dependency issues or other problems, like a version bump for a shared "
"library update."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2554
msgid ""
"Some types of fixes have \"blanket approval\" from the {portmgr}, allowing "
"any committer to fix those categories of problems on any port.  These fixes "
"do not need approval from the maintainer."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2557
msgid ""
"Blanket approval for most ports applies to fixes like infrastructure "
"changes, or trivial and _tested_ build and runtime fixes.  The current list "
"is available in extref:{committers-guide}[Ports section of the Committer's "
"Guide, ports-qa-misc-blanket-approval]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2564
msgid ""
"Other changes to the port will be sent to the maintainer for review and "
"approval before being committed.  If the maintainer does not respond to an "
"update request after two weeks (excluding major public holidays), then that "
"is considered a maintainer timeout, and the update can be made without "
"explicit maintainer approval.  If the maintainer does not respond within "
"three months, or if there have been three consecutive timeouts, then that "
"maintainer is considered absent without leave, and all of their ports can be "
"assigned back to the pool.  Exceptions to this are anything maintained by "
"the {portmgr}, or the {security-officer}.  No unauthorized commits may ever "
"be made to ports maintained by those groups."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2568
msgid ""
"We reserve the right to modify the maintainer's submission to better match "
"existing policies and style of the Ports Collection without explicit "
"blessing from the submitter or the maintainer.  Also, large infrastructural "
"changes can result in a port being modified without the maintainer's "
"consent.  These kinds of changes will never affect the port's functionality."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2570
msgid ""
"The {portmgr} reserves the right to revoke or override anyone's "
"maintainership for any reason, and the {security-officer} reserves the right "
"to revoke or override maintainership for security reasons."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2572
#, no-wrap
msgid "`COMMENT`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2576
msgid ""
"The comment is a one-line description of a port shown by `pkg info`.  Please "
"follow these rules when composing it:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2578
msgid "The COMMENT string should be 70 characters or less."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2579
msgid "Do _not_ include the package name or version number of software."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2580
msgid "The comment must begin with a capital and end without a period."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2581
msgid "Do not start with an indefinite article (that is, A or An)."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2582
msgid "Capitalize names such as Apache, JavaScript, or Perl."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2583
msgid "Use a serial comma for lists of words: \"green, red, and blue.\""
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2584
msgid "Check for spelling errors."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2586
msgid "Here is an example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2590
#, no-wrap
msgid "COMMENT=\tCat chasing a mouse all over the screen\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2593
msgid ""
"The COMMENT variable immediately follows the MAINTAINER variable in the "
"[.filename]#Makefile#."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2595
#, no-wrap
msgid "Project website"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2598
msgid ""
"Each port should point to a website that provides more information about the "
"software."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2600
msgid ""
"Whenever possible, this should be the official project website maintained by "
"the developers of the software."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2604
#, no-wrap
msgid "WWW=\t\thttps://ffmpeg.org/\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2607
msgid ""
"But it can also be a directory or resource in the source code repository:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2611
#, no-wrap
msgid "WWW=\t\thttps://sourceforge.net/projects/mpd/\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2614
msgid ""
"The WWW variable immediately follows the COMMENT variable in the "
"[.filename]#Makefile#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2617
msgid ""
"If the same content can be accessed via HTTP and HTTPS, the URL starting "
"with `https://` shall be used.  If the URI is the root of the website or "
"directory, it must be terminated with a slash."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2621
msgid ""
"This information used to be placed into the last line of the [.filename]#pkg-"
"descr# file.  It has been moved into the Makefile for easier maintenance and "
"processing.  Having a `WWW:` line at the end of the [.filename]#pkg-descr# "
"file is deprecated."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2623
#, no-wrap
msgid "Licenses"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2627
msgid ""
"Each port must document the license under which it is available.  If it is "
"not an OSI approved license it must also document any restrictions on "
"redistribution."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2629
#, no-wrap
msgid "`LICENSE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2632
msgid ""
"A short name for the license or licenses if more than one license apply."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2634
msgid ""
"If it is one of the licenses listed in crossref:makefiles[licenses-license-"
"list,Predefined License List], only `LICENSE_FILE` and `LICENSE_DISTFILES` "
"variables can be set."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2638
msgid ""
"If this is a license that has not been defined in the ports framework (see "
"crossref:makefiles[licenses-license-list,Predefined License List]), the "
"`LICENSE_PERMS` and `LICENSE_NAME` must be set, along with either "
"`LICENSE_FILE` or `LICENSE_TEXT`.  `LICENSE_DISTFILES` and `LICENSE_GROUPS` "
"can also be set, but are not required."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2641
msgid ""
"The predefined licenses are shown in crossref:makefiles[licenses-license-"
"list,Predefined License List].  The current list is always available in "
"[.filename]#Mk/bsd.licenses.db.mk#."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2643
#, no-wrap
msgid "Simplest Usage, Predefined Licenses"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2648
msgid ""
"When the [.filename]#README# of some software says \"This software is under "
"the terms of the GNU Lesser General Public License as published by the Free "
"Software Foundation; either version 2.1 of the License, or (at your option) "
"any later version.\" but does not provide the license file, use this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2652
#, no-wrap
msgid "LICENSE=\tLGPL21+\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2655
msgid "When the software provides the license file, use this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2660
#, no-wrap
msgid ""
"LICENSE=\tLGPL21+\n"
"LICENSE_FILE=\t${WRKSRC}/COPYING\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2665
msgid ""
"For the predefined licenses, the default permissions are `dist-mirror dist-"
"sell pkg-mirror pkg-sell auto-accept`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2667
#, no-wrap
msgid "Predefined License List"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2671
#, no-wrap
msgid "Short Name"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2672
#, no-wrap
msgid "Name"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2673
#, no-wrap
msgid "Group"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2675
#, no-wrap
msgid "Permissions"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2676
#, no-wrap
msgid "`AGPLv3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2677
#, no-wrap
msgid "GNU Affero General Public License version 3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2678
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2683
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2708
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2908
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2923
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2928
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2933
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2938
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2943
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2948
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2953
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2958
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2963
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2973
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2978
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2983
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2988
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2993
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2998
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3108
#, no-wrap
msgid "`FSF GPL OSI`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2680
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2685
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2690
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2695
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2700
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2705
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2710
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2715
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2720
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2725
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2730
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2735
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2740
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2745
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2750
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2755
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2760
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2765
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2845
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2850
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2855
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2860
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2865
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2870
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2875
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2880
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2885
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2890
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2895
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2900
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2905
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2910
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2915
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2920
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2925
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2930
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2935
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2940
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2945
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2950
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2955
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2960
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2965
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2970
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2975
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2980
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2985
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2990
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2995
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3000
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3040
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3045
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3050
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3055
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3060
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3070
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3075
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3080
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3085
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3090
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3095
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3100
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3105
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3110
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3115
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3120
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3125
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3130
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3135
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3140
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3144
#, no-wrap
msgid "(default)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2681
#, no-wrap
msgid "`AGPLv3+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2682
#, no-wrap
msgid "GNU Affero General Public License version 3 (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2686
#, no-wrap
msgid "`APACHE10`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2687
#, no-wrap
msgid "Apache License 1.0"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2688
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2733
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2918
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3083
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3118
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3267
#, no-wrap
msgid "`FSF`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2691
#, no-wrap
msgid "`APACHE11`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2692
#, no-wrap
msgid "Apache License 1.1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2693
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2698
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2898
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2903
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2913
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3003
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3008
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3013
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3018
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3023
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3028
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3033
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3043
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3048
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3053
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3093
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3098
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3103
#, no-wrap
msgid "`FSF OSI`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2696
#, no-wrap
msgid "`APACHE20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2697
#, no-wrap
msgid "Apache License 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2701
#, no-wrap
msgid "`ART10`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2702
#, no-wrap
msgid "Artistic License version 1.0"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2703
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2713
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3275
#, no-wrap
msgid "`OSI`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2706
#, no-wrap
msgid "`ART20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2707
#, no-wrap
msgid "Artistic License version 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2711
#, no-wrap
msgid "`ARTPERL10`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2712
#, no-wrap
msgid "Artistic License (perl) version 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2716
#, no-wrap
msgid "`BSD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2717
#, no-wrap
msgid "BSD license Generic Version (deprecated)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2718
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2723
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2728
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2738
#, no-wrap
msgid "`FSF OSI COPYFREE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2721
#, no-wrap
msgid "`BSD2CLAUSE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2722
#, no-wrap
msgid "BSD 2-clause \"Simplified\" License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2726
#, no-wrap
msgid "`BSD3CLAUSE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2727
#, no-wrap
msgid "BSD 3-clause \"New\" or \"Revised\" License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2731
#, no-wrap
msgid "`BSD4CLAUSE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2732
#, no-wrap
msgid "BSD 4-clause \"Original\" or \"Old\" License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2736
#, no-wrap
msgid "`BSL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2737
#, no-wrap
msgid "Boost Software License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2741
#, no-wrap
msgid "`CC-BY-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2742
#, no-wrap
msgid "Creative Commons Attribution 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2746
#, no-wrap
msgid "`CC-BY-2.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2747
#, no-wrap
msgid "Creative Commons Attribution 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2751
#, no-wrap
msgid "`CC-BY-2.5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2752
#, no-wrap
msgid "Creative Commons Attribution 2.5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2756
#, no-wrap
msgid "`CC-BY-3.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2757
#, no-wrap
msgid "Creative Commons Attribution 3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2761
#, no-wrap
msgid "`CC-BY-4.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2762
#, no-wrap
msgid "Creative Commons Attribution 4.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2766
#, no-wrap
msgid "`CC-BY-NC-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2767
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2770
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2775
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2780
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2785
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2790
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2795
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2800
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2805
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2810
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2815
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2820
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2825
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2830
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2835
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2840
#, no-wrap
msgid "`dist-mirror``pkg-mirror``auto-accept`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2771
#, no-wrap
msgid "`CC-BY-NC-2.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2772
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2776
#, no-wrap
msgid "`CC-BY-NC-2.5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2777
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 2.5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2781
#, no-wrap
msgid "`CC-BY-NC-3.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2782
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2786
#, no-wrap
msgid "`CC-BY-NC-4.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2787
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 4.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2791
#, no-wrap
msgid "`CC-BY-NC-ND-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2792
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2796
#, no-wrap
msgid "`CC-BY-NC-ND-2.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2797
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2801
#, no-wrap
msgid "`CC-BY-NC-ND-2.5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2802
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 2.5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2806
#, no-wrap
msgid "`CC-BY-NC-ND-3.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2807
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2811
#, no-wrap
msgid "`CC-BY-NC-ND-4.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2812
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 4.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2816
#, no-wrap
msgid "`CC-BY-NC-SA-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2817
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2821
#, no-wrap
msgid "`CC-BY-NC-SA-2.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2822
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2826
#, no-wrap
msgid "`CC-BY-NC-SA-2.5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2827
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 2.5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2831
#, no-wrap
msgid "`CC-BY-NC-SA-3.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2832
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2836
#, no-wrap
msgid "`CC-BY-NC-SA-4.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2837
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 4.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2841
#, no-wrap
msgid "`CC-BY-ND-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2842
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2846
#, no-wrap
msgid "`CC-BY-ND-2.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2847
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2851
#, no-wrap
msgid "`CC-BY-ND-2.5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2852
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 2.5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2856
#, no-wrap
msgid "`CC-BY-ND-3.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2857
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2861
#, no-wrap
msgid "`CC-BY-ND-4.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2862
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 4.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2866
#, no-wrap
msgid "`CC-BY-SA-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2867
#, no-wrap
msgid "Creative Commons Attribution Share Alike 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2871
#, no-wrap
msgid "`CC-BY-SA-2.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2872
#, no-wrap
msgid "Creative Commons Attribution Share Alike 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2876
#, no-wrap
msgid "`CC-BY-SA-2.5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2877
#, no-wrap
msgid "Creative Commons Attribution Share Alike 2.5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2881
#, no-wrap
msgid "`CC-BY-SA-3.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2882
#, no-wrap
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2886
#, no-wrap
msgid "`CC-BY-SA-4.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2887
#, no-wrap
msgid "Creative Commons Attribution Share Alike 4.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2891
#, no-wrap
msgid "`CC0-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2892
#, no-wrap
msgid "Creative Commons Zero v1.0 Universal"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2893
#, no-wrap
msgid "`FSF GPL COPYFREE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2896
#, no-wrap
msgid "`CDDL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2897
#, no-wrap
msgid "Common Development and Distribution License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2901
#, no-wrap
msgid "`CPAL-1.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2902
#, no-wrap
msgid "Common Public Attribution License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2906
#, no-wrap
msgid "`ClArtistic`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2907
#, no-wrap
msgid "Clarified Artistic License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2911
#, no-wrap
msgid "`EPL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2912
#, no-wrap
msgid "Eclipse Public License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2916
#, no-wrap
msgid "`GFDL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2917
#, no-wrap
msgid "GNU Free Documentation License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2921
#, no-wrap
msgid "`GMGPL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2922
#, no-wrap
msgid "GNAT Modified General Public License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2926
#, no-wrap
msgid "`GPLv1`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2927
#, no-wrap
msgid "GNU General Public License version 1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2931
#, no-wrap
msgid "`GPLv1+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2932
#, no-wrap
msgid "GNU General Public License version 1 (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2936
#, no-wrap
msgid "`GPLv2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2937
#, no-wrap
msgid "GNU General Public License version 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2941
#, no-wrap
msgid "`GPLv2+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2942
#, no-wrap
msgid "GNU General Public License version 2 (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2946
#, no-wrap
msgid "`GPLv3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2947
#, no-wrap
msgid "GNU General Public License version 3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2951
#, no-wrap
msgid "`GPLv3+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2952
#, no-wrap
msgid "GNU General Public License version 3 (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2956
#, no-wrap
msgid "`GPLv3RLE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2957
#, no-wrap
msgid "GNU GPL version 3 Runtime Library Exception"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2961
#, no-wrap
msgid "`GPLv3RLE+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2962
#, no-wrap
msgid "GNU GPL version 3 Runtime Library Exception (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2966
#, no-wrap
msgid "`ISCL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2967
#, no-wrap
msgid "Internet Systems Consortium License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2968
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3113
#, no-wrap
msgid "`FSF GPL OSI COPYFREE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2971
#, no-wrap
msgid "`LGPL20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2972
#, no-wrap
msgid "GNU Library General Public License version 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2976
#, no-wrap
msgid "`LGPL20+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2977
#, no-wrap
msgid "GNU Library General Public License version 2.0 (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2981
#, no-wrap
msgid "`LGPL21`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2982
#, no-wrap
msgid "GNU Lesser General Public License version 2.1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2986
#, no-wrap
msgid "`LGPL21+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2987
#, no-wrap
msgid "GNU Lesser General Public License version 2.1 (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2991
#, no-wrap
msgid "`LGPL3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2992
#, no-wrap
msgid "GNU Lesser General Public License version 3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2996
#, no-wrap
msgid "`LGPL3+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2997
#, no-wrap
msgid "GNU Lesser General Public License version 3 (or later)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3001
#, no-wrap
msgid "`LPPL10`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3002
#, no-wrap
msgid "LaTeX Project Public License version 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3005
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3010
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3015
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3020
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3025
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3030
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3035
#, no-wrap
msgid "`dist-mirror dist-sell`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3006
#, no-wrap
msgid "`LPPL11`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3007
#, no-wrap
msgid "LaTeX Project Public License version 1.1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3011
#, no-wrap
msgid "`LPPL12`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3012
#, no-wrap
msgid "LaTeX Project Public License version 1.2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3016
#, no-wrap
msgid "`LPPL13`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3017
#, no-wrap
msgid "LaTeX Project Public License version 1.3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3021
#, no-wrap
msgid "`LPPL13a`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3022
#, no-wrap
msgid "LaTeX Project Public License version 1.3a"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3026
#, no-wrap
msgid "`LPPL13b`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3027
#, no-wrap
msgid "LaTeX Project Public License version 1.3b"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3031
#, no-wrap
msgid "`LPPL13c`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3032
#, no-wrap
msgid "LaTeX Project Public License version 1.3c"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3036
#, no-wrap
msgid "`MIT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3037
#, no-wrap
msgid "MIT license / X11 license"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3038
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3058
#, no-wrap
msgid "`COPYFREE FSF GPL OSI`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3041
#, no-wrap
msgid "`MPL10`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3042
#, no-wrap
msgid "Mozilla Public License version 1.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3046
#, no-wrap
msgid "`MPL11`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3047
#, no-wrap
msgid "Mozilla Public License version 1.1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3051
#, no-wrap
msgid "`MPL20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3052
#, no-wrap
msgid "Mozilla Public License version 2.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3056
#, no-wrap
msgid "`NCSA`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3057
#, no-wrap
msgid "University of Illinois/NCSA Open Source License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3061
#, no-wrap
msgid "`NONE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3062
#, no-wrap
msgid "No license specified"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3065
#, no-wrap
msgid "`none`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3066
#, no-wrap
msgid "`OFL10`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3067
#, no-wrap
msgid "SIL Open Font License version 1.0 (https://scripts.sil.org/OFL/)"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3068
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3073
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3283
#, no-wrap
msgid "`FONTS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3071
#, no-wrap
msgid "`OFL11`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3072
#, no-wrap
msgid "SIL Open Font License version 1.1 (https://scripts.sil.org/OFL/)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3076
#, no-wrap
msgid "`OWL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3077
#, no-wrap
msgid "Open Works License (owl.apotheon.org)"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3078
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3279
#, no-wrap
msgid "`COPYFREE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3081
#, no-wrap
msgid "`OpenSSL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3082
#, no-wrap
msgid "OpenSSL License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3086
#, no-wrap
msgid "`PD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3087
#, no-wrap
msgid "Public Domain"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3088
#, no-wrap
msgid "`GPL COPYFREE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3091
#, no-wrap
msgid "`PHP202`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3092
#, no-wrap
msgid "PHP License version 2.02"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3096
#, no-wrap
msgid "`PHP30`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3097
#, no-wrap
msgid "PHP License version 3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3101
#, no-wrap
msgid "`PHP301`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3102
#, no-wrap
msgid "PHP License version 3.01"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3106
#, no-wrap
msgid "`PSFL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3107
#, no-wrap
msgid "Python Software Foundation License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3111
#, no-wrap
msgid "`PostgreSQL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3112
#, no-wrap
msgid "PostgreSQL License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3116
#, no-wrap
msgid "`RUBY`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3117
#, no-wrap
msgid "Ruby License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3121
#, no-wrap
msgid "`UNLICENSE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3122
#, no-wrap
msgid "The Unlicense"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3123
#, no-wrap
msgid "`COPYFREE FSF GPL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3126
#, no-wrap
msgid "`WTFPL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3127
#, no-wrap
msgid "Do What the Fuck You Want To Public License version 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3128
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3133
#, no-wrap
msgid "`GPL FSF COPYFREE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3131
#, no-wrap
msgid "`WTFPL1`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3132
#, no-wrap
msgid "Do What the Fuck You Want To Public License version 1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3136
#, no-wrap
msgid "`ZLIB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3137
#, no-wrap
msgid "zlib License"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3138
#, no-wrap
msgid "`GPL FSF OSI`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3141
#, no-wrap
msgid "`ZPL21`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3142
#, no-wrap
msgid "Zope Public License version 2.1"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3143
#, no-wrap
msgid "`GPL OSI`"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3147
#, no-wrap
msgid "`LICENSE_PERMS` and `LICENSE_PERMS_NAME_`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3150
msgid "Permissions. use `none` if empty."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3151
#, no-wrap
msgid "License Permissions List"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3153
#, no-wrap
msgid "`dist-mirror`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3156
msgid ""
"Redistribution of the distribution files is permitted.  The distribution "
"files will be added to the FreeBSD `MASTER_SITE_BACKUP` CDN."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3158
#, no-wrap
msgid "`no-dist-mirror`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3162
msgid ""
"Redistribution of the distribution files is prohibited.  This is equivalent "
"to setting crossref:special[porting-restrictions-restricted,`RESTRICTED`].  "
"The distribution files will _not_ be added to the FreeBSD "
"`MASTER_SITE_BACKUP` CDN."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3164
#, no-wrap
msgid "`dist-sell`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3167
msgid ""
"Selling of distribution files is permitted.  The distribution files will be "
"present on the installer images."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3169
#, no-wrap
msgid "`no-dist-sell`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3172
msgid ""
"Selling of distribution files is prohibited.  This is equivalent to setting "
"crossref:special[porting-restrictions-no_cdrom,`NO_CDROM`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3174
#, no-wrap
msgid "`pkg-mirror`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3177
msgid ""
"Free redistribution of package is permitted.  The package will be "
"distributed on the FreeBSD package CDN https://pkg.freebsd.org/[https://"
"pkg.freebsd.org/]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3179
#, no-wrap
msgid "`no-pkg-mirror`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3183
msgid ""
"Free redistribution of package is prohibited.  Equivalent to setting "
"crossref:special[porting-restrictions-no_package,`NO_PACKAGE`].  The package "
"will _not_ be distributed from the FreeBSD package CDN https://"
"pkg.freebsd.org/[https://pkg.freebsd.org/]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3185
#, no-wrap
msgid "`pkg-sell`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3188
msgid ""
"Selling of package is permitted.  The package will be present on the "
"installer images."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3190
#, no-wrap
msgid "`no-pkg-sell`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3194
msgid ""
"Selling of package is prohibited.  This is equivalent to setting "
"crossref:special[porting-restrictions-no_cdrom,`NO_CDROM`].  The package "
"will _not_ be present on the installer images."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3196
#, no-wrap
msgid "`auto-accept`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3200
msgid ""
"License is accepted by default.  Prompts to accept a license are not "
"displayed unless the user has defined `LICENSES_ASK`.  Use this unless the "
"license states the user must accept the terms of the license."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3202
#, no-wrap
msgid "`no-auto-accept`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3206
msgid ""
"License is not accepted by default.  The user will always be asked to "
"confirm the acceptance of this license.  This must be used if the license "
"states that the user must accept its terms."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3208
msgid ""
"When both `_permission_` and `no-_permission_` is present the `no-"
"_permission_` will cancel `_permission_`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3210
msgid ""
"When `_permission_` is not present, it is considered to be a `no-"
"_permission_`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3214
msgid ""
"Some missing permissions will prevent a port (and all ports depending on it) "
"from being usable by package users:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3216
msgid ""
"A port without the `auto-accept` permission will never be be built and all "
"the ports depending on it will be ignored."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3218
msgid ""
"A port without the `pkg-mirror` permission, and any ports that depend on it, "
"will be removed after the build, thus ensuring they are not distributed."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3221
#, no-wrap
msgid "Nonstandard License"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3225
msgid ""
"Read the terms of the license and translate those using the available "
"permissions."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3233
#, no-wrap
msgid ""
"LICENSE=        UNKNOWN\n"
"LICENSE_NAME=   unknown\n"
"LICENSE_TEXT=   This program is NOT in public domain.\\\n"
"                It can be freely distributed for non-commercial purposes only.\n"
"LICENSE_PERMS=  dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3238
#, no-wrap
msgid "Standard and Nonstandard Licenses"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3244
msgid ""
"Read the terms of the license and express those using the available "
"permissions.  In case of doubt, please ask for guidance on the {freebsd-"
"ports}."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3252
#, no-wrap
msgid ""
"LICENSE=        WARSOW GPLv2\n"
"LICENSE_COMB=   multi\n"
"LICENSE_NAME_WARSOW=    Warsow Content License\n"
"LICENSE_FILE_WARSOW=    ${WRKSRC}/docs/license.txt\n"
"LICENSE_PERMS_WARSOW=   dist-mirror pkg-mirror auto-accept\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3258
msgid ""
"When the permissions of the GPLv2 and the UNKNOWN licenses are mixed, the "
"port ends up with `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept "
"dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept`.  The `no-"
"_permissions_` cancel the _permissions_.  The resulting list of permissions "
"are _dist-mirror pkg-mirror auto-accept_.  The distribution files and the "
"packages will not be available on the installer images."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3261
#, no-wrap
msgid "`LICENSE_GROUPS` and `LICENSE_GROUPS_NAME`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3264
msgid "Groups the license belongs."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3265
#, no-wrap
msgid "Predefined License Groups List"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3269
msgid ""
"Free Software Foundation Approved, see the https://www.fsf.org/licensing/"
"[FSF Licensing & Compliance Team]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3271
#, no-wrap
msgid "`GPL`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3273
msgid "GPL Compatible"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3277
msgid ""
"OSI Approved, see the Open Source Initiative https://opensource.org/licenses/"
"[Open Source Licenses] page."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3281
msgid ""
"Comply with Copyfree Standard Definition, see the https://copyfree.org/"
"standard/licenses/[Copyfree Licenses] page."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3285
msgid "Font licenses"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3287
#, no-wrap
msgid "`LICENSE_NAME` and `LICENSE_NAME_NAME`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3290
msgid "Full name of the license."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3292
#, no-wrap
msgid "`LICENSE_NAME`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3302
#, no-wrap
msgid ""
"LICENSE=        UNRAR\n"
"LICENSE_NAME=   UnRAR License\n"
"LICENSE_FILE=   ${WRKSRC}/license.txt\n"
"LICENSE_PERMS=  dist-mirror dist-sell pkg-mirror pkg-sell auto-accept\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3307
#, no-wrap
msgid "`LICENSE_FILE` and `LICENSE_FILE_NAME`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3312
msgid ""
"Full path to the file containing the license text, usually [.filename]#$"
"{WRKSRC}/some/file#.  If the file is not in the distfile, and its content is "
"too long to be put in crossref:makefiles[licenses-"
"license_text,`LICENSE_TEXT`], put it in a new file in [.filename]#${FILESDIR}"
"#."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3314
#, no-wrap
msgid "`LICENSE_FILE`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3322
#, no-wrap
msgid ""
"LICENSE=\tGPLv3+\n"
"LICENSE_FILE=\t${WRKSRC}/COPYING\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3327
#, no-wrap
msgid "`LICENSE_TEXT` and `LICENSE_TEXT_NAME`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3331
msgid ""
"Text to use as a license.  Useful when the license is not in the "
"distribution files and its text is short."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3333
#, no-wrap
msgid "`LICENSE_TEXT`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3344
#, no-wrap
msgid ""
"LICENSE=        UNKNOWN\n"
"LICENSE_NAME=   unknown\n"
"LICENSE_TEXT=   This program is NOT in public domain.\\\n"
"                It can be freely distributed for non-commercial purposes only,\\\n"
"                and THERE IS NO WARRANTY FOR THIS PROGRAM.\n"
"LICENSE_PERMS=  dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3349
#, no-wrap
msgid "`LICENSE_DISTFILES` and `LICENSE_DISTFILES_NAME`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3353
msgid ""
"The distribution files to which the licenses apply.  Defaults to all the "
"distribution files."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3355
#, no-wrap
msgid "`LICENSE_DISTFILES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3360
msgid ""
"Used when the distribution files do not all have the same license.  For "
"example, one has a code license, and another has some artwork that cannot be "
"redistributed:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3365
#, no-wrap
msgid ""
"MASTER_SITES=   SF/some-game\n"
"DISTFILES=      ${DISTNAME}${EXTRACT_SUFX} artwork.zip\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3373
#, no-wrap
msgid ""
"LICENSE=        BSD3CLAUSE ARTWORK\n"
"LICENSE_COMB=   dual\n"
"LICENSE_NAME_ARTWORK=      The game artwork license\n"
"LICENSE_TEXT_ARTWORK=      The README says that the files cannot be redistributed\n"
"LICENSE_PERMS_ARTWORK=     pkg-mirror pkg-sell auto-accept\n"
"LICENSE_DISTFILES_BSD3CLAUSE=   ${DISTNAME}${EXTRACT_SUFX}\n"
"LICENSE_DISTFILES_ARTWORK= artwork.zip\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3378
#, no-wrap
msgid "`LICENSE_COMB`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3383
msgid ""
"Set to `multi` if all licenses apply.  Set to `dual` if any license "
"applies.  Defaults to `single`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3385
#, no-wrap
msgid "Dual Licenses"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3392
msgid ""
"When a port says \"This software may be distributed under the GNU General "
"Public License or the Artistic License\", it means that either license can "
"be used.  Use this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3397
#, no-wrap
msgid ""
"LICENSE=\tART10 GPLv1\n"
"LICENSE_COMB=   dual\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3400
msgid "If license files are provided, use this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3407
#, no-wrap
msgid ""
"LICENSE=\tART10 GPLv1\n"
"LICENSE_COMB=   dual\n"
"LICENSE_FILE_ART10=     ${WRKSRC}/Artistic\n"
"LICENSE_FILE_GPLv1=     ${WRKSRC}/Copying\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3412
#, no-wrap
msgid "Multiple Licenses"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3417
msgid ""
"When part of a port has one license, and another part has a different "
"license, use `multi`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3422
#, no-wrap
msgid ""
"LICENSE=\tGPLv2 LGPL21+\n"
"LICENSE_COMB=\tmulti\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3427
#, no-wrap
msgid "`PORTSCOUT`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3430
msgid ""
"Portscout is an automated distfile check utility for the FreeBSD Ports "
"Collection, described in detail in crossref:keeping-up[distfile-"
"survey,Portscout: the FreeBSD Ports Distfile Scanner]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3432
msgid ""
"`PORTSCOUT` defines special conditions within which the Portscout distfile "
"scanner is restricted."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3434
msgid "Situations where `PORTSCOUT` is set include:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3436
msgid ""
"When distfiles have to be ignored for specific versions. For example, to "
"exclude version _8.2_ and version _8.3_ from distfile version checks because "
"they are known to be broken, add:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3440
#, no-wrap
msgid "PORTSCOUT=\tskipv:8.2,8.3\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3443
msgid ""
"When distfile version checks have to be disabled completely. For example, if "
"a port is not going to be updated ever again, add:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3447
#, no-wrap
msgid "PORTSCOUT=\tignore:1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3450
msgid ""
"When specific versions or specific major and minor revisions of a distfile "
"must be checked. For example, if only version _0.6.4_ must be monitored "
"because newer versions have compatibility issues with FreeBSD, add:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3454
#, no-wrap
msgid "PORTSCOUT=\tlimit:^0\\.6\\.4\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3457
msgid ""
"When URLs listing the available versions differ from the download URLs. For "
"example, to limit distfile version checks to the download page for the "
"package:databases/pgtune[] port, add:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3461
#, no-wrap
msgid "PORTSCOUT=\tsite:http://www.renpy.org/dl/release/\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3464
#, no-wrap
msgid "Dependencies"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3471
msgid ""
"Many ports depend on other ports.  This is a very convenient feature of most "
"Unix-like operating systems, including FreeBSD.  Multiple ports can share a "
"common dependency, rather than bundling that dependency with every port or "
"package that needs it.  There are seven variables that can be used to ensure "
"that all the required bits will be on the user's machine.  There are also "
"some pre-supported dependency variables for common cases, plus a few more to "
"control the behavior of dependencies."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3477
msgid ""
"When software has extra dependencies that provide extra features, the base "
"dependencies listed in `*_DEPENDS` should include the extra dependencies "
"that would benefit most users.  The base dependencies should never be a "
"\"minimal\" dependency set.  The goal is not to include every dependency "
"possible. Only include those that will benefit most people."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3480
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4833
#, no-wrap
msgid "`LIB_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3485
msgid ""
"This variable specifies the shared libraries this port depends on.  It is a "
"list of `_lib:dir_` tuples where `_lib_` is the name of the shared library, "
"`_dir_` is the directory in which to find it in case it is not available.  "
"For example,"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3489
#, no-wrap
msgid "LIB_DEPENDS=   libjpeg.so:graphics/jpeg\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3492
msgid ""
"will check for a shared jpeg library with any version, and descend into the "
"[.filename]#graphics/jpeg# subdirectory of the ports tree to build and "
"install it if it is not found."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3495
msgid ""
"The dependency is checked twice, once from within the `build` target and "
"then from within the `install` target.  Also, the name of the dependency is "
"put into the package so that `pkg install` (see man:pkg-install[8]) will "
"automatically install it if it is not on the user's system."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3497
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4834
#, no-wrap
msgid "`RUN_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3502
msgid ""
"This variable specifies executables or files this port depends on during run-"
"time.  It is a list of ``_path:dir_``[:``_target_``] tuples where `_path_` "
"is the name of the executable or file, _dir_ is the directory in which to "
"find it in case it is not available, and _target_ is the target to call in "
"that directory.  If _path_ starts with a slash (`/`), it is treated as a "
"file and its existence is tested with `test -e`; otherwise, it is assumed to "
"be an executable, and `which -s` is used to determine if the program exists "
"in the search path."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3504
msgid "For example,"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3509
#, no-wrap
msgid ""
"RUN_DEPENDS=\t${LOCALBASE}/news/bin/innd:news/inn \\\n"
"\t\txmlcatmgr:textproc/xmlcatmgr\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3513
msgid ""
"will check if the file or directory [.filename]#/usr/local/news/bin/innd# "
"exists, and build and install it from the [.filename]#news/inn# subdirectory "
"of the ports tree if it is not found.  It will also see if an executable "
"called `xmlcatmgr` is in the search path, and descend into "
"[.filename]#textproc/xmlcatmgr# to build and install it if it is not found."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3518
msgid ""
"In this case, `innd` is actually an executable; if an executable is in a "
"place that is not expected to be in the search path, use the full pathname."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3523
msgid "The official search `PATH` used on the ports build cluster is"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3527
#, no-wrap
msgid "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3534
msgid ""
"The dependency is checked from within the `install` target.  Also, the name "
"of the dependency is put into the package so that `pkg install` (see man:pkg-"
"install[8]) will automatically install it if it is not on the user's "
"system.  The _target_ part can be omitted if it is the same as "
"`DEPENDS_TARGET`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3537
msgid ""
"A quite common situation is when `RUN_DEPENDS` is literally the same as "
"`BUILD_DEPENDS`, especially if ported software is written in a scripted "
"language or if it requires the same build and run-time environment.  In this "
"case, it is both tempting and intuitive to directly assign one to the other:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3541
#, no-wrap
msgid "RUN_DEPENDS=\t${BUILD_DEPENDS}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3548
msgid ""
"However, such assignment can pollute run-time dependencies with entries not "
"defined in the port's original `BUILD_DEPENDS`.  This happens because of "
"man:make[1]'s lazy evaluation of variable assignment.  Consider a "
"[.filename]#Makefile# with `USE_*`, which are processed by [.filename]#ports/"
"Mk/bsd.*.mk# to augment initial build dependencies.  For example, `USES= "
"gmake` adds package:devel/gmake[] to `BUILD_DEPENDS`.  To prevent such "
"additional dependencies from polluting `RUN_DEPENDS`, create another "
"variable with the current content of `BUILD_DEPENDS` and assign it to both "
"`BUILD_DEPENDS` and `RUN_DEPENDS`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3555
#, no-wrap
msgid ""
"MY_DEPENDS=\tsome:devel/some \\\n"
"\t\tother:lang/other\n"
"BUILD_DEPENDS=\t${MY_DEPENDS}\n"
"RUN_DEPENDS=\t${MY_DEPENDS}\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3561
msgid ""
"_Do not_ use `:=` to assign `BUILD_DEPENDS` to `RUN_DEPENDS` or vice-versa.  "
"All variables are expanded immediately, which is exactly the wrong thing to "
"do and almost always a failure."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3564
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4832
#, no-wrap
msgid "`BUILD_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3569
msgid ""
"This variable specifies executables or files this port requires to build.  "
"Like `RUN_DEPENDS`, it is a list of ``_path:dir_``[:``_target_``] tuples.  "
"For example,"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3573
#, no-wrap
msgid "BUILD_DEPENDS=\tunzip:archivers/unzip\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3576
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3614
msgid ""
"will check for an executable called `unzip`, and descend into the "
"[.filename]#archivers/unzip# subdirectory of the ports tree to build and "
"install it if it is not found."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3582
msgid ""
"\"build\" here means everything from extraction to compilation.  The "
"dependency is checked from within the `extract` target.  The _target_ part "
"can be omitted if it is the same as `DEPENDS_TARGET`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3585
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4831
#, no-wrap
msgid "`FETCH_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3590
msgid ""
"This variable specifies executables or files this port requires to fetch.  "
"Like the previous two, it is a list of ``_path:dir_``[:``_target_``] "
"tuples.  For example,"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3594
#, no-wrap
msgid "FETCH_DEPENDS=\tncftp2:net/ncftp2\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3597
msgid ""
"will check for an executable called `ncftp2`, and descend into the "
"[.filename]#net/ncftp2# subdirectory of the ports tree to build and install "
"it if it is not found."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3600
msgid ""
"The dependency is checked from within the `fetch` target.  The _target_ part "
"can be omitted if it is the same as `DEPENDS_TARGET`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3602
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4829
#, no-wrap
msgid "`EXTRACT_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3607
msgid ""
"This variable specifies executables or files this port requires for "
"extraction.  Like the previous, it is a list of "
"``_path:dir_``[:``_target_``] tuples.  For example,"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3611
#, no-wrap
msgid "EXTRACT_DEPENDS=\tunzip:archivers/unzip\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3617
msgid ""
"The dependency is checked from within the `extract` target.  The _target_ "
"part can be omitted if it is the same as `DEPENDS_TARGET`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3621
msgid ""
"Use this variable only if the extraction does not already work (the default "
"assumes `tar`) and cannot be made to work using `USES=tar`, `USES=lha` or "
"`USES=zip` described in crossref:uses[uses,Using `USES` Macros]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3624
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4830
#, no-wrap
msgid "`PATCH_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3628
msgid ""
"This variable specifies executables or files this port requires to patch.  "
"Like the previous, it is a list of ``_path:dir_``[:``_target_``] tuples. For "
"example,"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3632
#, no-wrap
msgid "PATCH_DEPENDS=\t${NONEXISTENT}:java/jfc:extract\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3635
msgid ""
"will descend into the [.filename]#java/jfc# subdirectory of the ports tree "
"to extract it."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3638
msgid ""
"The dependency is checked from within the `patch` target.  The _target_ part "
"can be omitted if it is the same as `DEPENDS_TARGET`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3640
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4911
#, no-wrap
msgid "`USES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3644
msgid ""
"Parameters can be added to define different features and dependencies used "
"by the port.  They are specified by adding this line to the "
"[.filename]#Makefile#:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3648
#, no-wrap
msgid "USES= feature[:arguments]\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3651
msgid ""
"For the complete list of values, please see crossref:uses[uses,Using `USES` "
"Macros]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3655
msgid ""
"`USES` cannot be assigned after inclusion of [.filename]#bsd.port.pre.mk#."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3658
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3680
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4208
#, no-wrap
msgid "`USE_*`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3665
msgid ""
"Several variables exist to define common dependencies shared by many ports.  "
"Their use is optional, but helps to reduce the verbosity of the port "
"[.filename]##Makefile##s.  Each of them is styled as `USE_*`.  These "
"variables may be used only in the port [.filename]##Makefile##s and "
"[.filename]#ports/Mk/bsd.*.mk#.  They are not meant for user-settable "
"options - use `PORT_OPTIONS` for that purpose."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3670
msgid ""
"It is _always_ incorrect to set any `USE_*` in [.filename]#/etc/make.conf#.  "
"For instance, setting"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3674
#, no-wrap
msgid "USE_GCC=X.Y\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3677
msgid ""
"(where X.Y is version number) would add a dependency on gccXY for every "
"port, including `lang/gccXY` itself!"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3686
#, no-wrap
msgid "Means"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3687
#, no-wrap
msgid "`USE_GCC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3712
#, no-wrap
msgid ""
"The port requires GCC (`gcc` or `{g-plus-plus}`) to build.\n"
"Some ports need a specific, old GCC version, some require modern, recent versions.\n"
"It is typically set to `yes` (means always use stable, modern GCC from ports per `GCC_DEFAULT` in [.filename]#Mk/bsd.default-versions.mk#).\n"
"This is also the default value.\n"
"The exact version can also be specified, with a value such as `10`.\n"
"GCC from the base system is used when it satisfies the requested version, otherwise an appropriate compiler is built from ports, and `CC` and `CXX` are adjusted accordingly.\n"
"The `:build` argument following the version specifier adds only a build time dependency to the port.\n"
"\n"
"For example:\n"
"[example]\n"
"====\n"
"[.programlisting]\n"
"....\n"
"USE_GCC=yes\t\t# port requires a current version of GCC\n"
"USE_GCC=11:build\t# port requires GCC 11 at build time only\n"
"....\n"
"====\n"
"\n"
"[NOTE]\n"
"====\n"
"`USE_GCC=any` is deprecated and should not be used in new ports\n"
"===="
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3721
msgid ""
"Variables related to gmake and [.filename]#configure# are described in "
"crossref:special[building,Building Mechanisms], while autoconf, automake and "
"libtool are described in crossref:special[using-autotools,Using GNU "
"Autotools].  Perl related variables are described in crossref:special[using-"
"perl,Using Perl].  X11 variables are listed in crossref:special[using-"
"x11,Using X11].  crossref:special[using-gnome,Using Gnome] deals with GNOME "
"and crossref:special[using-kde,Using KDE] with KDE related variables.  "
"crossref:special[using-java,Using Java] documents Java variables, while "
"crossref:special[using-php,Web Applications, Apache and PHP] contains "
"information on Apache, PHP and PEAR modules.  Python is discussed in "
"crossref:special[using-python,Using Python], while Ruby in "
"crossref:uses[uses-ruby,Ruby].  crossref:special[using-sdl,Using SDL] "
"provides variables used for SDL applications and finally, "
"crossref:special[using-xfce,Using Xfce] contains information on Xfce."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3723
#, no-wrap
msgid "Minimal Version of a Dependency"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3726
msgid ""
"A minimal version of a dependency can be specified in any `*_DEPENDS` except "
"`LIB_DEPENDS` using this syntax:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3730
#, no-wrap
msgid "p5-Spiffy>=0.26:devel/p5-Spiffy\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3734
msgid ""
"The first field contains a dependent package name, which must match the "
"entry in the package database, a comparison sign, and a package version.  "
"The dependency is satisfied if p5-Spiffy-0.26 or newer is installed on the "
"machine."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3736
#, no-wrap
msgid "Notes on Dependencies"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3742
msgid ""
"As mentioned above, the default target to call when a dependency is required "
"is `DEPENDS_TARGET`.  It defaults to `install`.  This is a user variable; it "
"is never defined in a port's [.filename]#Makefile#.  If the port needs a "
"special way to handle a dependency, use the `:target` part of `*_DEPENDS` "
"instead of redefining `DEPENDS_TARGET`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3746
msgid ""
"When running `make clean`, the port dependencies are automatically cleaned "
"too.  If this is not desirable, define `NOCLEANDEPENDS` in the environment.  "
"This may be particularly desirable if the port has something that takes a "
"long time to rebuild in its dependency list, such as KDE, GNOME or Mozilla."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3751
msgid ""
"To depend on another port unconditionally, use the variable `${NONEXISTENT}` "
"as the first field of `BUILD_DEPENDS` or `RUN_DEPENDS`.  Use this only when "
"the source of the other port is needed.  Compilation time can be saved by "
"specifying the target too.  For instance"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3755
#, no-wrap
msgid "BUILD_DEPENDS=\t${NONEXISTENT}:graphics/jpeg:extract\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3758
msgid "will always descend to the `jpeg` port and extract it."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3760
#, no-wrap
msgid "Circular Dependencies Are Fatal"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3765
msgid "Do not introduce any circular dependencies into the ports tree!"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3772
msgid ""
"The ports building technology does not tolerate circular dependencies.  If "
"one is introduced, someone, somewhere in the world, will have their FreeBSD "
"installation broken almost immediately, with many others quickly to follow.  "
"These can really be hard to detect.  If in doubt, before making that change, "
"make sure to run: `cd /usr/ports; make index`.  That process can be quite "
"slow on older machines, but it may be able to save a large number of people, "
"including yourself, a lot of grief in the process."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3774
#, no-wrap
msgid "Problems Caused by Automatic Dependencies"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3779
msgid ""
"Dependencies must be declared either explicitly or by using the "
"crossref:makefiles[makefile-options,OPTIONS framework].  Using other methods "
"like automatic detection complicates indexing, which causes problems for "
"port and package management."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3781
#, no-wrap
msgid "Wrong Declaration of an Optional Dependency"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3788
#, no-wrap
msgid ".include <bsd.port.pre.mk>\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3792
#, no-wrap
msgid ""
".if exists(${LOCALBASE}/bin/foo)\n"
"LIB_DEPENDS=\tlibbar.so:foo/bar\n"
".endif\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3801
msgid ""
"The problem with trying to automatically add dependencies is that files and "
"settings outside an individual port can change at any time.  For example: an "
"index is built, then a batch of ports are installed.  But one of the ports "
"installs the tested file.  The index is now incorrect, because an installed "
"port unexpectedly has a new dependency.  The index may still be wrong even "
"after rebuilding if other ports also determine their need for dependencies "
"based on the existence of other files."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3803
#, no-wrap
msgid "Correct Declaration of an Optional Dependency"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3811
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tBAR\n"
"BAR_DESC=\tCalling cellphones via bar\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3813
#, no-wrap
msgid "BAR_LIB_DEPENDS=\tlibbar.so:foo/bar\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3820
msgid ""
"Testing option variables is the correct method.  It will not cause "
"inconsistencies in the index of a batch of ports, provided the options were "
"defined prior to the index build.  Simple scripts can then be used to "
"automate the building, installation, and updating of these ports and their "
"packages."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3822
#, no-wrap
msgid "Slave Ports and `MASTERDIR`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3829
msgid ""
"If the port needs to build slightly different versions of packages by having "
"a variable (for instance, resolution, or paper size) take different values, "
"create one subdirectory per package to make it easier for users to see what "
"to do, but try to share as many files as possible between ports.  Typically, "
"by using variables cleverly, only a very short [.filename]#Makefile# is "
"needed in all but one of the directories.  In the sole "
"[.filename]#Makefile#, use `MASTERDIR` to specify the directory where the "
"rest of the files are.  Also, use a variable as part of "
"crossref:makefiles[porting-pkgname,`PKGNAMESUFFIX`] so the packages will "
"have different names."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3832
msgid ""
"This will be best demonstrated by an example.  This is part of "
"[.filename]#print/pkfonts300/Makefile#;"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3838
#, no-wrap
msgid ""
"PORTNAME=\tpkfonts${RESOLUTION}\n"
"PORTVERSION=\t1.0\n"
"DISTFILES=\tpk${RESOLUTION}.tar.gz\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3840
#, no-wrap
msgid "PLIST=\t\t${PKGDIR}/pkg-plist.${RESOLUTION}\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3853
#, no-wrap
msgid ""
".if !defined(RESOLUTION)\n"
"RESOLUTION=\t300\n"
".else\n"
".if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \\\n"
"\t${RESOLUTION} != 300 && ${RESOLUTION} != 360 && \\\n"
"\t${RESOLUTION} != 400 && ${RESOLUTION} != 600\n"
".BEGIN:\n"
"\t@${ECHO_MSG} \"Error: invalid value for RESOLUTION: \\\"${RESOLUTION}\\\"\"\n"
"\t@${ECHO_MSG} \"Possible values are: 118, 240, 300, 360, 400 and 600.\"\n"
"\t@${FALSE}\n"
".endif\n"
".endif\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3857
msgid ""
"package:print/pkfonts300[] also has all the regular patches, package files, "
"etc.  Running `make` there, it will take the default value for the "
"resolution (300) and build the port normally."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3859
msgid ""
"As for other resolutions, this is the _entire_ [.filename]#print/pkfonts360/"
"Makefile#:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3864
#, no-wrap
msgid ""
"RESOLUTION=\t360\n"
"MASTERDIR=\t${.CURDIR}/../pkfonts300\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3866
#, no-wrap
msgid ".include\t\"${MASTERDIR}/Makefile\"\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3871
msgid ""
"([.filename]#print/pkfonts118/Makefile#, [.filename]#print/pkfonts600/"
"Makefile#, and all the other are similar).  `MASTERDIR` definition tells "
"[.filename]#bsd.port.mk# that the regular set of subdirectories like "
"`FILESDIR` and `SCRIPTDIR` are to be found under [.filename]#pkfonts300#.  "
"The `RESOLUTION=360` line will override the `RESOLUTION=300` line in "
"[.filename]#pkfonts300/Makefile# and the port will be built with resolution "
"set to 360."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3873
#, no-wrap
msgid "Man Pages"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3878
msgid ""
"If the port anchors its man tree somewhere other than `PREFIX`, use "
"`MANDIRS` to specify those directories.  Note that the files corresponding "
"to manual pages must be placed in [.filename]#pkg-plist# along with the rest "
"of the files.  The purpose of `MANDIRS` is to enable automatic compression "
"of manual pages, therefore the file names are suffixed with [.filename]#.gz#."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3880
#, no-wrap
msgid "Info Files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3887
msgid ""
"If the package needs to install GNU info files, list them in `INFO` (without "
"the trailing `.info`), one entry per document.  These files are assumed to "
"be installed to [.filename]#PREFIX/INFO_PATH#.  Change `INFO_PATH` if the "
"package uses a different location.  However, this is not recommended. These "
"entries contain just the path relative to [.filename]#PREFIX/INFO_PATH#.  "
"For example, package:lang/gcc34[] installs info files to [.filename]#PREFIX/"
"INFO_PATH/gcc34#, and `INFO` will be something like this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3891
#, no-wrap
msgid "INFO=\tgcc34/cpp gcc34/cppinternals gcc34/g77 ...\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3894
msgid ""
"Appropriate installation/de-installation code will be automatically added to "
"the temporary [.filename]#pkg-plist# before package registration."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3896
#, no-wrap
msgid "Makefile Options"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3901
msgid ""
"Many applications can be built with optional or differing configurations.  "
"Examples include choice of natural (human) language, GUI versus command-"
"line, or type of database to support.  Users may need a different "
"configuration than the default, so the ports system provides hooks the port "
"author can use to control which variant will be built. Supporting these "
"options properly will make users happy, and effectively provide two or more "
"ports for the price of one."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3903
#, no-wrap
msgid "`OPTIONS`"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3906
#, no-wrap
msgid "Background"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3912
msgid ""
"`OPTIONS_*` give the user installing the port a dialog showing the available "
"options, and then saves those options to [.filename]#${PORT_DBDIR}/$"
"{OPTIONS_NAME}/options#.  The next time the port is built, the options are "
"reused.  `PORT_DBDIR` defaults to [.filename]#/var/db/ports#.  "
"`OPTIONS_NAME` is to the port origin with an underscore as the space "
"separator, for example, for package:dns/bind99[] it will be `dns_bind99`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3916
msgid ""
"When the user runs `make config` (or runs `make build` for the first time), "
"the framework checks for [.filename]#${PORT_DBDIR}/${OPTIONS_NAME}/"
"options#.  If that file does not exist, the values of `OPTIONS_*` are used, "
"and a dialog box is displayed where the options can be enabled or disabled.  "
"Then [.filename]#options# is saved and the configured variables are used "
"when building the port."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3918
msgid ""
"If a new version of the port adds new `OPTIONS`, the dialog will be "
"presented to the user with the saved values of old `OPTIONS` prefilled."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3921
msgid ""
"`make showconfig` shows the saved configuration.  Use `make rmconfig` to "
"remove the saved configuration."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3923
#, no-wrap
msgid "Syntax"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3927
msgid ""
"`OPTIONS_DEFINE` contains a list of `OPTIONS` to be used.  These are "
"independent of each other and are not grouped:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3931
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4360
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4657
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4714
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4778
#, no-wrap
msgid "OPTIONS_DEFINE=\tOPT1 OPT2\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3934
msgid ""
"Once defined, `OPTIONS` are described (optional, but strongly recommended):"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3943
#, no-wrap
msgid ""
"OPT1_DESC=\tDescribe OPT1\n"
"OPT2_DESC=\tDescribe OPT2\n"
"OPT3_DESC=\tDescribe OPT3\n"
"OPT4_DESC=\tDescribe OPT4\n"
"OPT5_DESC=\tDescribe OPT5\n"
"OPT6_DESC=\tDescribe OPT6\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3947
msgid ""
"[.filename]#ports/Mk/bsd.options.desc.mk# has descriptions for many common "
"`OPTIONS`.  While often useful, override them if the description is "
"insufficient for the port."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3953
msgid ""
"When describing options, view it from the perspective of the user: \"What "
"functionality does it change?\" and \"Why would I want to enable this?\" Do "
"not just repeat the name.  For example, describing the `NLS` option as "
"\"include NLS support\" does not help the user, who can already see the "
"option name but may not know what it means.  Describing it as \"Native "
"Language Support via gettext utilities\" is much more helpful."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3959
msgid ""
"Option names are always in all uppercase.  They cannot use mixed case or "
"lowercase."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3962
msgid ""
"`OPTIONS` can be grouped as radio choices, where only one choice from each "
"group is allowed:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3967
#, no-wrap
msgid ""
"OPTIONS_SINGLE=\t\tSG1\n"
"OPTIONS_SINGLE_SG1=\tOPT3 OPT4\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3973
msgid ""
"There _must_ be one of each `OPTIONS_SINGLE` group selected at all times for "
"the options to be valid.  One option of each group _must_ be added to "
"`OPTIONS_DEFAULT`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3976
msgid ""
"`OPTIONS` can be grouped as radio choices, where none or only one choice "
"from each group is allowed:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3981
#, no-wrap
msgid ""
"OPTIONS_RADIO=\t\tRG1\n"
"OPTIONS_RADIO_RG1=\tOPT7 OPT8\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3984
msgid ""
"`OPTIONS` can also be grouped as \"multiple-choice\" lists, where _at least "
"one_ option must be enabled:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3989
#, no-wrap
msgid ""
"OPTIONS_MULTI=\t\tMG1\n"
"OPTIONS_MULTI_MG1=\tOPT5 OPT6\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3992
msgid ""
"`OPTIONS` can also be grouped as \"multiple-choice\" lists, where none or "
"any option can be enabled:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3997
#, no-wrap
msgid ""
"OPTIONS_GROUP=\t\tGG1\n"
"OPTIONS_GROUP_GG1=\tOPT9 OPT10\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4000
msgid ""
"`OPTIONS` are unset by default, unless they are listed in `OPTIONS_DEFAULT`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4004
#, no-wrap
msgid "OPTIONS_DEFAULT=\tOPT1 OPT3 OPT6\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4010
msgid ""
"`OPTIONS` definitions must appear before the inclusion of "
"[.filename]#bsd.port.options.mk#.  `PORT_OPTIONS` values can only be tested "
"after the inclusion of [.filename]#bsd.port.options.mk#.  Inclusion of "
"[.filename]#bsd.port.pre.mk# can be used instead, too, and is still widely "
"used in ports written before the introduction of "
"[.filename]#bsd.port.options.mk#.  But be aware that some variables will not "
"work as expected after the inclusion of [.filename]#bsd.port.pre.mk#, "
"typically some `USE_*` flags."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4012
#, no-wrap
msgid "Simple Use of `OPTIONS`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4020
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tFOO BAR\n"
"OPTIONS_DEFAULT=FOO\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4023
#, no-wrap
msgid ""
"FOO_DESC=\tOption foo support\n"
"BAR_DESC=\tFeature bar support\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4027
#, no-wrap
msgid ""
"# Will add --with-foo / --without-foo\n"
"FOO_CONFIGURE_WITH=\tfoo\n"
"BAR_RUN_DEPENDS=\tbar:bar/bar\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4029
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4093
#, no-wrap
msgid ".include <bsd.port.mk>\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4034
#, no-wrap
msgid "Check for Unset Port `OPTIONS`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4043
#, no-wrap
msgid ""
".if ! ${PORT_OPTIONS:MEXAMPLES}\n"
"CONFIGURE_ARGS+=--without-examples\n"
".endif\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4047
msgid ""
"The form shown above is discouraged.  The preferred method is using a "
"configure knob to really enable and disable the feature to match the option:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4052
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4089
#, no-wrap
msgid ""
"# Will add --with-examples / --without-examples\n"
"EXAMPLES_CONFIGURE_WITH=\texamples\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4057
#, no-wrap
msgid "Practical Use of `OPTIONS`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4065
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\t\tEXAMPLES\n"
"OPTIONS_DEFAULT=\tPGSQL LDAP SSL\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4068
#, no-wrap
msgid ""
"OPTIONS_SINGLE=\t\tBACKEND\n"
"OPTIONS_SINGLE_BACKEND=\tMYSQL PGSQL BDB\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4071
#, no-wrap
msgid ""
"OPTIONS_MULTI=\t\tAUTH\n"
"OPTIONS_MULTI_AUTH=\tLDAP PAM SSL\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4079
#, no-wrap
msgid ""
"EXAMPLES_DESC=\t\tInstall extra examples\n"
"MYSQL_DESC=\t\tUse MySQL as backend\n"
"PGSQL_DESC=\t\tUse PostgreSQL as backend\n"
"BDB_DESC=\t\tUse Berkeley DB as backend\n"
"LDAP_DESC=\t\tBuild with LDAP authentication support\n"
"PAM_DESC=\t\tBuild with PAM support\n"
"SSL_DESC=\t\tBuild with OpenSSL support\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4084
#, no-wrap
msgid ""
"# Will add USE_PGSQL=yes\n"
"PGSQL_USE=\tpgsql=yes\n"
"# Will add --enable-postgres / --disable-postgres\n"
"PGSQL_CONFIGURE_ENABLE=\tpostgres\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4086
#, no-wrap
msgid "ICU_LIB_DEPENDS=\tlibicuuc.so:devel/icu\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4091
#, no-wrap
msgid "# Check other OPTIONS\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4098
#, no-wrap
msgid "Default Options"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4101
msgid "These options are always on by default."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4103
msgid "`DOCS` - build and install documentation."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4104
msgid "`NLS` - Native Language Support."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4105
msgid "`EXAMPLES` - build and install examples."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4106
msgid "`IPV6` - IPv6 protocol support."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4111
msgid ""
"There is no need to add these to `OPTIONS_DEFAULT`.  To have them active, "
"and show up in the options selection dialog, however, they must be added to "
"`OPTIONS_DEFINE`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4114
#, no-wrap
msgid "Feature Auto-Activation"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4118
msgid ""
"When using a GNU configure script, keep an eye on which optional features "
"are activated by auto-detection.  Explicitly disable optional features that "
"are not needed by adding `--without-xxx` or `--disable-xxx` in "
"`CONFIGURE_ARGS`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4120
#, no-wrap
msgid "Wrong Handling of an Option"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4130
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MFOO}\n"
"LIB_DEPENDS+=\t\tlibfoo.so:devel/foo\n"
"CONFIGURE_ARGS+=\t--enable-foo\n"
".endif\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4138
msgid ""
"In the example above, imagine a library libfoo is installed on the system.  "
"The user does not want this application to use libfoo, so he toggled the "
"option off in the `make config` dialog.  But the application's configure "
"script detects the library present in the system and includes its support in "
"the resulting executable.  Now when the user decides to remove libfoo from "
"the system, the ports system does not protest (no dependency on libfoo was "
"recorded) but the application breaks."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4140
#, no-wrap
msgid "Correct Handling of an Option"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4149
#, no-wrap
msgid ""
"FOO_LIB_DEPENDS=\t\tlibfoo.so:devel/foo\n"
"# Will add --enable-foo / --disable-foo\n"
"FOO_CONFIGURE_ENABLE=\tfoo\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4157
msgid ""
"Under some circumstances, the shorthand conditional syntax can cause "
"problems with complex constructs.  The errors are usually `Malformed "
"conditional`, an alternative syntax can be used."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4161
#, no-wrap
msgid ".if !empty(VARIABLE:MVALUE)\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4164
msgid "as an alternative to"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4168
#, no-wrap
msgid ".if ${VARIABLE:MVALUE}\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4173
#, no-wrap
msgid "Options Helpers"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4177
msgid ""
"There are some macros to help simplify conditional values which differ based "
"on the options set.  For easier access, a comprehensive list is provided:"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4178
#, no-wrap
msgid "`PLIST_SUB`, `SUB_LIST`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4180
msgid ""
"For automatic `%%_OPT_%%` and `%%NO__OPT__%%` generation, see "
"crossref:makefiles[options_sub, `OPTIONS_SUB`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4182
msgid ""
"For more complex usage, see crossref:makefiles[options-variables, Generic "
"Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4183
#, no-wrap
msgid "`CONFIGURE_ARGS`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4185
msgid ""
"For `--enable-_x_` and `--disable-_x_`, see crossref:makefiles[options-"
"configure_enable, `OPT_CONFIGURE_ENABLE`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4187
msgid ""
"For `--with-_x_` and `--without-_x_`, see crossref:makefiles[options-"
"configure_with, `OPT_CONFIGURE_WITH`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4189
msgid ""
"For all other cases, see crossref:makefiles[options-configure_on, "
"`OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4190
#, no-wrap
msgid "`CMAKE_ARGS`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4193
msgid ""
"For arguments that are booleans (`on`, `off`, `true`, `false`, `0`, `1`) see "
"crossref:makefiles[options-cmake_bool, `OPT_CMAKE_BOOL` and "
"`OPT_CMAKE_BOOL_OFF`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4195
msgid ""
"For all other cases, see crossref:makefiles[options-cmake_on, `OPT_CMAKE_ON` "
"and `OPT_CMAKE_OFF`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4196
#, no-wrap
msgid "`MESON_ARGS`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4198
msgid ""
"For arguments that take `true` or `false`, see crossref:makefiles[options-"
"meson_true, `OPT_MESON_TRUE` and `OPT_MESON_FALSE`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4200
msgid ""
"For arguments that take `yes` or `no`, use crossref:makefiles[options-"
"meson_yes, `OPT_MESON_YES` and `OPT_MESON_NO`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4202
msgid ""
"For arguments that take `enabled` or `disabled`, see "
"crossref:makefiles[options-meson_enabled, `OPT_MESON_ENABLED` and "
"`OPT_MESON_DISABLED`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4204
msgid ""
"For all other cases, use crossref:makefiles[options-meson_on, `OPT_MESON_ON` "
"and `OPT_MESON_OFF`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4205
#, no-wrap
msgid "`QMAKE_ARGS`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4207
msgid ""
"See crossref:makefiles[options-qmake_on, `OPT_QMAKE_ON` and `OPT_QMAKE_OFF`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4210
msgid "See crossref:makefiles[options-use, `OPT_USE` and `OPT_USE_OFF`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4211
#, no-wrap
msgid "`*_DEPENDS`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4213
msgid ""
"See crossref:makefiles[options-dependencies, Dependencies, `OPT_DEPTYPE` and "
"`OPT_DEPTYPE_OFF`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4214
#, no-wrap
msgid "`*` (Any variable)"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4217
msgid ""
"The most used variables have direct helpers, see crossref:makefiles[options-"
"variables, Generic Variables Replacement, `OPT_VARIABLE` and "
"`OPT_VARIABLE_OFF`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4219
msgid ""
"For any variable without a specific helper, see crossref:makefiles[options-"
"vars, `OPT_VARS` and `OPT_VARS_OFF`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4220
#, no-wrap
msgid "Options dependencies"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4223
msgid ""
"When an option need another option to work, see crossref:makefiles[options-"
"implies, `OPT_IMPLIES`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4224
#, no-wrap
msgid "Options conflicts"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4227
msgid ""
"When an option cannot work if another is also enabled, see "
"crossref:makefiles[options-prevents, `OPT_PREVENTS` and `OPT_PREVENTS_MSG`]."
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4228
#, no-wrap
msgid "Build targets"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4231
msgid ""
"When an option need some extra processing, see crossref:makefiles[options-"
"targets, Additional Build Targets, `_target_-_OPT_-on` and `_target_-_OPT_-"
"off`]."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4233
#, no-wrap
msgid "`OPTIONS_SUB`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4236
msgid ""
"If `OPTIONS_SUB` is set to `yes` then each of the options added to "
"`OPTIONS_DEFINE` will be added to `PLIST_SUB` and `SUB_LIST`, for example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4241
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPTIONS_SUB=\tyes\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4244
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4283
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4319
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4356
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4391
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4428
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4464
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4498
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4528
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4560
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4592
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4621
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4774
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4847
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4924
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5014
msgid "is equivalent to:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4248
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4287
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4323
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4395
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4432
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4468
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4502
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4532
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4564
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4596
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4625
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4851
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4928
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5005
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5018
#, no-wrap
msgid "OPTIONS_DEFINE=\tOPT1\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4250
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4289
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4325
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4362
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4397
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4434
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4470
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4504
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4534
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4566
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4598
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4627
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4659
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4716
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4782
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4853
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4930
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5020
#, no-wrap
msgid ".include <bsd.port.options.mk>\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4258
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"PLIST_SUB+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n"
"SUB_LIST+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n"
".else\n"
"PLIST_SUB+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n"
"SUB_LIST+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n"
".endif\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4264
msgid ""
"The value of `OPTIONS_SUB` is ignored.  Setting it to any value will add "
"`PLIST_SUB` and `SUB_LIST` entries for _all_ options."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4267
#, no-wrap
msgid "`OPT_USE` and `OPT_USE_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4273
msgid ""
"When option _OPT_ is selected, for each `_key=value_` pair in ``OPT_USE``, "
"_value_ is appended to the corresponding `USE_KEY`.  If _value_ has spaces "
"in it, replace them with commas and they will be changed back to spaces "
"during processing.  `OPT_USE_OFF` works the same way, but when `OPT` is "
"_not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4280
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_USES=\txorg\n"
"OPT1_USE=\tmysql=yes xorg=x11,xextproto,xext,xrandr\n"
"OPT1_USE_OFF=\topenssl=yes\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4297
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"USE_MYSQL=\tyes\n"
"USES+=\t\txorg\n"
"USE_XORG=\tx11 xextproto xext xrandr\n"
".else\n"
"USE_OPENSSL=\tyes\n"
".endif\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4300
#, no-wrap
msgid "`CONFIGURE_ARGS` Helpers"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4303
#, no-wrap
msgid "`OPT_CONFIGURE_ENABLE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4310
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_CONFIGURE_ENABLE` "
"then `--enable-_entry_` is appended to `CONFIGURE_ARGS`.  When option _OPT_ "
"is _not_ selected, `--disable-_entry_` is appended to `CONFIGURE_ARGS`.  An "
"optional argument can be specified with an `=` symbol.  This argument is "
"only appended to the `--enable-_entry_` configure option.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4316
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_CONFIGURE_ENABLE=\ttest1 test2\n"
"OPT2_CONFIGURE_ENABLE=\ttest2=exhaustive\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4331
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--enable-test1 --enable-test2\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-test1 --disable-test2\n"
".endif\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4337
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"CONFIGURE_ARGS+=\t--enable-test2=exhaustive\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-test2\n"
".endif\n"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4340
#, no-wrap
msgid "`OPT_CONFIGURE_WITH`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4347
msgid ""
"When option _OPT_ is selected, for each _entry_ in `_OPT_CONFIGURE_WITH` "
"then `--with-_entry_` is appended to `CONFIGURE_ARGS`.  When option _OPT_ is "
"_not_ selected, `--without-_entry_` is appended to `CONFIGURE_ARGS`.  An "
"optional argument can be specified with an `=` symbol.  This argument is "
"only appended to the `--with-_entry_` configure option.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4353
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_CONFIGURE_WITH=\ttest1\n"
"OPT2_CONFIGURE_WITH=\ttest2=exhaustive\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4368
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--with-test1\n"
".else\n"
"CONFIGURE_ARGS+=\t--without-test1\n"
".endif\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4374
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"CONFIGURE_ARGS+=\t--with-test2=exhaustive\n"
".else\n"
"CONFIGURE_ARGS+=\t--without-test2\n"
".endif\n"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4377
#, no-wrap
msgid "`OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4382
msgid ""
"When option _OPT_ is selected, the value of `OPT_CONFIGURE_ON`, if defined, "
"is appended to `CONFIGURE_ARGS`.  `OPT_CONFIGURE_OFF` works the same way, "
"but when `OPT` is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4388
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_CONFIGURE_ON=\t--add-test\n"
"OPT1_CONFIGURE_OFF=\t--no-test\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4403
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--add-test\n"
".else\n"
"CONFIGURE_ARGS+=\t--no-test\n"
".endif\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4409
msgid ""
"Most of the time, the helpers in crossref:makefiles[options-"
"configure_enable, `OPT_CONFIGURE_ENABLE`] and crossref:makefiles[options-"
"configure_with, `OPT_CONFIGURE_WITH`] provide a shorter and more "
"comprehensive functionality."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4412
#, no-wrap
msgid "`CMAKE_ARGS` Helpers"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4415
#, no-wrap
msgid "`OPT_CMAKE_ON` and `OPT_CMAKE_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4419
msgid ""
"When option _OPT_ is selected, the value of `OPT_CMAKE_ON`, if defined, is "
"appended to `CMAKE_ARGS`. `OPT_CMAKE_OFF` works the same way, but when `OPT` "
"is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4425
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_CMAKE_ON=\t-DTEST:BOOL=true -DDEBUG:BOOL=true\n"
"OPT1_CMAKE_OFF=\t-DOPTIMIZE:BOOL=true\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4440
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CMAKE_ARGS+=\t-DTEST:BOOL=true -DDEBUG:BOOL=true\n"
".else\n"
"CMAKE_ARGS+=\t-DOPTIMIZE:BOOL=true\n"
".endif\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4446
msgid ""
"See crossref:makefiles[options-cmake_bool, `OPT_CMAKE_BOOL` and "
"`OPT_CMAKE_BOOL_OFF`] for a shorter helper when the value is boolean."
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4449
#, no-wrap
msgid "`OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4455
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_CMAKE_BOOL` then `-"
"D_entry_:BOOL=true` is appended to `CMAKE_ARGS`.  When option _OPT_ is _not_ "
"selected, `-D_entry_:BOOL=false` is appended to `CONFIGURE_ARGS`.  "
"`OPT_CMAKE_BOOL_OFF` is the opposite, `-D_entry_:BOOL=false` is appended to "
"`CMAKE_ARGS` when the option is selected, and `-D_entry_:BOOL=true` when the "
"option is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4461
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_CMAKE_BOOL=\tTEST DEBUG\n"
"OPT1_CMAKE_BOOL_OFF=\tOPTIMIZE\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4478
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CMAKE_ARGS+=\t-DTEST:BOOL=true -DDEBUG:BOOL=true \\\n"
"\t\t-DOPTIMIZE:BOOL=false\n"
".else\n"
"CMAKE_ARGS+=\t-DTEST:BOOL=false -DDEBUG:BOOL=false \\\n"
"\t\t-DOPTIMIZE:BOOL=true\n"
".endif\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4481
#, no-wrap
msgid "`MESON_ARGS` Helpers"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4484
#, no-wrap
msgid "`OPT_MESON_ON` and `OPT_MESON_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4489
msgid ""
"When option _OPT_ is selected, the value of `OPT_MESON_ON`, if defined, is "
"appended to `MESON_ARGS`.  `OPT_MESON_OFF` works the same way, but when "
"`OPT` is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4495
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_ON=\t-Dopt=1\n"
"OPT1_MESON_OFF=\t-Dopt=2\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4510
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dopt=1\n"
".else\n"
"MESON_ARGS+=\t-Dopt=2\n"
".endif\n"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4513
#, no-wrap
msgid "`OPT_MESON_TRUE` and `OPT_MESON_FALSE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4519
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_MESON_TRUE` then `-"
"D_entry_=true` is appended to `MESON_ARGS`.  When option _OPT_ is _not_ "
"selected, `-D_entry_=false` is appended to `MESON_ARGS`.  `OPT_MESON_FALSE` "
"is the opposite, `-D_entry_=false` is appended to `MESON_ARGS` when the "
"option is selected, and `-D_entry_=true` when the option is _not_ selected.  "
"For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4525
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_TRUE=\ttest debug\n"
"OPT1_MESON_FALSE=\toptimize\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4542
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dtest=true -Ddebug=true \\\n"
"\t\t-Doptimize=false\n"
".else\n"
"MESON_ARGS+=\t-Dtest=false -Ddebug=false \\\n"
"\t\t-Doptimize=true\n"
".endif\n"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4545
#, no-wrap
msgid "`OPT_MESON_YES` and `OPT_MESON_NO`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4551
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_MESON_YES` then `-"
"D_entry_=yes` is appended to `MESON_ARGS`.  When option _OPT_ is _not_ "
"selected, `-D_entry_=no` is appended to `MESON_ARGS`.  `OPT_MESON_NO` is the "
"opposite, `-D_entry_=no` is appended to `MESON_ARGS` when the option is "
"selected, and `-D_entry_=yes` when the option is _not_ selected.  For "
"example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4557
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_YES=\ttest debug\n"
"OPT1_MESON_NO=\toptimize\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4574
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dtest=yes -Ddebug=yes \\\n"
"\t\t-Doptimize=no\n"
".else\n"
"MESON_ARGS+=\t-Dtest=no -Ddebug=no \\\n"
"\t\t-Doptimize=yes\n"
".endif\n"
msgstr ""

#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4577
#, no-wrap
msgid "`OPT_MESON_ENABLED` and `OPT_MESON_DISABLED`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4583
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_MESON_ENABLED` then "
"`-D_entry_=enabled` is appended to `MESON_ARGS`.  When option _OPT_ is _not_ "
"selected, `-D_entry_=disabled` is appended to `MESON_ARGS`.  "
"`OPT_MESON_DISABLED` is the opposite, `-D_entry_=disabled` is appended to "
"`MESON_ARGS` when the option is selected, and `-D_entry_=enabled` when the "
"option is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4589
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_ENABLED=\ttest\n"
"OPT1_MESON_DISABLED=\tdebug\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4604
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dtest=enabled -Ddebug=disabled\n"
".else\n"
"MESON_ARGS+=\t-Dtest=disabled -Ddebug=enabled\n"
".endif\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4607
#, no-wrap
msgid "`OPT_QMAKE_ON` and `OPT_QMAKE_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4612
msgid ""
"When option _OPT_ is selected, the value of `OPT_QMAKE_ON`, if defined, is "
"appended to `QMAKE_ARGS`.  `OPT_QMAKE_OFF` works the same way, but when "
"`OPT` is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4618
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_QMAKE_ON=\t-DTEST:BOOL=true\n"
"OPT1_QMAKE_OFF=\t-DPRODUCTION:BOOL=true\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4633
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"QMAKE_ARGS+=\t-DTEST:BOOL=true\n"
".else\n"
"QMAKE_ARGS+=\t-DPRODUCTION:BOOL=true\n"
".endif\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4636
#, no-wrap
msgid "`OPT_IMPLIES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4639
msgid "Provides a way to add dependencies between options."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4642
msgid ""
"When _OPT_ is selected, all the options listed in this variable will be "
"selected too.  Using the crossref:makefiles[options-"
"configure_enable,`OPT_CONFIGURE_ENABLE`] described earlier to illustrate:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4647
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_IMPLIES=\tOPT2\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4650
#, no-wrap
msgid ""
"OPT1_CONFIGURE_ENABLE=\topt1\n"
"OPT2_CONFIGURE_ENABLE=\topt2\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4653
msgid "Is equivalent to:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4665
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--enable-opt1\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-opt1\n"
".endif\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4671
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--enable-opt2\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-opt2\n"
".endif\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4674
#, no-wrap
msgid "Simple Use of `OPT_IMPLIES`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4679
msgid ""
"This port has a `X11` option, and a `GNOME` option that needs the `X11` "
"option to be selected to build."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4684
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tX11 GNOME\n"
"OPTIONS_DEFAULT=\tX11\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4689
#, no-wrap
msgid ""
"X11_USES=\txorg\n"
"X11_USE=\txorg=xi,xextproto\n"
"GNOME_USE=\tgnome=gtk30\n"
"GNOME_IMPLIES=\tX11\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4694
#, no-wrap
msgid "`OPT_PREVENTS` and `OPT_PREVENTS_MSG`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4697
msgid "Provides a way to add conflicts between options."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4701
msgid ""
"When _OPT_ is selected, all the options listed in `OPT_PREVENTS` must be un-"
"selected.  If `OPT_PREVENTS_MSG` is set and a conflict is triggered, its "
"content will be shown explaining why they conflict.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4707
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_PREVENTS=\tOPT2\n"
"OPT1_PREVENTS_MSG=\tOPT1 and OPT2 enable conflicting options\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4710
msgid "Is roughly equivalent to:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4720
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2} && ${PORT_OPTIONS:MOPT1}\n"
"BROKEN=\tOption OPT1 conflicts with OPT2 (select only one)\n"
".endif\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4723
msgid ""
"The only difference is that the first one will write an error after running "
"`make config`, suggesting changing the selected options."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4725
#, no-wrap
msgid "Simple Use of `OPT_PREVENTS`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4731
msgid ""
"This port has `X509` and `SCTP` options.  Both options add patches, but the "
"patches conflict with each other, so they cannot be selected at the same "
"time."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4735
#, no-wrap
msgid "OPTIONS_DEFINE=\tX509 SCTP\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4738
#, no-wrap
msgid ""
"SCTP_PATCHFILES=\t${PORTNAME}-6.8p1-sctp-2573.patch.gz:-p1\n"
"SCTP_CONFIGURE_WITH=\tsctp\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4743
#, no-wrap
msgid ""
"X509_PATCH_SITES=\thttp://www.roumenpetrov.info/openssh/x509/:x509\n"
"X509_PATCHFILES=\t${PORTNAME}-7.0p1+x509-8.5.diff.gz:-p1:x509\n"
"X509_PREVENTS=\t\tSCTP\n"
"X509_PREVENTS_MSG=\tX509 and SCTP patches conflict\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4748
#, no-wrap
msgid "`OPT_VARS` and `OPT_VARS_OFF`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4751
msgid "Provides a generic way to set and append to variables."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4756
msgid ""
"Before using `OPT_VARS` and `OPT_VARS_OFF`, see if there is already a more "
"specific helper available in crossref:makefiles[options-variables, Generic "
"Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF`]."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4761
msgid ""
"When option _OPT_ is selected, and `OPT_VARS` defined, `_key_=_value_` and "
"`_key_+=_value_` pairs are evaluated from `OPT_VARS`.  An `=` cause the "
"existing value of `KEY` to be overwritten, an `+=` appends to the value.  "
"`OPT_VARS_OFF` works the same way, but when `OPT` is _not_ selected."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4769
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2 OPT3\n"
"OPT1_VARS=\talso_build+=bin1\n"
"OPT2_VARS=\talso_build+=bin2\n"
"OPT3_VARS=\tbin3_build=yes\n"
"OPT3_VARS_OFF=\tbin3_build=no\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4771
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4780
#, no-wrap
msgid "MAKE_ARGS=\tALSO_BUILD=\"${ALSO_BUILD}\" BIN3_BUILD=\"${BIN3_BUILD}\"\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4786
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"ALSO_BUILD+=\tbin1\n"
".endif\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4790
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"ALSO_BUILD+=\tbin2\n"
".endif\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4796
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"BIN3_BUILD=\tyes\n"
".else\n"
"BIN3_BUILD=\tno\n"
".endif\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4801
msgid "Values containing whitespace must be enclosed in quotes:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4805
#, no-wrap
msgid "OPT_VARS=\tfoo=\"bar baz\"\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4811
msgid ""
"This is due to the way man:make[1] variable expansion deals with "
"whitespace.  When `OPT_VARS= foo=bar baz` is expanded, the variable ends up "
"containing two strings, `foo=bar` and `baz`.  But the submitter probably "
"intended there to be only one string, `foo=bar baz`.  Quoting the value "
"prevents whitespace from being used as a delimiter."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4814
msgid ""
"Also, _do not_ add extra spaces after the `_var_=` sign and before the "
"value, it would also be split into two strings.  _This will not work_:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4818
#, no-wrap
msgid "OPT_VARS=\tfoo=\tbar\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4823
#, no-wrap
msgid "Dependencies, `OPT_DEPTYPE` and `OPT_DEPTYPE_OFF`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4826
msgid "For any of these dependency types:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4828
msgid "`PKG_DEPENDS`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4838
msgid ""
"When option _OPT_ is selected, the value of `OPT_DEPTYPE`, if defined, is "
"appended to `DEPTYPE`.  `OPT_DEPTYPE_OFF` works the same, but when `OPT` is "
"_not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4844
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_LIB_DEPENDS=\tliba.so:devel/a\n"
"OPT1_LIB_DEPENDS_OFF=\tlibb.so:devel/b\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4859
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"LIB_DEPENDS+=\tliba.so:devel/a\n"
".else\n"
"LIB_DEPENDS+=\tlibb.so:devel/b\n"
".endif\n"
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4862
#, no-wrap
msgid "Generic Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4865
msgid "For any of these variables:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4867
msgid "`ALL_TARGET`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4868
msgid "`BINARY_ALIAS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4869
msgid "`BROKEN`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4871
msgid "`CFLAGS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4872
msgid "`CONFIGURE_ENV`"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4873
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5112
#, no-wrap
msgid "`CONFLICTS`"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4874
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5107
#, no-wrap
msgid "`CONFLICTS_BUILD`"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4875
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5102
#, no-wrap
msgid "`CONFLICTS_INSTALL`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4876
msgid "`CPPFLAGS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4877
msgid "`CXXFLAGS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4878
msgid "`DESKTOP_ENTRIES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4881
msgid "`EXTRA_PATCHES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4893
msgid "`IGNORE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4894
msgid "`INFO`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4895
msgid "`INSTALL_TARGET`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4896
msgid "`LDFLAGS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4897
msgid "`LIBS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4898
msgid "`MAKE_ARGS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4899
msgid "`MAKE_ENV`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4902
msgid "`PATCH_SITES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4903
msgid "`PLIST_DIRS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4904
msgid "`PLIST_FILES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4905
msgid "`PLIST_SUB`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4906
msgid "`PORTDOCS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4907
msgid "`PORTEXAMPLES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4908
msgid "`SUB_FILES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4909
msgid "`SUB_LIST`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4910
msgid "`TEST_TARGET`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4915
msgid ""
"When option _OPT_ is selected, the value of `OPT_ABOVEVARIABLE`, if defined, "
"is appended to `_ABOVEVARIABLE_`.  `OPT_ABOVEVARIABLE_OFF` works the same "
"way, but when `OPT` is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4921
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_USES=\tgmake\n"
"OPT1_CFLAGS_OFF=\t-DTEST\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4936
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"USES+=\t\tgmake\n"
".else\n"
"CFLAGS+=\t-DTEST\n"
".endif\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4943
msgid ""
"Some variables are not in this list, in particular `PKGNAMEPREFIX` and "
"`PKGNAMESUFFIX`.  This is intentional.  A port _must not_ change its name "
"when its option set changes."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4948
msgid ""
"Some of these variables, at least `ALL_TARGET`, `DISTFILES` and "
"`INSTALL_TARGET`, have their default values set _after_ the options are "
"processed."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4950
msgid "With these lines in the [.filename]#Makefile#:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4954
#, no-wrap
msgid "ALL_TARGET=\tall\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4956
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4965
#, no-wrap
msgid "DOCS_ALL_TARGET=\tdoc\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4959
msgid ""
"If the `DOCS` option is enabled, `ALL_TARGET` will have a final value of "
"`all doc`; if the option is disabled, it would have a value of `all`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4961
msgid "With only the options helper line in the [.filename]#Makefile#:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4968
msgid ""
"If the `DOCS` option is enabled, `ALL_TARGET` will have a final value of "
"`doc`; if the option is disabled, it would have a value of `all`."
msgstr ""

#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4971
#, no-wrap
msgid "Additional Build Targets, `_target_-_OPT_-on` and `_target_-_OPT_-off`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4974
msgid ""
"These [.filename]#Makefile# targets can accept optional extra build targets:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4976
msgid "`pre-fetch`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4977
msgid "`do-fetch`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4978
msgid "`post-fetch`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4979
msgid "`pre-extract`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4980
msgid "`do-extract`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4981
msgid "`post-extract`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4982
msgid "`pre-patch`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4983
msgid "`do-patch`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4984
msgid "`post-patch`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4985
msgid "`pre-configure`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4986
msgid "`do-configure`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4987
msgid "`post-configure`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4988
msgid "`pre-build`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4989
msgid "`do-build`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4990
msgid "`post-build`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4991
msgid "`pre-install`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4992
msgid "`do-install`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4993
msgid "`post-install`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4994
msgid "`post-stage`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4995
msgid "`pre-package`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4996
msgid "`do-package`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4997
msgid "`post-package`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5001
msgid ""
"When option _OPT_ is selected, the target `_TARGET_-_OPT_-on`, if defined, "
"is executed after `_TARGET_`.  `_TARGET_-_OPT_-off` works the same way, but "
"when `OPT` is _not_ selected.  For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5008
#, no-wrap
msgid ""
"post-patch-OPT1-on:\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${EXAMPLESDIR}/|' ${WRKSRC}/Makefile\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5011
#, no-wrap
msgid ""
"post-patch-OPT1-off:\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${PREFIX}/bin/|' ${WRKSRC}/Makefile\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5027
#, no-wrap
msgid ""
"post-patch:\n"
".if ${PORT_OPTIONS:MOPT1}\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${EXAMPLESDIR}/|' ${WRKSRC}/Makefile\n"
".else\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${PREFIX}/bin/|' ${WRKSRC}/Makefile\n"
".endif\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5030
#, no-wrap
msgid "Specifying the Working Directory"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5035
msgid ""
"Each port is extracted into a working directory, which must be writable.  "
"The ports system defaults to having `DISTFILES` unpack in to a directory "
"called `${DISTNAME}`.  In other words, if the [.filename]#Makefile# has:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5040
#, no-wrap
msgid ""
"PORTNAME=\tfoo\n"
"DISTVERSION=\t1.0\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5043
msgid ""
"then the port's distribution files contain a top-level directory, "
"[.filename]#foo-1.0#, and the rest of the files are located under that "
"directory."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5045
msgid "A number of variables can be overridden if that is not the case."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5047
#, no-wrap
msgid "`WRKSRC`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5051
msgid ""
"The variable lists the name of the directory that is created when the "
"application's distfiles are extracted.  If our previous example extracted "
"into a directory called [.filename]#foo# (and not [.filename]#foo-1.0#) "
"write:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5055
#, no-wrap
msgid "WRKSRC=\t${WRKDIR}/foo\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5058
msgid "or possibly"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5062
#, no-wrap
msgid "WRKSRC=\t${WRKDIR}/${PORTNAME}\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5065
#, no-wrap
msgid "`WRKSRC_SUBDIR`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5068
msgid ""
"If the source files needed for the port are in a subdirectory of the "
"extracted distribution file, set `WRKSRC_SUBDIR` to that directory."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5072
#, no-wrap
msgid "WRKSRC_SUBDIR=\tsrc\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5075
#, no-wrap
msgid "`NO_WRKSUBDIR`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5078
msgid ""
"If the port does not extract in to a subdirectory at all, then set "
"`NO_WRKSUBDIR` to indicate that."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5082
#, no-wrap
msgid "NO_WRKSUBDIR=\tyes\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5087
msgid ""
"Because `WRKDIR` is the only directory that is supposed to be writable "
"during the build, and is used to store many files recording the status of "
"the build, the port's extraction will be forced into a subdirectory."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5090
#, no-wrap
msgid "Conflict Handling"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5093
msgid ""
"There are three different variables to register a conflict between packages "
"and ports: `CONFLICTS`, `CONFLICTS_INSTALL` and `CONFLICTS_BUILD`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5097
msgid ""
"The conflict variables automatically set the variable `IGNORE`, which is "
"more fully documented in crossref:porting-dads[dads-noinstall,Marking a Port "
"Not Installable with `BROKEN`, `FORBIDDEN`, or `IGNORE`]."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5100
msgid ""
"When removing one of several conflicting ports, it is advisable to retain "
"`CONFLICTS` in those other ports for a few months to cater for users who "
"only update once in a while."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5105
msgid ""
"If the package cannot coexist with other packages (because of file "
"conflicts, runtime incompatibilities, etc.).  `CONFLICTS_INSTALL` check is "
"done after the build stage and prior to the install stage."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5110
msgid ""
"If the port cannot be built when other specific ports are already "
"installed.  Build conflicts are not recorded in the resulting package."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5115
msgid ""
"If the port cannot be built if a certain port is already installed and the "
"resulting package cannot coexist with the other package.  `CONFLICTS` check "
"is done prior to the build stage and prior to the install stage."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5119
msgid ""
"Each space-separated item in the `CONFLICTS*` variable values is matched "
"against packages except the one being built, using shell globbing rules.  "
"This allows listing all flavors of a port in a conflict list instead of "
"having to take pains to exclude the flavor being built from that list.  For "
"example, if git-lite is installed, `CONFLICTS_INSTALL=git git-lite` would "
"allow to perform:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5122
#, no-wrap
msgid "% make -C devel/git FLAVOR=lite all deinstall install\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5125
msgid ""
"But the following command would report a conflict, since the package base "
"name installed is `git-lite`, while `git` would be built, but cannot be "
"installed in addition to `git-lite`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5128
#, no-wrap
msgid "% make -C devel/git FLAVOR=default all deinstall install\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5131
msgid ""
"Without that feature, the Makefile would need one "
"`_flavor__CONFLICTS_INSTALL` for each flavor, listing every other flavor."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5134
msgid ""
"The most common content of one of these variable is the package base of "
"another port.  The package base is the package name without the appended "
"version, it can be obtained by running `make -V PKGBASE`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5136
#, no-wrap
msgid "Basic usage of `CONFLICTS*`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5142
msgid ""
"package:dns/bind99[] cannot be installed if package:dns/bind910[] is present "
"because they install same files.  First gather the package base to use:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5149
#, no-wrap
msgid ""
"% make -C dns/bind99 -V PKGBASE\n"
"bind99\n"
"% make -C dns/bind910 -V PKGBASE\n"
"bind910\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5152
msgid "Then add to the [.filename]#Makefile# of package:dns/bind99[]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5156
#, no-wrap
msgid "CONFLICTS_INSTALL=\tbind910\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5159
msgid "And add to the [.filename]#Makefile# of package:dns/bind910[]:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5163
#, no-wrap
msgid "CONFLICTS_INSTALL=\tbind99\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5170
msgid ""
"Sometimes, only certain versions of another port are incompatible.  When "
"this is the case, use the full package name including the version.  If "
"necessary, use shell globs like `*` and `?` so that all necessary versions "
"are matched."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5172
#, no-wrap
msgid "Using `CONFLICTS*` With Globs."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5177
msgid ""
"From versions from 2.0 and up-to 2.4.1_2, package:deskutils/gnotime[] used "
"to install a bundled version of package:databases/qof[]."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5179
msgid ""
"To reflect this past, the [.filename]#Makefile# of package:databases/qof[] "
"contains:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5185
#, no-wrap
msgid ""
"CONFLICTS_INSTALL=\tgnotime-2.[0-3]* \\\n"
"\t\t\tgnotime-2.4.0* gnotime-2.4.1 \\\n"
"\t\t\tgnotime-2.4.1_[12]\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5188
msgid ""
"The first entry match versions `2.0` through `2.3`, the second all the "
"revisions of `2.4.0`, the third the exact `2.4.1` version, and the last the "
"first and second revisions of the `2.4.1` version."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5190
msgid ""
"package:deskutils/gnotime[] does not have any conflicts line because its "
"current version does not conflict with anything else."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5194
msgid ""
"The variable `DISABLE_CONFLICTS` may be temporarily set when making targets "
"that are not affected by conflicts.  The variable is not to be set in port "
"Makefiles."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5198
#, no-wrap
msgid "% make -DDISABLE_CONFLICTS patch\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5201
#, no-wrap
msgid "Installing Files"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5208
msgid ""
"The `install` phase is very important to the end user because it adds files "
"to their system.  All the additional commands run in the port "
"[.filename]#Makefile#'s `*-install` targets should be echoed to the screen.  "
"_Do not_ silence these commands with `@` or `.SILENT`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5211
#, no-wrap
msgid "`INSTALL_*` Macros"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5218
msgid ""
"Use the macros provided in [.filename]#bsd.port.mk# to ensure correct modes "
"of files in the port's `*-install` targets.  Set ownership directly in "
"[.filename]#pkg-plist# with the corresponding entries, such as "
"`@(_owner_,_group_,)`, `@owner _owner_`, and `@group _group_`.  These "
"operators work until overridden, or until the end of [.filename]#pkg-plist#, "
"so remember to reset them after they are no longer needed.  The default "
"ownership is `root:wheel`.  See crossref:plist[plist-keywords-base,Base "
"Keywords] for more information."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5220
msgid "`INSTALL_PROGRAM` is a command to install binary executables."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5221
msgid "`INSTALL_SCRIPT` is a command to install executable scripts."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5222
msgid ""
"`INSTALL_LIB` is a command to install shared libraries (but not static "
"libraries)."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5223
msgid ""
"`INSTALL_KLD` is a command to install kernel loadable modules. Some "
"architectures do not like having the modules stripped, so use this command "
"instead of `INSTALL_PROGRAM`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5224
msgid ""
"`INSTALL_DATA` is a command to install sharable data, including static "
"libraries."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5225
msgid ""
"`INSTALL_MAN` is a command to install manpages and other documentation (it "
"does not compress anything)."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5227
msgid ""
"These variables are set to the man:install[1] command with the appropriate "
"flags for each situation."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5231
msgid ""
"Do not use `INSTALL_LIB` to install static libraries, because stripping them "
"renders them useless. Use `INSTALL_DATA` instead."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5234
#, no-wrap
msgid "Stripping Binaries and Shared Libraries"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5239
msgid ""
"Installed binaries should be stripped. Do not strip binaries manually unless "
"absolutely required.  The `INSTALL_PROGRAM` macro installs and strips a "
"binary at the same time.  The `INSTALL_LIB` macro does the same thing to "
"shared libraries."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5242
msgid ""
"When a file must be stripped, but neither `INSTALL_PROGRAM` nor "
"`INSTALL_LIB` macros are desirable, `${STRIP_CMD}` strips the program or "
"shared library.  This is typically done within the `post-install` target. "
"For example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5247
#, no-wrap
msgid ""
"post-install:\n"
"\t${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/xdl\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5250
msgid "When multiple files need to be stripped:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5257
#, no-wrap
msgid ""
"post-install:\n"
".for l in geometry media body track world\n"
"\t${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}-${l}.so.0\n"
".endfor\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5262
msgid ""
"Use man:file[1] on a file to determine if it has been stripped.  Binaries "
"are reported by man:file[1] as `stripped`, or `not stripped`.  Additionally, "
"man:strip[1] will detect programs that have already been stripped and exit "
"cleanly."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5266
msgid "When `WITH_DEBUG` is defined, elf files _must not_ be stripped."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5268
msgid ""
"The variables (`STRIP_CMD`, `INSTALL_PROGRAM`, `INSTALL_LIB`, ...) and "
"crossref:uses[uses,`USES`] provided by the framework handle this "
"automatically."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5270
msgid ""
"Some software, add `-s` to their `LDFLAGS`, in this case, either remove `-s` "
"if `WITH_DEBUG` is set, or remove it unconditionally and use `STRIP_CMD` in "
"`post-install`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5273
#, no-wrap
msgid "Installing a Whole Tree of Files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5278
msgid ""
"Sometimes, a large number of files must be installed while preserving their "
"hierarchical organization.  For example, copying over a whole directory tree "
"from `WRKSRC` to a target directory under `PREFIX`.  Note that `PREFIX`, "
"`EXAMPLESDIR`, `DATADIR`, and other path variables must always be prepended "
"with `STAGEDIR` to respect staging (see crossref:special[staging,Staging])."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5283
msgid ""
"Two macros exist for this situation.  The advantage of using these macros "
"instead of `cp` is that they guarantee proper file ownership and permissions "
"on target files.  The first macro, `COPYTREE_BIN`, will set all the "
"installed files to be executable, thus being suitable for installing into "
"[.filename]#PREFIX/bin#.  The second macro, `COPYTREE_SHARE`, does not set "
"executable permissions on files, and is therefore suitable for installing "
"files under [.filename]#PREFIX/share# target."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5289
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n"
"\t(cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR})\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5292
msgid ""
"This example will install the contents of the [.filename]#examples# "
"directory in the vendor distfile to the proper examples location of the port."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5298
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${DATADIR}/summer\n"
"\t(cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} \"June July August\" ${STAGEDIR}${DATADIR}/summer)\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5301
msgid ""
"And this example will install the data of summer months to the "
"[.filename]#summer# subdirectory of a [.filename]#DATADIR#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5304
msgid ""
"Additional `find` arguments can be passed via the third argument to "
"`COPYTREE_*` macros.  For example, to install all files from the first "
"example except Makefiles, one can use these commands."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5311
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n"
"\t(cd ${WRKSRC}/examples && \\\n"
"\t${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} \"! -name Makefile\")\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5317
msgid ""
"These macros do not add the installed files to [.filename]#pkg-plist#.  They "
"must be added manually.  For optional documentation (`PORTDOCS`, see "
"crossref:makefiles[install-documentation, Install Additional Documentation]) "
"and examples (`PORTEXAMPLES`), the `%%PORTDOCS%%` or `%%PORTEXAMPLES%%` "
"prefixes must be prepended in [.filename]#pkg-plist#."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5319
#, no-wrap
msgid "Install Additional Documentation"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5323
msgid ""
"If the software has some documentation other than the standard man and info "
"pages that is useful for the user, install it under `DOCSDIR`.  This can be "
"done, like the previous item, in the `post-install` target."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5328
msgid ""
"Create a new directory for the port.  The directory name is `DOCSDIR`.  This "
"usually equals `PORTNAME`.  However, if the user might want different "
"versions of the port to be installed at the same time, the whole `PKGNAME` "
"can be used."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5331
msgid ""
"Since only the files listed in [.filename]#pkg-plist# are installed, it is "
"safe to always install documentation to `STAGEDIR` (see "
"crossref:special[staging,Staging]).  Hence `.if` blocks are only needed when "
"the installed files are large enough to cause significant I/O overhead."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5337
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${DOCSDIR}\n"
"\t${INSTALL_DATA} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5341
msgid ""
"On the other hand, if there is a DOCS option in the port, install the "
"documentation in a `post-install-DOCS-on` target.  These targets are "
"described in crossref:makefiles[options-targets, Additional Build Targets, "
"`_target_-_OPT_-on` and `_target_-_OPT_-off`]."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5343
msgid ""
"Here are some handy variables and how they are expanded by default when used "
"in the [.filename]#Makefile#:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5345
msgid "`DATADIR` gets expanded to [.filename]#PREFIX/share/PORTNAME#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5346
msgid "`DATADIR_REL` gets expanded to [.filename]#share/PORTNAME#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5347
msgid "`DOCSDIR` gets expanded to [.filename]#PREFIX/share/doc/PORTNAME#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5348
msgid "`DOCSDIR_REL` gets expanded to [.filename]#share/doc/PORTNAME#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5349
msgid ""
"`EXAMPLESDIR` gets expanded to [.filename]#PREFIX/share/examples/PORTNAME#."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5350
msgid ""
"`EXAMPLESDIR_REL` gets expanded to [.filename]#share/examples/PORTNAME#."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5356
msgid ""
"The `DOCS` option only controls additional documentation installed in "
"`DOCSDIR`.  It does not apply to standard man pages and info pages.  Things "
"installed in `EXAMPLESDIR` are controlled by the `EXAMPLES` option."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5362
msgid ""
"These variables are exported to `PLIST_SUB`.  Their values will appear there "
"as pathnames relative to [.filename]#PREFIX# if possible.  That is, "
"[.filename]#share/doc/PORTNAME# will be substituted for `%%DOCSDIR%%` in the "
"packing list by default, and so on.  (See more on [.filename]#pkg-plist# "
"substitution crossref:plist[plist-sub,here].)"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5364
msgid ""
"All conditionally installed documentation files and directories are included "
"in [.filename]#pkg-plist# with the `%%PORTDOCS%%` prefix, for example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5369
#, no-wrap
msgid ""
"%%PORTDOCS%%%%DOCSDIR%%/AUTHORS\n"
"%%PORTDOCS%%%%DOCSDIR%%/CONTACT\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5378
msgid ""
"As an alternative to enumerating the documentation files in [.filename]#pkg-"
"plist#, a port can set the variable `PORTDOCS` to a list of file names and "
"shell glob patterns to add to the final packing list.  The names will be "
"relative to `DOCSDIR`.  Therefore, a port that utilizes `PORTDOCS`, and uses "
"a non-default location for its documentation, must set `DOCSDIR` "
"accordingly.  If a directory is listed in `PORTDOCS` or matched by a glob "
"pattern from this variable, the entire subtree of contained files and "
"directories will be registered in the final packing list.  If the `DOCS` "
"option has been unset then files and directories listed in `PORTDOCS` would "
"not be installed or added to port packing list.  Installing the "
"documentation at `PORTDOCS` as shown above remains up to the port itself.  A "
"typical example of utilizing `PORTDOCS`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5382
#, no-wrap
msgid "PORTDOCS=\tREADME.* ChangeLog docs/*\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5387
msgid ""
"The equivalents of `PORTDOCS` for files installed under `DATADIR` and "
"`EXAMPLESDIR` are `PORTDATA` and `PORTEXAMPLES`, respectively."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5391
msgid ""
"The contents of [.filename]#pkg-message# are displayed upon installation.  "
"See crossref:pkg-files[porting-message,the section on using [.filename]#pkg-"
"message#] for details.  [.filename]#pkg-message# does not need to be added "
"to [.filename]#pkg-plist#."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5394
#, no-wrap
msgid "Subdirectories Under `PREFIX`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5403
msgid ""
"Try to let the port put things in the right subdirectories of `PREFIX`.  "
"Some ports lump everything and put it in the subdirectory with the port's "
"name, which is incorrect.  Also, many ports put everything except binaries, "
"header files and manual pages in a subdirectory of [.filename]#lib#, which "
"does not work well with the BSD paradigm.  Many of the files must be moved "
"to one of these directories: [.filename]#etc# (setup/configuration files), "
"[.filename]#libexec# (executables started internally), [.filename]#sbin# "
"(executables for superusers/managers), [.filename]#info# (documentation for "
"info browser) or [.filename]#share# (architecture independent files).  See "
"man:hier[7] for details; the rules governing [.filename]#/usr# pretty much "
"apply to [.filename]#/usr/local# too.  The exception are ports dealing with "
"USENET \"news\".  They may use [.filename]#PREFIX/news# as a destination for "
"their files."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5405
#, no-wrap
msgid "Use `BINARY_ALIAS` to Rename Commands Instead of Patching the Build"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5408
msgid ""
"When `BINARY_ALIAS` is defined it will create symlinks of the given commands "
"in a directory which will be prepended to `PATH`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5410
msgid ""
"Use it to substitute hardcoded commands the build phase relies on without "
"having to patch any build files."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5412
#, no-wrap
msgid "Using `BINARY_ALIAS` to Make `gsed` Available as `sed`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5417
msgid ""
"Some ports expect `sed` to behave like GNU sed and use features that "
"man:sed[1] does not provide.  GNU sed is available from package:textproc/"
"gsed[] on FreeBSD."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5419
msgid ""
"Use `BINARY_ALIAS` to substitute `sed` with `gsed` for the duration of the "
"build:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5425
#, no-wrap
msgid ""
"BUILD_DEPENDS=\tgsed:textproc/gsed\n"
"...\n"
"BINARY_ALIAS=\tsed=gsed\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5430
#, no-wrap
msgid "Using `BINARY_ALIAS` to Provide Aliases for Hardcoded `python3` Commands"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5435
msgid ""
"A port that has a hardcoded reference to `python3` in its build scripts will "
"need to have it available in `PATH` at build time.  Use `BINARY_ALIAS` to "
"create an alias that points to the right Python 3 binary:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5441
#, no-wrap
msgid ""
"USES=\tpython:3.4+,build\n"
"...\n"
"BINARY_ALIAS=\tpython3=${PYTHON_CMD}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5444
msgid ""
"See crossref:special[using-python,Using Python] for more information about "
"`USES=python`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5451
msgid ""
"Binary aliases are created after the dependencies provided via "
"`BUILD_DEPENDS` and `LIB_DEPENDS` are processed and before the `configure` "
"target.  This leads to various limitations.  For example, programs installed "
"via `TEST_DEPENDS` cannot be used to create a binary alias as test "
"dependencies specified this way are processed after binary aliases are "
"created."
msgstr ""