# 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: 2024-12-29 08:30-0500\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:13 #, no-wrap msgid "Configuring the Makefile" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:54 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:56 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:58 #, no-wrap msgid "The Original Source" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:62 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:65 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:67 #, no-wrap msgid "Naming" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:70 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:72 #, no-wrap msgid "`PORTNAME`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:76 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:83 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:86 #, no-wrap msgid "Versions, `DISTVERSION` _or_ `PORTVERSION`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:89 msgid "Set `DISTVERSION` to the version number of the software." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:93 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:97 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:100 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:105 msgid "" "When updating a port, it is possible to use man:pkg-version[8]'s `-t` " "argument to check if the new version is greater or lesser than before. See " "crossref:makefiles[makefile-versions-ex-pkg-version, Using man:pkg-" "version\\[8\\] to Compare Versions]." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:108 #, 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:112 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:118 #, no-wrap msgid "" "% pkg version -t 1.2 1.3\n" "< <.>\n" "% pkg version -t 1.2 1.2\n" msgstr "" #. type: Title = #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:118 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:120 #, no-wrap msgid "<.>" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:120 msgid "% pkg version -t 1.2 1.2.0" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:127 msgid "" "% pkg version -t 1.2 1.2.p1 > <.> % pkg version -t 1.2.a1 1.2.b1 < <.> % pkg " "version -t 1.2 1.2p1 < <.>" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:130 msgid "`1.2` is before `1.3`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:131 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:132 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:133 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:134 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:135 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:140 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:144 #, no-wrap msgid "Examples of `DISTVERSION` and the Derived `PORTVERSION`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:148 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:498 #, no-wrap msgid "DISTVERSION" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:150 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:499 #, no-wrap msgid "PORTVERSION" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:151 #, no-wrap msgid "0.7.1d" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:153 #, no-wrap msgid "0.7.1.d" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:154 #, no-wrap msgid "10Alpha3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:156 #, no-wrap msgid "10.a3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:157 #, no-wrap msgid "3Beta7-pre2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:159 #, no-wrap msgid "3.b7.p2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:160 #, no-wrap msgid "8:f_17" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:161 #, no-wrap msgid "8f.17" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:164 #, no-wrap msgid "Using `DISTVERSION`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:168 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:173 #, no-wrap msgid "" "PORTNAME= nekoto\n" "DISTVERSION=\t1.2-4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:176 msgid "It will generate a `PORTVERSION` of `1.2.4`." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:179 #, 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:183 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:185 msgid "If the version is `v1.2-4`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:191 #, 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:195 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:201 #, 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:204 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:210 #, 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:213 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:220 #, 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:223 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:225 msgid "All will generate a `PORTVERSION` of `1.2.4`." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:228 #, 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:232 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:237 #, 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:243 #, no-wrap msgid "" "PORTNAME= nekoto\n" "DISTVERSION=\t1.2p4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:246 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:251 #, 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:256 #, 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:260 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:265 #, no-wrap msgid "" "PORTNAME= nekoto\n" "PORTVERSION=\t1.2p4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:269 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:276 #, 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:279 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:280 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:286 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:288 #, no-wrap msgid "`PORTREVISION` and `PORTEPOCH`" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:291 #, no-wrap msgid "`PORTREVISION`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:295 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:299 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:301 msgid "Examples of when `PORTREVISION` must be bumped:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:303 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:304 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:305 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:306 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:307 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:308 msgid "Changes to `MAINTAINER`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:310 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:312 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:313 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:314 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:315 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:320 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:325 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:328 #, no-wrap msgid "`PORTEPOCH`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:332 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:338 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:343 #, 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:346 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:353 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:356 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:360 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:363 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:365 #, no-wrap msgid "Example of `PORTREVISION` and `PORTEPOCH` Usage" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:368 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:373 #, no-wrap msgid "" "PORTNAME=\tgtkmumble\n" "DISTVERSION=\t0.10\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:376 msgid "`PKGNAME` becomes `gtkmumble-0.10`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:379 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:385 #, 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:388 msgid "`PKGNAME` becomes `gtkmumble-0.10_1`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:392 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:398 #, 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:401 msgid "`PKGNAME` becomes `gtkmumble-0.2,1`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:404 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:410 #, 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:413 msgid "`PKGNAME` becomes `gtkmumble-0.3,1`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:418 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:421 #, no-wrap msgid "`PKGNAMEPREFIX` and `PKGNAMESUFFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:428 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:430 #, no-wrap msgid "Package Naming Conventions" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:434 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:436 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:439 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:441 #, no-wrap msgid "[.filename]#language_region-#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:445 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:448 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:450 msgid "The _language-_ part is set in `PKGNAMEPREFIX`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:452 #, no-wrap msgid "[.filename]#name#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:457 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:460 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:461 #, no-wrap msgid "[.filename]#-compiled.specifics#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:466 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:468 msgid "The _-compiled.specifics_ part is set in `PKGNAMESUFFIX`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:470 #, no-wrap msgid "[.filename]#-version.numbers#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:476 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:480 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:486 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:489 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:490 #, no-wrap msgid "Package Naming Examples" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:494 #, no-wrap msgid "Distribution Name" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:495 #, no-wrap msgid "PKGNAMEPREFIX" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:496 #, no-wrap msgid "PORTNAME" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:497 #, no-wrap msgid "PKGNAMESUFFIX" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:501 #, no-wrap msgid "Reason or comment" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:502 #, no-wrap msgid "mule-2.2.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:503 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:505 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:511 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:519 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:521 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:527 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:529 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:535 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:537 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:543 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:545 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:551 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:553 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:559 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:561 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:567 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:569 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:575 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:577 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:585 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:591 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:599 #, no-wrap msgid "(empty)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:504 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:512 #, no-wrap msgid "mule" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:506 #, no-wrap msgid "2.2.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:509 #, no-wrap msgid "No changes required" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:510 #, no-wrap msgid "mule-1.0.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:513 #, no-wrap msgid "1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:514 #, no-wrap msgid "1.0.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:517 #, 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:518 #, no-wrap msgid "EmiClock-1.0.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:520 #, no-wrap msgid "emiclock" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:522 #, no-wrap msgid "1.0.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:525 #, no-wrap msgid "No uppercase names for single programs" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:526 #, no-wrap msgid "rdist-1.3alpha" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:528 #, no-wrap msgid "rdist" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:530 #, no-wrap msgid "1.3alpha" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:533 #, no-wrap msgid "Version will be `1.3.a`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:534 #, no-wrap msgid "es-0.9-beta1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:536 #, no-wrap msgid "es" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:538 #, no-wrap msgid "0.9-beta1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:541 #, no-wrap msgid "Version will be `0.9.b1`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:542 #, no-wrap msgid "mailman-2.0rc3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:544 #, no-wrap msgid "mailman" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:546 #, no-wrap msgid "2.0rc3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:549 #, no-wrap msgid "Version will be `2.0.r3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:550 #, no-wrap msgid "v3.3beta021.src" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:552 #, no-wrap msgid "tiff" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:555 #, no-wrap msgid "3.3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:557 #, no-wrap msgid "What the heck was that anyway?" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:558 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:560 #, no-wrap msgid "tvtwm" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:563 #, no-wrap msgid "p11" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:565 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:573 #, 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:566 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:568 #, no-wrap msgid "piewm" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:570 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:602 #, no-wrap msgid "1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:574 #, no-wrap msgid "xvgr-2.10pl1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:576 #, no-wrap msgid "xvgr" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:579 #, no-wrap msgid "2.10.pl1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:581 #, 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:582 #, no-wrap msgid "gawk-2.15.6" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:583 #, no-wrap msgid "ja-" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:584 #, no-wrap msgid "gawk" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:586 #, no-wrap msgid "2.15.6" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:589 #, no-wrap msgid "Japanese language version" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:590 #, no-wrap msgid "psutils-1.13" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:592 #, no-wrap msgid "psutils" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:593 #, no-wrap msgid "-letter" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:594 #, no-wrap msgid "1.13" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:597 #, no-wrap msgid "Paper size hardcoded at package build time" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:598 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:600 #, no-wrap msgid "pkfonts" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:601 #, no-wrap msgid "300" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:604 #, no-wrap msgid "Package for 300dpi fonts" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:608 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:613 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:616 #, no-wrap msgid "Categorization" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:619 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4862 #, no-wrap msgid "`CATEGORIES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:625 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:629 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:631 #, no-wrap msgid "Current List of Categories" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:636 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:640 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:646 #, no-wrap msgid "Category" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:647 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1468 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1877 #, no-wrap msgid "Description" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:649 #, no-wrap msgid "Notes" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:650 #, no-wrap msgid "[.filename]#accessibility#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:651 #, no-wrap msgid "Ports to help disabled users." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:654 #, no-wrap msgid "[.filename]#afterstep#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:655 #, 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:658 #, no-wrap msgid "[.filename]#arabic#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:659 #, no-wrap msgid "Arabic language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:662 #, no-wrap msgid "[.filename]#archivers#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:663 #, no-wrap msgid "Archiving tools." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:666 #, no-wrap msgid "[.filename]#astro#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:667 #, no-wrap msgid "Astronomical ports." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:670 #, no-wrap msgid "[.filename]#audio#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:671 #, no-wrap msgid "Sound support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:674 #, no-wrap msgid "[.filename]#benchmarks#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:675 #, no-wrap msgid "Benchmarking utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:678 #, no-wrap msgid "[.filename]#biology#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:679 #, no-wrap msgid "Biology-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:682 #, no-wrap msgid "[.filename]#cad#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:683 #, no-wrap msgid "Computer aided design tools." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:686 #, no-wrap msgid "[.filename]#chinese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:687 #, no-wrap msgid "Chinese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:690 #, no-wrap msgid "[.filename]#comms#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:691 #, no-wrap msgid "Communication software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:693 #, no-wrap msgid "Mostly software to talk to the serial port." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:694 #, no-wrap msgid "[.filename]#converters#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:695 #, no-wrap msgid "Character code converters." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:698 #, no-wrap msgid "[.filename]#databases#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:699 #, no-wrap msgid "Databases." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:702 #, no-wrap msgid "[.filename]#deskutils#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:703 #, 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:706 #, no-wrap msgid "[.filename]#devel#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:707 #, no-wrap msgid "Development utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:709 #, 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:710 #, no-wrap msgid "[.filename]#dns#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:711 #, no-wrap msgid "DNS-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:714 #, no-wrap msgid "[.filename]#docs#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:715 #, no-wrap msgid "Meta-ports for FreeBSD documentation." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:718 #, no-wrap msgid "[.filename]#editors#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:719 #, no-wrap msgid "General editors." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:721 #, 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:722 #, no-wrap msgid "[.filename]#education#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:723 #, no-wrap msgid "Education-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:725 #, 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:726 #, no-wrap msgid "[.filename]#elisp#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:727 #, no-wrap msgid "Emacs-lisp ports." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:730 #, no-wrap msgid "[.filename]#emulators#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:731 #, no-wrap msgid "Emulators for other operating systems." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:733 #, 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:734 #, no-wrap msgid "[.filename]#enlightenment#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:735 #, no-wrap msgid "Ports related to the Enlightenment window manager." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:738 #, no-wrap msgid "[.filename]#finance#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:739 #, no-wrap msgid "Monetary, financial and related applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:742 #, no-wrap msgid "[.filename]#french#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:743 #, no-wrap msgid "French language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:746 #, no-wrap msgid "[.filename]#ftp#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:747 #, no-wrap msgid "FTP client and server utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:749 #, 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:750 #, no-wrap msgid "[.filename]#games#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:751 #, no-wrap msgid "Games." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:754 #, no-wrap msgid "[.filename]#geography#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:755 #, no-wrap msgid "Geography-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:758 #, no-wrap msgid "[.filename]#german#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:759 #, no-wrap msgid "German language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:762 #, no-wrap msgid "[.filename]#gnome#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:763 #, no-wrap msgid "Ports from the https://www.gnome.org/[GNOME] Project." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:766 #, no-wrap msgid "[.filename]#gnustep#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:767 #, no-wrap msgid "Software related to the GNUstep desktop environment." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:770 #, no-wrap msgid "[.filename]#graphics#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:771 #, no-wrap msgid "Graphics utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:774 #, no-wrap msgid "[.filename]#hamradio#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:775 #, no-wrap msgid "Software for amateur radio." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:778 #, no-wrap msgid "[.filename]#haskell#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:779 #, no-wrap msgid "Software related to the Haskell language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:782 #, no-wrap msgid "[.filename]#hebrew#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:783 #, no-wrap msgid "Hebrew language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:786 #, no-wrap msgid "[.filename]#hungarian#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:787 #, no-wrap msgid "Hungarian language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:790 #, no-wrap msgid "[.filename]#irc#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:791 #, no-wrap msgid "Internet Relay Chat utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:794 #, no-wrap msgid "[.filename]#japanese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:795 #, no-wrap msgid "Japanese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:798 #, no-wrap msgid "[.filename]#java#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:799 #, no-wrap msgid "Software related to the Java(TM) language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:801 #, 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:802 #, no-wrap msgid "[.filename]#kde#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:803 #, 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:806 #, no-wrap msgid "[.filename]#kde-applications#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:807 #, no-wrap msgid "Applications from the https://www.kde.org/[KDE] Project." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:810 #, no-wrap msgid "[.filename]#kde-frameworks#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:811 #, 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:814 #, no-wrap msgid "[.filename]#kde-plasma#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:815 #, no-wrap msgid "Desktop from the https://www.kde.org/[KDE] Project." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:818 #, no-wrap msgid "[.filename]#kld#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:819 #, no-wrap msgid "Kernel loadable modules." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:822 #, no-wrap msgid "[.filename]#korean#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:823 #, no-wrap msgid "Korean language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:826 #, no-wrap msgid "[.filename]#lang#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:827 #, no-wrap msgid "Programming languages." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:830 #, no-wrap msgid "[.filename]#linux#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:831 #, no-wrap msgid "Linux applications and support utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:834 #, no-wrap msgid "[.filename]#lisp#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:835 #, no-wrap msgid "Software related to the Lisp language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:838 #, no-wrap msgid "[.filename]#mail#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:839 #, no-wrap msgid "Mail software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:842 #, no-wrap msgid "[.filename]#mate#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:843 #, 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:846 #, no-wrap msgid "[.filename]#math#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:847 #, no-wrap msgid "Numerical computation software and other utilities for mathematics." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:850 #, no-wrap msgid "[.filename]#mbone#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:851 #, no-wrap msgid "MBone applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:854 #, no-wrap msgid "[.filename]#misc#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:855 #, no-wrap msgid "Miscellaneous utilities" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:857 #, 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:858 #, no-wrap msgid "[.filename]#multimedia#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:859 #, no-wrap msgid "Multimedia software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:862 #, no-wrap msgid "[.filename]#net#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:863 #, no-wrap msgid "Miscellaneous networking software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:866 #, no-wrap msgid "[.filename]#net-im#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:867 #, no-wrap msgid "Instant messaging software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:870 #, no-wrap msgid "[.filename]#net-mgmt#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:871 #, no-wrap msgid "Networking management software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:874 #, no-wrap msgid "[.filename]#net-p2p#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:875 #, no-wrap msgid "Peer to peer network applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:878 #, no-wrap msgid "[.filename]#net-vpn#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:879 #, no-wrap msgid "Virtual Private Network applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:882 #, no-wrap msgid "[.filename]#news#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:883 #, no-wrap msgid "USENET news software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:886 #, no-wrap msgid "[.filename]#parallel#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:887 #, no-wrap msgid "Applications dealing with parallelism in computing." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:890 #, no-wrap msgid "[.filename]#pear#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:891 #, no-wrap msgid "Ports related to the Pear PHP framework." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:894 #, no-wrap msgid "[.filename]#perl5#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:895 #, no-wrap msgid "Ports that require Perl version 5 to run." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:898 #, no-wrap msgid "[.filename]#plan9#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:899 #, 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:902 #, no-wrap msgid "[.filename]#polish#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:903 #, no-wrap msgid "Polish language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:906 #, no-wrap msgid "[.filename]#ports-mgmt#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:907 #, 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:910 #, no-wrap msgid "[.filename]#portuguese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:911 #, no-wrap msgid "Portuguese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:914 #, no-wrap msgid "[.filename]#print#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:915 #, no-wrap msgid "Printing software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:917 #, no-wrap msgid "Desktop publishing tools (previewers, etc.) belong here too." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:918 #, no-wrap msgid "[.filename]#python#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:919 #, 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:922 #, no-wrap msgid "[.filename]#ruby#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:923 #, 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:926 #, no-wrap msgid "[.filename]#rubygems#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:927 #, no-wrap msgid "Ports of https://www.rubygems.org/[RubyGems] packages." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:930 #, no-wrap msgid "[.filename]#russian#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:931 #, no-wrap msgid "Russian language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:934 #, no-wrap msgid "[.filename]#scheme#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:935 #, no-wrap msgid "Software related to the Scheme language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:938 #, no-wrap msgid "[.filename]#science#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:939 #, 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:942 #, no-wrap msgid "[.filename]#security#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:943 #, no-wrap msgid "Security utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:946 #, no-wrap msgid "[.filename]#shells#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:947 #, no-wrap msgid "Command line shells." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:950 #, no-wrap msgid "[.filename]#spanish#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:951 #, no-wrap msgid "Spanish language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:954 #, no-wrap msgid "[.filename]#sysutils#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:955 #, no-wrap msgid "System utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:958 #, no-wrap msgid "[.filename]#tcl#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:959 #, no-wrap msgid "Ports that use Tcl to run." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:962 #, no-wrap msgid "[.filename]#textproc#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:963 #, no-wrap msgid "Text processing utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:965 #, 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:966 #, no-wrap msgid "[.filename]#tk#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:967 #, no-wrap msgid "Ports that use Tk to run." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:970 #, no-wrap msgid "[.filename]#ukrainian#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:971 #, no-wrap msgid "Ukrainian language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:974 #, no-wrap msgid "[.filename]#vietnamese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:975 #, no-wrap msgid "Vietnamese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:978 #, no-wrap msgid "[.filename]#wayland#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:979 #, no-wrap msgid "Ports to support the Wayland display server." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:982 #, no-wrap msgid "[.filename]#windowmaker#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:983 #, no-wrap msgid "Ports to support the Window Maker window manager." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:986 #, no-wrap msgid "[.filename]#www#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:987 #, no-wrap msgid "Software related to the World Wide Web." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:989 #, no-wrap msgid "HTML language support belongs here too." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:990 #, no-wrap msgid "[.filename]#x11#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:991 #, no-wrap msgid "The X Window System and friends." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:993 #, 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:994 #, no-wrap msgid "[.filename]#x11-clocks#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:995 #, no-wrap msgid "X11 clocks." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:998 #, no-wrap msgid "[.filename]#x11-drivers#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:999 #, no-wrap msgid "X11 drivers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1002 #, no-wrap msgid "[.filename]#x11-fm#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1003 #, no-wrap msgid "X11 file managers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1006 #, no-wrap msgid "[.filename]#x11-fonts#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1007 #, no-wrap msgid "X11 fonts and font utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1010 #, no-wrap msgid "[.filename]#x11-servers#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1011 #, no-wrap msgid "X11 servers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1014 #, no-wrap msgid "[.filename]#x11-themes#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1015 #, no-wrap msgid "X11 themes." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1018 #, no-wrap msgid "[.filename]#x11-toolkits#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1019 #, no-wrap msgid "X11 toolkits." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1022 #, no-wrap msgid "[.filename]#x11-wm#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1023 #, no-wrap msgid "X11 window managers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1026 #, no-wrap msgid "[.filename]#xfce#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1027 #, 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:1030 #, no-wrap msgid "[.filename]#zope#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1031 #, no-wrap msgid "https://www.zope.org/[Zope] support." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1035 #, no-wrap msgid "Choosing the Right Category" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1040 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:1043 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:1044 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:1045 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:1046 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:1047 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:1048 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:1049 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:1050 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:1054 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:1056 #, no-wrap msgid "Proposing a New Category" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1061 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:1063 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:1067 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:1069 msgid "Here is the procedure:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1072 msgid "" "Propose the new category on {freebsd-ports}. Include a detailed rationale " "for the new category, including why the existing categories are not " "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.) " "If you are the maintainer and/or submitter, respectively, mention that as it " "may help the case." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1073 msgid "Participate in the discussion." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1074 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:1076 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:1077 msgid "[.filename]#Makefile# for the new category" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1078 msgid "[.filename]#Makefile# for the old ports' categories" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1079 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:1080 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:1082 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:1083 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:1086 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:1088 #, no-wrap msgid "Proposing Reorganizing All the Categories" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1094 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:1096 #, no-wrap msgid "The Distribution Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1099 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:1101 #, no-wrap msgid "`DISTNAME`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1108 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:1111 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:1116 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:1120 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 variable you created, and set `DISTNAME` accordingly." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1122 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:1124 #, no-wrap msgid "Deriving `PORTVERSION` Manually" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1130 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:1132 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:1139 #, 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:1142 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:1143 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:1145 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:1154 #, 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:1158 #, 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:1160 #, no-wrap msgid "LICENSE=\tISCL\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1163 #, 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:1169 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:1172 #, no-wrap msgid "Derive `DISTNAME` from `PORTVERSION`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1176 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:1178 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:1186 #, 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:1190 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:1193 #, no-wrap msgid "Exotic Case 1" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1197 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:1199 msgid "From package:audio/libworkman[]:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1207 #, 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:1212 #, no-wrap msgid "Exotic Case 2" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1217 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:1226 #, 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:1234 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:1237 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4892 #, no-wrap msgid "`MASTER_SITES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1241 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:1243 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:1246 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:1254 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:1257 #, no-wrap msgid "Using `MASTER_SITE_*` Variables" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1260 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:1264 #, no-wrap msgid "MASTER_SITES=\tGNU/make\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1268 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:1273 #, 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:1277 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:1282 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:1286 #, no-wrap msgid "MASTER_SITES=\tFOO\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1289 msgid "If `MASTER_SITE_SUBDIR` is needed, use this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1293 #, no-wrap msgid "MASTER_SITES=\tFOO/bar\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1300 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:1302 #, no-wrap msgid "Shortcuts for `MASTER_SITE_*` Macros" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1306 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1364 #, no-wrap msgid "Macro" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1308 #, no-wrap msgid "Shortcut" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1309 #, no-wrap msgid "`PERL_CPAN`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1311 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1382 #, no-wrap msgid "`CPAN`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1312 #, no-wrap msgid "`GITHUB`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1314 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1403 #, no-wrap msgid "`GH`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1315 #, no-wrap msgid "`GITHUB_CLOUD`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1317 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1406 #, no-wrap msgid "`GHC`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1318 #, no-wrap msgid "`LIBREOFFICE_DEV`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1320 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1424 #, no-wrap msgid "`LODEV`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1321 #, no-wrap msgid "`NETLIB`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1323 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1433 #, no-wrap msgid "`NL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1324 #, no-wrap msgid "`RUBYGEMS`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1326 #, no-wrap msgid "`RG`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1327 #, no-wrap msgid "`SOURCEFORGE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1328 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1445 #, no-wrap msgid "`SF`" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1332 #, no-wrap msgid "Magic MASTER_SITES Macros" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1337 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:1341 #, no-wrap msgid "MASTER_SITES=\tSF\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1345 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:1349 #, no-wrap msgid "MASTER_SITES=\tSF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1352 msgid "This can also be written as" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1357 #, 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:1360 #, no-wrap msgid "Magic `MASTER_SITES` Macros" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1366 #, no-wrap msgid "Assumed subdirectory" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1367 #, no-wrap msgid "`APACHE_COMMONS_BINARIES`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1369 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1372 #, no-wrap msgid "`${PORTNAME:S,commons-,,}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1370 #, no-wrap msgid "`APACHE_COMMONS_SOURCE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1373 #, no-wrap msgid "`APACHE_JAKARTA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1375 #, no-wrap msgid "`${PORTNAME:S,-,/,}/source`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1376 #, no-wrap msgid "`BERLIOS`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1378 #, no-wrap msgid "`${PORTNAME:tl}.berlios`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1379 #, no-wrap msgid "`CHEESESHOP`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1381 #, no-wrap msgid "`source/${DISTNAME:C/(.).\\*/\\1/}/${DISTNAME:C/(.*)-[0-9].*/\\1/}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1384 #, no-wrap msgid "`${PORTNAME:C/-.*//}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1385 #, no-wrap msgid "`DEBIAN`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1387 #, no-wrap msgid "`pool/main/${PORTNAME:C/^((lib)?.).*$/\\1/}/${PORTNAME}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1388 #, no-wrap msgid "`FARSIGHT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1390 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1414 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1417 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1420 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1423 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1426 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1435 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1441 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1474 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1478 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1887 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1891 #, no-wrap msgid "`${PORTNAME}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1391 #, no-wrap msgid "`FESTIVAL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1393 #, no-wrap msgid "`${PORTREVISION}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1394 #, no-wrap msgid "`GCC`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1396 #, no-wrap msgid "`releases/${DISTNAME}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1397 #, no-wrap msgid "`GENTOO`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1399 #, no-wrap msgid "`distfiles`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1400 #, no-wrap msgid "`GIMP`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1402 #, no-wrap msgid "`${PORTNAME}/${PORTVERSION:R}/`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1405 #, no-wrap msgid "`${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1408 #, no-wrap msgid "`${GH_ACCOUNT}/${GH_PROJECT}/`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1409 #, no-wrap msgid "`GNOME`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1411 #, no-wrap msgid "`sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1412 #, no-wrap msgid "`GNU`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1415 #, no-wrap msgid "`GNUPG`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1418 #, no-wrap msgid "`GNU_ALPHA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1421 #, no-wrap msgid "`HORDE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1427 #, no-wrap msgid "`MATE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1429 #, no-wrap msgid "`${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1430 #, no-wrap msgid "`MOZDEV`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1432 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1444 #, no-wrap msgid "`${PORTNAME:tl}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1436 #, no-wrap msgid "`QT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1438 #, no-wrap msgid "`archive/qt/${PORTVERSION:R}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1439 #, no-wrap msgid "`SAMBA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1442 #, no-wrap msgid "`SAVANNAH`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1446 #, no-wrap msgid "`${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION}`" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1449 #, no-wrap msgid "`USE_GITHUB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1453 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:1458 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:1461 msgid "These variables are available:" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1463 #, no-wrap msgid "`USE_GITHUB` Description" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1467 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1876 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3676 #, no-wrap msgid "Variable" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1470 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1879 #, no-wrap msgid "Default" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1471 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4874 #, no-wrap msgid "`GH_ACCOUNT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1472 #, 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:1475 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4875 #, no-wrap msgid "`GH_PROJECT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1476 #, no-wrap msgid "Name of the project on GitHub" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1479 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4877 #, no-wrap msgid "`GH_TAGNAME`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1480 #, 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:1482 #, no-wrap msgid "`${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1483 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4876 #, no-wrap msgid "`GH_SUBDIR`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1486 #, 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:1488 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1901 #, no-wrap msgid "(none)" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1489 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4878 #, no-wrap msgid "`GH_TUPLE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1490 #, 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:1496 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:1499 #, no-wrap msgid "Simple Use of `USE_GITHUB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1504 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:1509 #, 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:1512 #, no-wrap msgid "" "USE_GITHUB=\tyes\n" "GH_ACCOUNT=\tfreebsd\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1515 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:1518 #, no-wrap msgid "More Complete Use of `USE_GITHUB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1522 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:1527 #, 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:1532 #, 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:1535 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:1539 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:1544 #, no-wrap msgid "Use of `USE_GITHUB` with `DISTVERSIONPREFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1550 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:1556 #, 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:1558 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1622 #, no-wrap msgid "USE_GITHUB=\tyes\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1561 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:1564 #, 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:1569 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:1574 #, no-wrap msgid "" "PORTNAME=\tbar\n" "DISTVERSION=\tg20140411\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1577 #, no-wrap msgid "" "USE_GITHUB=\tyes\n" "GH_TAGNAME=\tc472d66b\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1581 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, " "Using man:pkg-version\\[8\\] to Compare Versions] for details on man:pkg-" "version[8]):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1586 #, no-wrap msgid "" "% pkg version -t g20140411 0\n" "<\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1589 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:1592 #, 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:1596 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:1601 #, 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:1604 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:1605 #, no-wrap msgid "`v0.7.3`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1607 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:1608 #, no-wrap msgid "`-14`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1610 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:1611 #, no-wrap msgid "`-gf0038b1`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1613 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:1620 #, 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:1626 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, Using man:pkg-" "version\\[8\\] to Compare Versions] for details on man:pkg-version[8]):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1633 #, 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:1639 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:1644 #, 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:1647 #, 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:1654 #, no-wrap msgid "Fetching Multiple Files from GitHub" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1658 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:1664 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:1667 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:1670 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1974 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:1675 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1979 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:1682 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1986 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:1686 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:1690 #, no-wrap msgid "USE_GITHUB=\tnodefault\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1695 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:1699 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2005 #, no-wrap msgid "DISTFILES= ${DISTNAME}${EXTRACT_SUFX}\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1704 #, no-wrap msgid "Use of `USE_GITHUB` with Multiple Distribution Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1710 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:1715 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1761 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2021 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2067 #, 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:1721 #, 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:1723 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1767 #, no-wrap msgid "CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1730 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:1736 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:1740 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:1745 #, 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:1750 #, 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:1756 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:1765 #, 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:1771 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:1774 #, no-wrap msgid "How to Use `USE_GITHUB` with Git Submodules?" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1779 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:1782 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:1787 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:1803 #, 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:1807 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:1836 #, 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:1840 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:1846 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:1849 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:1855 #, 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:1862 #, 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:1867 #, no-wrap msgid "`USE_GITLAB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1870 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:1872 #, no-wrap msgid "`USE_GITLAB` Description" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1880 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4882 #, no-wrap msgid "`GL_SITE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1881 #, no-wrap msgid "Site name hosting the GitLab project" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1883 #, no-wrap msgid "https://gitlab.com/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1884 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4879 #, no-wrap msgid "`GL_ACCOUNT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1885 #, 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:1888 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4881 #, no-wrap msgid "`GL_PROJECT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1889 #, no-wrap msgid "Name of the project on GitLab" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1892 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4880 #, no-wrap msgid "`GL_COMMIT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1893 #, 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:1895 #, no-wrap msgid "`(none)`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1896 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4883 #, no-wrap msgid "`GL_SUBDIR`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1899 #, 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:1902 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4884 #, no-wrap msgid "`GL_TUPLE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1903 #, 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:1907 #, no-wrap msgid "Simple Use of `USE_GITLAB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1911 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:1916 #, 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:1920 #, 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:1923 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:1926 #, no-wrap msgid "More Complete Use of `USE_GITLAB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1931 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:1936 #, no-wrap msgid "" "PORTNAME=\tfoobar\n" "DISTVERSION=\tg20170906\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1942 #, 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:1945 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:1949 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:1954 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:1959 #, no-wrap msgid "Fetching Multiple Files from GitLab" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1964 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:1968 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:1971 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:1990 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:1994 #, no-wrap msgid "USE_GITLAB=\tnodefault\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2001 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:2010 #, no-wrap msgid "Use of `USE_GITLAB` with Multiple Distribution Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2016 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:2028 #, 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:2030 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2074 #, no-wrap msgid "CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2037 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:2043 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:2047 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:2052 #, 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:2057 #, 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:2062 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:2072 #, 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:2078 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:2081 #, no-wrap msgid "`EXTRACT_SUFX`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2084 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:2086 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:2091 #, 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:2095 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:2099 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:2102 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4871 #, no-wrap msgid "`DISTFILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2107 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:2109 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:2113 #, no-wrap msgid "DISTFILES=\tsource1.tar.gz source2.tar.gz\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2116 msgid "" "If not explicitly set, `DISTFILES` defaults to `${DISTNAME}${EXTRACT_SUFX}`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2118 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4872 #, no-wrap msgid "`EXTRACT_ONLY`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2121 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:2126 #, 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:2129 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:2133 #, no-wrap msgid "EXTRACT_ONLY=\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2136 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4893 #, no-wrap msgid "`PATCHFILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2139 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:2142 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:2144 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:2150 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:2154 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:2158 #, no-wrap msgid "PATCHFILES=\tpatch1 patch2:-p1\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2161 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:2165 #, no-wrap msgid "PATCHFILES=\tpatch2:-p1:source2\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2173 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:2176 #, 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:2179 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:2182 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:2187 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:2191 #, no-wrap msgid "DISTFILES=\talpha:0 beta:1\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2194 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:2196 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:2199 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:2202 msgid "" "Now that you have the idea, 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:2205 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:2210 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:2213 #, no-wrap msgid "Simplified Information" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2220 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:2224 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:2227 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:2231 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:2233 #, 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:2243 #, 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:2251 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:2253 #, 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:2264 #, 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:2269 #, no-wrap msgid "Detailed Information" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2272 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:2274 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:2276 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:2282 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:2283 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:2289 msgid "" "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:2291 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:2295 #, no-wrap msgid "MASTER_SITES=\talpha\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2300 #, no-wrap msgid "MASTER_SITES=\talpha:DEFAULT\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2303 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:2306 msgid "" "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:2309 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:2311 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:2315 #, no-wrap msgid "MASTER_SITES=\talpha alpha:SOME_SITE\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2320 #, 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:2325 #, no-wrap msgid "MASTER_SITES=\talpha:SOME_SITE,DEFAULT\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2330 #, no-wrap msgid "MASTER_SITES=\talpha:DEFAULT,SOME_SITE\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2333 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:2336 msgid "" "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:2350 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:2352 #, 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:2359 #, no-wrap msgid "MASTER_SITE_SUBDIR=\told:n new/:NEW\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2362 msgid "Directories within group `DEFAULT` -> old:n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2363 msgid "Directories within group `NEW` -> new" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2367 #, 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:2385 #, 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:2389 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:2391 msgid "[.filename]#file1# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2393 #: 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:2419 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2429 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2434 msgid "`MASTER_SITE_OVERRIDE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2394 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2404 msgid "http://site1/directory-trial:1/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2395 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2405 msgid "http://site1/directory-one/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2396 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2406 msgid "http://site1/directory/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2397 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2407 msgid "http://site2/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2398 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2408 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2423 msgid "http://site7/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2399 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2409 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2415 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2425 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2430 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2436 msgid "`MASTER_SITE_BACKUP`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2401 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:2411 msgid "[.filename]#file3# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2414 msgid "http://site3/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2417 msgid "[.filename]#file4# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2420 msgid "http://site4/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2421 msgid "http://site5/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2422 msgid "http://site6/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2424 msgid "http://site8/directory-one/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2427 msgid "[.filename]#file5# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2432 msgid "[.filename]#file6# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2435 msgid "http://site8/" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2440 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:2444 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:2446 #, 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:2454 #, 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:2457 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:2459 msgid "How do I use this with `PATCH*`?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2463 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:2465 #, 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:2473 #, 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:2478 #, 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:2485 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:2488 msgid "" "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:2494 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:2495 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:2496 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:2501 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:2503 msgid "New port targets" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2504 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:2507 msgid "" "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:2509 #, no-wrap msgid "`DIST_SUBDIR`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2514 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:2516 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:2520 msgid "" "This does not affect `MASTER_SITES` defined in the [.filename]#Makefile#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2523 #, no-wrap msgid "`MAINTAINER`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2526 msgid "Set your mail-address here. Please. _:-)_" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2531 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:2534 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:2543 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:2546 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:2549 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:2556 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:2560 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:2562 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:2564 #, no-wrap msgid "`COMMENT`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2568 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:2570 msgid "The COMMENT string should be 70 characters or less." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2571 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:2572 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:2573 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:2574 msgid "Capitalize names such as Apache, JavaScript, or Perl." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2575 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:2576 msgid "Check for spelling errors." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2578 msgid "Here is an example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2582 #, 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:2585 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:2587 #, no-wrap msgid "Project website" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2590 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:2592 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:2596 #, no-wrap msgid "WWW=\t\thttps://ffmpeg.org/\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2599 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:2603 #, no-wrap msgid "WWW=\t\thttps://sourceforge.net/projects/mpd/\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2606 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:2609 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:2613 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:2615 #, no-wrap msgid "Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2619 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:2621 #, no-wrap msgid "`LICENSE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2624 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:2626 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:2630 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:2633 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:2635 #, no-wrap msgid "Simplest Usage, Predefined Licenses" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2640 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:2644 #, no-wrap msgid "LICENSE=\tLGPL21+\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2647 msgid "When the software provides 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" "LICENSE_FILE=\t${WRKSRC}/COPYING\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2657 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:2659 #, no-wrap msgid "Predefined License List" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2663 #, no-wrap msgid "Short Name" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2664 #, no-wrap msgid "Name" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2665 #, no-wrap msgid "Group" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2667 #, no-wrap msgid "Permissions" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2668 #, no-wrap msgid "`AGPLv3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2669 #, no-wrap msgid "GNU Affero General Public License version 3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2670 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2675 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2700 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2900 #: 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: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:3100 #, no-wrap msgid "`FSF GPL OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2672 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2677 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2682 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2687 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2692 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2697 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2702 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2707 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2712 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2717 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2722 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2727 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2732 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2737 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2742 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2747 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2752 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2757 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2837 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2842 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2847 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2852 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2857 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2862 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2867 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2872 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2877 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2882 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2887 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2892 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2897 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2902 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2907 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2912 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2917 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2922 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2927 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2932 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2937 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2942 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2947 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2952 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2957 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2962 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2967 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2972 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2977 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2982 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2987 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2992 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3032 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3037 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3042 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3047 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3052 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3062 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3067 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3072 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3077 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3082 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3087 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3092 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3097 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3102 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3107 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3112 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3117 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3122 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3127 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3132 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3136 #, no-wrap msgid "(default)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2673 #, no-wrap msgid "`AGPLv3+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2674 #, no-wrap msgid "GNU Affero General Public License version 3 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2678 #, no-wrap msgid "`APACHE10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2679 #, no-wrap msgid "Apache License 1.0" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2680 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2725 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2910 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3075 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3110 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3259 #, no-wrap msgid "`FSF`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2683 #, no-wrap msgid "`APACHE11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2684 #, no-wrap msgid "Apache License 1.1" msgstr "" #. type: Table #: 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:2890 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2895 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2905 #: 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: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:3035 #: 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:3085 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3090 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3095 #, no-wrap msgid "`FSF OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2688 #, no-wrap msgid "`APACHE20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2689 #, no-wrap msgid "Apache License 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2693 #, no-wrap msgid "`ART10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2694 #, no-wrap msgid "Artistic License version 1.0" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2695 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2705 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3267 #, no-wrap msgid "`OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2698 #, no-wrap msgid "`ART20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2699 #, no-wrap msgid "Artistic License version 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2703 #, no-wrap msgid "`ARTPERL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2704 #, no-wrap msgid "Artistic License (perl) version 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2708 #, no-wrap msgid "`BSD`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2709 #, no-wrap msgid "BSD license Generic Version (deprecated)" msgstr "" #. type: Table #: 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:2730 #, no-wrap msgid "`FSF OSI COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2713 #, no-wrap msgid "`BSD2CLAUSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2714 #, no-wrap msgid "BSD 2-clause \"Simplified\" License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2718 #, no-wrap msgid "`BSD3CLAUSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2719 #, no-wrap msgid "BSD 3-clause \"New\" or \"Revised\" License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2723 #, no-wrap msgid "`BSD4CLAUSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2724 #, no-wrap msgid "BSD 4-clause \"Original\" or \"Old\" License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2728 #, no-wrap msgid "`BSL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2729 #, no-wrap msgid "Boost Software License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2733 #, no-wrap msgid "`CC-BY-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2734 #, no-wrap msgid "Creative Commons Attribution 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2738 #, no-wrap msgid "`CC-BY-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2739 #, no-wrap msgid "Creative Commons Attribution 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2743 #, no-wrap msgid "`CC-BY-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2744 #, no-wrap msgid "Creative Commons Attribution 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2748 #, no-wrap msgid "`CC-BY-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2749 #, no-wrap msgid "Creative Commons Attribution 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2753 #, no-wrap msgid "`CC-BY-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2754 #, no-wrap msgid "Creative Commons Attribution 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2758 #, no-wrap msgid "`CC-BY-NC-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2759 #, no-wrap msgid "Creative Commons Attribution Non Commercial 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2762 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2767 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2772 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2777 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2782 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2787 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2792 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2797 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2802 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2807 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2812 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2817 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2822 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2827 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2832 #, no-wrap msgid "`dist-mirror``pkg-mirror``auto-accept`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2763 #, no-wrap msgid "`CC-BY-NC-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2764 #, no-wrap msgid "Creative Commons Attribution Non Commercial 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2768 #, no-wrap msgid "`CC-BY-NC-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2769 #, no-wrap msgid "Creative Commons Attribution Non Commercial 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2773 #, no-wrap msgid "`CC-BY-NC-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2774 #, no-wrap msgid "Creative Commons Attribution Non Commercial 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2778 #, no-wrap msgid "`CC-BY-NC-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2779 #, no-wrap msgid "Creative Commons Attribution Non Commercial 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2783 #, no-wrap msgid "`CC-BY-NC-ND-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2784 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2788 #, no-wrap msgid "`CC-BY-NC-ND-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2789 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2793 #, no-wrap msgid "`CC-BY-NC-ND-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2794 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2798 #, no-wrap msgid "`CC-BY-NC-ND-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2799 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2803 #, no-wrap msgid "`CC-BY-NC-ND-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2804 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2808 #, no-wrap msgid "`CC-BY-NC-SA-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2809 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2813 #, no-wrap msgid "`CC-BY-NC-SA-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2814 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2818 #, no-wrap msgid "`CC-BY-NC-SA-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2819 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2823 #, no-wrap msgid "`CC-BY-NC-SA-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2824 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2828 #, no-wrap msgid "`CC-BY-NC-SA-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2829 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2833 #, no-wrap msgid "`CC-BY-ND-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2834 #, no-wrap msgid "Creative Commons Attribution No Derivatives 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2838 #, no-wrap msgid "`CC-BY-ND-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2839 #, no-wrap msgid "Creative Commons Attribution No Derivatives 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2843 #, no-wrap msgid "`CC-BY-ND-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2844 #, no-wrap msgid "Creative Commons Attribution No Derivatives 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2848 #, no-wrap msgid "`CC-BY-ND-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2849 #, no-wrap msgid "Creative Commons Attribution No Derivatives 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2853 #, no-wrap msgid "`CC-BY-ND-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2854 #, no-wrap msgid "Creative Commons Attribution No Derivatives 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2858 #, no-wrap msgid "`CC-BY-SA-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2859 #, no-wrap msgid "Creative Commons Attribution Share Alike 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2863 #, no-wrap msgid "`CC-BY-SA-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2864 #, no-wrap msgid "Creative Commons Attribution Share Alike 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2868 #, no-wrap msgid "`CC-BY-SA-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2869 #, no-wrap msgid "Creative Commons Attribution Share Alike 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2873 #, no-wrap msgid "`CC-BY-SA-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2874 #, no-wrap msgid "Creative Commons Attribution Share Alike 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2878 #, no-wrap msgid "`CC-BY-SA-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2879 #, no-wrap msgid "Creative Commons Attribution Share Alike 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2883 #, no-wrap msgid "`CC0-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2884 #, no-wrap msgid "Creative Commons Zero v1.0 Universal" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2885 #, no-wrap msgid "`FSF GPL COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2888 #, no-wrap msgid "`CDDL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2889 #, no-wrap msgid "Common Development and Distribution License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2893 #, no-wrap msgid "`CPAL-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2894 #, no-wrap msgid "Common Public Attribution License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2898 #, no-wrap msgid "`ClArtistic`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2899 #, no-wrap msgid "Clarified Artistic License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2903 #, no-wrap msgid "`EPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2904 #, no-wrap msgid "Eclipse Public License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2908 #, no-wrap msgid "`GFDL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2909 #, no-wrap msgid "GNU Free Documentation License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2913 #, no-wrap msgid "`GMGPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2914 #, no-wrap msgid "GNAT Modified General Public License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2918 #, no-wrap msgid "`GPLv1`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2919 #, no-wrap msgid "GNU General Public License version 1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2923 #, no-wrap msgid "`GPLv1+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2924 #, no-wrap msgid "GNU General Public License version 1 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2928 #, no-wrap msgid "`GPLv2`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2929 #, no-wrap msgid "GNU General Public License version 2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2933 #, no-wrap msgid "`GPLv2+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2934 #, no-wrap msgid "GNU General Public License version 2 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2938 #, no-wrap msgid "`GPLv3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2939 #, no-wrap msgid "GNU General Public License version 3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2943 #, no-wrap msgid "`GPLv3+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2944 #, no-wrap msgid "GNU General Public License version 3 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2948 #, no-wrap msgid "`GPLv3RLE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2949 #, no-wrap msgid "GNU GPL version 3 Runtime Library Exception" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2953 #, no-wrap msgid "`GPLv3RLE+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2954 #, no-wrap msgid "GNU GPL version 3 Runtime Library Exception (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2958 #, no-wrap msgid "`ISCL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2959 #, no-wrap msgid "Internet Systems Consortium License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2960 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3105 #, no-wrap msgid "`FSF GPL OSI COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2963 #, no-wrap msgid "`LGPL20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2964 #, no-wrap msgid "GNU Library General Public License version 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2968 #, no-wrap msgid "`LGPL20+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2969 #, 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:2973 #, no-wrap msgid "`LGPL21`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2974 #, no-wrap msgid "GNU Lesser General Public License version 2.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2978 #, no-wrap msgid "`LGPL21+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2979 #, 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:2983 #, no-wrap msgid "`LGPL3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2984 #, no-wrap msgid "GNU Lesser General Public License version 3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2988 #, no-wrap msgid "`LGPL3+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2989 #, no-wrap msgid "GNU Lesser General Public License version 3 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2993 #, no-wrap msgid "`LPPL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2994 #, no-wrap msgid "LaTeX Project Public License version 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2997 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3002 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3007 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3012 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3017 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3022 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3027 #, no-wrap msgid "`dist-mirror dist-sell`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2998 #, no-wrap msgid "`LPPL11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2999 #, no-wrap msgid "LaTeX Project Public License version 1.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3003 #, no-wrap msgid "`LPPL12`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3004 #, no-wrap msgid "LaTeX Project Public License version 1.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3008 #, no-wrap msgid "`LPPL13`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3009 #, no-wrap msgid "LaTeX Project Public License version 1.3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3013 #, no-wrap msgid "`LPPL13a`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3014 #, no-wrap msgid "LaTeX Project Public License version 1.3a" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3018 #, no-wrap msgid "`LPPL13b`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3019 #, no-wrap msgid "LaTeX Project Public License version 1.3b" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3023 #, no-wrap msgid "`LPPL13c`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3024 #, no-wrap msgid "LaTeX Project Public License version 1.3c" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3028 #, no-wrap msgid "`MIT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3029 #, no-wrap msgid "MIT license / X11 license" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3030 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3050 #, no-wrap msgid "`COPYFREE FSF GPL OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3033 #, no-wrap msgid "`MPL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3034 #, no-wrap msgid "Mozilla Public License version 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3038 #, no-wrap msgid "`MPL11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3039 #, no-wrap msgid "Mozilla Public License version 1.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3043 #, no-wrap msgid "`MPL20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3044 #, no-wrap msgid "Mozilla Public License version 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3048 #, no-wrap msgid "`NCSA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3049 #, no-wrap msgid "University of Illinois/NCSA Open Source License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3053 #, no-wrap msgid "`NONE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3054 #, no-wrap msgid "No license specified" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3057 #, no-wrap msgid "`none`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3058 #, no-wrap msgid "`OFL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3059 #, 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:3060 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3065 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3275 #, no-wrap msgid "`FONTS`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3063 #, no-wrap msgid "`OFL11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3064 #, 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:3068 #, no-wrap msgid "`OWL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3069 #, no-wrap msgid "Open Works License (owl.apotheon.org)" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3070 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3271 #, no-wrap msgid "`COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3073 #, no-wrap msgid "`OpenSSL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3074 #, no-wrap msgid "OpenSSL License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3078 #, no-wrap msgid "`PD`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3079 #, no-wrap msgid "Public Domain" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3080 #, no-wrap msgid "`GPL COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3083 #, no-wrap msgid "`PHP202`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3084 #, no-wrap msgid "PHP License version 2.02" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3088 #, no-wrap msgid "`PHP30`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3089 #, no-wrap msgid "PHP License version 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3093 #, no-wrap msgid "`PHP301`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3094 #, no-wrap msgid "PHP License version 3.01" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3098 #, no-wrap msgid "`PSFL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3099 #, no-wrap msgid "Python Software Foundation License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3103 #, no-wrap msgid "`PostgreSQL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3104 #, no-wrap msgid "PostgreSQL License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3108 #, no-wrap msgid "`RUBY`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3109 #, no-wrap msgid "Ruby License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3113 #, no-wrap msgid "`UNLICENSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3114 #, no-wrap msgid "The Unlicense" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3115 #, no-wrap msgid "`COPYFREE FSF GPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3118 #, no-wrap msgid "`WTFPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3119 #, 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:3120 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3125 #, no-wrap msgid "`GPL FSF COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3123 #, no-wrap msgid "`WTFPL1`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3124 #, 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:3128 #, no-wrap msgid "`ZLIB`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3129 #, no-wrap msgid "zlib License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3130 #, no-wrap msgid "`GPL FSF OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3133 #, no-wrap msgid "`ZPL21`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3134 #, no-wrap msgid "Zope Public License version 2.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3135 #, no-wrap msgid "`GPL OSI`" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3139 #, no-wrap msgid "`LICENSE_PERMS` and `LICENSE_PERMS_NAME_`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3142 msgid "Permissions. use `none` if empty." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3143 #, no-wrap msgid "License Permissions List" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3145 #, no-wrap msgid "`dist-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3148 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:3150 #, no-wrap msgid "`no-dist-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3154 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:3156 #, no-wrap msgid "`dist-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3159 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:3161 #, no-wrap msgid "`no-dist-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3164 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:3166 #, no-wrap msgid "`pkg-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3169 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:3171 #, no-wrap msgid "`no-pkg-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3175 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:3177 #, no-wrap msgid "`pkg-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3180 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:3182 #, no-wrap msgid "`no-pkg-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3186 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:3188 #, no-wrap msgid "`auto-accept`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3192 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:3194 #, no-wrap msgid "`no-auto-accept`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3198 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:3200 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:3202 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:3206 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:3208 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:3210 msgid "" "A port without the `pkg-mirror` permission will be removed, as well as all " "the ports depending on it, after the build and they will ever end up being " "distributed." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3213 #, no-wrap msgid "Nonstandard License" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3217 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:3225 #, 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:3230 #, no-wrap msgid "Standard and Nonstandard Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3236 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:3244 #, 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:3250 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:3253 #, no-wrap msgid "`LICENSE_GROUPS` and `LICENSE_GROUPS_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3256 msgid "Groups the license belongs." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3257 #, no-wrap msgid "Predefined License Groups List" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3261 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:3263 #, no-wrap msgid "`GPL`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3265 msgid "GPL Compatible" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3269 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:3273 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:3277 msgid "Font licenses" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3279 #, no-wrap msgid "`LICENSE_NAME` and `LICENSE_NAME_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3282 msgid "Full name of the license." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3284 #, no-wrap msgid "`LICENSE_NAME`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3294 #, 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:3299 #, no-wrap msgid "`LICENSE_FILE` and `LICENSE_FILE_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3304 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:3306 #, no-wrap msgid "`LICENSE_FILE`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3314 #, no-wrap msgid "" "LICENSE=\tGPLv3+\n" "LICENSE_FILE=\t${WRKSRC}/COPYING\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3319 #, no-wrap msgid "`LICENSE_TEXT` and `LICENSE_TEXT_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3323 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:3325 #, no-wrap msgid "`LICENSE_TEXT`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3336 #, 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:3341 #, no-wrap msgid "`LICENSE_DISTFILES` and `LICENSE_DISTFILES_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3345 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:3347 #, no-wrap msgid "`LICENSE_DISTFILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3352 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:3357 #, 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:3365 #, 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:3370 #, no-wrap msgid "`LICENSE_COMB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3375 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:3377 #, no-wrap msgid "Dual Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3384 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:3389 #, no-wrap msgid "" "LICENSE=\tART10 GPLv1\n" "LICENSE_COMB= dual\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3392 msgid "If license files are provided, use this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3399 #, 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:3404 #, no-wrap msgid "Multiple Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3409 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:3414 #, no-wrap msgid "" "LICENSE=\tGPLv2 LGPL21+\n" "LICENSE_COMB=\tmulti\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3419 #, no-wrap msgid "`PORTSCOUT`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3422 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:3424 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:3426 msgid "Situations where `PORTSCOUT` is set include:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3428 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:3432 #, no-wrap msgid "PORTSCOUT=\tskipv:8.2,8.3\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3435 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:3439 #, no-wrap msgid "PORTSCOUT=\tignore:1\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3442 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:3446 #, no-wrap msgid "PORTSCOUT=\tlimit:^0\\.6\\.4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3449 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:3453 #, no-wrap msgid "PORTSCOUT=\tsite:http://www.renpy.org/dl/release/\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3456 #, no-wrap msgid "Dependencies" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3463 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:3469 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:3472 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4825 #, no-wrap msgid "`LIB_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3477 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:3481 #, no-wrap msgid "LIB_DEPENDS= libjpeg.so:graphics/jpeg\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3484 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:3487 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:3489 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4826 #, no-wrap msgid "`RUN_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3494 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:3496 msgid "For example," msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3501 #, 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:3505 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:3510 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:3515 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:3519 #, 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:3526 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:3529 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:3533 #, no-wrap msgid "RUN_DEPENDS=\t${BUILD_DEPENDS}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3540 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:3547 #, 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:3553 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:3556 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4824 #, no-wrap msgid "`BUILD_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3561 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:3565 #, no-wrap msgid "BUILD_DEPENDS=\tunzip:archivers/unzip\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3568 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3606 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:3574 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:3577 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4823 #, no-wrap msgid "`FETCH_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3582 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:3586 #, no-wrap msgid "FETCH_DEPENDS=\tncftp2:net/ncftp2\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3589 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:3592 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:3594 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4821 #, no-wrap msgid "`EXTRACT_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3599 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:3603 #, no-wrap msgid "EXTRACT_DEPENDS=\tunzip:archivers/unzip\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3609 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:3613 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:3616 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4822 #, no-wrap msgid "`PATCH_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3620 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:3624 #, no-wrap msgid "PATCH_DEPENDS=\t${NONEXISTENT}:java/jfc:extract\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3627 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:3630 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:3632 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4903 #, no-wrap msgid "`USES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3636 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:3640 #, no-wrap msgid "USES= feature[:arguments]\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3643 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:3647 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:3650 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3672 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4200 #, no-wrap msgid "`USE_*`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3657 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:3662 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:3666 #, no-wrap msgid "USE_GCC=X.Y\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3669 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:3678 #, no-wrap msgid "Means" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3679 #, no-wrap msgid "`USE_GCC`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3704 #, 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:3713 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:special[using-ruby,Using " "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:3715 #, no-wrap msgid "Minimal Version of a Dependency" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3718 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:3722 #, no-wrap msgid "p5-Spiffy>=0.26:devel/p5-Spiffy\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3726 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:3728 #, no-wrap msgid "Notes on Dependencies" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3734 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:3738 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:3743 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:3747 #, no-wrap msgid "BUILD_DEPENDS=\t${NONEXISTENT}:graphics/jpeg:extract\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3750 msgid "will always descend to the `jpeg` port and extract it." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3752 #, no-wrap msgid "Circular Dependencies Are Fatal" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3757 msgid "Do not introduce any circular dependencies into the ports tree!" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3764 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:3766 #, no-wrap msgid "Problems Caused by Automatic Dependencies" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3771 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:3773 #, no-wrap msgid "Wrong Declaration of an Optional Dependency" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3780 #, no-wrap msgid ".include \n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3784 #, 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:3793 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:3795 #, no-wrap msgid "Correct Declaration of an Optional Dependency" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3803 #, 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:3805 #, 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:3812 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:3814 #, no-wrap msgid "Slave Ports and `MASTERDIR`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3821 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:3824 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:3830 #, 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:3832 #, 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:3845 #, 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:3849 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:3851 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:3856 #, 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:3858 #, no-wrap msgid ".include\t\"${MASTERDIR}/Makefile\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3863 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:3865 #, no-wrap msgid "Man Pages" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3870 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:3872 #, no-wrap msgid "Info Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3879 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:3883 #, no-wrap msgid "INFO=\tgcc34/cpp gcc34/cppinternals gcc34/g77 ...\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3886 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:3888 #, no-wrap msgid "Makefile Options" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3893 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:3895 #, no-wrap msgid "`OPTIONS`" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3898 #, no-wrap msgid "Background" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3904 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:3908 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:3910 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:3913 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:3915 #, no-wrap msgid "Syntax" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3919 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:3923 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4352 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4649 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4706 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4770 #, no-wrap msgid "OPTIONS_DEFINE=\tOPT1 OPT2\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3926 msgid "" "Once defined, `OPTIONS` are described (optional, but strongly recommended):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3935 #, 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:3939 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:3945 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:3951 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:3954 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:3959 #, 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:3965 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:3968 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:3973 #, 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:3976 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:3981 #, 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:3984 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:3989 #, 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:3992 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:3996 #, no-wrap msgid "OPTIONS_DEFAULT=\tOPT1 OPT3 OPT6\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4002 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:4004 #, no-wrap msgid "Simple Use of `OPTIONS`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4012 #, 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:4015 #, 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:4019 #, 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:4021 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4085 #, no-wrap msgid ".include \n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4026 #, no-wrap msgid "Check for Unset Port `OPTIONS`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4035 #, 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:4039 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:4044 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4081 #, 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:4049 #, no-wrap msgid "Practical Use of `OPTIONS`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4057 #, 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:4060 #, 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:4063 #, 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:4071 #, 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:4076 #, 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:4078 #, 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:4083 #, no-wrap msgid "# Check other OPTIONS\n" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4090 #, no-wrap msgid "Default Options" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4093 msgid "These options are always on by default." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4095 msgid "`DOCS` - build and install documentation." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4096 msgid "`NLS` - Native Language Support." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4097 msgid "`EXAMPLES` - build and install examples." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4098 msgid "`IPV6` - IPv6 protocol support." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4103 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:4106 #, no-wrap msgid "Feature Auto-Activation" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4110 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:4112 #, no-wrap msgid "Wrong Handling of an Option" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4122 #, 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:4130 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:4132 #, no-wrap msgid "Correct Handling of an Option" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4141 #, 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:4149 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:4153 #, no-wrap msgid ".if !empty(VARIABLE:MVALUE)\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4156 msgid "as an alternative to" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4160 #, no-wrap msgid ".if ${VARIABLE:MVALUE}\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4165 #, no-wrap msgid "Options Helpers" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4169 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:4170 #, no-wrap msgid "`PLIST_SUB`, `SUB_LIST`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4172 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:4174 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:4175 #, no-wrap msgid "`CONFIGURE_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4177 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:4179 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:4181 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:4182 #, no-wrap msgid "`CMAKE_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4185 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:4187 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:4188 #, no-wrap msgid "`MESON_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4190 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:4192 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:4194 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:4196 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:4197 #, no-wrap msgid "`QMAKE_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4199 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:4202 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:4203 #, no-wrap msgid "`*_DEPENDS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4205 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:4206 #, no-wrap msgid "`*` (Any variable)" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4209 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:4211 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:4212 #, no-wrap msgid "Options dependencies" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4215 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:4216 #, no-wrap msgid "Options conflicts" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4219 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:4220 #, no-wrap msgid "Build targets" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4223 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:4225 #, no-wrap msgid "`OPTIONS_SUB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4228 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:4233 #, no-wrap msgid "" "OPTIONS_DEFINE=\tOPT1\n" "OPTIONS_SUB=\tyes\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4236 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4275 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4311 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4348 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4383 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4420 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4456 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4490 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4520 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4552 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4584 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4613 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4766 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4839 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4916 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5006 msgid "is equivalent to:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4240 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4279 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4315 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4387 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4424 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4460 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4494 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4524 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4556 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4588 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4617 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4843 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4920 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4997 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5010 #, no-wrap msgid "OPTIONS_DEFINE=\tOPT1\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4242 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4281 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4317 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4354 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4389 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4426 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4462 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4496 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4526 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4558 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4590 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4619 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4651 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4708 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4774 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4845 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4922 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5012 #, no-wrap msgid ".include \n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4250 #, 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:4256 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:4259 #, no-wrap msgid "`OPT_USE` and `OPT_USE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4265 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:4272 #, 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:4289 #, 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:4292 #, no-wrap msgid "`CONFIGURE_ARGS` Helpers" msgstr "" #. type: Title ===== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4295 #, no-wrap msgid "`OPT_CONFIGURE_ENABLE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4302 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:4308 #, 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:4323 #, 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:4329 #, 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:4332 #, no-wrap msgid "`OPT_CONFIGURE_WITH`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4339 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:4345 #, 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:4360 #, 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:4366 #, 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:4369 #, no-wrap msgid "`OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4374 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:4380 #, 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:4395 #, 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:4401 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:4404 #, no-wrap msgid "`CMAKE_ARGS` Helpers" msgstr "" #. type: Title ===== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4407 #, no-wrap msgid "`OPT_CMAKE_ON` and `OPT_CMAKE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4411 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:4417 #, 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:4432 #, 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:4438 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:4441 #, no-wrap msgid "`OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4447 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:4453 #, 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:4470 #, 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:4473 #, no-wrap msgid "`MESON_ARGS` Helpers" msgstr "" #. type: Title ===== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4476 #, no-wrap msgid "`OPT_MESON_ON` and `OPT_MESON_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4481 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:4487 #, 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:4502 #, 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:4505 #, no-wrap msgid "`OPT_MESON_TRUE` and `OPT_MESON_FALSE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4511 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:4517 #, 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:4534 #, 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:4537 #, no-wrap msgid "`OPT_MESON_YES` and `OPT_MESON_NO`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4543 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:4549 #, 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:4566 #, 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:4569 #, no-wrap msgid "`OPT_MESON_ENABLED` and `OPT_MESON_DISABLED`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4575 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:4581 #, 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:4596 #, 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:4599 #, no-wrap msgid "`OPT_QMAKE_ON` and `OPT_QMAKE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4604 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:4610 #, 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:4625 #, 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:4628 #, no-wrap msgid "`OPT_IMPLIES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4631 msgid "Provides a way to add dependencies between options." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4634 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:4639 #, 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:4642 #, 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:4645 msgid "Is equivalent to:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4657 #, 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:4663 #, 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:4666 #, no-wrap msgid "Simple Use of `OPT_IMPLIES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4671 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:4676 #, 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:4681 #, 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:4686 #, no-wrap msgid "`OPT_PREVENTS` and `OPT_PREVENTS_MSG`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4689 msgid "Provides a way to add conflicts between options." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4693 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:4699 #, 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:4702 msgid "Is roughly equivalent to:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4712 #, 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:4715 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:4717 #, no-wrap msgid "Simple Use of `OPT_PREVENTS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4723 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:4727 #, no-wrap msgid "OPTIONS_DEFINE=\tX509 SCTP\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4730 #, 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:4735 #, 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:4740 #, no-wrap msgid "`OPT_VARS` and `OPT_VARS_OFF`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4743 msgid "Provides a generic way to set and append to variables." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4748 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:4753 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:4761 #, 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:4763 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4772 #, 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:4778 #, 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:4782 #, 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:4788 #, 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:4793 msgid "Values containing whitespace must be enclosed in quotes:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4797 #, no-wrap msgid "OPT_VARS=\tfoo=\"bar baz\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4803 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:4806 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:4810 #, no-wrap msgid "OPT_VARS=\tfoo=\tbar\n" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4815 #, no-wrap msgid "Dependencies, `OPT_DEPTYPE` and `OPT_DEPTYPE_OFF`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4818 msgid "For any of these dependency types:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4820 msgid "`PKG_DEPENDS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4830 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:4836 #, 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:4851 #, 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:4854 #, 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:4857 msgid "For any of these variables:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4859 msgid "`ALL_TARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4860 msgid "`BINARY_ALIAS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4861 msgid "`BROKEN`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4863 msgid "`CFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4864 msgid "`CONFIGURE_ENV`" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4865 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5104 #, no-wrap msgid "`CONFLICTS`" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4866 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5099 #, no-wrap msgid "`CONFLICTS_BUILD`" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4867 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5094 #, no-wrap msgid "`CONFLICTS_INSTALL`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4868 msgid "`CPPFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4869 msgid "`CXXFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4870 msgid "`DESKTOP_ENTRIES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4873 msgid "`EXTRA_PATCHES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4885 msgid "`IGNORE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4886 msgid "`INFO`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4887 msgid "`INSTALL_TARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4888 msgid "`LDFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4889 msgid "`LIBS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4890 msgid "`MAKE_ARGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4891 msgid "`MAKE_ENV`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4894 msgid "`PATCH_SITES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4895 msgid "`PLIST_DIRS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4896 msgid "`PLIST_FILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4897 msgid "`PLIST_SUB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4898 msgid "`PORTDOCS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4899 msgid "`PORTEXAMPLES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4900 msgid "`SUB_FILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4901 msgid "`SUB_LIST`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4902 msgid "`TEST_TARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4907 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:4913 #, 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:4928 #, 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:4935 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:4940 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:4942 msgid "With these lines in the [.filename]#Makefile#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4946 #, no-wrap msgid "ALL_TARGET=\tall\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4948 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4957 #, no-wrap msgid "DOCS_ALL_TARGET=\tdoc\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4951 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:4953 msgid "With only the options helper line in the [.filename]#Makefile#:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4960 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:4963 #, 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:4966 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:4968 msgid "`pre-fetch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4969 msgid "`do-fetch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4970 msgid "`post-fetch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4971 msgid "`pre-extract`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4972 msgid "`do-extract`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4973 msgid "`post-extract`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4974 msgid "`pre-patch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4975 msgid "`do-patch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4976 msgid "`post-patch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4977 msgid "`pre-configure`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4978 msgid "`do-configure`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4979 msgid "`post-configure`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4980 msgid "`pre-build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4981 msgid "`do-build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4982 msgid "`post-build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4983 msgid "`pre-install`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4984 msgid "`do-install`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4985 msgid "`post-install`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4986 msgid "`post-stage`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4987 msgid "`pre-package`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4988 msgid "`do-package`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4989 msgid "`post-package`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4993 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:5000 #, 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:5003 #, 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:5019 #, 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:5022 #, no-wrap msgid "Specifying the Working Directory" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5027 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:5032 #, no-wrap msgid "" "PORTNAME=\tfoo\n" "DISTVERSION=\t1.0\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5035 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:5037 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:5039 #, no-wrap msgid "`WRKSRC`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5043 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:5047 #, no-wrap msgid "WRKSRC=\t${WRKDIR}/foo\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5050 msgid "or possibly" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5054 #, no-wrap msgid "WRKSRC=\t${WRKDIR}/${PORTNAME}\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5057 #, no-wrap msgid "`WRKSRC_SUBDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5060 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:5064 #, no-wrap msgid "WRKSRC_SUBDIR=\tsrc\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5067 #, no-wrap msgid "`NO_WRKSUBDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5070 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:5074 #, no-wrap msgid "NO_WRKSUBDIR=\tyes\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5079 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:5082 #, no-wrap msgid "Conflict Handling" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5085 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:5089 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:5092 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:5097 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:5102 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:5107 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:5111 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:5114 #, 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:5117 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:5120 #, 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:5123 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:5126 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:5128 #, no-wrap msgid "Basic usage of `CONFLICTS*`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5134 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:5141 #, 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:5144 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:5148 #, no-wrap msgid "CONFLICTS_INSTALL=\tbind910\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5151 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:5155 #, no-wrap msgid "CONFLICTS_INSTALL=\tbind99\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5162 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:5164 #, no-wrap msgid "Using `CONFLICTS*` With Globs." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5169 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:5171 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:5177 #, 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:5180 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:5182 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:5186 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:5190 #, no-wrap msgid "% make -DDISABLE_CONFLICTS patch\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5193 #, no-wrap msgid "Installing Files" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5200 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:5203 #, no-wrap msgid "`INSTALL_*` Macros" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5210 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:5212 msgid "`INSTALL_PROGRAM` is a command to install binary executables." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5213 msgid "`INSTALL_SCRIPT` is a command to install executable scripts." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5214 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:5215 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:5216 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:5217 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:5219 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:5223 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:5226 #, no-wrap msgid "Stripping Binaries and Shared Libraries" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5231 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:5234 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:5239 #, 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:5242 msgid "When multiple files need to be stripped:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5249 #, 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:5254 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:5258 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:5260 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:5262 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:5265 #, no-wrap msgid "Installing a Whole Tree of Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5270 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:5275 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:5281 #, 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:5284 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:5290 #, 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:5293 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:5296 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:5303 #, 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:5309 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:5311 #, no-wrap msgid "Install Additional Documentation" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5315 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:5320 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:5323 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:5329 #, 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:5333 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:5335 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:5337 msgid "`DATADIR` gets expanded to [.filename]#PREFIX/share/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5338 msgid "`DATADIR_REL` gets expanded to [.filename]#share/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5339 msgid "`DOCSDIR` gets expanded to [.filename]#PREFIX/share/doc/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5340 msgid "`DOCSDIR_REL` gets expanded to [.filename]#share/doc/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5341 msgid "" "`EXAMPLESDIR` gets expanded to [.filename]#PREFIX/share/examples/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5342 msgid "" "`EXAMPLESDIR_REL` gets expanded to [.filename]#share/examples/PORTNAME#." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5348 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:5354 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:5356 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:5361 #, no-wrap msgid "" "%%PORTDOCS%%%%DOCSDIR%%/AUTHORS\n" "%%PORTDOCS%%%%DOCSDIR%%/CONTACT\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5370 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:5374 #, no-wrap msgid "PORTDOCS=\tREADME.* ChangeLog docs/*\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5379 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:5383 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:5386 #, no-wrap msgid "Subdirectories Under `PREFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5395 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:5397 #, 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:5400 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:5402 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:5404 #, 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:5409 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:5411 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:5417 #, 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:5422 #, 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:5427 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:5433 #, 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:5436 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:5443 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 ""