# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # FIRST AUTHOR , 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 \n" "Language-Team: LANGUAGE \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=\tmat@FreeBSD.org\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 `user@hostname.domain`. 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 \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 \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 \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 ""