diff --git a/documentation/content/en/articles/committers-guide/_index.po b/documentation/content/en/articles/committers-guide/_index.po index 81fb326abb..9938c1f80a 100644 --- a/documentation/content/en/articles/committers-guide/_index.po +++ b/documentation/content/en/articles/committers-guide/_index.po @@ -1,9312 +1,9346 @@ # 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: 2022-10-01 10:13-0300\n" +"POT-Creation-Date: 2022-10-16 17:07-0300\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/articles/committers-guide/_index.adoc:1 #, no-wrap msgid "Introductory information for FreeBSD committers" msgstr "" #. type: Title = #: documentation/content/en/articles/committers-guide/_index.adoc:1 #: documentation/content/en/articles/committers-guide/_index.adoc:12 #, no-wrap msgid "Committer's Guide" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:45 msgid "Abstract" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:48 msgid "" "This document provides information for the FreeBSD committer community. All " "new committers should read this document before they start, and existing " "committers are strongly encouraged to review it from time to time." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:53 msgid "" "Almost all FreeBSD developers have commit rights to one or more " "repositories. However, a few developers do not, and some of the information " "here applies to them as well. (For instance, some people only have rights " "to work with the Problem Report database). Please see <> " "for more information." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:55 msgid "" "This document may also be of interest to members of the FreeBSD community " "who want to learn more about how the project works." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:57 msgid "'''" msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:61 #, no-wrap msgid "Administrative Details" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:68 #, no-wrap msgid "_Login Methods_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:70 #, no-wrap msgid "man:ssh[1], protocol 2 only" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:71 #, no-wrap msgid "_Main Shell Host_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:73 #, no-wrap msgid "`freefall.FreeBSD.org`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:74 #, no-wrap msgid "_Reference Machines_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:76 #, no-wrap msgid "`ref*.FreeBSD.org`, `universe*.freeBSD.org` (see also link:https://www.FreeBSD.org/internal/machines/[FreeBSD Project Hosts])" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:77 #, no-wrap msgid "_SMTP Host_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:79 #, no-wrap msgid "`smtp.FreeBSD.org:587` (see also <>)." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:80 #, no-wrap msgid "`_src/_` Git Repository" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:82 #, no-wrap msgid "`ssh://git@gitrepo.FreeBSD.org/src.git` (see also <>)." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:83 #, no-wrap msgid "`_doc/_` Git Repository" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:85 #, no-wrap msgid "`ssh://git@gitrepo.FreeBSD.org/doc.git` (see also <>)." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:86 #, no-wrap msgid "`_ports/_` Git Repository" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:88 #, no-wrap msgid "`ssh://git@gitrepo.FreeBSD.org/ports.git` (see also <>)." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:89 #, no-wrap msgid "_Internal Mailing Lists_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:91 #, no-wrap msgid "developers (technically called all-developers), doc-developers, doc-committers, ports-developers, ports-committers, src-developers, src-committers. (Each project repository has its own -developers and -committers mailing lists. Archives for these lists can be found in the files [.filename]#/local/mail/repository-name-developers-archive# and [.filename]#/local/mail/repository-name-committers-archive# on the `FreeBSD.org` cluster.)" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:92 #, no-wrap msgid "_Core Team monthly reports_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:94 #, no-wrap msgid "[.filename]#/home/core/public/monthly-reports# on the `FreeBSD.org` cluster." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:95 #, no-wrap msgid "_Ports Management Team monthly reports_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:97 #, no-wrap msgid "[.filename]#/home/portmgr/public/monthly-reports# on the `FreeBSD.org` cluster." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:98 #, no-wrap msgid "_Noteworthy `src/` Git Branches:_" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:99 #, no-wrap msgid "`stable/n` (`n`-STABLE), `main` (-CURRENT)" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:102 msgid "" "man:ssh[1] is required to connect to the project hosts. For more " "information, see <>." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:104 msgid "Useful links:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:106 msgid "link:https://www.FreeBSD.org/internal/[FreeBSD Project Internal Pages]" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:107 msgid "link:https://www.FreeBSD.org/internal/machines/[FreeBSD Project Hosts]" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:108 msgid "" "link:https://www.FreeBSD.org/administration/[FreeBSD Project Administrative " "Groups]" msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:110 #, no-wrap msgid "OpenPGP Keys for FreeBSD" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:115 msgid "" "Cryptographic keys conforming to the OpenPGP (__Pretty Good Privacy__) " "standard are used by the FreeBSD project to authenticate committers. " "Messages carrying important information like public SSH keys can be signed " "with the OpenPGP key to prove that they are really from the committer. See " "https://nostarch.com/releases/pgp_release.pdf[PGP & GPG: Email for the " "Practical Paranoid by Michael Lucas] and http://en.wikipedia.org/wiki/" "Pretty_Good_Privacy[] for more information." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:117 #, no-wrap msgid "Creating a Key" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:121 msgid "" "Existing keys can be used, but should be checked with [." "filename]#documentation/tools/checkkey.sh# first. In this case, make sure " "the key has a FreeBSD user ID." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:123 msgid "" "For those who do not yet have an OpenPGP key, or need a new key to meet " "FreeBSD security requirements, here we show how to generate one." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:128 msgid "" "Install [.filename]#security/gnupg#. Enter these lines in [.filename]#~/." "gnupg/gpg.conf# to set minimum acceptable defaults:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:139 #, no-wrap msgid "" "fixed-list-mode\n" "keyid-format 0xlong\n" "personal-digest-preferences SHA512 SHA384 SHA256 SHA224\n" "default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 BZIP2 ZLIB ZIP Uncompressed\n" "verify-options show-uid-validity\n" "list-options show-uid-validity\n" "sig-notation issuer-fpr@notations.openpgp.fifthhorseman.net=%g\n" "cert-digest-algo SHA512\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:141 msgid "Generate a key:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:148 #, no-wrap msgid "" "% gpg --full-gen-key\n" "gpg (GnuPG) 2.1.8; Copyright (C) 2015 Free Software Foundation, Inc.\n" "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:169 #, no-wrap msgid "" "Warning: using insecure memory!\n" "Please select what kind of key you want:\n" " (1) RSA and RSA (default)\n" " (2) DSA and Elgamal\n" " (3) DSA (sign only)\n" " (4) RSA (sign only)\n" "Your selection? 1\n" "RSA keys may be between 1024 and 4096 bits long.\n" "What keysize do you want? (2048) 2048 <.>\n" "Requested keysize is 2048 bits\n" "Please specify how long the key should be valid.\n" "\t 0 = key does not expire\n" " = key expires in n days\n" " w = key expires in n weeks\n" " m = key expires in n months\n" " y = key expires in n years\n" "Key is valid for? (0) 3y <.>\n" "Key expires at Wed Nov 4 17:20:20 2015 MST\n" "Is this correct? (y/N) y\n" "GnuPG needs to construct a user ID to identify your key.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:175 #, no-wrap msgid "" "Real name: Chucky Daemon <.>\n" "Email address: notreal@example.com\n" "Comment:\n" "You selected this USER-ID:\n" "\"Chucky Daemon \"\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:178 #, no-wrap msgid "" "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o\n" "You need a Passphrase to protect your secret key.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:181 msgid "" "2048-bit keys with a three-year expiration provide adequate protection at " "present (2013-12). http://danielpocock.com/rsa-key-sizes-2048-or-4096-bits[] " "describes the situation in more detail." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:183 msgid "" "A three year key lifespan is short enough to obsolete keys weakened by " "advancing computer power, but long enough to reduce key management problems." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:185 msgid "" "Use your real name here, preferably matching that shown on government-issued " "ID to make it easier for others to verify your identity. Text that may help " "others identify you can be entered in the `Comment` section." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:189 msgid "" "After the email address is entered, a passphrase is requested. Methods of " "creating a secure passphrase are contentious. Rather than suggest a single " "way, here are some links to sites that describe various methods: http://" "world.std.com/~reinhold/diceware.html[], http://www.iusmentis.com/security/" "passphrasefaq/[], http://xkcd.com/936/[], http://en.wikipedia.org/wiki/" "Passphrase[]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:193 msgid "" "Protect the private key and passphrase. If either the private key or " "passphrase may have been compromised or disclosed, immediately notify mailto:" "accounts@FreeBSD.org[accounts@FreeBSD.org] and revoke the key." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:195 msgid "" "Committing the new key is shown in <>." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:197 #, no-wrap msgid "Kerberos and LDAP web Password for FreeBSD Cluster" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:202 msgid "" "The FreeBSD cluster requires a Kerberos password to access certain " "services. The Kerberos password also serves as the LDAP web password, since " "LDAP is proxying to Kerberos in the cluster. Some of the services which " "require this include:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:204 msgid "https://bugs.freebsd.org/bugzilla[Bugzilla]" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:205 msgid "https://ci.freebsd.org[Jenkins]" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:207 msgid "" "To create a new Kerberos account in the FreeBSD cluster, or to reset a " "Kerberos password for an existing account using a random password generator:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:211 #, no-wrap msgid "% ssh kpasswd.freebsd.org\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:216 msgid "This must be done from a machine outside of the FreeBSD.org cluster." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:219 msgid "" "A Kerberos password can also be set manually by logging into `freefall." "FreeBSD.org` and running:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:223 #, no-wrap msgid "% kpasswd\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:229 msgid "" "Unless the Kerberos-authenticated services of the FreeBSD.org cluster have " "been used previously, `Client unknown` will be shown. This error means that " "the `ssh kpasswd.freebsd.org` method shown above must be used first to " "initialize the Kerberos account." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:232 #, no-wrap msgid "Commit Bit Types" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:238 msgid "" "The FreeBSD repository has a number of components which, when combined, " "support the basic operating system source, documentation, third party " "application ports infrastructure, and various maintained utilities. When " "FreeBSD commit bits are allocated, the areas of the tree where the bit may " "be used are specified. Generally, the areas associated with a bit reflect " "who authorized the allocation of the commit bit. Additional areas of " "authority may be added at a later date: when this occurs, the committer " "should follow normal commit bit allocation procedures for that area of the " "tree, seeking approval from the appropriate entity and possibly getting a " "mentor for that area for some period of time." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:244 #, no-wrap msgid "__Committer Type__" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:245 #, no-wrap msgid "__Responsible__" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:247 #, no-wrap msgid "__Tree Components__" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:248 #, no-wrap msgid "src" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:249 #, no-wrap msgid "core@" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:251 #, no-wrap msgid "src/" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:252 #, no-wrap msgid "doc" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:253 #, no-wrap msgid "doceng@" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:255 #, no-wrap msgid "doc/, ports/, src/ documentation" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:256 #, no-wrap msgid "ports" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:257 #, no-wrap msgid "portmgr@" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:258 #, no-wrap msgid "ports/" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:263 msgid "" "Commit bits allocated prior to the development of the notion of areas of " "authority may be appropriate for use in many parts of the tree. However, " "common sense dictates that a committer who has not previously worked in an " "area of the tree seek review prior to committing, seek approval from the " "appropriate responsible party, and/or work with a mentor. Since the rules " "regarding code maintenance differ by area of the tree, this is as much for " "the benefit of the committer working in an area of less familiarity as it is " "for others working on the tree." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:265 msgid "" "Committers are encouraged to seek review for their work as part of the " "normal development process, regardless of the area of the tree where the " "work is occurring." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:266 #, no-wrap msgid "Policy for Committer Activity in Other Trees" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:269 msgid "" "All committers may modify [.filename]#src/share/misc/committers-*.dot#, [." "filename]#src/usr.bin/calendar/calendars/calendar.freebsd#, and [." "filename]#ports/astro/xearth/files#." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:270 msgid "" "doc committers may commit documentation changes to [.filename]#src# files, " "such as man pages, READMEs, fortune databases, calendar files, and comment " "fixes without approval from a src committer, subject to the normal care and " "tending of commits." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:272 msgid "" "Any committer may make changes to any other tree with an \"Approved by\" " "from a non-mentored committer with the appropriate bit. Mentored committers " "can provide a \"Reviewed by\" but not an \"Approved by\"." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:273 msgid "" "Committers can acquire an additional bit by the usual process of finding a " "mentor who will propose them to core, doceng, or portmgr, as appropriate. " "When approved, they will be added to 'access' and the normal mentoring " "period will ensue, which will involve a continuing of \"Approved by\" for " "some period." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:275 #, no-wrap msgid "Documentation Implicit (Blanket) Approval" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:279 msgid "" "Some types of fixes have \"blanket approval\" from the {doceng}, allowing " "any committer to fix those categories of problems on any part of the doc " "tree. These fixes do not need approval or review from a doc committer if " "the author doesn't have a doc commit bit." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:281 msgid "Blanket approval applies to these types of fixes:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:283 msgid "Typos" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:284 msgid "Trivial fixes" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:286 msgid "" "Punctuation, URLs, dates, paths and file names with outdated or incorrect " "information, and other common mistakes that may confound the readers." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:289 msgid "" "Over the years, some implicit approvals were granted in the doc tree. This " "list shows the most common cases:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:291 msgid "" "Changes in [.filename]#documentation/content/en/books/porters-handbook/" "versions/_index.adoc#" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:293 msgid "" "extref:{porters-handbook}versions/[__FreeBSD_version Values (Porter's " "Handbook)], mainly used for src committers." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:294 msgid "Changes in [.filename]#doc/shared/contrib-additional.adoc#" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:296 msgid "" "extref:{contributors}[Additional FreeBSD Contributors, contrib-additional] " "maintenance." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:297 msgid "All link:#commit-steps[Steps for New Committers], doc related" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:298 msgid "Security advisories; Errata Notices; Releases;" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:300 msgid "Used by {security-officer} and {re}." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:301 msgid "Changes in [.filename]#website/content/en/donations/donors.adoc#" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:303 msgid "Used by {donations}." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:305 msgid "" "Before any commit, a build test is necessary; see the 'Overview' and 'The " "FreeBSD Documentation Build Process' sections of the extref:{fdp-primer}" "[FreeBSD Documentation Project Primer for New Contributors] for more details." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:307 #, no-wrap msgid "Git Primer" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:310 #, no-wrap msgid "Git basics" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:317 msgid "" "When one searches for \"Git Primer\" a number of good ones come up. Daniel " "Miessler's link:https://danielmiessler.com/study/git/[A git primer] and " "Willie Willus' link:https://gist.github.com/" "williewillus/068e9a8543de3a7ef80adb2938657b6b[Git - Quick Primer] are both " "good overviews. The Git book is also complete, but much longer https://git-" "scm.com/book/en/v2. There is also this website https://dangitgit.com/ for " "common traps and pitfalls of Git, in case you need guidance to fix things " "up. Finally, an introduction link:https://eagain.net/articles/git-for-" "computer-scientists/[targeted at computer scientists] has proven helpful to " "some at explaining the Git world view." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:319 msgid "" "This document will assume that you've read through it and will try not to " "belabor the basics (though it will cover them briefly)." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:321 #, no-wrap msgid "Git Mini Primer" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:324 msgid "" "This primer is less ambitiously scoped than the old Subversion Primer, but " "should cover the basics." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:325 #, no-wrap msgid "Scope" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:331 msgid "" "If you want to download FreeBSD, compile it from sources, and generally keep " "up to date that way, this primer is for you. It covers getting the sources, " "updating the sources, bisecting and touches briefly on how to cope with a " "few local changes. It covers the basics, and tries to give good pointers to " "more in-depth treatment for when the reader finds the basics insufficient. " "Other sections of this guide cover more advanced topics related to " "contributing to the project." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:335 msgid "" "The goal of this section is to highlight those bits of Git needed to track " "sources. They assume a basic understanding of Git. There are many primers " "for Git on the web, but the https://git-scm.com/book/en/v2[Git Book] " "provides one of the better treatments." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:337 #, no-wrap msgid "Getting Started For Developers" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:340 msgid "" "This section describes the read-write access for committers to push the " "commits from developers or contributors." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:341 #, no-wrap msgid "Daily use" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:344 msgid "Clone the repository:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:348 #, no-wrap msgid "% git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/notes/*' https://git.freebsd.org/${repo}.git\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:351 msgid "Then you should have the official mirrors as your remote:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:357 #, no-wrap msgid "" "% git remote -v\n" "freebsd https://git.freebsd.org/${repo}.git (fetch)\n" "freebsd https://git.freebsd.org/${repo}.git (push)\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:360 msgid "Configure the FreeBSD committer data:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:363 msgid "" "The commit hook in repo.freebsd.org checks the \"Commit\" field matches the " "committer's information in FreeBSD.org. The easiest way to get the " "suggested config is by executing `/usr/local/bin/gen-gitconfig.sh` script on " "freefall:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:370 #, no-wrap msgid "" "% gen-gitconfig.sh\n" "[...]\n" "% git config user.name (your name in gecos)\n" "% git config user.email (your login)@FreeBSD.org\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:373 msgid "Set the push URL:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:377 #, no-wrap msgid "% git remote set-url --push freebsd git@gitrepo.freebsd.org:${repo}.git\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:380 msgid "" "Then you should have separated fetch and push URLs as the most efficient " "setup:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:386 #, no-wrap msgid "" "% git remote -v\n" "freebsd https://git.freebsd.org/${repo}.git (fetch)\n" "freebsd git@gitrepo.freebsd.org:${repo}.git (push)\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:389 msgid "" "Again, note that `gitrepo.freebsd.org` will be canonicalized to `repo." "freebsd.org` in the future." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:391 msgid "Install commit message template hook:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:396 #, no-wrap msgid "" "% fetch https://cgit.freebsd.org/src/plain/tools/tools/git/hooks/prepare-commit-msg -o .git/hooks\n" "% chmod 755 .git/hooks/prepare-commit-msg\n" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:399 #, no-wrap msgid "\"admin\" branch" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:402 msgid "" "The `access` and `mentors` files are stored in an orphan branch, `internal/" "admin`, in each repository." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:404 msgid "" "Following example is how to check out the `internal/admin` branch to a local " "branch named `admin`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:410 #, no-wrap msgid "" "% git config --add remote.freebsd.fetch '+refs/internal/*:refs/internal/*'\n" "% git fetch\n" "% git checkout -b admin internal/admin\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:412 msgid "Alternatively, you can add a worktree for the `admin` branch:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:416 #, no-wrap msgid "git worktree add -b admin ../${repo}-admin internal/admin\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:420 msgid "" "For browsing `internal/admin` branch on web: https://cgit.freebsd.org/" "${repo}/log/?h=internal/admin" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:422 msgid "For pushing, either specify the full refspec:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:426 #, no-wrap msgid "git push freebsd HEAD:refs/internal/admin\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:429 msgid "" "Or set `push.default` to `freebsd` which will make `git push` to push the " "current branch back to its upstream by default, which is more suitable for " "our workflow:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:433 #, no-wrap msgid "git config push.default freebsd\n" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:435 #, no-wrap msgid "Keeping Current With The FreeBSD src Tree" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:442 msgid "" "First step: cloning a tree. This downloads the entire tree. There are two " "ways to download. Most people will want to do a deep clone of the " "repository. However, there are times when you may wish to do a shallow " "clone." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:443 #, no-wrap msgid "Branch names" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:450 msgid "" "The branch names in the new Git repository are similar to the old names. " "For the stable branches, they are stable/X where X is the major release " "(like 11 or 12). The main branch in the new repository is 'main'. The main " "branch in the old GitHub mirror was 'master', but is now 'main'. Both " "reflect the defaults of Git at the time they were created. The 'main' " "branch is the default branch if you omit the '-b branch' or '--branch " "branch' options below." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:451 #, no-wrap msgid "Repositories" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:454 msgid "" "Please see the <> for the latest information " "on where to get FreeBSD sources. $URL below can be obtained from that page." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:457 msgid "" "Note: The project doesn't use submodules as they are a poor fit for our " "workflows and development model. How we track changes in third-party " "applications is discussed elsewhere and generally of little concern to the " "casual user." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:458 #, no-wrap msgid "Deep Clone" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:462 msgid "" "A deep clone pulls in the entire tree, as well as all the history and " "branches. It is the easiest to do. It also allows you to use Git's " "worktree feature to have all your active branches checked out into separate " "directories but with only one copy of the repository." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:465 #, no-wrap msgid "% git clone -o freebsd $URL -b branch [dir]\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:470 msgid "" "is how you make a deep clone. 'branch' should be one of the branches listed " "in the previous section. It is optional if it is the main branch. 'dir' is " "an optional directory to place it in (the default will be the name of the " "repo you are cloning (src, doc, etc))." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:475 msgid "" "You will want a deep clone if you are interested in the history, plan on " "making local changes, or plan on working on more than one branch. It is the " "easiest to keep up to date as well. If you are interested in the history, " "but are working with only one branch and are short on space, you can also " "use --single-branch to only download the one branch (though some merge " "commits will not reference the merged-from branch which may be important for " "some users who are interested in detailed versions of history)." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:476 #, no-wrap msgid "Shallow Clone" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:482 msgid "" "A shallow clone copies just the most current code, but none or little of the " "history. This can be useful when you need to build a specific revision of " "FreeBSD, or when you are just starting out and plan to track the tree more " "fully. You can also use it to limit history to only so many revisions. " "However, see below for a significant limitation of this approach." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:486 #, no-wrap msgid "% git clone -o freebsd -b branch --depth 1 $URL [dir]\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:491 msgid "" "This clones the repository, but only has the most recent version in the " "repository. The rest of the history is not downloaded. Should you change " "your mind later, you can do 'git fetch --unshallow' to get the old history." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:496 msgid "" "When you make a shallow clone, you will lose the commit count in your uname " "output. This can make it more difficult to determine if your system needs " "to be updated when a security advisory is issued." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:498 #, no-wrap msgid "Building" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:502 msgid "" "Once you've downloaded, building is done as described in the handbook, e.g.:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:509 #, no-wrap msgid "" "% cd src\n" "% make buildworld\n" "% make buildkernel\n" "% make installkernel\n" "% make installworld\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:511 msgid "so that won't be covered in depth here." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:514 msgid "" "If you want to build a custom kernel, extref:{handbook}[the kernel config " "section, kernelconfig] of the FreeBSD Handbook recommends creating a file " "MYKERNEL under sys/${ARCH}/conf with your changes against GENERIC. To have " "MYKERNEL disregarded by Git, it can be added to .git/info/exclude." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:515 #, no-wrap msgid "Updating" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:519 msgid "" "To update both types of trees uses the same commands. This pulls in all the " "revisions since your last update." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:522 #, no-wrap msgid "% git pull --ff-only\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:527 msgid "" "will update the tree. In Git, a 'fast forward' merge is one that only needs " "to set a new branch pointer and doesn't need to re-create the commits. By " "always doing a 'fast forward' merge/pull, you'll ensure that you have an " "exact copy of the FreeBSD tree. This will be important if you want to " "maintain local patches." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:530 msgid "" "See below for how to manage local changes. The simplest is to use --" "autostash on the 'git pull' command, but more sophisticated options are " "available." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:531 #, no-wrap msgid "Selecting a Specific Version" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:535 msgid "" "In Git, the 'git checkout' checks out both branches and specific versions. " "Git's versions are the long hashes rather than a sequential number." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:537 msgid "" "When you checkout a specific version, just specify the hash you want on the " "command line (the git log command can help you decide which hash you might " "want):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:540 #, no-wrap msgid "% git checkout 08b8197a74\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:543 msgid "" "and you have that checked out. You will be greeted with a message similar " "to the following:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:546 #, no-wrap msgid "Note: checking out '08b8197a742a96964d2924391bf9fdfeb788865d'.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:550 #, no-wrap msgid "" "You are in a 'detached HEAD' state. You can look around, make experimental\n" "changes and commit them, and you can discard any commits you make in this\n" "state without impacting any branches by performing another checkout.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:553 #: documentation/content/en/articles/committers-guide/_index.adoc:2067 #, no-wrap msgid "" "If you want to create a new branch to retain commits you create, you may\n" "do so (now or later) by using -b with the checkout command again. Example:\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:555 #: documentation/content/en/articles/committers-guide/_index.adoc:2069 #, no-wrap msgid " git checkout -b \n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:557 #, no-wrap msgid "HEAD is now at 08b8197a742a hook gpiokeys.4 to the build\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:561 msgid "" "where the last line is generated from the hash you are checking out and the " "first line of the commit message from that revision. The hash can be " "abbreviated to the shortest unique length. Git itself is inconsistent about " "how many digits it displays." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:562 #, no-wrap msgid "Bisecting" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:566 msgid "" "Sometimes, things go wrong. The last version worked, but the one you just " "updated to does not. A developer may ask you to bisect the problem to track " "down which commit caused the regression." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:571 msgid "" "Git makes bisecting changes easy with a powerful 'git bisect' command. " "Here's a brief outline of how to use it. For more information, you can view " "https://www.metaltoad.com/blog/beginners-guide-git-bisect-process-" "elimination or https://git-scm.com/docs/git-bisect for more details. The " "man git-bisect page is good at describing what can go wrong, what to do when " "versions won't build, when you want to use terms other than 'good' and " "'bad', etc, none of which will be covered here." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:578 msgid "" "`git bisect start --first-parent` will start the bisection process. Next, " "you need to tell a range to go through. 'git bisect good XXXXXX' will tell " "it the working version and 'git bisect bad XXXXX' will tell it the bad " "version. The bad version will almost always be HEAD (a special tag for what " "you have checked out). The good version will be the last one you checked " "out. The `--first-parent` argument is necessary so that subsequent `git " "bisect` commands do not try to check out a vendor branch which lacks the " "full FreeBSD source tree." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:582 msgid "" "If you want to know the last version you checked out, you should use 'git " "reflog':" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:587 #, no-wrap msgid "" "5ef0bd68b515 (HEAD -> main, freebsd/main, freebsd/HEAD) HEAD@{0}: pull --ff-only: Fast-forward\n" "a8163e165c5b (upstream/main) HEAD@{1}: checkout: moving from b6fb97efb682994f59b21fe4efb3fcfc0e5b9eeb to main\n" "...\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:591 msgid "" "shows me moving the working tree to the main branch (a816...) and then " "updating from upstream (to 5ef0...). In this case, bad would be HEAD (or " "5rf0bd68) and good would be a8163e165. As you can see from the output, " "HEAD@{1} also often works, but isn't foolproof if you have done other things " "to your Git tree after updating, but before you discover the need to bisect." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:595 msgid "" "Set the 'good' version first, then set the bad (though the order doesn't " "matter). When you set the bad version, it will give you some statistics on " "the process:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:602 #, no-wrap msgid "" "% git bisect start --first-parent\n" "% git bisect good a8163e165c5b\n" "% git bisect bad HEAD\n" "Bisecting: 1722 revisions left to test after this (roughly 11 steps)\n" "[c427b3158fd8225f6afc09e7e6f62326f9e4de7e] Fixup r361997 by balancing parens. Duh.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:611 msgid "" "You would then build/install that version. If it's good you'd type 'git " "bisect good' otherwise 'git bisect bad'. If the version doesn't compile, " "type 'git bisect skip'. You will get a similar message to the above after " "each step. When you are done, report the bad version to the developer (or " "fix the bug yourself and send a patch). 'git bisect reset' will end the " "process and return you back to where you started (usually tip of main). " "Again, the git-bisect manual (linked above) is a good resource for when " "things go wrong or for unusual cases." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:613 #, no-wrap msgid "Signing the commits, tags, and pushes, with GnuPG" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:618 msgid "" "Git knows how to sign commits, tags, and pushes. When you sign a Git commit " "or a tag, you can prove that the code you submitted came from you and wasn't " "altered while you were transferring it. You also can prove that you " "submitted the code and not someone else." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:620 msgid "" "A more in-depth documentation on signing commits and tags can be found in " "the https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work[Git Tools - " "Signing Your Work] chapter of the Git's book." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:622 msgid "" "The rationale behind signing pushes can be found in the https://github.com/" "git/git/commit/a85b377d0419a9dfaca8af2320cc33b051cbed04[commit that " "introduced the feature]." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:625 msgid "" "The best way is to simply tell Git you always want to sign commits, tags, " "and pushes. You can do this by setting a few configuration variables:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:632 #, no-wrap msgid "" "% git config --add user.signingKey LONG-KEY-ID\n" "% git config --add commit.gpgSign true\n" "% git config --add tag.gpgSign true\n" "% git config --add push.gpgSign if-asked\n" msgstr "" #. push.gpgSign should probably be set to `yes` once we enable it, or be set with --global, so that it is enabled for all repositories. #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:640 msgid "" "To avoid possible collisions, make sure you give a long key id to Git. You " "can get the long id with: `gpg --list-secret-keys --keyid-format LONG`." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:646 msgid "" "To use specific subkeys, and not have GnuPG to resolve the subkey to a " "primary key, attach `!` to the key. For example, to encrypt for the subkey " "`DEADBEEF`, use `DEADBEEF!`." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:648 #, no-wrap msgid "Verifying signatures" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:651 msgid "" "Commit signatures can be verified by running either `git verify-commit " "`, or `git log --show-signature`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:653 msgid "" "Tag signatures can be verified with `git verity-tag `, or `git tag " "-v `." msgstr "" # # #. Commented out for now until we decide what to do. #. Git pushes are a bit different, they live in a special ref in the repository. #. TODO: write how to verify them #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:662 #, no-wrap msgid "Ports Considerations" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:665 msgid "" "The ports tree operates the same way. The branch names are different and " "the repositories are in different locations." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:668 msgid "" "The cgit repository web interface for use with web browsers is at https://" "cgit.FreeBSD.org/ports/ . The production Git repository is at https://git." "FreeBSD.org/ports.git and at ssh://anongit@git.FreeBSD.org/ports.git (or " "anongit@git.FreeBSD.org:ports.git)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:672 msgid "" "There is also a mirror on GitHub, see extref:{handbook}/mirrors[External " "mirrors, mirrors] for an overview. The 'current' branch is 'main' . The " "quarterly branches are named 'yyyyQn' for year 'yyyy' and quarter 'n'." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:674 #, no-wrap msgid "Commit message formats" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:678 msgid "" "A hook is available in the ports repository to help you write up your commit " "messages in https://cgit.freebsd.org/ports/tree/.hooks/prepare-commit-msg[." "hooks/prepare-commit-message]. It can be enabled by running ``git config --" "add core.hooksPath .hooks``." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:680 msgid "" "The main point being that a commit message should be formatted in the " "following way:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:683 #, no-wrap msgid "category/port: Summary.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:685 #, no-wrap msgid "Description of why the changes where made.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:687 #, no-wrap msgid "PR:\t 12345\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:693 msgid "" "The first line is the subject of the commit, it contains what port was " "changed, and a summary of the commit. It should contain 50 characters or " "less." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:695 msgid "A blank line should separate it from the rest of the commit message." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:697 msgid "" "The rest of the commit message should be wrapped at the 72 characters " "boundary." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:699 msgid "" "Another blank line should be added if there are any metadata fields, so that " "they are easily distinguishable from the commit message." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:701 #, no-wrap msgid "Managing Local Changes" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:704 msgid "" "This section addresses tracking local changes. If you have no local " "changes, you can stop reading now (it is the last section and OK to skip)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:710 msgid "" "One item that is important for all of them: all changes are local until " "pushed. Unlike Subversion, Git uses a distributed model. For users, for " "most things, there is very little difference. However, if you have local " "changes, you can use the same tool to manage them as you use to pull in " "changes from FreeBSD. All changes that you have not pushed are local and " "can easily be modified (git rebase, discussed below does this)." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:711 #, no-wrap msgid "Keeping local changes" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:718 msgid "" "The simplest way to keep local changes (especially trivial ones) is to use " "'git stash'. In its simplest form, you use 'git stash' to record the " "changes (which pushes them onto the stash stack). Most people use this to " "save changes before updating the tree as described above. They then use " "'git stash apply' to re-apply them to the tree. The stash is a stack of " "changes that can be examined with 'git stash list'. The git-stash man page " "(https://git-scm.com/docs/git-stash) has all the details." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:722 msgid "" "This method is suitable when you have tiny tweaks to the tree. When you " "have anything non trivial, you'll likely be better off keeping a local " "branch and rebasing. Stashing is also integrated with the 'git pull' " "command: just add '--autostash' to the command line." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:723 #, no-wrap msgid "Keeping a local branch" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:730 msgid "" "It is much easier to keep a local branch with Git than Subversion. In " "Subversion you need to merge the commit, and resolve the conflicts. This is " "manageable, but can lead to a convoluted history that's hard to upstream " "should that ever be necessary, or hard to replicate if you need to do so. " "Git also allows one to merge, along with the same problems. That's one way " "to manage the branch, but it's the least flexible." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:734 msgid "" "In addition to merging, Git supports the concept of 'rebasing' which avoids " "these issues. The 'git rebase' command replays all the commits of a branch " "at a newer location on the parent branch. We will cover the most common " "scenarios that arise using it." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:736 msgid "====== Create a branch" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:741 msgid "" "Let's say you want to make a change to FreeBSD's ls command to never, ever " "do color. There are many reasons to do this, but this example will use that " "as a baseline. The FreeBSD ls command changes from time to time, and you'll " "need to cope with those changes. Fortunately, with Git rebase it usually is " "automatic." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:763 #, no-wrap msgid "" "% cd src\n" "% git checkout main\n" "% git checkout -b no-color-ls\n" "% cd bin/ls\n" "% vi ls.c # hack the changes in\n" "% git diff # check the changes\n" "diff --git a/bin/ls/ls.c b/bin/ls/ls.c\n" "index 7378268867ef..cfc3f4342531 100644\n" "--- a/bin/ls/ls.c\n" "+++ b/bin/ls/ls.c\n" "@@ -66,6 +66,7 @@ __FBSDID(\"$FreeBSD$\");\n" " #include \n" " #include \n" " #include \n" "+#undef COLORLS\n" " #ifdef COLORLS\n" " #include \n" " #include \n" "% # these look good, make the commit...\n" "% git commit ls.c\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:770 msgid "" "The commit will pop you into an editor to describe what you've done. Once " "you enter that, you have your own **local** branch in the Git repo. Build " "and install it like you normally would, following the directions in the " "handbook. Git differs from other version control systems in that you have " "to tell it explicitly which files to commit. I have opted to do it on the " "commit command line, but you can also do it with 'git add' which many of the " "more in depth tutorials cover." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:772 msgid "====== Time to update" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:777 msgid "" "When it is time to bring in a new version, it is almost the same as w/o the " "branches. You would update like you would above, but there is one extra " "command before you update, and one after. The following assumes you are " "starting with an unmodified tree. It is important to start rebasing " "operations with a clean tree (Git requires this)." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:783 #, no-wrap msgid "" "% git checkout main\n" "% git pull --ff-only\n" "% git rebase -i main no-color-ls\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:788 msgid "" "This will bring up an editor that lists all the commits in it. For this " "example, do not change it at all. This is typically what you are doing " "while updating the baseline (though you also use the Git rebase command to " "curate the commits you have in the branch)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:790 msgid "" "Once you are done with the above, you have to move the commits to ls.c " "forward from the old version of FreeBSD to the newer one." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:797 msgid "" "Sometimes there are merge conflicts. That is OK. Do not panic. Instead, " "handle them the same as any other merge conflicts. To keep it simple, I " "will just describe a common issue that may arise. A pointer to a more " "complete treatment can be found at the end of this section." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:800 msgid "" "Let's say the includes changes upstream in a radical shift to terminfo as " "well as a name change for the option. When you updated, you might see " "something like this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:810 #, no-wrap msgid "" "Auto-merging bin/ls/ls.c\n" "CONFLICT (content): Merge conflict in bin/ls/ls.c\n" "error: could not apply 646e0f9cda11... no color ls\n" "Resolve all conflicts manually, mark them as resolved with\n" "\"git add/rm \", then run \"git rebase --continue\".\n" "You can instead skip this commit: run \"git rebase --skip\".\n" "To abort and get back to the state before \"git rebase\", run \"git rebase --abort\".\n" "Could not apply 646e0f9cda11... no color ls\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:813 msgid "" "which looks scary. If you bring up an editor, you will see it is a typical " "3-way merge conflict resolution that you may be familiar with from other " "source code systems (the rest of ls.c has been omitted):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:823 #, no-wrap msgid "" "<<<<<<< HEAD\n" "#ifdef COLORLS_NEW\n" "#include \n" "=======\n" "#undef COLORLS\n" "#ifdef COLORLS\n" "#include \n" ">>>>>>> 646e0f9cda11... no color ls\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:826 msgid "" "The new code is first, and your code is second. The right fix here is to " "just add a #undef COLORLS_NEW before #ifdef and then delete the old changes:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:831 #, no-wrap msgid "" "#undef COLORLS_NEW\n" "#ifdef COLORLS_NEW\n" "#include \n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:834 msgid "save the file. The rebase was interrupted, so you have to complete it:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:838 #, no-wrap msgid "" "% git add ls.c\n" "% git rebase --continue\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:843 msgid "" "which tells Git that ls.c has been fixed and to continue the rebase " "operation. Since there was a conflict, you will get kicked into the editor " "to update the commit message if necessary. If the commit message is still " "accurate, just exit the editor." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:848 msgid "" "If you get stuck during the rebase, do not panic. git rebase --abort will " "take you back to a clean slate. It is important, though, to start with an " "unmodified tree. An aside: The above mentioned 'git reflog' comes in handy " "here, as it will have a list of all the (intermediate) commits that you can " "view or inspect or cherry-pick." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:851 msgid "" "For more on this topic, https://www.freecodecamp.org/news/the-ultimate-guide-" "to-git-merge-and-git-rebase/ provides a rather extensive treatment. It is a " "good resource for issues that arise occasionally but are too obscure for " "this guide." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:852 #, no-wrap msgid "Switching to a Different FreeBSD Branch" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:855 msgid "" "If you wish to shift from stable/12 to the current branch. If you have a " "deep clone, the following will suffice:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:859 #, no-wrap msgid "" "% git checkout main\n" "% # build and install here...\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:864 msgid "" "If you have a local branch, though, there are one or two caveats. First, " "rebase will rewrite history, so you will likely want to do something to save " "it. Second, jumping branches tends to cause more conflicts. If we pretend " "the example above was relative to stable/12, then to move to main, I'd " "suggest the following:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:869 #, no-wrap msgid "" "% git checkout no-color-ls\n" "% git checkout -b no-color-ls-stable-12 # create another name for this branch\n" "% git rebase -i stable/12 no-color-ls --onto main\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:876 msgid "" "What the above does is checkout no-color-ls. Then create a new name for it " "(no-color-ls-stable-12) in case you need to get back to it. Then you rebase " "onto the main branch. This will find all the commits to the current no-" "color-ls branch (back to where it meets up with the stable/12 branch) and " "then it will replay them onto the main branch creating a new no-color-ls " "branch there (which is why I had you create a place holder name)." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:877 #, no-wrap msgid "Migrating from an existing Git clone" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:879 msgid "" "If you have work based on a previous Git conversion or a locally running git-" "svn conversion, migrating to new repository can encounter problems because " "Git has no knowledge about the connection between the two." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:881 msgid "" "When you have only a few local changes, the easiest way would be to cherry-" "pick those changes to the new base:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:885 #, no-wrap msgid "" "% git checkout main\n" "% git cherry-pick old_branch..your_branch\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:887 msgid "Or alternatively, do the same thing with rebase:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:890 #, no-wrap msgid "% git rebase --onto main master your_branch\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:894 msgid "" "If you do have a lot of changes, you would probably want to perform a merge " "instead. The idea is to create a merge point that consolidates the history " "of the old_branch, and the new FreeBSD repository (main)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:896 msgid "" "You can find out by looking up the same commit that are found on both " "parents:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:899 #, no-wrap msgid "% git show old_branch\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:901 msgid "You will see a commit message, now search for that in the new branch:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:904 #, no-wrap msgid "% git log --grep=\"commit message on old_branch\" freebsd/main\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:906 msgid "" "You would help locate the commit hash on the new main branch, create a " "helper branch (in the example we call it 'stage') from that hash:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:909 #, no-wrap msgid "% git checkout -b stage _hash_found_from_git_log_\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:911 msgid "Then perform a merge of the old branch:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:914 #, no-wrap msgid "% git merge -s ours -m \"Mark old branch as merged\" old_branch\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:917 msgid "" "With that, it's possible to merge your work branch or the main branch in any " "order without problem. Eventually, when you are ready to commit your work " "back to main, you can perform a rebase to main, or do a squash commit by " "combining everything into one commit." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:919 #, no-wrap msgid "MFC (Merge From Current) Procedures" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:920 #, no-wrap msgid "Summary" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:924 msgid "" "MFC workflow can be summarized as `git cherry-pick -x` plus `git commit --" "amend` to adjust the commit message. For multiple commits, use `git rebase -" "i` to squash them together and edit the commit message." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:925 #, no-wrap msgid "Single commit MFC" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:931 #, no-wrap msgid "" "% git checkout stable/X\n" "% git cherry-pick -x $HASH --edit\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:935 msgid "" "For MFC commits, for example a vendor import, you would need to specify one " "parent for cherry-pick purposes. Normally, that would be the \"first parent" "\" of the branch you are cherry-picking from, so:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:940 #, no-wrap msgid "" "% git checkout stable/X\n" "% git cherry-pick -x $HASH -m 1 --edit\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:943 msgid "" "If things go wrong, you'll either need to abort the cherry-pick with `git " "cherry-pick --abort` or fix it up and do a `git cherry-pick --continue`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:946 msgid "" "Once the cherry-pick is finished, push with `git push`. If you get an error " "due to losing the commit race, use `git pull --rebase` and try to push again." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:947 #, no-wrap msgid "MFC to RELENG branch" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:951 msgid "" "MFCs to branches that require approval require a bit more care. The process " "is the same for either a typical merge or an exceptional direct commit." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:953 msgid "" "Merge or direct commit to the appropriate `stable/X` branch first before " "merging to the `releng/X.Y` branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:954 msgid "" "Use the hash that's in the `stable/X` branch for the MFC to `releng/X.Y` " "branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:955 msgid "Leave both \"cherry picked from\" lines in the commit message." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:956 msgid "Be sure to add the `Approved by:` line when you are in the editor." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:961 #, no-wrap msgid "" "% git checkout releng/13.0\n" "% git cherry-pick -x $HASH --edit\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:964 msgid "" "If you forget to to add the `Approved by:` line, you can do a `git commit --" "amend` to edit the commit message before you push the change." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:965 #, no-wrap msgid "Multiple commit MFC" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:976 #, no-wrap msgid "" "% git checkout -b tmp-branch stable/X\n" "% for h in $HASH_LIST; do git cherry-pick -x $h; done\n" "% git rebase -i stable/X\n" "# mark each of the commits after the first as 'squash'\n" "# Update the commit message to reflect all elements of commit, if necessary.\n" "# Be sure to retain the \"cherry picked from\" lines.\n" "% git push freebsd HEAD:stable/X\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:979 msgid "If the push fails due to losing the commit race, rebase and try again:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:987 #, no-wrap msgid "" "% git checkout stable/X\n" "% git pull\n" "% git checkout tmp-branch\n" "% git rebase stable/X\n" "% git push freebsd HEAD:stable/X\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:990 msgid "Once the MFC is complete, you can delete the temporary branch:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:995 #, no-wrap msgid "" "% git checkout stable/X\n" "% git branch -d tmp-branch\n" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:997 #, no-wrap msgid "MFC a vendor import" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1002 msgid "" "Vendor imports are the only thing in the tree that creates a merge commit in " "the main line. Cherry picking merge commits into stable/XX presents an " "additional difficulty because there are two parents for a merge commit. " "Generally, you'll want the first parent's diff since that's the diff to " "mainline (though there may be some exceptions)." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1006 #, no-wrap msgid "% git cherry-pick -x -m 1 $HASH\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1009 msgid "" "is typically what you want. This will tell cherry-pick to apply the correct " "diff." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1013 msgid "" "There are some, hopefully, rare cases where it's possible that the mainline " "was merged backwards by the conversion script. Should that be the case (and " "we've not found any yet), you'd change the above to '-m 2' to pickup the " "proper parent. Just do" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1017 #, no-wrap msgid "" "% git cherry-pick --abort\n" "% git cherry-pick -x -m 2 $HASH\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1019 msgid "to do that. The `--abort` will cleanup the failed first attempt." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1020 #, no-wrap msgid "Redoing a MFC" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1024 msgid "" "If you do a MFC, and it goes horribly wrong and you want to start over, then " "the easiest way is to use `git reset --hard` like so:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1027 #, no-wrap msgid "% git reset --hard freebsd/stable/12\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1030 msgid "" "though if you have some revs you want to keep, and others you don't, using " "'git rebase -i' is better." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1031 #, no-wrap msgid "Considerations when MFCing" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1034 msgid "" "When committing source commits to stable and releng branches, we have the " "following goals:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1036 msgid "" "Clearly mark direct commits distinct from commits that land a change from " "another branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1037 msgid "Avoid introducing known breakage into stable and releng branches." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1038 msgid "" "Allow developers to determine which changes have or have not been landed " "from one branch to another." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1040 msgid "" "With Subversion, we used the following practices to achieve these goals:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1042 msgid "" "Using 'MFC' and 'MFS' tags to mark commits that merged changes from another " "branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1043 msgid "Squashing fixup commits into the main commit when merging a change." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1044 msgid "Recording mergeinfo so that `svn mergeinfo --show-revs` worked." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1048 msgid "" "With Git, we will need to use different strategies to achieve the same " "goals. This document aims to define best practices when merging source " "commits using Git that achieve these goals. In general, we aim to use Git's " "native support to achieve these goals rather than enforcing practices built " "on Subversion's model." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1051 msgid "" "One general note: due to technical differences with Git, we will not be " "using Git \"merge commits\" (created via `git merge`) in stable or releng " "branches. Instead, when this document refers to \"merge commits\", it means " "a commit originally made to `main` that is replicated or \"landed\" to a " "stable branch, or a commit from a stable branch that is replicated to a " "releng branch with some variation of `git cherry-pick`." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1052 #, no-wrap msgid "Finding Eligible Hashes to MFC" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1057 msgid "" "Git provides some built-in support for this via the `git cherry` and `git " "log --cherry` commands. These commands compare the raw diffs of commits " "(but not other metadata such as log messages) to determine if two commits " "are identical. This works well when each commit from head is landed as a " "single commit to a stable branch, but it falls over if multiple commits from " "main are squashed together as a single commit to a stable branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1059 msgid "There are a few options for resolving this:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1063 msgid "" "We could ban squashing of commits and instead require that committers stage " "all of the fixup / follow-up commits to stable into a single push. This " "would still achieve the goal of stability in stable and releng branches " "since pushes are atomic and users doing a simple pull will never end up with " "a tree that has the main commit without the fixup(s). `git bisect` is also " "able to cope with this model via `git bisect skip`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1067 msgid "" "We could adopt a consistent style for describing MFCs and write our own " "tooling to wrap around `git cherry` to determine the list of eligible " "commits. A simple approach here might be to use the syntax from `git cherry-" "pick -x`, but require that a squashed commit list all of the hashes (one " "line per hash) at the end of the commit message. Developers could do this " "by using `git cherry-pick -x` of each individual commit into a branch and " "then use `git rebase` to squash the commits down into a single commit, but " "collecting the `-x` annotations at the end of the landed commit log." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1068 #, no-wrap msgid "Commit message standards" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1069 #, no-wrap msgid "Marking MFCs" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1072 msgid "The project has adopted the following practice for marking MFCs:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1074 msgid "" "Use the `-x` flag with `git cherry-pick`. This adds a line to the commit " "message that includes the hash of the original commit when merging. Since it " "is added by Git directly, committers do not have to manually edit the commit " "log when merging." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1076 msgid "" "When merging multiple commits, keep all the \"cherry picked from\" lines." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1077 #, no-wrap msgid "Trim Metadata?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1081 msgid "" "One area that was not clearly documented with Subversion (or even CVS) is " "how to format metadata in log messages for MFC commits. Should it include " "the metadata from the original commit unchanged, or should it be altered to " "reflect information about the MFC commit itself?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1090 msgid "" "Historical practice has varied, though some of the variance is by field. " "For example, MFCs that are relevant to a PR generally include the PR field " "in the MFC so that MFC commits are included in the bug tracker's audit " "trail. Other fields are less clear. For example, Phabricator shows the " "diff of the last commit tagged to a review, so including Phabricator URLs " "replaces the `main` commit with the landed commits. The list of reviewers " "is also not clear. If a reviewer has approved a change to `main`, does that " "mean they have approved the MFC commit? Is that true if it's identical code " "only, or with merely trivial rework? It's clearly not true for more " "extensive reworks. Even for identical code what if the commit doesn't " "conflict but introduces an ABI change? A reviewer may have ok'd a commit for " "`main` due to the ABI breakage but may not approve of merging the same " "commit as-is. One will have to use one's best judgment until clear " "guidelines can be agreed upon." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1094 msgid "" "For MFCs regulated by re@, new metadata fields are added, such as the " "Approved by tag for approved commits. This new metadata will have to be " "added via `git commit --amend` or similar after the original commit has been " "reviewed and approved. We may also want to reserve some metadata fields in " "MFC commits such as Phabricator URLs for use by re@ in the future." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1097 msgid "" "Preserving existing metadata provides a very simple workflow. Developers " "can just use `git cherry-pick -x` without having to edit the log message." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1100 msgid "" "If instead we choose to adjust metadata in MFCs, developers will have to " "edit log messages explicitly via the use of `git cherry-pick --edit` or `git " "commit --amend`. However, as compared to svn, at least the existing commit " "message can be pre-populated and metadata fields can be added or removed " "without having to re-enter the entire commit message." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1102 msgid "" "The bottom line is that developers will likely need to curate their commit " "message for MFCs that are non-trivial." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1103 #, no-wrap msgid "Examples" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1105 #, no-wrap msgid "Merging a Single Subversion Commit" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1109 msgid "" "This walks through the process of merging a commit to stable/12 that was " "originally committed to head in Subversion. In this case, the original " "commit is r368685." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1112 msgid "" "The first step is to map the Subversion commit to a Git hash. Once you have " "fetched refs/notes/commits, you can pass the revision number to `git log --" "grep`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1119 #, no-wrap msgid "" "% git log main --grep 368685\n" "commit ce8395ecfda2c8e332a2adf9a9432c2e7f35ea81\n" "Author: John Baldwin \n" "Date: Wed Dec 16 00:11:30 2020 +0000\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1121 #: documentation/content/en/articles/committers-guide/_index.adoc:1160 #, no-wrap msgid " Use the 't' modifier to print a ptrdiff_t.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1126 #, no-wrap msgid "" " Reviewed by: imp\n" " Obtained from: CheriBSD\n" " Sponsored by: DARPA\n" " Differential Revision: https://reviews.freebsd.org/D27576\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1129 #, no-wrap msgid "" "Notes:\n" " svn path=/head/; revision=368685\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1132 #: documentation/content/en/articles/committers-guide/_index.adoc:1225 msgid "Next, MFC the commit to a `stable/12` checkout:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1137 #, no-wrap msgid "" "git checkout stable/12\n" "git cherry-pick -x ce8395ecfda2c8e332a2adf9a9432c2e7f35ea81 --edit\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1142 msgid "" "Git will invoke the editor. Use this to remove the metadata that only " "applied to the original commit (Phabricator URL and Reviewed by). After the " "editor saves the updated log message, Git completes the commit:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1148 #, no-wrap msgid "" "[stable/12 3e3a548c4874] Use the 't' modifier to print a ptrdiff_t.\n" " Date: Wed Dec 16 00:11:30 2020 +0000\n" " 1 file changed, 1 insertion(+), 1 deletion(-)\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1151 msgid "The contents of the MFCd commit can be examined via `git show`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1158 #, no-wrap msgid "" "% git show\n" "commit 3e3a548c487450825679e4bd63d8d1a67fd8bd2d (HEAD -> stable/12)\n" "Author: John Baldwin \n" "Date: Wed Dec 16 00:11:30 2020 +0000\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1163 #, no-wrap msgid "" " Obtained from: CheriBSD\n" " Sponsored by: DARPA\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1165 #, no-wrap msgid " (cherry picked from commit ce8395ecfda2c8e332a2adf9a9432c2e7f35ea81)\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1179 #, no-wrap msgid "" "diff --git a/sys/compat/linuxkpi/common/include/linux/printk.h b/sys/compat/linuxkpi/common/include/linux/printk.h\n" "index 31802bdd2c99..e6510e9e9834 100644\n" "--- a/sys/compat/linuxkpi/common/include/linux/printk.h\n" "+++ b/sys/compat/linuxkpi/common/include/linux/printk.h\n" "@@ -68,7 +68,7 @@ print_hex_dump(const char *level, const char *prefix_str,\n" " printf(\"[%p] \", buf);\n" " break;\n" " case DUMP_PREFIX_OFFSET:\n" "- printf(\"[%p] \", (const char *)((const char *)buf -\n" "+ printf(\"[%#tx] \", ((const char *)buf -\n" " (const char *)buf_old));\n" " break;\n" " default:\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1182 #: documentation/content/en/articles/committers-guide/_index.adoc:1344 msgid "The MFC commit can now be published via `git push`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1194 #, no-wrap msgid "" "% git push freebsd\n" "Enumerating objects: 17, done.\n" "Counting objects: 100% (17/17), done.\n" "Delta compression using up to 4 threads\n" "Compressing objects: 100% (7/7), done.\n" "Writing objects: 100% (9/9), 817 bytes | 204.00 KiB/s, done.\n" "Total 9 (delta 5), reused 1 (delta 1), pack-reused 0\n" "To gitrepo-dev.FreeBSD.org:src.git\n" " 525bd9c9dda7..3e3a548c4874 stable/12 -> stable/12\n" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1196 #, no-wrap msgid "Merging a Single Subversion Commit with a Conflict" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1200 msgid "" "This example is similar to the previous example except that the commit in " "question encounters a merge conflict. In this case, the original commit is " "r368314." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1202 msgid "As above, the first step is to map the Subversion commit to a Git hash:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1209 #, no-wrap msgid "" "% git log main --grep 368314\n" "commit 99963f5343a017e934e4d8ea2371a86789a46ff9\n" "Author: John Baldwin \n" "Date: Thu Dec 3 22:01:13 2020 +0000\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1211 #: documentation/content/en/articles/committers-guide/_index.adoc:1299 #, no-wrap msgid " Don't transmit mbufs that aren't yet ready on TOE sockets.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1214 #: documentation/content/en/articles/committers-guide/_index.adoc:1302 #, no-wrap msgid "" " This includes mbufs waiting for data from sendfile() I/O requests, or\n" " mbufs awaiting encryption for KTLS.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1219 #, no-wrap msgid "" " Reviewed by: np\n" " MFC after: 2 weeks\n" " Sponsored by: Chelsio Communications\n" " Differential Revision: https://reviews.freebsd.org/D27469\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1222 #, no-wrap msgid "" "Notes:\n" " svn path=/head/; revision=368314\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1238 #, no-wrap msgid "" "% git checkout stable/12\n" "% git cherry-pick -x 99963f5343a017e934e4d8ea2371a86789a46ff9 --edit\n" "Auto-merging sys/dev/cxgbe/tom/t4_cpl_io.c\n" "CONFLICT (content): Merge conflict in sys/dev/cxgbe/tom/t4_cpl_io.c\n" "warning: inexact rename detection was skipped due to too many files.\n" "warning: you may want to set your merge.renamelimit variable to at least 7123 and retry the command.\n" "error: could not apply 99963f5343a0... Don't transmit mbufs that aren't yet ready on TOE sockets.\n" "hint: after resolving the conflicts, mark the corrected paths\n" "hint: with 'git add ' or 'git rm '\n" "hint: and commit the result with 'git commit'\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1243 msgid "" "In this case, the commit encountered a merge conflict in sys/dev/cxge/tom/" "t4_cpl_io.c as kernel TLS is not present in stable/12. Note that Git does " "not invoke an editor to adjust the commit message due to the conflict. `git " "status` confirms that this file has merge conflicts:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1249 #: documentation/content/en/articles/committers-guide/_index.adoc:1269 #, no-wrap msgid "" "% git status\n" "On branch stable/12\n" "Your branch is up to date with 'upstream/stable/12'.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1254 #, no-wrap msgid "" "You are currently cherry-picking commit 99963f5343a0.\n" " (fix conflicts and run \"git cherry-pick --continue\")\n" " (use \"git cherry-pick --skip\" to skip this patch)\n" " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1258 #, no-wrap msgid "" "Unmerged paths:\n" " (use \"git add ...\" to mark resolution)\n" " both modified: sys/dev/cxgbe/tom/t4_cpl_io.c\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1260 #, no-wrap msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1263 msgid "" "After editing the file to resolve the conflict, `git status` shows the " "conflict as resolved:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1274 #, no-wrap msgid "" "You are currently cherry-picking commit 99963f5343a0.\n" " (all conflicts fixed: run \"git cherry-pick --continue\")\n" " (use \"git cherry-pick --skip\" to skip this patch)\n" " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1277 #, no-wrap msgid "" "Changes to be committed:\n" " modified: sys/dev/cxgbe/tom/t4_cpl_io.c\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1280 msgid "The cherry-pick can now be completed:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1284 #, no-wrap msgid "% git cherry-pick --continue\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1288 msgid "" "Since there was a merge conflict, Git invokes the editor to adjust the " "commit message. Trim the metadata fields from the commit log from the " "original commit to head and save the updated log message." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1290 msgid "The contents of the MFC commit can be examined via `git show`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1297 #, no-wrap msgid "" "% git show\n" "commit 525bd9c9dda7e7c7efad2d4570c7fd8e1a8ffabc (HEAD -> stable/12)\n" "Author: John Baldwin \n" "Date: Thu Dec 3 22:01:13 2020 +0000\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1304 #, no-wrap msgid " Sponsored by: Chelsio Communications\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1306 #, no-wrap msgid " (cherry picked from commit 99963f5343a017e934e4d8ea2371a86789a46ff9)\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1314 #, no-wrap msgid "" "diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c\n" "index 8e8c2b8639e6..43861f10b689 100644\n" "--- a/sys/dev/cxgbe/tom/t4_cpl_io.c\n" "+++ b/sys/dev/cxgbe/tom/t4_cpl_io.c\n" "@@ -746,6 +746,8 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop)\n" " for (m = sndptr; m != NULL; m = m->m_next) {\n" " int n;\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1321 #, no-wrap msgid "" "+ if ((m->m_flags & M_NOTAVAIL) != 0)\n" "+ break;\n" " if (IS_AIOTX_MBUF(m))\n" " n = sglist_count_vmpages(aiotx_mbuf_pages(m),\n" " aiotx_mbuf_pgoff(m), m->m_len);\n" "@@ -821,8 +823,9 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop)\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1331 #, no-wrap msgid "" " /* nothing to send */\n" " if (plen == 0) {\n" "- KASSERT(m == NULL,\n" "- (\"%s: nothing to send, but m != NULL\", __func__));\n" "+ KASSERT(m == NULL || (m->m_flags & M_NOTAVAIL) != 0,\n" "+ (\"%s: nothing to send, but m != NULL is ready\",\n" "+ __func__));\n" " break;\n" " }\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1334 #, no-wrap msgid "" "@@ -910,7 +913,7 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop)\n" " toep->txsd_avail--;\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1338 #, no-wrap msgid "" " t4_l2t_send(sc, wr, toep->l2te);\n" "- } while (m != NULL);\n" "+ } while (m != NULL && (m->m_flags & M_NOTAVAIL) == 0);\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1341 #, no-wrap msgid "" " /* Send a FIN if requested, but only if there's no more data to send */\n" " if (m == NULL && toep->flags & TPF_SEND_FIN)\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1356 #, no-wrap msgid "" "git push freebsd\n" "Enumerating objects: 13, done.\n" "Counting objects: 100% (13/13), done.\n" "Delta compression using up to 4 threads\n" "Compressing objects: 100% (7/7), done.\n" "Writing objects: 100% (7/7), 819 bytes | 117.00 KiB/s, done.\n" "Total 7 (delta 6), reused 0 (delta 0), pack-reused 0\n" "To gitrepo.FreeBSD.org:src.git\n" " f4d0bc6aa6b9..525bd9c9dda7 stable/12 -> stable/12\n" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:1359 #, no-wrap msgid "Vendor Imports with Git" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1362 msgid "This section describes the vendor import procedure with Git in detail." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1363 #, no-wrap msgid "Branch naming convention" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1366 msgid "" "All vendor branches and tags start with `vendor/`. These branches and tags " "are visible by default." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1371 msgid "" "This chapter follows the convention that the `freebsd` origin is the origin " "name for the official FreeBSD Git repository. If you use a different " "convention, replace `freebsd` with the name you use instead in the examples " "below." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1375 msgid "" "We will explore an example for updating NetBSD's mtree that is in our tree. " "The vendor branch for this is `vendor/NetBSD/mtree`." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1376 #, no-wrap msgid "Updating an old vendor import" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1382 msgid "" "The vendor trees usually have only the subset of the third-party software " "that is appropriate to FreeBSD. These trees are usually tiny in comparison " "to the FreeBSD tree. Git worktrees are thus quite small and fast and the " "preferred method to use. Make sure that whatever directory you choose below " "(the `../mtree`) does not currently exist." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1386 #, no-wrap msgid "% git worktree add ../mtree vendor/NetBSD/mtree\n" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1388 #, no-wrap msgid "Update the Sources in the Vendor Branch" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1391 msgid "" "Prepare a full, clean tree of the vendor sources. Import everything but " "merge only what is needed." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1395 msgid "" "This example assumes the NetBSD source is checked out from their GitHub " "mirror in `~/git/NetBSD`. Note that \"upstream\" might have added or " "removed files, so we want to make sure deletions are propagated as well. " "package:net/rsync[] is commonly installed, so I'll use that." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1409 #, no-wrap msgid "" "% cd ../mtree\n" "% rsync -va --del --exclude=\".git\" ~/git/NetBSD/usr.sbin/mtree/ .\n" "% git add -A\n" "% git status\n" "...\n" "% git diff --staged\n" "...\n" "% git commit -m \"Vendor import of NetBSD's mtree at 2020-12-11\"\n" "[vendor/NetBSD/mtree 8e7aa25fcf1] Vendor import of NetBSD's mtree at 2020-12-11\n" " 7 files changed, 114 insertions(+), 82 deletions(-)\n" "% git tag -a vendor/NetBSD/mtree/20201211\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1413 msgid "" "Note: I run the `git diff` and `git status` commands to make sure nothing " "weird was present. Also I used `-m` to illustrate, but you should compose a " "proper message in an editor (using a commit message template)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1418 msgid "" "It is also important to create an annotated tag using `git tag -a`, " "otherwise the push will be rejected. Only annotated tags are allowed to be " "pushed. The annotated tag gives you a chance to enter a commit message. " "Enter the version you are importing, along with any salient new features or " "fixes in that version." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1419 #, no-wrap msgid "Updating the FreeBSD Copy" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1422 msgid "At this point you can push the import to `vendor` into our repo." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1426 #, no-wrap msgid "% git push --follow-tags freebsd vendor/NetBSD/mtree\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1429 msgid "" "`--follow-tags` tells `git push` to also push tags associated with the " "locally committed revision." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1430 #, no-wrap msgid "Updating the FreeBSD source tree" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1434 msgid "" "Now you need to update the mtree in FreeBSD. The sources live in `contrib/" "mtree` since it is upstream software." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1439 #, no-wrap msgid "" "% cd ../src\n" "% git subtree merge -P contrib/mtree vendor/NetBSD/mtree\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1444 msgid "" "This would generate a subtree merge commit of `contrib/mtree` against the " "local `vendor/NetBSD/mtree` branch. If there were conflicts, you would need " "to fix them before committing. Include details about the changes being " "merged in the merge commit message." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1445 #, no-wrap msgid "Rebasing your change against latest FreeBSD source tree" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1448 msgid "" "Because the current policy recommends against using merges, if the upstream " "FreeBSD `main` moved forward before you get a chance to push, you would have " "to redo the merge." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1451 msgid "" "Regular `git rebase` or `git pull --rebase` doesn't know how to rebase a " "merge commit **as a merge commit**, so instead of that you would have to " "recreate the commit." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1453 msgid "" "The easiest way to do this would be to create a side branch with the " "**contents** of the merged tree:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1460 #, no-wrap msgid "" "% cd ../src\n" "% git fetch freebsd\n" "% git checkout -b merge_result\n" "% git merge freebsd/main\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1464 msgid "" "Typically, there would be no merge conflicts here (because developers tend " "to work on different components). In the worst case scenario, you would " "still have to resolve merge conflicts, if there was any, but this should be " "really rare." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1466 msgid "Now, checkout `freebsd/main` again as `new_merge`, and redo the merge:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1471 #, no-wrap msgid "" "% git checkout -b new_merge freebsd/main\n" "% git subtree merge -P contrib/mtree vendor/NetBSD/mtree\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1474 msgid "Instead of resolving the conflicts, perform this instead:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1478 #, no-wrap msgid "% git checkout merge_result .\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1481 msgid "" "Which will overwrite the files with conflicts with the version found in " "`merge_result`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1483 msgid "" "Examine the tree against `merge_result` to make sure that you haven't missed " "deleted files:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1487 #, no-wrap msgid "% git diff merge_result\n" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1489 #, no-wrap msgid "Pushing the changes" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1494 msgid "" "Once you are sure that you have a set of deltas you think is good, you can " "push it to a fork off GitHub or GitLab for others to review. One nice thing " "about Git is that it allows you to publish rough drafts of your work for " "others to review. While Phabricator is good for content review, publishing " "the updated vendor branch and merge commits lets others check the details as " "they will eventually appear in the repository." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1496 msgid "" "After review, when you are sure it is a good change, you can push it to the " "FreeBSD repo:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1500 #, no-wrap msgid "% git push freebsd main\n" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:1502 #, no-wrap msgid "Creating a new vendor branch" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1509 msgid "" "There are a number of ways to create a new vendor branch. The recommended " "way is to create a new repository and then merge that with FreeBSD. If one " "is importing `glorbnitz` into the FreeBSD tree, release 3.1415. For the " "sake of simplicity, we will not trim this release. It is a simple user " "command that puts the nitz device into different magical glorb states and is " "small enough trimming will not save much." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1510 #, no-wrap msgid "Create the repo" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1519 #, no-wrap msgid "" "% cd /some/where\n" "% mkdir glorbnitz\n" "% cd glorbnitz\n" "% git init\n" "% git checkout -b vendor/glorbnitz\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1522 msgid "" "At this point, you have a new repo, where all new commits will go on the " "`vendor/glorbnitz` branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1524 msgid "" "Git experts can also do this right in their FreeBSD clone, using `git " "checkout --orphan vendor/glorbnitz` if they are more comfortable with that." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1525 #, no-wrap msgid "Copy the sources in" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1529 msgid "" "Since this is a new import, you can just cp the sources in, or use tar or " "even rsync as shown above. And we will add everything, assuming no dot " "files." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1534 #, no-wrap msgid "" "% cp -r ~/glorbnitz/* .\n" "% git add *\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1537 msgid "" "At this point, you should have a pristine copy of glorbnitz ready to commit." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1541 #, no-wrap msgid "% git commit -m \"Import GlorbNitz frobnosticator revision 3.1415\"\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1545 msgid "" "As above, I used `-m` for simplicity, but you should likely create a commit " "message that explains what a Glorb is and why you'd use a Nitz to get it. " "Not everybody will know so, for your actual commit, you should follow the " "<> section instead of emulating the " "brief style used here." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1546 #, no-wrap msgid "Now import it into our repository" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1549 msgid "Now you need to import the branch into our repository." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1555 #, no-wrap msgid "" "% cd /path/to/freebsd/repo/src\n" "% git remote add glorbnitz /some/where/glorbnitz\n" "% git fetch glorbnitz vendor/glorbnitz\n" msgstr "" #. perhaps the real treasure was the friends it made along the way... #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1559 msgid "" "Note the vendor/glorbnitz branch is in the repo. At this point the `/some/" "where/glorbnitz` can be deleted, if you like. It was only a means to an end." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1561 #, no-wrap msgid "Tag and push" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1564 msgid "" "Steps from here on out are much the same as they are in the case of updating " "a vendor branch, though without the updating the vendor branch step." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1572 #, no-wrap msgid "" "% git worktree add ../glorbnitz vendor/glorbnitz\n" "% cd ../glorbnitz\n" "% git tag --annotate vendor/glorbnitz/3.1415\n" "# Make sure the commit is good with \"git show\"\n" "% git push --follow-tags freebsd vendor/glorbnitz\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1575 msgid "By 'good' we mean:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1577 msgid "All the right files are present" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1578 msgid "None of the wrong files are present" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1579 msgid "The vendor branch points at something sensible" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1580 msgid "The tag looks good, and is annotated" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1581 msgid "" "The commit message for the tag has a quick summary of what's new since the " "last tag" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1582 #, no-wrap msgid "Time to finally merge it into the base tree" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1591 #, no-wrap msgid "" "% cd ../src\n" "% git subtree add -P contrib/glorbnitz vendor/glorbnitz\n" "# Make sure the commit is good with \"git show\"\n" "% git commit --amend # one last sanity check on commit message\n" "% git push freebsd\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1594 msgid "Here 'good' means:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1596 msgid "" "All the right files, and none of the wrong ones, were merged into contrib/" "glorbnitz." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1597 msgid "No other changes are in the tree." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1598 msgid "" "The commit messages look <>. It should contain a " "summary of what's changed since the last merge to the FreeBSD main line and " "any caveats." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1599 msgid "" "UPDATING should be updated if there is anything of note, such as user " "visible changes, important upgrade concerns, etc." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1604 msgid "" "This hasn't connected `glorbnitz` to the build yet. How so do that is " "specific to the software being imported and is beyond the scope of this " "tutorial." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:1606 #, no-wrap msgid "FreeBSD Src Committer Transition Guide" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1609 msgid "" "This section is designed to walk people through the conversion process from " "Subversion to Git, written from the source committer's point of view." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1610 #, no-wrap msgid "Migrating from a Subversion tree" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1614 msgid "" "This section will cover a couple of common scenarios for migrating from " "using the FreeBSD Subversion repo to the FreeBSD source Git repo. The " "FreeBSD Git conversion is still in beta status, so some minor things may " "change between this and going into production." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1617 msgid "" "The first thing to do is install Git. Any version of Git will do, though the " "latest one in ports / packages generally will be good. Either build it from " "ports, or install it using pkg (though some folks might use `su` or `doas` " "instead of `sudo`):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1621 #, no-wrap msgid "% sudo pkg install git\n" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1623 #, no-wrap msgid "No staged changes migration" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1629 msgid "" "If you have no changes pending, the migration is straightforward. In this, " "you abandon the Subversion tree and clone the Git repository. It's likely " "best to retain your Subversion tree, in case there's something you've " "forgotten about there. First, let's clone the repository:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1633 #, no-wrap msgid "% git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/notes/*' https://git.freebsd.org/src.git freebsd-src\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1641 msgid "" "will create a clone of the FreeBSD src repository into a subdirectory called " "`freebsd-src` and include the 'notes' about the revisions. We are currently " "mirroring the source repository to https://github.com/freebsd/freebsd-src." "git as well. https://github.com/freebsd/freebsd-legacy.git has the old " "GitHub mirror with the old hashes should you need that for your migration. " "The GitHub `master` branch has been frozen. As the default in Git has " "changed, we've shifted from `master` to `main`; the new repository uses " "`main`. We also mirror the repository to GitLab at https://gitlab.com/" "FreeBSD/src.git ." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1646 msgid "" "It's useful to have the old Subversion revisions available. This data is " "stored using Git notes, but Git doesn't fetch those by default. The --" "config and the argument above changed the default to fetch the notes. If " "you've cloned the repository without this, or wish to add notes to a " "previously cloned repository, use the following commands:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1651 #, no-wrap msgid "" "% git config --add remote.freebsd.fetch \"+refs/notes/*:refs/notes/*\"\n" "% git fetch\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1654 msgid "" "At this point you have the src checked out into a Git tree, ready to do " "other things." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1655 #, no-wrap msgid "But I have changes that I've not committed" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1658 msgid "" "If you are migrating from a tree that has changes you've not yet committed " "to FreeBSD, you'll need to follow the steps from the previous section first, " "and then follow these." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1665 #, no-wrap msgid "" "% cd path-to-svn-checkout-tree\n" "% svn diff > /tmp/src.diff\n" "% cd _mumble_/freebsd-src\n" "% git checkout -b working\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1669 msgid "" "This will create a diff of your current changes. The last command creates a " "branch called `working` though you can call it whatever you want." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1673 #, no-wrap msgid "% git apply /tmp/src.diff\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1677 msgid "" "this will apply all your pending changes to the working tree. This doesn't " "commit the change, so you'll need to make this permanent:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1682 #, no-wrap msgid "" "% git add _files_\n" "% git commit\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1687 msgid "" "The last command will commit these changes to the branch. The editor will " "prompt you for a commit message. Enter one as if you were committing to " "FreeBSD." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1689 msgid "At this point, your work is preserved, and in the Git repository." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1690 #, no-wrap msgid "Keeping current" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1696 msgid "" "So, time passes. It's time now to update the tree for the latest changes " "upstream. When you checkout `main` make sure that you have no diffs. It's " "a lot easier to commit those to a branch (or use `git stash`) before doing " "the following." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1699 msgid "" "If you are used to `git pull`, we strongly recommend using the `--ff-only` " "option, and further setting it as the default option. Alternatively, `git " "pull --rebase` is useful if you have changes staged in the main branch." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1703 #, no-wrap msgid "% git config --global pull.ff only\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1706 msgid "" "You may need to omit the --global if you want this setting to apply to only " "this repository." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1712 #, no-wrap msgid "" "% cd freebsd-src\n" "% git checkout main\n" "% git pull (--ff-only|--rebase)\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1716 msgid "" "There is a common trap, that the combination command `git pull` will try to " "perform a merge, which would sometimes creates a merge commit that didn't " "exist before. This can be harder to recover from." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1718 msgid "The longer form is also recommended." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1725 #, no-wrap msgid "" "% cd freebsd-src\n" "% git checkout main\n" "% git fetch freebsd\n" "% git merge --ff-only freebsd/main\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1730 msgid "" "These commands reset your tree to the main branch, and then update it from " "where you pulled the tree from originally. It's important to switch to " "`main` before doing this so it moves forward. Now, it's time to move the " "changes forward:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1734 #, no-wrap msgid "% git rebase -i main working\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1741 msgid "" "This will bring up an interactive screen to change the defaults. For now, " "just exit the editor. Everything should just apply. If not, then you'll " "need to resolve the diffs. https://docs.github.com/en/free-pro-team@latest/" "github/using-git/resolving-merge-conflicts-after-a-git-rebase[This github " "document] can help you navigate this process." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1743 #, no-wrap msgid "Time to push changes upstream" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1746 msgid "" "First, ensure that the push URL is properly configured for the upstream " "repository." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1750 #: documentation/content/en/articles/committers-guide/_index.adoc:1864 #, no-wrap msgid "% git remote set-url --push freebsd ssh://git@gitrepo.freebsd.org/src.git\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1754 msgid "" "Then, verify that user name and email are configured right. We require that " "they exactly match the passwd entry in FreeBSD cluster." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1756 msgid "Use" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1760 #, no-wrap msgid "freefall% gen-gitconfig.sh\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1763 msgid "" "on freefall.freebsd.org to get a recipe that you can use directly, assuming /" "usr/local/bin is in the PATH." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1768 msgid "" "The below command merges the `working` branch into the upstream main line. " "It's important that you curate your changes to be just like you want them in " "the FreeBSD source repo before doing this. This syntax pushes the `working` " "branch to main, moving the `main` branch forward. You will only be able to " "do this if this results in a linear change to `main` (e.g. no merges)." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1772 #, no-wrap msgid "% git push freebsd working:main\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1775 msgid "" "If your push is rejected due to losing a commit race, rebase your branch " "before trying again:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1782 #, no-wrap msgid "" "% git checkout working\n" "% git fetch freebsd\n" "% git rebase freebsd/main\n" "% git push freebsd working:main\n" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1785 #, no-wrap msgid "Time to push changes upstream (alternative)" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1790 msgid "" "Some people find it easier to merge their changes to their local `main` " "before pushing to the remote repository. Also, `git arc stage` moves " "changes from a branch to the local `main` when you need to do a subset of a " "branch. The instructions are similar to the prior section:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1795 #, no-wrap msgid "" "% git checkout main\n" "% git merge --ff-only `working`\n" "% git push freebsd\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1798 msgid "If you lose the race, then try again with" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1802 #, no-wrap msgid "" "% git pull --rebase\n" "% git push freebsd\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1805 msgid "" "These commands will fetch the most recent `freebsd/main` and then rebase the " "local `main` changes on top of that, which is what you want when you lose " "the commit race. Note: merging vendor branch commits will not work with " "this technique." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1806 #, no-wrap msgid "Finding the Subversion Revision" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1810 msgid "" "You'll need to make sure that you've fetched the notes (see the `No staged " "changes migration` section above for details. Once you have these, notes " "will show up in the git log command like so:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1814 #, no-wrap msgid "% git log\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1817 msgid "If you have a specific version in mind, you can use this construct:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1821 #, no-wrap msgid "% git log --grep revision=XXXX\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1825 msgid "" "to find the specific revision. The hex number after 'commit' is the hash " "you can use to refer to this commit." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1826 #, no-wrap msgid "Migrating from GitHub fork" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1832 msgid "" "Note: as of this writing, https://github.com/freebsd/freebsd-src is " "mirroring all official branches, along with a `master` branch which is the " "legacy svn2git result. The `master` branch will not be updated anymore, and " "the link:https://github.com/freebsd/freebsd-src/commit/" "de1aa3dab23c06fec962a14da3e7b4755c5880cf[last commit] contains the " "instructions for migrating to the new `main` branch. We'll retain the " "`master` branch for a certain time, but in the future it will only be kept " "in the link:https://github.com/freebsd/freebsd-legacy[freebsd-legacy] " "repository. In addition, link:https://github.com/freebsd/git_conv/wiki/" "Migrating-merge-based-project-from-legacy-git-tree[this article] has an " "earlier version of the last commit instructions that may be helpful." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1836 msgid "" "When migrating branches from a GitHub fork from the old GitHub mirror to the " "official repo, the process is straight forward. This assumes that you have " "a `freebsd` upstream pointing to GitHub, adjust if necessary. This also " "assumes a clean tree before starting..." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1837 #, no-wrap msgid "Add the new `freebsd` upstream repository:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1844 #, no-wrap msgid "" "% git remote add freebsd https://git.freebsd.org/src.git\n" "% git fetch freebsd\n" "% git checkout --track freebsd/main\n" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1846 #, no-wrap msgid "Rebase all your WIP branches." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1849 msgid "" "For each branch FOO, do the following after fetching the `freebsd` sources " "and creating a local `main` branch with the above checkout:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1853 #, no-wrap msgid "% git rebase -i freebsd/master FOO --onto main\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1857 msgid "" "And you'll now be tracking the official repository. You can then follow the " "`Keeping Current` section above to stay up to date." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1860 msgid "" "If you need to then commit work to FreeBSD, you can do so following the " "`Time to push changes upstream` instructions. You'll need to do the " "following once to update the push URL if you are a FreeBSD committer:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1867 msgid "" "(note that gitrepo.freebsd.org will be change to repo.freebsd.org in the " "future.)" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1870 msgid "" "You will also need to add `freebsd` as the location to push to. The author " "recommends that your upstream GitHub repository remain the default push " "location so that you only push things into FreeBSD you intend to by making " "it explicit." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:1872 #, no-wrap msgid "Git FAQ" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1875 msgid "" "This section provides a number of targeted answers to questions that are " "likely to come up often for users and developers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1880 msgid "" "We use the common convention of having the origin for the FreeBSD repository " "being 'freebsd' rather than the default 'origin' to allow people to use that " "for their own development and to minimize \"whoops\" pushes to the wrong " "repository." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1882 #, no-wrap msgid "Users" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1884 #, no-wrap msgid "How do I track -current and -stable with only one copy of the repository?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1889 #, no-wrap msgid "" "**Q:** Although disk space is not a huge issue, it's more efficient to use only one copy of the repository.\n" "With SVN mirroring, I could checkout multiple trees from the same repository.\n" "How do I do this with Git?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1893 #, no-wrap msgid "" "**A:** You can use Git worktrees.\n" "There's a number of ways to do this, but the simplest way is to use a clone to track -current, and a worktree to track stable releases.\n" "While using a 'bare repository' has been put forward as a way to cope, it's more complicated and will not be documented here.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1896 msgid "" "First, you need to clone the FreeBSD repository, shown here cloning into " "`freebsd-current` to reduce confusion. $URL is whatever mirror works best " "for you:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1900 #, no-wrap msgid "% git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/notes/*' $URL freebsd-current\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1903 msgid "then once that's cloned, you can simply create a worktree from it:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1908 #, no-wrap msgid "" "% cd freebsd-current\n" "% git worktree add ../freebsd-stable-12 stable/12\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1912 msgid "" "this will checkout `stable/12` into a directory named `freebsd-stable-12` " "that's a peer to the `freebsd-current` directory. Once created, it's " "updated very similarly to how you might expect:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1922 #, no-wrap msgid "" "% cd freebsd-current\n" "% git checkout main\n" "% git pull --ff-only\n" "# changes from upstream now local and current tree updated\n" "% cd ../freebsd-stable-12\n" "% git merge --ff-only freebsd/stable/12\n" "# now your stable/12 is up to date too\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1925 msgid "" "I recommend using `--ff-only` because it's safer and you avoid accidentally " "getting into a 'merge nightmare' where you have an extra change in your " "tree, forcing a complicated merge rather than a simple one." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1927 msgid "" "Here's https://adventurist.me/posts/00296[a good writeup] that goes into " "more detail." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:1928 #, no-wrap msgid "Developers" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1930 #, no-wrap msgid "Ooops! I committed to `main` instead of a branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1933 #, no-wrap msgid "**Q:** From time to time, I goof up and commit to main instead of to a branch. What do I do?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1935 #, no-wrap msgid "**A:** First, don't panic.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1939 msgid "" "Second, don't push. In fact, you can fix almost anything if you haven't " "pushed. All the answers in this section assume no push has happened." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1941 msgid "" "The following answer assumes you committed to `main` and want to create a " "branch called `issue`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1947 #, no-wrap msgid "" "% git branch issue # Create the 'issue' branch\n" "% git reset --hard freebsd/main # Reset 'main' back to the official tip\n" "% git checkout issue # Back to where you were\n" msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:1949 #, no-wrap msgid "Ooops! I committed something to the wrong branch!" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1953 #, no-wrap msgid "" "**Q:** I was working on feature on the `wilma` branch, but accidentally committed a change relevant to the `fred` branch in 'wilma'.\n" "What do I do?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1957 #, no-wrap msgid "" "**A:** The answer is similar to the previous one, but with cherry picking.\n" "This assumes there's only one commit on wilma, but will generalize to more complicated situations.\n" "It also assumes that it's the last commit on wilma (hence using wilma in the `git cherry-pick` command), but that too can be generalized.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1965 #, no-wrap msgid "" "# We're on branch wilma\n" "% git checkout fred\t\t# move to fred branch\n" "% git cherry-pick wilma\t\t# copy the misplaced commit\n" "% git checkout wilma\t\t# go back to wilma branch\n" "% git reset --hard HEAD^\t# move what wilma refers to back 1 commit\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1969 msgid "" "Git experts would first rewind the wilma branch by 1 commit, switch over to " "fred and then use `git reflog` to see what that 1 deleted commit was and " "cherry-pick it over." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1971 #, no-wrap msgid "**Q:** But what if I want to commit a few changes to `main`, but keep the rest in `wilma` for some reason?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1977 #, no-wrap msgid "" "**A:** The same technique above also works if you are wanting to 'land' parts of the branch you are working on into `main` before the rest of the branch is ready (say you noticed an unrelated typo, or fixed an incidental bug).\n" "You can cherry pick those changes into main, then push to the parent repository.\n" "Once you've done that, cleanup couldn't be simpler: just `git rebase -i`.\n" "Git will notice you've done this and skip the common changes automatically (even if you had to change the commit message or tweak the commit slightly).\n" "There's no need to switch back to wilma to adjust it: just rebase!\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1979 #, no-wrap msgid "**Q:** I want to split off some changes from branch `wilma` into branch `fred`\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1985 #, no-wrap msgid "" "**A:** The more general answer would be the same as the previous.\n" "You'd checkout/create the `fred` branch, cherry pick the changes you want from `wilma` one at a time, then rebase `wilma` to remove those changes you cherry picked.\n" "`git rebase -i main wilma` will toss you into an editor, and remove the `pick` lines that correspond to the commits you copied to `fred`.\n" "If all goes well, and there are no conflicts, you're done.\n" "If not, you'll need to resolve the conflicts as you go.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:1990 msgid "" "The other way to do this would be to checkout `wilma` and then create the " "branch `fred` to point to the same point in the tree. You can then `git " "rebase -i` both these branches, selecting the changes you want in `fred` or " "`wilma` by retaining the pick likes, and deleting the rest from the editor. " "Some people would create a tag/branch called `pre-split` before starting in " "case something goes wrong in the split. You can undo it with the following " "sequence:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:1997 #, no-wrap msgid "" "% git checkout pre-split\t# Go back\n" "% git branch -D fred\t\t# delete the fred branch\n" "% git checkout -B wilma\t\t# reset the wilma branch\n" "% git branch -d pre-split\t# Pretend it didn't happen\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2001 msgid "" "The last step is optional. If you are going to try again to split, you'd " "omit it." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2005 #, no-wrap msgid "" "**Q:** But I did things as I read along and didn't see your advice at the end to create a branch, and now `fred` and `wilma` are all screwed up.\n" "How do I find what `wilma` was before I started.\n" "I don't know how many times I moved things around.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2007 #, no-wrap msgid "**A:** All is not lost. You can figure out it, so long as it hasn't been too long, or too many commits (hundreds).\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2011 msgid "" "So I created a wilma branch and committed a couple of things to it, then " "decided I wanted to split it into fred and wilma. Nothing weird happened " "when I did that, but let's say it did. The way to look at what you've done " "is with the `git reflog`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2026 #, no-wrap msgid "" "% git reflog\n" "6ff9c25 (HEAD -> wilma) HEAD@{0}: rebase -i (finish): returning to refs/heads/wilma\n" "6ff9c25 (HEAD -> wilma) HEAD@{1}: rebase -i (start): checkout main\n" "869cbd3 HEAD@{2}: rebase -i (start): checkout wilma\n" "a6a5094 (fred) HEAD@{3}: rebase -i (finish): returning to refs/heads/fred\n" "a6a5094 (fred) HEAD@{4}: rebase -i (pick): Encourage contributions\n" "1ccd109 (freebsd/main, main) HEAD@{5}: rebase -i (start): checkout main\n" "869cbd3 HEAD@{6}: rebase -i (start): checkout fred\n" "869cbd3 HEAD@{7}: checkout: moving from wilma to fred\n" "869cbd3 HEAD@{8}: commit: Encourage contributions\n" "...\n" "%\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2034 msgid "" "Here we see the changes I've made. You can use it to figure out where " "things went wrong. I'll just point out a few things here. The first one is " "that HEAD@{X} is a 'commitish' thing, so you can use that as an argument to " "a command. Although if that command commits anything to the repository, the " "X numbers change. You can also use the hash (first column)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2042 msgid "" "Next, 'Encourage contributions' was the last commit I made to `wilma` before " "I decided to split things up. You can also see the same hash is there when " "I created the `fred` branch to do that. I started by rebasing `fred` and " "you see the 'start', each step, and the 'finish' for that process. While we " "don't need it here, you can figure out exactly what happened. Fortunately, " "to fix this, you can follow the prior answer's steps, but with the hash " "`869cbd3` instead of `pre-split`. While that seems a bit verbose, it's easy " "to remember since you're doing one thing at a time. You can also stack:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2047 #, no-wrap msgid "" "% git checkout -B wilma 869cbd3\n" "% git branch -D fred\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2054 msgid "" "and you are ready to try again. The 'checkout -B' with the hash combines " "checking out and creating a branch for it. The -B instead of -b forces the " "movement of a pre-existing branch. Either way works, which is what's great " "(and awful) about Git. One reason I tend to use `git checkout -B xxxx hash` " "instead of checking out the hash, and then creating / moving the branch is " "purely to avoid the slightly distressing message about detached heads:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2060 #, no-wrap msgid "" "% git checkout 869cbd3\n" "M\tfaq.md\n" "Note: checking out '869cbd3'.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2064 #, no-wrap msgid "" "You are in 'detached HEAD' state. You can look around, make experimental\n" "changes and commit them, and you can discard any commits you make in this\n" "state without impacting any branches by performing another checkout.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2072 #, no-wrap msgid "" "HEAD is now at 869cbd3 Encourage contributions\n" "% git checkout -B wilma\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2075 msgid "" "this produces the same effect, but I have to read a lot more and severed " "heads aren't an image I like to contemplate." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:2076 #, no-wrap msgid "Ooops! I did a `git pull` and it created a merge commit, what do I do?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2080 #, no-wrap msgid "" "**Q:** I was on autopilot and did a `git pull` for my development tree and that created a merge commit on the mainline.\n" "How do I recover?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2082 #, no-wrap msgid "**A:** This can happen when you invoke the pull with your development branch checked out.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2085 msgid "" "Right after the pull, you will have the new merge commit checked out. Git " "supports a `HEAD^#` syntax to examine the parents of a merge commit:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2090 #, no-wrap msgid "" "git log --oneline HEAD^1 # Look at the first parent's commits\n" "git log --oneline HEAD^2 # Look at the second parent's commits\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2094 msgid "" "From those logs, you can easily identify which commit is your development " "work. Then you simply reset your branch to the corresponding `HEAD^#`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2098 #, no-wrap msgid "git reset --hard HEAD^2\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2101 #, no-wrap msgid "**Q:** But I also need to fix my `main` branch. How do I do that?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2104 #, no-wrap msgid "" "**A:** Git keeps track of the remote repository branches in a `freebsd/` namespace.\n" "To fix your `main` branch, just make it point to the remote's `main`:\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2108 #, no-wrap msgid "git branch -f main freebsd/main\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2113 msgid "" "There's nothing magical about branches in Git: they are just labels on a " "graph that are automatically moved forward by making commits. So the above " "works because you're just moving a label. There's no metadata about the " "branch that needs to be preserved due to this." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:2114 #, no-wrap msgid "Mixing and matching branches" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2118 #, no-wrap msgid "" "**Q:** So I have two branches `worker` and `async` that I'd like to combine into one branch called `feature`\n" "while maintaining the commits in both.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2120 #, no-wrap msgid "**A:** This is a job for cherry pick.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2126 #, no-wrap msgid "" "% git checkout worker\n" "% git checkout -b feature\t# create a new branch\n" "% git cherry-pick main..async\t# bring in the changes\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2131 msgid "" "You now have a new branch called `feature`. This branch combines commits " "from both branches. You can further curate it with `git rebase`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2133 #, no-wrap msgid "**Q:** I have a branch called `driver` and I'd like to break it up into `kernel` and `userland` so I can evolve them separately and commit each branch as it becomes ready.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2136 #, no-wrap msgid "" "**A:** This takes a little bit of prep work, but `git rebase` will do the heavy\n" "lifting here.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2142 #, no-wrap msgid "" "% git checkout driver\t\t# Checkout the driver\n" "% git checkout -b kernel\t# Create kernel branch\n" "% git checkout -b userland\t# Create userland branch\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2147 msgid "" "Now you have two identical branches. So, it's time to separate out the " "commits. We'll assume first that all the commits in `driver` go into either " "the `kernel` or the `userland` branch, but not both." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2151 #, no-wrap msgid "% git rebase -i main kernel\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2154 msgid "" "and just include the changes you want (with a 'p' or 'pick' line) and just " "delete the commits you don't (this sounds scary, but if worse comes to " "worse, you can throw this all away and start over with the `driver` branch " "since you've not yet moved it)." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2158 #, no-wrap msgid "% git rebase -i main userland\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2161 msgid "and do the same thing you did with the `kernel` branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2164 #, no-wrap msgid "" "**Q:** Oh great! I followed the above and forgot a commit in the `kernel` branch.\n" "How do I recover?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2167 #, no-wrap msgid "" "**A:** You can use the `driver` branch to find the hash of the commit is missing and\n" "cherry pick it.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2173 #, no-wrap msgid "" "% git checkout kernel\n" "% git log driver\n" "% git cherry-pick $HASH\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2179 #, no-wrap msgid "" "**Q:** OK. I have the same situation as the above, but my commits are all mixed up.\n" "I need parts of one commit to go to one branch and the rest to go to the other.\n" "In fact, I have several.\n" "Your rebase method to select sounds tricky.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2182 #, no-wrap msgid "" "**A:** In this situation, you'd be better off to curate the original branch to separate\n" "out the commits, and then use the above method to split the branch.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2187 msgid "" "So let's assume that there's just one commit with a clean tree. You can " "either use `git rebase` with an `edit` line, or you can use this with the " "commit on the tip. The steps are the same either way. The first thing we " "need to do is to back up one commit while leaving the changes uncommitted in " "the tree:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2191 #, no-wrap msgid "% git reset HEAD^\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2194 msgid "" "Note: Do not, repeat do not, add `--hard` here since that also removes the " "changes from your tree." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2198 msgid "" "Now, if you are lucky, the change needing to be split up falls entirely " "along file lines. In that case you can just do the usual `git add` for the " "files in each group than do a `git commit`. Note: when you do this, you'll " "lose the commit message when you do the reset, so if you need it for some " "reason, you should save a copy (though `git log $HASH` can recover it)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2201 msgid "" "If you are not lucky, you'll need to split apart files. There's another " "tool to do that which you can apply one file at a time." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2205 #, no-wrap msgid "git add -i foo/bar.c\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2211 msgid "" "will step through the diffs, prompting you, one at time, whether to include " "or exclude the hunk. Once you're done, `git commit` and you'll have the " "remainder in your tree. You can run it multiple times as well, and even " "over multiple files (though I find it easier to do one file at a time and " "use the `git rebase -i` to fold the related commits together)." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:2212 #, no-wrap msgid "Cloning and Mirroring" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2215 #, no-wrap msgid "**Q:** I'd like to mirror the entire Git repository, how do I do that?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2217 #, no-wrap msgid "**A:** If all you want to do is mirror, then\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2221 #, no-wrap msgid "% git clone --mirror $URL\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2225 msgid "" "will do the trick. However, there are two disadvantages to this if you want " "to use it for anything other than a mirror you'll reclone." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2229 msgid "" "First, this is a 'bare repository' which has the repository database, but no " "checked out worktree. This is great for mirroring, but terrible for day to " "day work. There's a number of ways around this with 'git worktree':" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2237 #, no-wrap msgid "" "% git clone --mirror https://git.freebsd.org/ports.git ports.git\n" "% cd ports.git\n" "% git worktree add ../ports main\n" "% git worktree add ../quarterly branches/2020Q4\n" "% cd ../ports\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2240 msgid "" "But if you aren't using your mirror for further local clones, then it's a " "poor match." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2243 msgid "" "The second disadvantage is that Git normally rewrites the refs (branch name, " "tags, etc) from upstream so that your local refs can evolve independently of " "upstream. This means that you'll lose changes if you are committing to this " "repository on anything other than private project branches." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2245 #, no-wrap msgid "**Q:** So what can I do instead?\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2248 #, no-wrap msgid "" "**A:** Well, you can stuff all of the upstream repository's refs into a private namespace in your local repository.\n" "Git clones everything via a 'refspec' and the default refspec is:\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2252 #, no-wrap msgid " fetch = +refs/heads/*:refs/remotes/freebsd/*\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2255 msgid "which says just fetch the branch refs." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2259 msgid "" "However, the FreeBSD repository has a number of other things in it. To see " "those, you can add explicit refspecs for each ref namespace, or you can " "fetch everything. To setup your repository to do that:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2263 #, no-wrap msgid "git config --add remote.freebsd.fetch '+refs/*:refs/freebsd/*'\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2267 msgid "" "which will put everything in the upstream repository into your local " "repository's 'refs/freebsd/' namespace. Please note, that this also grabs " "all the unconverted vendor branches and the number of refs associated with " "them is quite large." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2269 msgid "" "You'll need to refer to these 'refs' with their full name because they " "aren't in and of Git's regular namespaces." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2273 #, no-wrap msgid "git log refs/freebsd/vendor/zlib/1.2.10\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2276 msgid "" "would look at the log for the vendor branch for zlib starting at 1.2.10." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2277 #, no-wrap msgid "Collaborating with others" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2281 msgid "" "One of the keys to good software development on a project as large as " "FreeBSD is the ability to collaborate with others before you push your " "changes to the tree. The FreeBSD project's Git repositories do not, yet, " "allow user-created branches to be pushed to the repository, and therefore if " "you wish to share your changes with others you must use another mechanism, " "such as a hosted GitLab or GitHub, in order to share changes in a user-" "generated branch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2283 msgid "" "The following instructions show how to set up a user-generated branch, based " "on the FreeBSD main branch, and push it to GitHub." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2285 msgid "" "Before you begin, make sure that your local Git repo is up to date and has " "the correct origins set <>" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2292 msgid "" "```` % git remote -v freebsd https://git.freebsd.org/src.git (fetch) " "freebsd ssh://git@gitrepo.freebsd.org/src.git (push) ````" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2295 msgid "" "The first step is to create a fork of https://github.com/freebsd/freebsd-" "src[FreeBSD] on GitHub following these https://docs.github.com/en/github/" "getting-started-with-github/fork-a-repo[guidelines]. The destination of the " "fork should be your own, personal, GitHub account (gvnn3 in my case)." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2297 msgid "Now add a remote on your local system that points to your fork:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2305 #, no-wrap msgid "" "% git remote add github git@github.com:gvnn3/freebsd-src.git\n" "% git remote -v\n" "github\tgit@github.com:gvnn3/freebsd-src.git (fetch)\n" "github\tgit@github.com:gvnn3/freebsd-src.git (push)\n" "freebsd\thttps://git.freebsd.org/src.git (fetch)\n" "freebsd\tssh://git@gitrepo.freebsd.org/src.git (push)\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2307 msgid "" "With this in place you can create a branch <>" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2311 #, no-wrap msgid "% git checkout -b gnn-pr2001-fix\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2315 msgid "" "Make whatever modifications you wish in your branch. Build, test, and once " "you're ready to collaborate with others it's time to push your changes into " "your hosted branch. Before you can push you'll have to set the appropriate " "upstream, as Git will tell you the first time you try to push to your +github" "+ remote:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2321 #, no-wrap msgid "" "% git push github\n" "fatal: The current branch gnn-pr2001-fix has no upstream branch.\n" "To push the current branch and set the remote as upstream, use\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2323 #, no-wrap msgid " git push --set-upstream github gnn-pr2001-fix\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2326 msgid "Setting the push as +git+ advises allows it to succeed:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2344 #, no-wrap msgid "" "% git push --set-upstream github gnn-feature\n" "Enumerating objects: 20486, done.\n" "Counting objects: 100% (20486/20486), done.\n" "Delta compression using up to 8 threads\n" "Compressing objects: 100% (12202/12202), done.\n" "Writing objects: 100% (20180/20180), 56.25 MiB | 13.15 MiB/s, done.\n" "Total 20180 (delta 11316), reused 12972 (delta 7770), pack-reused 0\n" "remote: Resolving deltas: 100% (11316/11316), completed with 247 local objects.\n" "remote:\n" "remote: Create a pull request for 'gnn-feature' on GitHub by visiting:\n" "remote: https://github.com/gvnn3/freebsd-src/pull/new/gnn-feature\n" "remote:\n" "To github.com:gvnn3/freebsd-src.git\n" " * [new branch] gnn-feature -> gnn-feature\n" "Branch 'gnn-feature' set up to track remote branch 'gnn-feature' from 'github'.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2347 msgid "Subsequent changes to the same branch will push correctly by default:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2360 #, no-wrap msgid "" "% git push\n" "Enumerating objects: 4, done.\n" "Counting objects: 100% (4/4), done.\n" "Delta compression using up to 8 threads\n" "Compressing objects: 100% (2/2), done.\n" "Writing objects: 100% (3/3), 314 bytes | 1024 bytes/s, done.\n" "Total 3 (delta 1), reused 1 (delta 0), pack-reused 0\n" "remote: Resolving deltas: 100% (1/1), completed with 1 local object.\n" "To github.com:gvnn3/freebsd-src.git\n" " 9e5243d7b659..cf6aeb8d7dda gnn-feature -> gnn-feature\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2364 msgid "" "At this point your work is now in your branch on +GitHub+ and you can share " "the link with other collaborators." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2366 #, no-wrap msgid "Landing a github pull request" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2371 msgid "" "This section documents how to land a GitHub pull request that's submitted " "against the FreeBSD Git mirrors at GitHub. While this is not an official " "way to submit patches at this time, sometimes good fixes come in this way " "and it is easiest just to bring them into a committer's tree and have them " "pushed into the FreeBSD's tree from there. Similar steps can be used to " "pull branches from other repositories and land those. When committing pull " "requests from others, one should take extra care to examine all the changes " "to ensure they are exactly as represented." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2374 msgid "" "Before beginning, make sure that the local Git repo is up to date and has " "the correct origins set <> In addition, " "make sure to have the following origins:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2381 #, no-wrap msgid "" "% git remote -v\n" "freebsd https://git.freebsd.org/src.git (fetch)\n" "freebsd ssh://git@gitrepo.freebsd.org/src.git (push)\n" "github https://github.com/freebsd/freebsd-src (fetch)\n" "github https://github.com/freebsd/freebsd-src (fetch)\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2396 msgid "" "Often pull requests are simple: requests that contain only a single commit. " "In this case, a streamlined approach may be used, though the approach in the " "prior section will also work. Here, a branch is created, the change is " "cherry picked, the commit message adjusted, and sanity-checked before being " "pushed. The branch `staging` is used in this example but it can be any " "name. This technique works for any number of commits in the pull request, " "especially when the changes apply cleanly to the FreeBSD tree. However, " "when there's multiple commits, especially when minor adjustments are needed, " "`git rebase -i` works better than `git cherry-pick`. Briefly, these " "commands create a branch; cherry-picks the changes from the pull request; " "tests it; adjusts the commit messages; and fast forward merges it back to " "`main`. The PR number is `$PR` below. When adjusting the message, add " "`Pull Request: https://github.com/freebsd-src/pull/$PR`. All pull requests " "committed to the FreeBSD repository should be reviewed by at least one " "person. This need not be the person committing it, but in that case the " "person committing it should trust the other reviewers competence to review " "the commit. Committers that do a code review of pull requests before " "pushing them into the repo should add a `Reviewed by:` line to the commit, " "because in this case it is not implicit. Add anybody that reviews and " "approves the commit on github to `Reviewed by:` as well. As always, care " "should be taken to ensure the change does what it is supposed to, and that " "no malicious code is present." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2400 msgid "" "In addition, please check to make sure that the pull request author name is " "not anonymous. Github's web editing interface generates names like:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2403 #, no-wrap msgid "Author: github-user <38923459+github-user@users.noreply.github.com>\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2406 msgid "" "A polite request to the author for a better name and/or email should be " "made. Extra care should be taken to ensure no style issue or malicious code " "is introduced." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2419 #, no-wrap msgid "" "% git fetch github pull/$PR/head:staging\n" "% git rebase -i main staging\t# to move the staging branch forward, adjust commit message here\n" "\n" "% git checkout main\n" "% git pull --ff-only\t\t# to get the latest if time has passed\n" "% git checkout main\n" "% git merge --ff-only staging\n" "\n" "% git push freebsd --push-option=confirm-author\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2424 msgid "" "For complicated pull requests that have multiple commits with conflicts, " "follow the following outline." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2426 msgid "checkout the pull request `git checkout github/pull/XXX`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2427 msgid "create a branch to rebase `git checkout -b staging`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2428 msgid "" "rebase the `staging` branch to the latest `main` with `git rebase -i main " "staging`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2429 msgid "resolve conflicts and do whatever testing is needed" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2430 msgid "fast forward the `staging` branch into `main` as above" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2431 msgid "final sanity check of changes to make sure all is well" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2432 msgid "push to FreeBSD's Git repository." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2434 msgid "" "This will also work when bringing branches developed elsewhere into the " "local tree for committing." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2437 msgid "" "Once finished with the pull request, close it using GitHub's web interface. " "It is worth noting that if your `github` origin uses `https://`, the only " "step you'll need a GitHub account for is closing the pull request." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:2439 #, no-wrap msgid "Version Control History" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2442 msgid "The project has moved to <>." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2448 msgid "" "The FreeBSD source repository switched from CVS to Subversion on May 31st, " "2008. The first real SVN commit is __r179447__. The source repository " "switched from Subversion to Git on December 23rd, 2020. The last real svn " "commit is __r368820__. The first real git commit hash is " "__5ef5f51d2bef80b0ede9b10ad5b0e9440b60518c__." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2454 msgid "" "The FreeBSD `doc/www` repository switched from CVS to Subversion on May " "19th, 2012. The first real SVN commit is __r38821__. The documentation " "repository switched from Subversion to Git on December 8th, 2020. The last " "SVN commit is __r54737__. The first real git commit hash is " "__3be01a475855e7511ad755b2defd2e0da5d58bbe__." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2460 msgid "" "The FreeBSD `ports` repository switched from CVS to Subversion on July 14th, " "2012. The first real SVN commit is __r300894__. The ports repository " "switched from Subversion to Git on April 6, 2021. The last SVN commit is " "__r569609__ The first real git commit hash is " "__ed8d3eda309dd863fb66e04bccaa513eee255cbf__." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:2462 #, no-wrap msgid "Setup, Conventions, and Traditions" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2467 msgid "" "There are a number of things to do as a new developer. The first set of " "steps is specific to committers only. These steps must be done by a mentor " "for those who are not committers." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2469 #, no-wrap msgid "For New Committers" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2472 msgid "" "Those who have been given commit rights to the FreeBSD repositories must " "follow these steps." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2474 msgid "Get mentor approval before committing each of these changes!" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2475 msgid "" "All [.filename]#src# commits go to FreeBSD-CURRENT first before being merged " "to FreeBSD-STABLE. The FreeBSD-STABLE branch must maintain ABI and API " "compatibility with earlier versions of that branch. Do not merge changes " "that break this compatibility." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2480 #, no-wrap msgid "*Steps for New Committers*\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2482 msgid "Add an Author Entity" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2484 msgid "" "[.filename]#doc/shared/authors.adoc# - Add an author entity. Later steps " "depend on this entity, and missing this step will cause the [.filename]#doc/" "# build to fail. This is a relatively easy task, but remains a good first " "test of version control skills." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2485 msgid "Update the List of Developers and Contributors" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2487 msgid "" "[.filename]#doc/shared/contrib-committers.adoc# - Add an entry, which will " "then appear in the \"Developers\" section of the extref:{contributors}" "[Contributors List, staff-committers]. Entries are sorted by last name." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2489 msgid "" "[.filename]#doc/shared/contrib-additional.adoc# - _Remove_ the entry. " "Entries are sorted by first name." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2490 msgid "Add a News Item" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2492 msgid "" "[.filename]#doc/website/data/en/news/news.toml# - Add an entry. Look for the " "other entries that announce new committers and follow the format. Use the " "date from the commit bit approval email from mailto:core@FreeBSD." "org[core@FreeBSD.org]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2493 msgid "Add a PGP Key" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2495 msgid "" "`{des}` has written a shell script ([.filename]#doc/documentation/tools/" "addkey.sh#) to make this easier. See the https://cgit.freebsd.org/doc/plain/" "documentation/static/pgpkeys/README[README] file for more information." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2497 msgid "" "Use [.filename]#doc/documentation/tools/checkkey.sh# to verify that keys " "meet minimal best-practices standards." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2499 msgid "" "After adding and checking a key, add both updated files to source control " "and then commit them. Entries in this file are sorted by last name." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2503 msgid "" "It is very important to have a current PGP/GnuPG key in the repository. The " "key may be required for positive identification of a committer. For example, " "the `{admins}` might need it for account recovery. A complete keyring of " "`FreeBSD.org` users is available for download from link:https://docs.FreeBSD." "org/pgpkeys/pgpkeys.txt[https://docs.FreeBSD.org/pgpkeys/pgpkeys.txt]." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2505 msgid "Update Mentor and Mentee Information" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2507 msgid "" "[.filename]#src/share/misc/committers-.dot# - Add an entry to " "the current committers section, where _repository_ is `doc`, `ports`, or " "`src`, depending on the commit privileges granted." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2509 msgid "" "Add an entry for each additional mentor/mentee relationship in the bottom " "section." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2510 msgid "Generate a Kerberos Password" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2512 msgid "" "See <> to generate or set a Kerberos for use with other " "FreeBSD services like the bug tracking database." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2513 msgid "Optional: Enable Wiki Account" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2515 msgid "" "https://wiki.freebsd.org[FreeBSD Wiki] Account - A wiki account allows " "sharing projects and ideas. Those who do not yet have an account can follow " "instructions on the https://wiki.freebsd.org/AboutWiki[AboutWiki Page] to " "obtain one. Contact mailto:wiki-admin@FreeBSD.org[wiki-admin@FreeBSD.org] if " "you need help with your Wiki account." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2516 msgid "Optional: Update Wiki Information" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2518 msgid "" "Wiki Information - After gaining access to the wiki, some people add entries " "to the https://wiki.freebsd.org/HowWeGotHere[How We Got Here], https://wiki." "freebsd.org/IRC/Nicknames[IRC Nicks], and https://wiki.freebsd.org/Community/" "Dogs[Dogs of FreeBSD] pages." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2519 msgid "Optional: Update Ports with Personal Information" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2521 msgid "" "[.filename]#ports/astro/xearth/files/freebsd.committers.markers# and [." "filename]#src/usr.bin/calendar/calendars/calendar.freebsd# - Some people add " "entries for themselves to these files to show where they are located or the " "date of their birthday." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2522 msgid "Optional: Prevent Duplicate Mailings" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2524 msgid "" "Subscribers to {dev-commits-doc-all}, {dev-commits-ports-all} or {dev-" "commits-src-all} might wish to unsubscribe to avoid receiving duplicate " "copies of commit messages and followups." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2527 #, no-wrap msgid "For Everyone" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2533 msgid "" "Introduce yourself to the other developers, otherwise no one will have any " "idea who you are or what you are working on. The introduction need not be a " "comprehensive biography, just write a paragraph or two about who you are, " "what you plan to be working on as a developer in FreeBSD, and who will be " "your mentor. Email this to the {developers-name} and you will be on your way!" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2534 msgid "" "Log into `freefall.FreeBSD.org` and create a [.filename]#/var/forward/user# " "(where _user_ is your username) file containing the e-mail address where you " "want mail addressed to _yourusername_@FreeBSD.org to be forwarded. This " "includes all of the commit messages as well as any other mail addressed to " "the {committers-name} and the {developers-name}. Really large mailboxes " "which have taken up permanent residence on `freefall` may get truncated " "without warning if space needs to be freed, so forward it or save it " "elsewhere." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2538 msgid "" "If your e-mail system uses SPF with strict rules, you should exclude `mx2." "FreeBSD.org` from SPF checks." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2541 msgid "" "Due to the severe load dealing with SPAM places on the central mail servers " "that do the mailing list processing, the front-end server does do some basic " "checks and will drop some messages based on these checks. At the moment " "proper DNS information for the connecting host is the only check in place " "but that may change. Some people blame these checks for bouncing valid " "email. To have these checks turned off for your email, create a file named [." "filename]#~/.spam_lover# on `freefall.FreeBSD.org`." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2545 msgid "" "Those who are developers but not committers will not be subscribed to the " "committers or developers mailing lists. The subscriptions are derived from " "the access rights." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:2549 #, no-wrap msgid "SMTP Access Setup" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2552 msgid "" "For those willing to send e-mail messages through the FreeBSD.org " "infrastructure, follow the instructions below:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2556 msgid "Point your mail client at `smtp.FreeBSD.org:587`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2557 msgid "Enable STARTTLS." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2558 msgid "Ensure your `From:` address is set to `_yourusername_@FreeBSD.org`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2559 msgid "" "For authentication, you can use your FreeBSD Kerberos username and password " "(see <>). The `_yourusername_/mail` principal is preferred, " "as it is only valid for authenticating to mail resources." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2563 msgid "Do not include `@FreeBSD.org` when entering in your username." msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:2565 #, no-wrap msgid "Additional Notes" msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2569 msgid "" "Will only accept mail from `_yourusername_@FreeBSD.org`. If you are " "authenticated as one user, you are not permitted to send mail from another." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2570 msgid "" "A header will be appended with the SASL username: (`Authenticated sender: " "_username_`)." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:2571 msgid "" "Host has various rate limits in place to cut down on brute force attempts." msgstr "" #. type: Title ===== #: documentation/content/en/articles/committers-guide/_index.adoc:2575 #, no-wrap msgid "Using a Local MTA to Forward Emails to the FreeBSD.org SMTP Service" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2578 msgid "" "It is also possible to use a local MTA to forward locally sent emails to the " "FreeBSD.org SMTP servers." msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:2580 #, no-wrap msgid "Using Postfix" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2585 msgid "" "To tell a local Postfix instance that anything from `_yourusername_@FreeBSD." "org` should be forwarded to the FreeBSD.org servers, add this to your [." "filename]#main.cf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2593 #, no-wrap msgid "" "sender_dependent_relayhost_maps = hash:/usr/local/etc/postfix/relayhost_maps\n" "smtp_sasl_auth_enable = yes\n" "smtp_sasl_security_options = noanonymous\n" "smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd\n" "smtp_use_tls = yes\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2596 msgid "" "Create [.filename]#/usr/local/etc/postfix/relayhost_maps# with the following " "content:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2600 #, no-wrap msgid "yourusername@FreeBSD.org [smtp.freebsd.org]:587\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2603 msgid "" "Create [.filename]#/usr/local/etc/postfix/sasl_passwd# with the following " "content:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2607 #, no-wrap msgid "[smtp.freebsd.org]:587 yourusername:yourpassword\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2610 msgid "" "If the email server is used by other people, you may want to prevent them " "from sending e-mails from your address. To achieve this, add this to your [." "filename]#main.cf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2615 #, no-wrap msgid "" "smtpd_sender_login_maps = hash:/usr/local/etc/postfix/sender_login_maps\n" "smtpd_sender_restrictions = reject_known_sender_login_mismatch\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2618 msgid "" "Create [.filename]#/usr/local/etc/postfix/sender_login_maps# with the " "following content:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2622 #, no-wrap msgid "yourusername@FreeBSD.org yourlocalusername\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2625 msgid "" "Where _yourlocalusername_ is the SASL username used to connect to the local " "instance of Postfix." msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:2628 #, no-wrap msgid "Using OpenSMTPD" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2633 msgid "" "To tell a local OpenSMTPD instance that anything from " "`_yourusername_@FreeBSD.org` should be forwarded to the FreeBSD.org servers, " "add this to your [.filename]#smtpd.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2638 #, no-wrap msgid "" "action \"freebsd\" relay host smtp+tls://freebsd@smtp.freebsd.org:587 auth \n" "match from any auth yourlocalusername mail-from \"_yourusername_@freebsd.org\" for any action \"freebsd\"\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2641 msgid "" "Where _yourlocalusername_ is the SASL username used to connect to the local " "instance of OpenSMTPD." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2643 msgid "" "Create [.filename]#/usr/local/etc/mail/secrets# with the following content:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2647 #, no-wrap msgid "freebsd\tyourusername:yourpassword\n" msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:2651 #, no-wrap msgid "Using Exim" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2657 #, no-wrap msgid "" "To direct a local Exim instance to forward all mail from `_example_@FreeBSD.org`\n" " to FreeBSD.org servers, add this to Exim [.filename]#configuration#:\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2666 #, no-wrap msgid "" "Routers section: (at the top of the list):\n" "freebsd_send:\n" " driver = manualroute\n" " domains = !+local_domains\n" " transport = freebsd_smtp\n" " route_data = ${lookup {${lc:$sender_address}} lsearch {/usr/local/etc/exim/freebsd_send}}\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2678 #, no-wrap msgid "" "Transport Section:\n" "freebsd_smtp:\n" " driver = smtp\n" " tls_certificate=\n" " tls_privatekey=\n" " tls_require_ciphers = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+AESGCM:EECDH:EDH+AESGCM:EDH+aRSA:HIGH:!MEDIUM:!LOW:!aNULL:!eNULL:!LOW:!RC4:!MD5:!EXP:!PSK:!SRP:!DSS\n" " dkim_domain = \n" " dkim_selector = \n" " dkim_private_key= \n" " dnssec_request_domains = *\n" " hosts_require_auth = smtp.freebsd.org\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2684 #, no-wrap msgid "" "Authenticators:\n" "fixed_plain:\n" " driver = plaintext\n" " public_name = PLAIN\n" " client_send = ^example/mail^examplePassword\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2687 msgid "" "Create [.filename]#/usr/local/etc/exim/freebsd_send# with the following " "content:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2691 #, no-wrap msgid "example@freebsd.org:smtp.freebsd.org::587\n" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2696 #, no-wrap msgid "Mentors" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2701 msgid "" "All new developers have a mentor assigned to them for the first few months. " "A mentor is responsible for teaching the mentee the rules and conventions of " "the project and guiding their first steps in the developer community. The " "mentor is also personally responsible for the mentee's actions during this " "initial period." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2704 msgid "" "For committers: do not commit anything without first getting mentor " "approval. Document that approval with an `Approved by:` line in the commit " "message." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2708 msgid "" "When the mentor decides that a mentee has learned the ropes and is ready to " "commit on their own, the mentor announces it with a commit to [." "filename]#mentors#. This file is in the [.filename]#admin# orphan branch of " "each repository. Detailed information on how to access these branches can " "be found in <>." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:2710 #, no-wrap msgid "Pre-Commit Review" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2715 msgid "" "Code review is one way to increase the quality of software. The following " "guidelines apply to commits to the `head` (-CURRENT) branch of the `src` " "repository. Other branches and the `ports` and `docs` trees have their own " "review policies, but these guidelines generally apply to commits requiring " "review:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2717 msgid "" "All non-trivial changes should be reviewed before they are committed to the " "repository." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2718 msgid "" "Reviews may be conducted by email, in Bugzilla, in Phabricator, or by " "another mechanism. Where possible, reviews should be public." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2719 msgid "" "The developer responsible for a code change is also responsible for making " "all necessary review-related changes." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2720 msgid "" "Code review can be an iterative process, which continues until the patch is " "ready to be committed. Specifically, once a patch is sent out for review, it " "should receive an explicit \"looks good\" before it is committed. So long as " "it is explicit, this can take whatever form makes sense for the review " "method." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2721 msgid "Timeouts are not a substitute for review." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2723 msgid "" "Sometimes code reviews will take longer than you would hope for, especially " "for larger features. Accepted ways to speed up review times for your patches " "are:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2725 msgid "" "Review other people's patches. If you help out, everybody will be more " "willing to do the same for you; goodwill is our currency." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2726 msgid "" "Ping the patch. If it is urgent, provide reasons why it is important to you " "to get this patch landed and ping it every couple of days. If it is not " "urgent, the common courtesy ping rate is one week. Remember that you are " "asking for valuable time from other professional developers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2727 msgid "" "Ask for help on mailing lists, IRC, etc. Others may be able to either help " "you directly, or suggest a reviewer." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2728 msgid "" "Split your patch into multiple smaller patches that build on each other. The " "smaller your patch, the higher the probability that somebody will take a " "quick look at it." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2730 msgid "" "When making large changes, it is helpful to keep this in mind from the " "beginning of the effort as breaking large changes into smaller ones is often " "difficult after the fact." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2735 msgid "" "Developers should participate in code reviews as both reviewers and " "reviewees. If someone is kind enough to review your code, you should return " "the favor for someone else. Note that while anyone is welcome to review and " "give feedback on a patch, only an appropriate subject-matter expert can " "approve a change. This will usually be a committer who works with the code " "in question on a regular basis." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2738 msgid "" "In some cases, no subject-matter expert may be available. In those cases, a " "review by an experienced developer is sufficient when coupled with " "appropriate testing." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:2740 #, no-wrap msgid "Commit Log Messages" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2743 msgid "" "This section contains some suggestions and traditions for how commit logs " "are formatted." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2744 #, no-wrap msgid "Why are commit messages important?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2748 msgid "" "When you commit a change in Git, Subversion, or another version control " "system (VCS), you're prompted to write some text describing the commit -- a " "commit message. How important is this commit message? Should you spend some " "significant effort writing it? Does it really matter if you write simply " "fixed a bug?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2751 msgid "" "Most projects have more than one developer and last for some length of " "time. Commit messages are a very important method of communicating with " "other developers, in the present and for the future." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2754 msgid "" "FreeBSD has hundreds of active developers and hundreds of thousands of " "commits spanning decades of history. Over that time the developer community " "has learned how valuable good commit messages are; sometimes these are hard-" "learned lessons." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2756 msgid "Commit messages serve at least three purposes:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2758 msgid "Communicating with other developers" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2763 msgid "" "FreeBSD commits generate email to various mailing lists. These include the " "commit message along with a copy of the patch itself. Commit messages are " "also viewed through commands like git log. These serve to make other " "developers aware of changes that are ongoing; that other developer may want " "to test the change, may have an interest in the topic and will want to " "review in more detail, or may have their own projects underway that would " "benefit from interaction." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2765 msgid "Making Changes Discoverable" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2769 msgid "" "In a large project with a long history it may be difficult to find changes " "of interest when investigating an issue or change in behaviour. Verbose, " "detailed commit messages allow searches for changes that might be relevant. " "For example, `git log --since 1year --grep 'USB timeout'`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2771 msgid "Providing historical documentation" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2775 msgid "" "Commit messages serve to document changes for future developers, perhaps " "years or decades later. This future developer may even be you, the original " "author. A change that seems obvious today may be decidedly not so much " "later on." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2777 msgid "" "The `git blame` command annotates each line of a source file with the change " "(hash and subject line) that brought it in." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2779 msgid "" "Having established the importance, here are elements of a good FreeBSD " "commit message:" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2780 #, no-wrap msgid "Start with a subject line" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2784 msgid "" "Commit messages should start with a single-line subject that briefly " "summarizes the change. The subject should, by itself, allow the reader to " "quickly determine if the change is of interest or not." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2785 #, no-wrap msgid "Keep subject lines short" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2790 msgid "" "The subject line should be as short as possible while still retaining the " "required information. This is to make browsing Git log more efficient, and " "so that git log --oneline can display the short hash and subject on a single " "80-column line. A good rule of thumb is to stay below 63 characters, and " "aim for about 50 or fewer if possible." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2791 #, no-wrap msgid "Prefix the subject line with a component, if applicable" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2794 msgid "" "If the change relates to a specific component the subject line may be " "prefixed with that component name and a colon (:)." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2796 msgid "✓ `foo: Add -k option to keep temporary data`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2798 msgid "" "Include the prefix in the 63-character limit suggested above, so that `git " "log --oneline` avoids wrapping." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2799 #, no-wrap msgid "Capitalize the first letter of the subject" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2803 msgid "" "Capitalize the first letter of the subject itself. The prefix, if any, is " "not capitalized unless necessary (e.g., `USB:` is capitalized)." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2804 #, no-wrap msgid "Do not end the subject line with punctuation" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2808 msgid "" "Do not end with a period or other punctuation. In this regard the subject " "line is like a newspaper headline." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2809 #, no-wrap msgid "Separate the subject and body with a blank line" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2812 msgid "Separate the body from the subject with a blank line." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2814 msgid "" "Some trivial commits do not require a body, and will have only a subject." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2816 msgid "✓ `ls: Fix typo in usage text`" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2817 #, no-wrap msgid "Limit messages to 72 columns" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2823 msgid "" "`git log` and `git format-patch` indent the commit message by four spaces. " "Wrapping at 72 columns provides a matching margin on the right edge. " "Limiting messages to 72 characters also keeps the commit message in " "formatted patches below RFC 2822's suggested email line length limit of 78 " "characters. This limit works well with a variety of tools that may render " "commit messages; line wrapping might be inconsistent with longer line length." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2824 #, no-wrap msgid "Use the present tense, imperative mood" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2829 msgid "" "This facilitates short subject lines and provides consistency, including " "with automatically generated commit messages (e.g., as generated by git " "revert). This is important when reading a list of commit subjects. Think " "of the subject as finishing the sentence \"when applied, this change will ..." "\"." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2834 #, no-wrap msgid "" "✓ `foo: Implement the -k (keep) option`\n" "✗ `foo: Implemented the -k option`\n" "✗ `This change implements the -k option in foo`\n" "✗ `-k option added`" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2835 #, no-wrap msgid "Focus on what and why, not how" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2838 msgid "" "Explain what the change accomplishes and why it is being done, rather than " "how." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2842 msgid "" "Do not assume that the reader is familiar with the issue. Explain the " "background and motivation for the change. Include benchmark data if you " "have it." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2844 msgid "" "If there are limitations or incomplete aspects of the change, describe them " "in the commit message." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2845 #, no-wrap msgid "Consider whether parts of the commit message could be code comments instead" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2848 msgid "" "Sometimes while writing a commit message you may find yourself writing a " "sentence or two explaining some tricky or confusing aspect of the change. " "When this happens consider whether it would be valuable to have that " "explanation as a comment in the code itself." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2849 #, no-wrap msgid "Write commit messages for your future self" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2853 msgid "" "While writing the commit message for a change you have all of the context in " "mind - what prompted the change, alternate approaches that were considered " "and rejected, limitations of the change, and so on. Imagine yourself " "revisiting the change a year or two in the future, and write the commit " "message in a way that would provide that necessary context." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2854 #, no-wrap msgid "Commit messages should stand alone" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2858 msgid "" "You may include references to mailing list postings, benchmark result web " "sites, or code review links. However, the commit message should contain all " "of the relevant information in case these references are no longer available " "in the future." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2862 msgid "" "Similarly, a commit may refer to a previous commit, for example in the case " "of a bug fix or revert. In addition to the commit identifier (revision or " "hash), include the subject line from the referenced commit (or another " "suitable brief reference). With each VCS migration (from CVS to Subversion " "to Git) revision identifiers from previous systems may become difficult to " "follow." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:2863 #, no-wrap msgid "Include appropriate metadata in a footer" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2866 msgid "" "As well as including an informative message with each commit, some " "additional information may be needed." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2868 msgid "" "This information consists of one or more lines containing the key word or " "phrase, a colon, tabs for formatting, and then the additional information." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2870 msgid "The key words or phrases are:" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2876 #, no-wrap msgid "`PR:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2878 #, no-wrap msgid "The problem report (if any) which is affected (typically, by being closed) by this commit. Multiple PRs may be specified on one line, separated by commas or spaces." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2879 #, no-wrap msgid "`Reported by:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2883 #, no-wrap msgid "" "The name and e-mail address of the person that reported the issue; for developers, just the username on the FreeBSD cluster.\n" "Typically used when there is no PR, for example if the issue was reported on\n" "a mailing list." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2884 #, no-wrap msgid "`Submitted by:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2886 #, no-wrap msgid "This has been deprecated with git; submitted patches should have the author set by using `git commit --author` with a full name and valid email." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2887 #, no-wrap msgid "`Reviewed by:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2902 #, no-wrap msgid "" "The name and e-mail address of the person or people that reviewed the change; for developers, just the username on the FreeBSD cluster. If a patch was submitted to a mailing list for review, and the review was favorable, then just include the list name. If the reviewer is not a member of the project, provide the name, email, and if ports an external role like maintainer:\n" "\n" "Reviewed by a developer:\n" "[source,shell]\n" "....\n" "Reviewed by: username\n" "....\n" "\n" "Reviewed by a ports maintainer that is not a developer:\n" "[source,shell]\n" "....\n" "Reviewed by: Full Name (maintainer)\n" "...." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2903 #, no-wrap msgid "`Tested by:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2905 #, no-wrap msgid "The name and e-mail address of the person or people that tested the change; for developers, just the username on the FreeBSD cluster." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2906 #, no-wrap msgid "`Approved by:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2931 #, no-wrap msgid "" "The name and e-mail address of the person or people that approved the change; for developers, just the username on the FreeBSD cluster.\n" "\n" "There are several cases where approval is customary:\n" "\n" "* while a new committer is under mentorship\n" "* commits to an area of the tree covered by the LOCKS file (src)\n" "* during a release cycle\n" "* committing to a repo where you do not hold a commit bit (e.g. src committer committing to docs)\n" "\n" "While under mentorship, get mentor approval before the commit. Enter the mentor's username in this field, and note that they are a mentor:\n" "\n" "[source,shell]\n" "....\n" "Approved by: username-of-mentor (mentor)\n" "....\n" "\n" "If a team approved these commits then include the team name followed by the username of the approver in parentheses. For example:\n" "\n" "[source,shell]\n" "....\n" "Approved by: re (username)\n" "...." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2932 #, no-wrap msgid "`Obtained from:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2934 #, no-wrap msgid "The name of the project (if any) from which the code was obtained. Do not use this line for the name of an individual person." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2935 #, no-wrap msgid "`Fixes:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2937 #, no-wrap msgid "The Git short hash and the title line of a commit that is fixed by this change as returned by `git log -n 1 --oneline GIT-COMMIT-HASH`." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2938 #, no-wrap msgid "`MFC after:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2940 #, no-wrap msgid "To receive an e-mail reminder to MFC at a later date, specify the number of days, weeks, or months after which an MFC is planned." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2941 #, no-wrap msgid "`MFC to:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2943 #, no-wrap msgid "If the commit should be merged to a subset of stable branches, specify the branch names." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2944 #, no-wrap msgid "`MFC with:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2946 #, no-wrap msgid "If the commit should be merged together with a previous one in a single MFC commit (for example, where this commit corrects a bug in the previous change), specify the corresponding Git hash." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2947 #, no-wrap msgid "`MFH:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2949 #, no-wrap msgid "If the commit is to be merged into a ports quarterly branch name, specify the quarterly branch. For example `2021Q2`." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2950 #, no-wrap msgid "`Relnotes:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2952 #, no-wrap msgid "If the change is a candidate for inclusion in the release notes for the next release from the branch, set to `yes`." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2953 #, no-wrap msgid "`Security:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2955 #, no-wrap msgid "If the change is related to a security vulnerability or security exposure, include one or more references or a description of the issue. If possible, include a VuXML URL or a CVE ID." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2956 #, no-wrap msgid "`Event:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2958 #, no-wrap msgid "The description for the event where this commit was made. If this is a recurring event, add the year or even the month to it. For example, this could be `FooBSDcon 2019`. The idea behind this line is to put recognition to conferences, gatherings, and other types of meetups and to show that these are useful to have. Please do not use the `Sponsored by:` line for this as that is meant for organizations sponsoring certain features or developers working on them." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2959 #, no-wrap msgid "`Sponsored by:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2961 #, no-wrap msgid "Sponsoring organizations for this change, if any. Separate multiple organizations with commas. If only a portion of the work was sponsored, or different amounts of sponsorship were provided to different authors, please give appropriate credit in parentheses after each sponsor name. For example, `Example.com (alice, code refactoring), Wormulon (bob), Momcorp (cindy)` shows that Alice was sponsored by Example.com to do code refactoring, while Wormulon sponsored Bob's work and Momcorp sponsored Cindy's work. Other authors were either not sponsored or chose not to list sponsorship." msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2962 #, no-wrap msgid "`Pull Request:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2966 #, no-wrap msgid "" "This change was submitted as a pull request or merge request against one of FreeBSD's public read-only Git repositories.\n" "It should include the entire URL to the pull request, as these often act as code reviews for the code.\n" "For example: `https://github.com/freebsd/freebsd-src/pull/745`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2967 #, no-wrap msgid "`Signed-off-by:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2969 #, no-wrap msgid "ID certifies compliance with https://developercertificate.org/" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2970 #, no-wrap msgid "`Differential Revision:`" msgstr "" #. type: Table #: documentation/content/en/articles/committers-guide/_index.adoc:2972 #, no-wrap msgid "The full URL of the Phabricator review. This line __must be the last line__. For example: `https://reviews.freebsd.org/D1708`." msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:2974 #, no-wrap msgid "Commit Log for a Commit Based on a PR" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2980 msgid "" "The commit is based on a patch from a PR submitted by John Smith. The " "commit message \"PR\" field is filled." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2984 #: documentation/content/en/articles/committers-guide/_index.adoc:3002 #: documentation/content/en/articles/committers-guide/_index.adoc:3017 #: documentation/content/en/articles/committers-guide/_index.adoc:3033 #: documentation/content/en/articles/committers-guide/_index.adoc:3048 #, no-wrap msgid "...\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:2986 #, no-wrap msgid "PR:\t\t12345\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2989 msgid "" "The committer sets the author of the patch with `git commit --author \"John " "Smith \"`." msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:2992 #, no-wrap msgid "Commit Log for a Commit Needing Review" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:2998 msgid "" "The virtual memory system is being changed. After posting patches to the " "appropriate mailing list (in this case, `freebsd-arch`) and the changes have " "been approved." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3004 #, no-wrap msgid "Reviewed by:\t-arch\n" msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:3008 #, no-wrap msgid "Commit Log for a Commit Needing Approval" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3013 msgid "" "Commit a port, after working with the listed MAINTAINER, who said to go " "ahead and commit." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3019 #, no-wrap msgid "Approved by:\tabc (maintainer)\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3022 msgid "Where _abc_ is the account name of the person who approved." msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:3024 #, no-wrap msgid "Commit Log for a Commit Bringing in Code from OpenBSD" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3029 msgid "Committing some code based on work done in the OpenBSD project." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3035 #, no-wrap msgid "Obtained from:\tOpenBSD\n" msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:3039 #, no-wrap msgid "Commit Log for a Change to FreeBSD-CURRENT with a Planned Commit to FreeBSD-STABLE to Follow at a Later Date." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3044 msgid "" "Committing some code which will be merged from FreeBSD-CURRENT into the " "FreeBSD-STABLE branch after two weeks." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3050 #, no-wrap msgid "MFC after:\t2 weeks\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3053 msgid "" "Where _2_ is the number of days, weeks, or months after which an MFC is " "planned. The _weeks_ option may be `day`, `days`, `week`, `weeks`, `month`, " "`months`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3056 msgid "It is often necessary to combine these." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3060 msgid "" "Consider the situation where a user has submitted a PR containing code from " "the NetBSD project. Looking at the PR, the developer sees it is not an area " "of the tree they normally work in, so they have the change reviewed by the " "`arch` mailing list. Since the change is complex, the developer opts to MFC " "after one month to allow adequate testing." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3062 msgid "" "The extra information to include in the commit would look something like" msgstr "" #. type: Block title #: documentation/content/en/articles/committers-guide/_index.adoc:3063 #, no-wrap msgid "Example Combined Commit Log" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3074 #, no-wrap msgid "" "PR:\t\t54321\n" "Reviewed by:\t-arch\n" "Obtained from:\tNetBSD\n" "MFC after:\t1 month\n" "Relnotes:\tyes\n" msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3079 #, no-wrap msgid "Preferred License for New Files" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3085 msgid "" "The FreeBSD Project's full license policy can be found at link:https://www." "FreeBSD.org/internal/software-license/[https://www.FreeBSD.org/internal/" "software-license]. The rest of this section is intended to help you get " "started. As a rule, when in doubt, ask. It is much easier to give advice " "than to fix the source tree." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3087 msgid "" "The FreeBSD Project suggests and uses this text as the preferred license " "scheme:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3118 #, no-wrap msgid "" "/*-\n" " * SPDX-License-Identifier: BSD-2-Clause-FreeBSD\n" " *\n" " * Copyright (c) [year] [your name]\n" " *\n" " * Redistribution and use in source and binary forms, with or without\n" " * modification, are permitted provided that the following conditions\n" " * are met:\n" " * 1. Redistributions of source code must retain the above copyright\n" " * notice, this list of conditions and the following disclaimer.\n" " * 2. Redistributions in binary form must reproduce the above copyright\n" " * notice, this list of conditions and the following disclaimer in the\n" " * documentation and/or other materials provided with the distribution.\n" " *\n" " * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n" " * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n" " * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n" " * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n" " * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n" " * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" " * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n" " * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n" " * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n" " * SUCH DAMAGE.\n" " *\n" " * [id for your version control system, if any]\n" " */\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3124 msgid "" "The FreeBSD project strongly discourages the so-called \"advertising clause" "\" in new code. Due to the large number of contributors to the FreeBSD " "project, complying with this clause for many commercial vendors has become " "difficult. If you have code in the tree with the advertising clause, please " "consider removing it. In fact, please consider using the above license for " "your code." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3128 msgid "" "The FreeBSD project discourages completely new licenses and variations on " "the standard licenses. New licenses require the approval of the {core-" "email} to reside in the main repository. The more different licenses that " "are used in the tree, the more problems that this causes to those wishing to " "utilize this code, typically from unintended consequences from a poorly " "worded license." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3132 msgid "" "Project policy dictates that code under some non-BSD licenses must be placed " "only in specific sections of the repository, and in some cases, compilation " "must be conditional or even disabled by default. For example, the GENERIC " "kernel must be compiled under only licenses identical to or substantially " "similar to the BSD license. GPL, APSL, CDDL, etc, licensed software must " "not be compiled into GENERIC." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3135 msgid "" "Developers are reminded that in open source, getting \"open\" right is just " "as important as getting \"source\" right, as improper handling of " "intellectual property has serious consequences. Any questions or concerns " "should immediately be brought to the attention of the core team." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3137 #, no-wrap msgid "Keeping Track of Licenses Granted to the FreeBSD Project" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3142 msgid "" "Various software or data exist in the repositories where the FreeBSD project " "has been granted a special license to be able to use them. A case in point " "are the Terminus fonts for use with man:vt[4]. Here the author Dimitar " "Zhekov has allowed us to use the \"Terminus BSD Console\" font under a 2-" "clause BSD license rather than the regular Open Font License he normally " "uses." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3147 msgid "" "It is clearly sensible to keep a record of any such license grants. To that " "end, the {core-email} has decided to keep an archive of them. Whenever the " "FreeBSD project is granted a special license we require the {core-email} to " "be notified. Any developers involved in arranging such a license grant, " "please send details to the {core-email} including:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3149 msgid "" "Contact details for people or organizations granting the special license." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3150 msgid "" "What files, directories etc. in the repositories are covered by the license " "grant including the revision numbers where any specially licensed material " "was committed." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3151 msgid "" "The date the license comes into effect from. Unless otherwise agreed, this " "will be the date the license was issued by the authors of the software in " "question." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3152 msgid "The license text." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3153 msgid "" "A note of any restrictions, limitations or exceptions that apply " "specifically to FreeBSD's usage of the licensed material." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3154 msgid "Any other relevant information." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3157 msgid "" "Once the {core-email} is satisfied that all the necessary details have been " "gathered and are correct, the secretary will send a PGP-signed " "acknowledgment of receipt including the license details. This receipt will " "be persistently archived and serve as our permanent record of the license " "grant." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3160 msgid "" "The license archive should contain only details of license grants; this is " "not the place for any discussions around licensing or other subjects. " "Access to data within the license archive will be available on request to " "the {core-email}." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3162 #, no-wrap msgid "SPDX Tags in the tree" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3173 msgid "" "The project uses https://spdx.dev[SPDX] tags in our source base. At " "present, these tags are indented to help automated tools reconstruct license " "requirements mechanically. All _SPDX-License-Identifier_ tags in the tree " "should be considered to be informative. All files in the FreeBSD source " "tree with these tags also have a copy of the license which governs use of " "that file. In the event of a discrepancy, the verbatim license is " "controlling. The project tries to follow the https://spdx.github.io/spdx-" "spec/[SPDX Specification, Version 2.2]. How to mark source files and valid " "algebraic expressions are found in https://spdx.github.io/spdx-spec/appendix-" "IV-SPDX-license-expressions/[Appendix IV] and https://spdx.github.io/spdx-" "spec/appendix-V-using-SPDX-short-identifiers-in-source-files/[Appendix V]. " "The project draws identifiers from SPDX's list of valid https://spdx.org/" "licenses/[short license identifiers]. The project uses only the _SPDX-" "License-Identifier_ tag." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3175 msgid "" "As of March 2021, approximately 25,000 out of 90,000 files in the tree have " "been marked." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3176 #, no-wrap msgid "Developer Relations" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3182 msgid "" "When working directly on your own code or on code which is already well " "established as your responsibility, then there is probably little need to " "check with other committers before jumping in with a commit. Working on a " "bug in an area of the system which is clearly orphaned (and there are a few " "such areas, to our shame), the same applies. When modifying parts of the " "system which are maintained, formally, or informally, consider asking for " "review just as a developer would have before becoming a committer. For " "ports, contact the listed `MAINTAINER` in the [.filename]#Makefile#." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3187 msgid "" "To determine if an area of the tree is maintained, check the MAINTAINERS " "file at the root of the tree. If nobody is listed, scan the revision " "history to see who has committed changes in the past. An example script " "that lists each person who has committed to a given file along with the " "number of commits each person has made can be found at on `freefall` at [." "filename]#~eadler/bin/whodid#. If queries go unanswered or the committer " "otherwise indicates a lack of interest in the area affected, go ahead and " "commit it." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3192 msgid "" "Avoid sending private emails to maintainers. Other people might be " "interested in the conversation, not just the final output." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3198 msgid "" "If there is any doubt about a commit for any reason at all, have it reviewed " "before committing. Better to have it flamed then and there rather than when " "it is part of the repository. If a commit does results in controversy " "erupting, it may be advisable to consider backing the change out again until " "the matter is settled. Remember, with a version control system we can " "always change it back." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3202 msgid "" "Do not impugn the intentions of others. If they see a different solution to " "a problem, or even a different problem, it is probably not because they are " "stupid, because they have questionable parentage, or because they are trying " "to destroy hard work, personal image, or FreeBSD, but basically because they " "have a different outlook on the world. Different is good." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3205 msgid "" "Disagree honestly. Argue your position from its merits, be honest about any " "shortcomings it may have, and be open to seeing their solution, or even " "their vision of the problem, with an open mind." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3211 msgid "" "Accept correction. We are all fallible. When you have made a mistake, " "apologize and get on with life. Do not beat up yourself, and certainly do " "not beat up others for your mistake. Do not waste time on embarrassment or " "recrimination, just fix the problem and move on." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3215 msgid "" "Ask for help. Seek out (and give) peer reviews. One of the ways open " "source software is supposed to excel is in the number of eyeballs applied to " "it; this does not apply if nobody will review code." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3217 #, no-wrap msgid "If in Doubt..." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3221 msgid "" "When unsure about something, whether it be a technical issue or a project " "convention be sure to ask. If you stay silent you will never make progress." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3225 msgid "" "If it relates to a technical issue ask on the public mailing lists. Avoid " "the temptation to email the individual person that knows the answer. This " "way everyone will be able to learn from the question and the answer." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3227 msgid "For project specific or administrative questions ask, in order:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3229 msgid "Your mentor or former mentor." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3230 msgid "An experienced committer on IRC, email, etc." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3231 msgid "Any team with a \"hat\", as they can give you a definitive answer." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3232 msgid "If still not sure, ask on {developers-name}." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3234 msgid "" "Once your question is answered, if no one pointed you to documentation that " "spelled out the answer to your question, document it, as others will have " "the same question." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3236 #, no-wrap msgid "Bugzilla" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3241 msgid "" "The FreeBSD Project utilizes Bugzilla for tracking bugs and change " "requests. Be sure that if you commit a fix or suggestion found in the PR " "database to close it. It is also considered nice if you take time to close " "any PRs associated with your commits, if appropriate." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3243 msgid "" "Committers with non-``FreeBSD.org`` Bugzilla accounts can have the old " "account merged with the `FreeBSD.org` account by following these steps:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3247 msgid "Log in using your old account." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3248 msgid "" "Open new bug. Choose `Services` as the Product, and `Bug Tracker` as the " "Component. In bug description list accounts you wish to be merged." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3249 msgid "" "Log in using `FreeBSD.org` account and post comment to newly opened bug to " "confirm ownership. See <> for more details on how to generate " "or set a password for your `FreeBSD.org` account." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3250 msgid "" "If there are more than two accounts to merge, post comments from each of " "them." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3253 msgid "You can find out more about Bugzilla at:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3255 msgid "extref:{pr-guidelines}[FreeBSD Problem Report Handling Guidelines]" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3256 msgid "link:https://www.FreeBSD.org/support/[https://www.FreeBSD.org/support]" msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3258 #, no-wrap msgid "Phabricator" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3262 msgid "" "The FreeBSD Project utilizes https://reviews.freebsd.org[Phabricator] for " "code review requests. See the https://wiki.freebsd.org/" "Phabricator[Phabricator wiki page] for details." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3264 msgid "" "Committers with non-``FreeBSD.org`` Phabricator accounts can have the old " "account renamed to the ``FreeBSD.org`` account by following these steps:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3268 msgid "Change your Phabricator account email to your `FreeBSD.org` email." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3269 msgid "" "Open new bug on our bug tracker using your `FreeBSD.org` account, see " "<> for more information. Choose `Services` as the Product, and " "`Code Review` as the Component. In bug description request that your " "Phabricator account be renamed, and provide a link to your Phabricator user. " "For example, `https://reviews.freebsd.org/p/bob_example.com/`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3274 msgid "" "Phabricator accounts cannot be merged, please do not open a new account." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3277 #, no-wrap msgid "Who's Who" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3280 msgid "" "Besides the repository meisters, there are other FreeBSD project members and " "teams whom you will probably get to know in your role as a committer. " "Briefly, and by no means all-inclusively, these are:" msgstr "" #. type: Labeled list #: documentation/content/en/articles/committers-guide/_index.adoc:3281 #, no-wrap msgid "`{doceng}`" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3287 msgid "" "doceng is the group responsible for the documentation build infrastructure, " "approving new documentation committers, and ensuring that the FreeBSD " "website and documentation on the FTP site is up to date with respect to the " "Subversion tree. It is not a conflict resolution body. The vast majority " "of documentation related discussion takes place on the {freebsd-doc}. More " "details regarding the doceng team can be found in its https://www.FreeBSD." "org/internal/doceng/[charter]. Committers interested in contributing to the " "documentation should familiarize themselves with the extref:{fdp-primer}" "[Documentation Project Primer]." msgstr "" #. type: Labeled list #: documentation/content/en/articles/committers-guide/_index.adoc:3288 #, no-wrap msgid "`{re-members}`" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3293 msgid "" "These are the members of the `{re}`. This team is responsible for setting " "release deadlines and controlling the release process. During code freezes, " "the release engineers have final authority on all changes to the system for " "whichever branch is pending release status. If there is something you want " "merged from FreeBSD-CURRENT to FreeBSD-STABLE (whatever values those may " "have at any given time), these are the people to talk to about it." msgstr "" #. type: Labeled list #: documentation/content/en/articles/committers-guide/_index.adoc:3294 #, no-wrap msgid "`{so}`" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3296 msgid "" "`{so-name}` is the link:https://www.FreeBSD.org/security/[FreeBSD Security " "Officer] and oversees the `{security-officer}`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3301 msgid "" "{committers-name}:: {svn-src-all}, {svn-ports-all} and {svn-doc-all} are the " "mailing lists that the version control system uses to send commit messages " "to. _Never_ send email directly to these lists. Only send replies to this " "list when they are short and are directly related to a commit." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3306 msgid "" "{developers-name}:: All committers are subscribed to -developers. This list " "was created to be a forum for the committers \"community\" issues. Examples " "are Core voting, announcements, etc." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3310 msgid "" "The {developers-name} is for the exclusive use of FreeBSD committers. To " "develop FreeBSD, committers must have the ability to openly discuss matters " "that will be resolved before they are publicly announced. Frank discussions " "of work in progress are not suitable for open publication and may harm " "FreeBSD." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3314 msgid "" "All FreeBSD committers are expected not to not publish or forward messages " "from the {developers-name} outside the list membership without permission of " "all of the authors. Violators will be removed from the {developers-name}, " "resulting in a suspension of commit privileges. Repeated or flagrant " "violations may result in permanent revocation of commit privileges." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3320 msgid "" "This list is _not_ intended as a place for code reviews or for any technical " "discussion. In fact using it as such hurts the FreeBSD Project as it gives " "a sense of a closed list where general decisions affecting all of the " "FreeBSD using community are made without being \"open\". Last, but not " "least __never, never ever, email the {developers-name} and CC:/BCC: another " "FreeBSD list__. Never, ever email another FreeBSD email list and CC:/BCC: " "the {developers-name}. Doing so can greatly diminish the benefits of this " "list." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3321 #, no-wrap msgid "SSH Quick-Start Guide" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3326 msgid "" "If you do not wish to type your password in every time you use man:ssh[1], " "and you use keys to authenticate, man:ssh-agent[1] is there for your " "convenience. If you want to use man:ssh-agent[1], make sure that you run it " "before running other applications. X users, for example, usually do this " "from their [.filename]#.xsession# or [.filename]#.xinitrc#. See man:ssh-" "agent[1] for details." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3327 msgid "" "Generate a key pair using man:ssh-keygen[1]. The key pair will wind up in " "your [.filename]#$HOME/.ssh/# directory." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:3331 msgid "Only ECDSA, Ed25519 or RSA keys are supported." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3333 msgid "" "Send your public key ([.filename]#$HOME/.ssh/id_ecdsa.pub#, [.filename]#" "$HOME/.ssh/id_ed25519.pub#, or [.filename]#$HOME/.ssh/id_rsa.pub#) to the " "person setting you up as a committer so it can be put into [." "filename]#yourlogin# in [.filename]#/etc/ssh-keys/# on `freefall`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3338 msgid "" "Now man:ssh-add[1] can be used for authentication once per session. It " "prompts for the private key's pass phrase, and then stores it in the " "authentication agent (man:ssh-agent[1]). Use `ssh-add -d` to remove keys " "stored in the agent." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3340 msgid "Test with a simple remote command: `ssh freefall.FreeBSD.org ls /usr`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3342 msgid "" "For more information, see package:security/openssh-portable[], man:ssh[1], " "man:ssh-add[1], man:ssh-agent[1], man:ssh-keygen[1], and man:scp[1]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3344 msgid "" "For information on adding, changing, or removing man:ssh[1] keys, see " "https://wiki.freebsd.org/clusteradm/ssh-keys[this article]." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3346 #, no-wrap msgid "Coverity(R) Availability for FreeBSD Committers" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3350 msgid "" "All FreeBSD developers can obtain access to Coverity analysis results of all " "FreeBSD Project software. All who are interested in obtaining access to the " "analysis results of the automated Coverity runs, can sign up at http://scan." "coverity.com/[Coverity Scan]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3353 msgid "" "The FreeBSD wiki includes a mini-guide for developers who are interested in " "working with the Coverity(R) analysis reports: https://wiki.freebsd.org/" "CoverityPrevent[https://wiki.freebsd.org/CoverityPrevent]. Please note that " "this mini-guide is only readable by FreeBSD developers, so if you cannot " "access this page, you will have to ask someone to add you to the appropriate " "Wiki access list." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3355 msgid "" "Finally, all FreeBSD developers who are going to use Coverity(R) are always " "encouraged to ask for more details and usage information, by posting any " "questions to the mailing list of the FreeBSD developers." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3357 #, no-wrap msgid "The FreeBSD Committers' Big List of Rules" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3362 msgid "" "Everyone involved with the FreeBSD project is expected to abide by the _Code " "of Conduct_ available from link:https://www.FreeBSD.org/internal/code-of-" "conduct/[https://www.FreeBSD.org/internal/code-of-conduct]. As committers, " "you form the public face of the project, and how you behave has a vital " "impact on the public perception of it. This guide expands on the parts of " "the _Code of Conduct_ specific to committers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3364 #: documentation/content/en/articles/committers-guide/_index.adoc:3394 msgid "Respect other committers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3365 #: documentation/content/en/articles/committers-guide/_index.adoc:3410 msgid "Respect other contributors." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3366 #: documentation/content/en/articles/committers-guide/_index.adoc:3425 msgid "Discuss any significant change _before_ committing." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3367 msgid "" "Respect existing maintainers (if listed in the `MAINTAINER` field in [." "filename]#Makefile# or in [.filename]#MAINTAINER# in the top-level " "directory)." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3368 #: documentation/content/en/articles/committers-guide/_index.adoc:3440 msgid "" "Any disputed change must be backed out pending resolution of the dispute if " "requested by a maintainer. Security related changes may override a " "maintainer's wishes at the Security Officer's discretion." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3369 msgid "" "Changes go to FreeBSD-CURRENT before FreeBSD-STABLE unless specifically " "permitted by the release engineer or unless they are not applicable to " "FreeBSD-CURRENT. Any non-trivial or non-urgent change which is applicable " "should also be allowed to sit in FreeBSD-CURRENT for at least 3 days before " "merging so that it can be given sufficient testing. The release engineer has " "the same authority over the FreeBSD-STABLE branch as outlined for the " "maintainer in rule #5." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3370 #: documentation/content/en/articles/committers-guide/_index.adoc:3455 msgid "Do not fight in public with other committers; it looks bad." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3371 msgid "" "Respect all code freezes and read the `committers` and `developers` mailing " "lists in a timely manner so you know when a code freeze is in effect." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3372 #: documentation/content/en/articles/committers-guide/_index.adoc:3470 msgid "When in doubt on any procedure, ask first!" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3373 #: documentation/content/en/articles/committers-guide/_index.adoc:3475 msgid "Test your changes before committing them." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3374 #: documentation/content/en/articles/committers-guide/_index.adoc:3484 msgid "" "Do not commit to contributed software without _explicit_ approval from the " "respective maintainers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3385 msgid "" "As noted, breaking some of these rules can be grounds for suspension or, " "upon repeated offense, permanent removal of commit privileges. Individual " "members of core have the power to temporarily suspend commit privileges " "until core as a whole has the chance to review the issue. In case of an " "\"emergency\" (a committer doing damage to the repository), a temporary " "suspension may also be done by the repository meisters. Only a 2/3 majority " "of core has the authority to suspend commit privileges for longer than a " "week or to remove them permanently. This rule does not exist to set core up " "as a bunch of cruel dictators who can dispose of committers as casually as " "empty soda cans, but to give the project a kind of safety fuse. If someone " "is out of control, it is important to be able to deal with this immediately " "rather than be paralyzed by debate. In all cases, a committer whose " "privileges are suspended or revoked is entitled to a \"hearing\" by core, " "the total duration of the suspension being determined at that time. A " "committer whose privileges are suspended may also request a review of the " "decision after 30 days and every 30 days thereafter (unless the total " "suspension period is less than 30 days). A committer whose privileges have " "been revoked entirely may request a review after a period of 6 months has " "elapsed. This review policy is _strictly informal_ and, in all cases, core " "reserves the right to either act on or disregard requests for review if they " "feel their original decision to be the right one." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3389 msgid "" "In all other aspects of project operation, core is a subset of committers " "and is bound by the __same rules__. Just because someone is in core this " "does not mean that they have special dispensation to step outside any of the " "lines painted here; core's \"special powers\" only kick in when it acts as a " "group, not on an individual basis. As individuals, the core team members " "are all committers first and core second." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3390 #, no-wrap msgid "Details" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3398 msgid "" "This means that you need to treat other committers as the peer-group " "developers that they are. Despite our occasional attempts to prove the " "contrary, one does not get to be a committer by being stupid and nothing " "rankles more than being treated that way by one of your peers. Whether we " "always feel respect for one another or not (and everyone has off days), we " "still have to _treat_ other committers with respect at all times, on public " "forums and in private email." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3400 msgid "" "Being able to work together long term is this project's greatest asset, one " "far more important than any set of changes to the code, and turning " "arguments about code into issues that affect our long-term ability to work " "harmoniously together is just not worth the trade-off by any conceivable " "stretch of the imagination." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3406 msgid "" "To comply with this rule, do not send email when you are angry or otherwise " "behave in a manner which is likely to strike others as needlessly " "confrontational. First calm down, then think about how to communicate in " "the most effective fashion for convincing the other persons that your side " "of the argument is correct, do not just blow off some steam so you can feel " "better in the short term at the cost of a long-term flame war. Not only is " "this very bad \"energy economics\", but repeated displays of public " "aggression which impair our ability to work well together will be dealt with " "severely by the project leadership and may result in suspension or " "termination of your commit privileges. The project leadership will take " "into account both public and private communications brought before it. It " "will not seek the disclosure of private communications, but it will take it " "into account if it is volunteered by the committers involved in the " "complaint." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3409 msgid "" "All of this is never an option which the project's leadership enjoys in the " "slightest, but unity comes first. No amount of code or good advice is worth " "trading that away." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3422 msgid "" "You were not always a committer. At one time you were a contributor. " "Remember that at all times. Remember what it was like trying to get help " "and attention. Do not forget that your work as a contributor was very " "important to you. Remember what it was like. Do not discourage, belittle, " "or demean contributors. Treat them with respect. They are our committers in " "waiting. They are every bit as important to the project as committers. " "Their contributions are as valid and as important as your own. After all, " "you made many contributions before you became a committer. Always remember " "that." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3424 msgid "" "Consider the points raised under <> and " "apply them also to contributors." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3431 msgid "" "The repository is not where changes are initially submitted for correctness " "or argued over, that happens first in the mailing lists or by use of the " "Phabricator service. The commit will only happen once something resembling " "consensus has been reached. This does not mean that permission is required " "before correcting every obvious syntax error or manual page misspelling, " "just that it is good to develop a feel for when a proposed change is not " "quite such a no-brainer and requires some feedback first. People really do " "not mind sweeping changes if the result is something clearly better than " "what they had before, they just do not like being _surprised_ by those " "changes. The very best way of making sure that things are on the right " "track is to have code reviewed by one or more other committers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3433 msgid "When in doubt, ask for review!" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3434 msgid "Respect existing maintainers if listed." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3439 msgid "" "Many parts of FreeBSD are not \"owned\" in the sense that any specific " "individual will jump up and yell if you commit a change to \"their\" area, " "but it still pays to check first. One convention we use is to put a " "maintainer line in the [.filename]#Makefile# for any package or subtree " "which is being actively maintained by one or more people; see extref:" "{developers-handbook}[Source Tree Guidelines and Policies, policies] for " "documentation on this. Where sections of code have several maintainers, " "commits to affected areas by one maintainer need to be reviewed by at least " "one other maintainer. In cases where the \"maintainer-ship\" of something " "is not clear, look at the repository logs for the files in question and see " "if someone has been working recently or predominantly in that area." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3445 msgid "" "This may be hard to swallow in times of conflict (when each side is " "convinced that they are in the right, of course) but a version control " "system makes it unnecessary to have an ongoing dispute raging when it is far " "easier to simply reverse the disputed change, get everyone calmed down again " "and then try to figure out what is the best way to proceed. If the change " "turns out to be the best thing after all, it can be easily brought back. If " "it turns out not to be, then the users did not have to live with the bogus " "change in the tree while everyone was busily debating its merits. People " "_very_ rarely call for back-outs in the repository since discussion " "generally exposes bad or controversial changes before the commit even " "happens, but on such rare occasions the back-out should be done without " "argument so that we can get immediately on to the topic of figuring out " "whether it was bogus or not." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3446 msgid "" "Changes go to FreeBSD-CURRENT before FreeBSD-STABLE unless specifically " "permitted by the release engineer or unless they are not applicable to " "FreeBSD-CURRENT. Any non-trivial or non-urgent change which is applicable " "should also be allowed to sit in FreeBSD-CURRENT for at least 3 days before " "merging so that it can be given sufficient testing. The release engineer has " "the same authority over the FreeBSD-STABLE branch as outlined in rule #5." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3452 msgid "" "This is another \"do not argue about it\" issue since it is the release " "engineer who is ultimately responsible (and gets beaten up) if a change " "turns out to be bad. Please respect this and give the release engineer your " "full cooperation when it comes to the FreeBSD-STABLE branch. The management " "of FreeBSD-STABLE may frequently seem to be overly conservative to the " "casual observer, but also bear in mind the fact that conservatism is " "supposed to be the hallmark of FreeBSD-STABLE and different rules apply " "there than in FreeBSD-CURRENT. There is also really no point in having " "FreeBSD-CURRENT be a testing ground if changes are merged over to FreeBSD-" "STABLE immediately. Changes need a chance to be tested by the FreeBSD-" "CURRENT developers, so allow some time to elapse before merging unless the " "FreeBSD-STABLE fix is critical, time sensitive or so obvious as to make " "further testing unnecessary (spelling fixes to manual pages, obvious bug/" "typo fixes, etc.) In other words, apply common sense." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3454 msgid "" "Changes to the security branches (for example, `releng/9.3`) must be " "approved by a member of the `{security-officer}`, or in some cases, by a " "member of the `{re}`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3465 msgid "" "This project has a public image to uphold and that image is very important " "to all of us, especially if we are to continue to attract new members. " "There will be occasions when, despite everyone's very best attempts at self-" "control, tempers are lost and angry words are exchanged. The best thing " "that can be done in such cases is to minimize the effects of this until " "everyone has cooled back down. Do not air angry words in public and do not " "forward private correspondence or other private communications to public " "mailing lists, mail aliases, instant messaging channels or social media " "sites. What people say one-to-one is often much less sugar-coated than what " "they would say in public, and such communications therefore have no place " "there - they only serve to inflame an already bad situation. If the person " "sending a flame-o-gram at least had the grace to send it privately, then " "have the grace to keep it private yourself. If you feel you are being " "unfairly treated by another developer, and it is causing you anguish, bring " "the matter up with core rather than taking it public. Core will do its best " "to play peace makers and get things back to sanity. In cases where the " "dispute involves a change to the codebase and the participants do not appear " "to be reaching an amicable agreement, core may appoint a mutually-agreeable " "third party to resolve the dispute. All parties involved must then agree to " "be bound by the decision reached by this third party." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3466 msgid "" "Respect all code freezes and read the `committers` and `developers` mailing " "list on a timely basis so you know when a code freeze is in effect." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3469 msgid "" "Committing unapproved changes during a code freeze is a really big mistake " "and committers are expected to keep up-to-date on what is going on before " "jumping in after a long absence and committing 10 megabytes worth of " "accumulated stuff. People who abuse this on a regular basis will have their " "commit privileges suspended until they get back from the FreeBSD Happy " "Reeducation Camp we run in Greenland." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3474 msgid "" "Many mistakes are made because someone is in a hurry and just assumes they " "know the right way of doing something. If you have not done it before, " "chances are good that you do not actually know the way we do things and " "really need to ask first or you are going to completely embarrass yourself " "in public. There is no shame in asking \"how in the heck do I do this?\" We " "already know you are an intelligent person; otherwise, you would not be a " "committer." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3483 msgid "" "This may sound obvious, but if it really were so obvious then we probably " "would not see so many cases of people clearly not doing this. If your " "changes are to the kernel, make sure you can still compile both GENERIC and " "LINT. If your changes are anywhere else, make sure you can still make " "world. If your changes are to a branch, make sure your testing occurs with " "a machine which is running that code. If you have a change which also may " "break another architecture, be sure and test on all supported " "architectures. Please refer to the https://www.FreeBSD.org/internal/" "[FreeBSD Internal Page] for a list of available resources. As other " "architectures are added to the FreeBSD supported platforms list, the " "appropriate shared testing resources will be made available." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3486 msgid "" "Contributed software is anything under the [.filename]#src/contrib#, [." "filename]#src/crypto#, or [.filename]#src/sys/contrib# trees." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3491 msgid "" "The trees mentioned above are for contributed software usually imported onto " "a vendor branch. Committing something there may cause unnecessary headaches " "when importing newer versions of the software. As a general consider " "sending patches upstream to the vendor. Patches may be committed to FreeBSD " "first with permission of the maintainer." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3495 msgid "" "Reasons for modifying upstream software range from wanting strict control " "over a tightly coupled dependency to lack of portability in the canonical " "repository's distribution of their code. Regardless of the reason, effort " "to minimize the maintenance burden of fork is helpful to fellow " "maintainers. Avoid committing trivial or cosmetic changes to files since it " "makes every merge thereafter more difficult: such patches need to be " "manually re-verified every import." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3498 msgid "" "If a particular piece of software lacks a maintainer, you are encouraged to " "take up ownership. If you are unsure of the current maintainership email " "{freebsd-arch} and ask." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3499 #, no-wrap msgid "Policy on Multiple Architectures" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3503 msgid "" "FreeBSD has added several new architecture ports during recent release " "cycles and is truly no longer an i386(TM) centric operating system. In an " "effort to make it easier to keep FreeBSD portable across the platforms we " "support, core has developed this mandate:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3507 msgid "" "Our 32-bit reference platform is i386, and our 64-bit reference platform is " "amd64. Major design work (including major API and ABI changes) must prove " "itself on at least one 32-bit and at least one 64-bit platform, preferably " "the primary reference platforms, before it may be committed to the source " "tree." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3509 msgid "" "The i386 and amd64 platforms were chosen due to being more readily available " "to developers and as representatives of more diverse processor and system " "designs - big versus little endian, register file versus register stack, " "different DMA and cache implementations, hardware page tables versus " "software TLB management etc." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3511 msgid "" "We will continue to re-evaluate this policy as cost and availability of the " "64-bit platforms change." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3515 msgid "" "Developers should also be aware of our Tier Policy for the long term support " "of hardware architectures. The rules here are intended to provide guidance " "during the development process, and are distinct from the requirements for " "features and architectures listed in that section. The Tier rules for " "feature support on architectures at release-time are more strict than the " "rules for changes during the development process." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3516 #, no-wrap msgid "Other Suggestions" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3520 msgid "" "When committing documentation changes, use a spell checker before " "committing. For all XML docs, verify that the formatting directives are " "correct by running `make lint` and package:textproc/igor[]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3522 msgid "" "For manual pages, run package:sysutils/manck[] and package:textproc/igor[] " "over the manual page to verify all of the cross references and file " "references are correct and that the man page has all of the appropriate " "`MLINKS` installed." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3529 msgid "" "Do not mix style fixes with new functionality. A style fix is any change " "which does not modify the functionality of the code. Mixing the changes " "obfuscates the functionality change when asking for differences between " "revisions, which can hide any new bugs. Do not include whitespace changes " "with content changes in commits to [.filename]#doc/#. The extra clutter in " "the diffs makes the translators' job much more difficult. Instead, make any " "style or whitespace changes in separate commits that are clearly labeled as " "such in the commit message." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3530 #, no-wrap msgid "Deprecating Features" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3533 msgid "" "When it is necessary to remove functionality from software in the base " "system, follow these guidelines whenever possible:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3535 msgid "" "Mention is made in the manual page and possibly the release notes that the " "option, utility, or interface is deprecated. Use of the deprecated feature " "generates a warning." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3536 msgid "" "The option, utility, or interface is preserved until the next major (point " "zero) release." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3537 msgid "" "The option, utility, or interface is removed and no longer documented. It is " "now obsolete. It is also generally a good idea to note its removal in the " "release notes." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3538 #, no-wrap msgid "Privacy and Confidentiality" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3541 msgid "Most FreeBSD business is done in public." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3544 msgid "" "FreeBSD is an _open_ project. Which means that not only can anyone use the " "source code, but that most of the development process is open to public " "scrutiny." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3545 msgid "Certain sensitive matters must remain private or held under embargo." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3551 msgid "" "There unfortunately cannot be complete transparency. As a FreeBSD developer " "you will have a certain degree of privileged access to information. " "Consequently you are expected to respect certain requirements for " "confidentiality. Sometimes the need for confidentiality comes from external " "collaborators or has a specific time limit. Mostly though, it is a matter " "of not releasing private communications." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3552 msgid "" "The Security Officer has sole control over the release of security " "advisories." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3557 msgid "" "Where there are security problems that affect many different operating " "systems, FreeBSD frequently depends on early access to be able to prepare " "advisories for coordinated release. Unless FreeBSD developers can be " "trusted to maintain security, such early access will not be made available. " "The Security Officer is responsible for controlling pre-release access to " "information about vulnerabilities, and for timing the release of all " "advisories. He may request help under condition of confidentiality from any " "developer with relevant knowledge to prepare security fixes." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3558 msgid "" "Communications with Core are kept confidential for as long as necessary." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3563 msgid "" "Communications to core will initially be treated as confidential. " "Eventually however, most of Core's business will be summarized into the " "monthly or quarterly core reports. Care will be taken to avoid publicising " "any sensitive details. Records of some particularly sensitive subjects may " "not be reported on at all and will be retained only in Core's private " "archives." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3564 msgid "" "Non-disclosure Agreements may be required for access to certain commercially " "sensitive data." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3567 msgid "" "Access to certain commercially sensitive data may only be available under a " "Non-Disclosure Agreement. The FreeBSD Foundation legal staff must be " "consulted before any binding agreements are entered into." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3568 msgid "Private communications must not be made public without permission." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3571 msgid "" "Beyond the specific requirements above there is a general expectation not to " "publish private communications between developers without the consent of all " "parties involved. Ask permission before forwarding a message onto a public " "mailing list, or posting it to a forum or website that can be accessed by " "other than the original correspondents." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3572 msgid "" "Communications on project-only or restricted access channels must be kept " "private." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3575 msgid "" "Similarly to personal communications, certain internal communications " "channels, including FreeBSD Committer only mailing lists and restricted " "access IRC channels are considered private communications. Permission is " "required to publish material from these sources." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3576 msgid "Core may approve publication." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3578 msgid "" "Where it is impractical to obtain permission due to the number of " "correspondents or where permission to publish is unreasonably withheld, Core " "may approve release of such private matters that merit more general " "publication." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3580 #, no-wrap msgid "Support for Multiple Architectures" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3587 msgid "" "FreeBSD is a highly portable operating system intended to function on many " "different types of hardware architectures. Maintaining clean separation of " "Machine Dependent (MD) and Machine Independent (MI) code, as well as " "minimizing MD code, is an important part of our strategy to remain agile " "with regards to current hardware trends. Each new hardware architecture " "supported by FreeBSD adds substantially to the cost of code maintenance, " "toolchain support, and release engineering. It also dramatically increases " "the cost of effective testing of kernel changes. As such, there is strong " "motivation to differentiate between classes of support for various " "architectures while remaining strong in a few key architectures that are " "seen as the FreeBSD \"target audience\"." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3588 #, no-wrap msgid "Statement of General Intent" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3593 msgid "" "The FreeBSD Project targets \"production quality commercial off-the-shelf " "(COTS) workstation, server, and high-end embedded systems\". By retaining a " "focus on a narrow set of architectures of interest in these environments, " "the FreeBSD Project is able to maintain high levels of quality, stability, " "and performance, as well as minimize the load on various support teams on " "the project, such as the ports team, documentation team, security officer, " "and release engineering teams. Diversity in hardware support broadens the " "options for FreeBSD consumers by offering new features and usage " "opportunities, but these benefits must always be carefully considered in " "terms of the real-world maintenance cost associated with additional platform " "support." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3600 msgid "" "The FreeBSD Project differentiates platform targets into four tiers. Each " "tier includes a list of guarantees consumers may rely on as well as " "obligations by the Project and developers to fulfill those guarantees. " "These lists define the minimum guarantees for each tier. The Project and " "developers may provide additional levels of support beyond the minimum " "guarantees for a given tier, but such additional support is not guaranteed. " "Each platform target is assigned to a specific tier for each stable branch. " "As a result, a platform target might be assigned to different tiers on " "concurrent stable branches." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3601 #, no-wrap msgid "Platform Targets" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3608 msgid "" "Support for a hardware platform consists of two components: kernel support " "and userland Application Binary Interfaces (ABIs). Kernel platform support " "includes things needed to run a FreeBSD kernel on a hardware platform such " "as machine-dependent virtual memory management and device drivers. A " "userland ABI specifies an interface for user processes to interact with a " "FreeBSD kernel and base system libraries. A userland ABI includes system " "call interfaces, the layout and semantics of public data structures, and the " "layout and semantics of arguments passed to subroutines. Some components of " "an ABI may be defined by specifications such as the layout of C++ exception " "objects or calling conventions for C functions." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3610 msgid "" "A FreeBSD kernel also uses an ABI (sometimes referred to as the Kernel " "Binary Interface (KBI)) which includes the semantics and layouts of public " "data structures and the layout and semantics of arguments to public " "functions within the kernel itself." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3615 msgid "" "A FreeBSD kernel may support multiple userland ABIs. For example, FreeBSD's " "amd64 kernel supports FreeBSD amd64 and i386 userland ABIs as well as Linux " "x86_64 and i386 userland ABIs. A FreeBSD kernel should support a \"native\" " "ABI as the default ABI. The native \"ABI\" generally shares certain " "properties with the kernel ABI such as the C calling convention, sizes of " "basic types, etc." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3617 msgid "" "Tiers are defined for both kernels and userland ABIs. In the common case, a " "platform's kernel and FreeBSD ABIs are assigned to the same tier." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3618 #, no-wrap msgid "Tier 1: Fully-Supported Architectures" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3623 msgid "" "Tier 1 platforms are the most mature FreeBSD platforms. They are supported " "by the security officer, release engineering, and Ports Management Team. " "Tier 1 architectures are expected to be Production Quality with respect to " "all aspects of the FreeBSD operating system, including installation and " "development environments." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3625 msgid "" "The FreeBSD Project provides the following guarantees to consumers of Tier 1 " "platforms:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3627 msgid "" "Official FreeBSD release images will be provided by the release engineering " "team." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3628 msgid "" "Binary updates and source patches for Security Advisories and Errata Notices " "will be provided for supported releases." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3629 msgid "" "Source patches for Security Advisories will be provided for supported " "branches." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3630 msgid "" "Binary updates and source patches for cross-platform Security Advisories " "will typically be provided at the time of the announcement." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3631 msgid "" "Changes to userland ABIs will generally include compatibility shims to " "ensure correct operation of binaries compiled against any stable branch " "where the platform is Tier 1. These shims might not be enabled in the " "default install. If compatibility shims are not provided for an ABI change, " "the lack of shims will be clearly documented in the release notes." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3632 msgid "" "Changes to certain portions of the kernel ABI will include compatibility " "shims to ensure correct operation of kernel modules compiled against the " "oldest supported release on the branch. Note that not all parts of the " "kernel ABI are protected." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3633 msgid "" "Official binary packages for third party software will be provided by the " "ports team. For embedded architectures, these packages may be cross-built " "from a different architecture." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3634 msgid "" "Most relevant ports should either build or have the appropriate filters to " "prevent inappropriate ones from building." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3635 msgid "" "New features which are not inherently platform-specific will be fully " "functional on all Tier 1 architectures." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3636 msgid "" "Features and compatibility shims used by binaries compiled against older " "stable branches may be removed in newer major versions. Such removals will " "be clearly documented in the release notes." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3637 msgid "" "Tier 1 platforms should be fully documented. Basic operations will be " "documented in the FreeBSD Handbook." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3638 msgid "Tier 1 platforms will be included in the source tree." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3639 msgid "" "Tier 1 platforms should be self-hosting either via the in-tree toolchain or " "an external toolchain. If an external toolchain is required, official binary " "packages for an external toolchain will be provided." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3641 msgid "" "To maintain maturity of Tier 1 platforms, the FreeBSD Project will maintain " "the following resources to support development:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3643 msgid "" "Build and test automation support either in the FreeBSD.org cluster or some " "other location easily available for all developers. Embedded platforms may " "substitute an emulator available in the FreeBSD.org cluster for actual " "hardware." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3644 #: documentation/content/en/articles/committers-guide/_index.adoc:3674 msgid "Inclusion in the `make universe` and `make tinderbox` targets." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3645 msgid "" "Dedicated hardware in one of the FreeBSD clusters for package building " "(either natively or via qemu-user)." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3647 msgid "" "Collectively, developers are required to provide the following to maintain " "the Tier 1 status of a platform:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3649 msgid "" "Changes to the source tree should not knowingly break the build of a Tier 1 " "platform." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3650 msgid "" "Tier 1 architectures must have a mature, healthy ecosystem of users and " "active developers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3651 msgid "" "Developers should be able to build packages on commonly available, non-" "embedded Tier 1 systems. This can mean either native builds if non-embedded " "systems are commonly available for the platform in question, or it can mean " "cross-builds hosted on some other Tier 1 architecture." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3652 msgid "" "Changes cannot break the userland ABI. If an ABI change is required, ABI " "compatibility for existing binaries should be provided via use of symbol " "versioning or shared library version bumps." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3653 msgid "" "Changes merged to stable branches cannot break the protected portions of the " "kernel ABI. If a kernel ABI change is required, the change should be " "modified to preserve functionality of existing kernel modules." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3654 #, no-wrap msgid "Tier 2: Developmental and Niche Architectures" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3658 msgid "" "Tier 2 platforms are functional, but less mature FreeBSD platforms. They " "are not supported by the security officer, release engineering, and Ports " "Management Team." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3662 msgid "" "Tier 2 platforms may be Tier 1 platform candidates that are still under " "active development. Architectures reaching end of life may also be moved " "from Tier 1 status to Tier 2 status as the availability of resources to " "continue to maintain the system in a Production Quality state diminishes. " "Well-supported niche architectures may also be Tier 2." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3664 msgid "" "The FreeBSD Project provides the following guarantees to consumers of Tier 2 " "platforms:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3666 msgid "" "The ports infrastructure should include basic support for Tier 2 " "architectures sufficient to support building ports and packages. This " "includes support for basic packages such as ports-mgmt/pkg, but there is no " "guarantee that arbitrary ports will be buildable or functional." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3667 msgid "" "New features which are not inherently platform-specific should be feasible " "on all Tier 2 architectures if not implemented." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3668 msgid "Tier 2 platforms will be included in the source tree." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3669 msgid "" "Tier 2 platforms should be self-hosting either via the in-tree toolchain or " "an external toolchain. If an external toolchain is required, official binary " "packages for an external toolchain will be provided." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3670 msgid "" "Tier 2 platforms should provide functional kernels and userlands even if an " "official release distribution is not provided." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3672 msgid "" "To maintain maturity of Tier 2 platforms, the FreeBSD Project will maintain " "the following resources to support development:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3676 msgid "" "Collectively, developers are required to provide the following to maintain " "the Tier 2 status of a platform:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3678 msgid "" "Changes to the source tree should not knowingly break the build of a Tier 2 " "platform." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3679 msgid "" "Tier 2 architectures must have an active ecosystem of users and developers." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3680 msgid "" "While changes are permitted to break the userland ABI, the ABI should not be " "broken gratuitously. Significant userland ABI changes should be restricted " "to major versions." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3681 msgid "" "New features that are not yet implemented on Tier 2 architectures should " "provide a means of disabling them on those architectures." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3682 #, no-wrap msgid "Tier 3: Experimental Architectures" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3686 msgid "" "Tier 3 platforms have at least partial FreeBSD support. They are _not_ " "supported by the security officer, release engineering, and Ports Management " "Team." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3689 msgid "" "Tier 3 platforms are architectures in the early stages of development, for " "non-mainstream hardware platforms, or which are considered legacy systems " "unlikely to see broad future use. Initial support for Tier 3 platforms may " "exist in a separate repository rather than the main source repository." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3692 msgid "" "The FreeBSD Project provides no guarantees to consumers of Tier 3 platforms " "and is not committed to maintaining resources to support development. Tier " "3 platforms may not always be buildable, nor are any kernel or userland ABIs " "considered stable." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3693 #, no-wrap msgid "Unsupported Architectures" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3697 msgid "" "Other platforms are not supported in any form by the project. The project " "previously described these as Tier 4 systems." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3700 msgid "" "After a platform transitions to unsupported, all support for the platform is " "removed from the source, ports and documentation trees. Note that ports " "support should remain as long as the platform is supported in a branch " "supported by ports." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3701 #, no-wrap msgid "Policy on Changing the Tier of an Architecture" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3705 msgid "" "Systems may only be moved from one tier to another by approval of the " "FreeBSD Core Team, which shall make that decision in collaboration with the " "Security Officer, Release Engineering, and ports management teams. For a " "platform to be promoted to a higher tier, any missing support guarantees " "must be satisfied before the promotion is completed." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3707 #, no-wrap msgid "Ports Specific FAQ" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3710 #, no-wrap msgid "Adding a New Port" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3713 #, no-wrap msgid "How do I add a new port?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3717 msgid "" "Adding a port to the tree is relatively simple. Once the port is ready to be " "added, as explained later <>, you need to add " "the port's directory entry in the category's [.filename]#Makefile#. In this " "[.filename]#Makefile#, ports are listed in alphabetical order and added to " "the `SUBDIR` variable, like this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3721 #, no-wrap msgid "\tSUBDIR += newport\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3724 msgid "" "Once the port and its category's Makefile are ready, the new port can be " "committed:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3729 #, no-wrap msgid "" "% git add category/Makefile category/newport\n" "% git commit\n" "% git push\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3733 msgid "" "Don't forget to <>; a specific hook has been developed to verify the " "category's [.filename]#Makefile#." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3736 #, no-wrap msgid "Any other things I need to know when I add a new port?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3739 msgid "" "Check the port, preferably to make sure it compiles and packages correctly." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3742 msgid "" "The extref:{porters-handbook}testing[Porters Handbook's Testing Chapter] " "contains more detailed instructions. See the extref:{porters-handbook}" "testing[Portclippy / Portfmt, testing-portclippy] and the extref:{porters-" "handbook}testing[Poudriere, testing-poudriere] sections." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3744 msgid "" "You do not necessarily have to eliminate all warnings but make sure you have " "fixed the simple ones." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3746 msgid "" "If the port came from a submitter who has not contributed to the Project " "before, add that person's name to the extref:{contributors}[Additional " "Contributors, contrib-additional] section of the FreeBSD Contributors List." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3749 msgid "" "Close the PR if the port came in as a PR. To close a PR, change the state " "to `Issue Resolved` and the resolution as `Fixed`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3753 msgid "" "If for some reason using extref:{porters-handbook}testing[Poudriere, testing-" "poudriere] to test the new port is not possible, the bare minimum of testing " "includes this sequence:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3763 #, no-wrap msgid "" "# make install\n" "# make package\n" "# make deinstall\n" "# pkg add package you built above\n" "# make deinstall\n" "# make reinstall\n" "# make package\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3766 msgid "" "Note that poudriere is the reference for package building, it the port does " "not build in poudriere, it will be removed." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3769 #, no-wrap msgid "Removing an Existing Port" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3772 #, no-wrap msgid "How do I remove an existing port?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3775 msgid "" "First, please read the section about repository copies. Before you remove " "the port, you have to verify there are no other ports depending on it." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3777 msgid "Make sure there is no dependency on the port in the ports collection:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3778 msgid "The port's PKGNAME appears in exactly one line in a recent INDEX file." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3779 msgid "" "No other ports contains any reference to the port's directory or PKGNAME in " "their Makefiles" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3783 msgid "" "When using Git, consider using man:git-grep[1], it is much faster than `grep " "-r`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3786 msgid "Then, remove the port:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3790 msgid "Remove the port's files and directory with `git rm`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3791 msgid "" "Remove the `SUBDIR` listing of the port in the parent directory [." "filename]#Makefile#." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3792 #: documentation/content/en/articles/committers-guide/_index.adoc:3807 msgid "Add an entry to [.filename]#ports/MOVED#." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3793 msgid "Remove the port from [.filename]#ports/LEGAL# if it is there." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3798 msgid "" "Alternatively, you can use the rmport script, from [.filename]#ports/Tools/" "scripts#. This script was written by {vd}. When sending questions about " "this script to the {freebsd-ports}, please also CC {crees}, the current " "maintainer." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3800 #, no-wrap msgid "How do I move a port to a new location?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3805 msgid "" "Perform a thorough check of the ports collection for any dependencies on the " "old port location/name, and update them. Running `grep` on [." "filename]#INDEX# is not enough because some ports have dependencies enabled " "by compile-time options. A full man:git-grep[1] of the ports collection is " "recommended." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3806 msgid "" "Remove the `SUBDIR` entry from the old category Makefile and add a `SUBDIR` " "entry to the new category Makefile." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3808 msgid "" "Search for entries in xml files inside [.filename]#ports/security/vuxml# and " "adjust them accordingly. In particular, check for previous packages with the " "new name which version could include the new port." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3809 msgid "Move the port with `git mv`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3810 #: documentation/content/en/articles/committers-guide/_index.adoc:3821 msgid "Commit the changes." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3813 #, no-wrap msgid "How do I copy a port to a new location?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3818 msgid "Copy port with `cp -R old-cat/old-port new-cat/new-port`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3819 msgid "Add the new port to the [.filename]#new-cat/Makefile#." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3820 msgid "Change stuff in [.filename]#new-cat/new-port#." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3824 #, no-wrap msgid "Ports Freeze" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3827 #, no-wrap msgid "What is a “ports freeze”?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3834 msgid "" "A “ports freeze” was a restricted state the ports tree was put in before a " "release. It was used to ensure a higher quality for the packages shipped " "with a release. It usually lasted a couple of weeks. During that time, " "build problems were fixed, and the release packages were built. This " "practice is no longer used, as the packages for the releases are built from " "the current stable, quarterly branch." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3836 msgid "" "For more information on how to merge commits to the quarterly branch, see " "<>." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3838 #, no-wrap msgid "Quarterly Branches" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3841 #, no-wrap msgid "What is the procedure to request authorization for merging a commit to the quarterly branch?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3844 msgid "" "As of November 30, 2020, there is no need to seek explicit approval to " "commit to the quarterly branch." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3846 #, no-wrap msgid "What is the procedure for merging commits to the quarterly branch?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3849 msgid "" "Merging commits to the quarterly branch (a process we call MFH for a " "historical reason) is very similar to MFC'ing a commit in the src " "repository, so basically:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3855 #, no-wrap msgid "" "% git checkout 2021Q2\n" "% git cherry-pick -x $HASH\n" "(verify everything is OK, for example by doing a build test)\n" "% git push\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3859 msgid "" "where '$HASH' is the hash of the commit you want to copy over to the " "quarterly branch. The -x parameter ensures the hash '$HASH' of the main " "branch is included in the new commit message of the quarterly branch." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:3861 #, no-wrap msgid "Creating a New Category" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3864 #, no-wrap msgid "What is the procedure for creating a new category?" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3869 msgid "" "Please see extref:{porters-handbook}[Proposing a New Category, proposing-" "categories] in the Porter's Handbook. Once that procedure has been followed " "and the PR has been assigned to the {portmgr}, it is their decision whether " "or not to approve it. If they do, it is their responsibility to:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3873 msgid "Perform any needed moves. (This only applies to physical categories.)" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3874 msgid "" "Update the `VALID_CATEGORIES` definition in [.filename]#ports/Mk/bsd.port." "mk#." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3875 msgid "Assign the PR back to you." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3878 #, no-wrap msgid "What do I need to do to implement a new physical category?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3883 msgid "" "Upgrade each moved port's [.filename]#Makefile#. Do not connect the new " "category to the build yet." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3885 msgid "To do this, you will need to:" msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:3889 msgid "" "Change the port's `CATEGORIES` (this was the point of the exercise, " "remember?) The new category is listed first. This will help to ensure that " "the PKGORIGIN is correct." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:3890 msgid "" "Run a `make describe`. Since the top-level `make index` that you will be " "running in a few steps is an iteration of `make describe` over the entire " "ports hierarchy, catching any errors here will save you having to re-run " "that step later on." msgstr "" #. type: delimited block = 6 #: documentation/content/en/articles/committers-guide/_index.adoc:3891 msgid "" "If you want to be really thorough, now might be a good time to run man:" "portlint[1]." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3894 msgid "" "Check that the ``PKGORIGIN``s are correct. The ports system uses each port's " "`CATEGORIES` entry to create its `PKGORIGIN`, which is used to connect " "installed packages to the port directory they were built from. If this entry " "is wrong, common port tools like man:pkg-version[8] and man:portupgrade[1] " "fail." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3896 msgid "" "To do this, use the [.filename]#chkorigin.sh# tool: `env PORTSDIR=/path/to/" "ports sh -e /path/to/ports/Tools/scripts/chkorigin.sh`. This will check " "every port in the ports tree, even those not connected to the build, so you " "can run it directly after the move operation. Hint: do not forget to look at " "the ``PKGORIGIN``s of any slave ports of the ports you just moved!" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3897 msgid "" "On your own local system, test the proposed changes: first, comment out the " "SUBDIR entries in the old ports' categories' [.filename]##Makefile##s; then " "enable building the new category in [.filename]#ports/Makefile#. Run make " "checksubdirs in the affected category directories to check the SUBDIR " "entries. Next, in the [.filename]#ports/# directory, run make index. This " "can take over 40 minutes on even modern systems; however, it is a necessary " "step to prevent problems for other people." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3898 msgid "" "Once this is done, you can commit the updated [.filename]#ports/Makefile# to " "connect the new category to the build and also commit the [." "filename]#Makefile# changes for the old category or categories." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3899 msgid "Add appropriate entries to [.filename]#ports/MOVED#." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3900 msgid "Update the documentation by modifying:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3901 #: documentation/content/en/articles/committers-guide/_index.adoc:3910 msgid "" "the extref:{porters-handbook}[list of categories, PORTING-CATEGORIES] in the " "Porter's Handbook" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3903 msgid "" "Only once all the above have been done, and no one is any longer reporting " "problems with the new ports, should the old ports be deleted from their " "previous locations in the repository." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3905 #, no-wrap msgid "What do I need to do to implement a new virtual category?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3908 msgid "" "This is much simpler than a physical category. Only a few modifications are " "needed:" msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3912 #: documentation/content/en/articles/committers-guide/_index.adoc:4006 #, no-wrap msgid "Miscellaneous Questions" msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3915 #, no-wrap msgid "Are there changes that can be committed without asking the maintainer for approval?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3918 msgid "Blanket approval for most ports applies to these types of fixes:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3920 msgid "" "Most infrastructure changes to a port (that is, modernizing, but not " "changing the functionality). For example, the blanket covers converting to " "new `USES` macros, enabling verbose builds, and switching to new ports " "system syntaxes." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3921 msgid "Trivial and _tested_ build and runtime fixes." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3922 msgid "" "Documentations or metadata changes to ports, like [.filename]#pkg-descr# or " "`COMMENT`." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3927 msgid "" "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: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3930 #, no-wrap msgid "How do I know if my port is building correctly or not?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3934 msgid "" "The packages are built multiple times each week. If a port fails, the " "maintainer will receive an email from `pkg-fallout@FreeBSD.org`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3936 msgid "" "Reports for all the package builds (official, experimental, and non-" "regression) are aggregated at link:pkg-status.FreeBSD.org[pkg-status.FreeBSD." "org]." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3938 #, no-wrap msgid "I added a new port. Do I need to add it to the [.filename]#INDEX#?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3941 msgid "" "No. The file can either be generated by running `make index`, or a pre-" "generated version can be downloaded with `make fetchindex`." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3943 #, no-wrap msgid "Are there any other files I am not allowed to touch?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3947 msgid "" "Any file directly under [.filename]#ports/#, or any file under a " "subdirectory that starts with an uppercase letter ([.filename]#Mk/#, [." "filename]#Tools/#, etc.). In particular, the {portmgr} is very protective " "of [.filename]#ports/Mk/bsd.port*.mk# so do not commit changes to those " "files unless you want to face their wrath." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3949 #, no-wrap msgid "What is the proper procedure for updating the checksum for a port distfile when the file changes without a version change?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3953 msgid "" "When the checksum for a distribution file is updated due to the author " "updating the file without changing the port revision, the commit message " "includes a summary of the relevant diffs between the original and new " "distfile to ensure that the distfile has not been corrupted or maliciously " "altered. If the current version of the port has been in the ports tree for " "a while, a copy of the old distfile will usually be available on the ftp " "servers; otherwise the author or maintainer should be contacted to find out " "why the distfile has changed." msgstr "" #. type: Title ==== #: documentation/content/en/articles/committers-guide/_index.adoc:3955 #, no-wrap msgid "How can an experimental test build of the ports tree (exp-run) be requested?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3959 msgid "" "An exp-run must be completed before patches with a significant ports impact " "are committed. The patch can be against the ports tree or the base system." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3961 msgid "" "Full package builds will be done with the patches provided by the submitter, " "and the submitter is required to fix detected problems _(fallout)_ before " "commit." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3965 msgid "Go to the link:https://bugs.freebsd.org/submit[Bugzilla new PR page]." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3966 msgid "Select the product your patch is about." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3967 msgid "Fill in the bug report as normal. Remember to attach the patch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3968 msgid "" "If at the top it says “Show Advanced Fields” click on it. It will now say " "“Hide Advanced Fields”. Many new fields will be available. If it already " "says “Hide Advanced Fields”, no need to do anything." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3969 msgid "" "In the “Flags” section, set the “exp-run” one to `?`. As for all other " "fields, hovering the mouse over any field shows more details." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3970 msgid "Submit. Wait for the build to run." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3971 msgid "{portmgr} will reply with a possible fallout." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3972 msgid "Depending on the fallout:" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3973 msgid "" "If there is no fallout, the procedure stops here, and the change can be " "committed, pending any other approval required." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3974 msgid "" "If there is fallout, it _must_ be fixed, either by fixing the ports directly " "in the ports tree, or adding to the submitted patch." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3975 msgid "" "When this is done, go back to step 6 saying the fallout was fixed and wait " "for the exp-run to be run again. Repeat as long as there are broken ports." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3978 #, no-wrap msgid "Issues Specific to Developers Who Are Not Committers" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3983 msgid "" "A few people who have access to the FreeBSD machines do not have commit " "bits. Almost all of this document will apply to these developers as well " "(except things specific to commits and the mailing list memberships that go " "with them). In particular, we recommend that you read:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3985 msgid "<>" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3986 msgid "<>" msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:3990 msgid "" "Get your mentor to add you to the \"Additional Contributors\" ([." "filename]#doc/shared/contrib-additional.adoc#), if you are not already " "listed there." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3992 msgid "<>" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3993 msgid "<>" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3994 msgid "<>" msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:3996 #, no-wrap msgid "Information About Google Analytics" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:3999 msgid "" "As of December 12, 2012, Google Analytics was enabled on the FreeBSD Project " "website to collect anonymized usage statistics regarding usage of the site." msgstr "" #. type: Plain text #: documentation/content/en/articles/committers-guide/_index.adoc:4003 msgid "" "As of March 3, 2022, Google Analytics was removed from the FreeBSD Project." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:4008 #, no-wrap msgid "How do I access people.FreeBSD.org to put up personal or project information?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4012 msgid "" "`people.FreeBSD.org` is the same as `freefall.FreeBSD.org`. Just create a [." "filename]#public_html# directory. Anything you place in that directory will " "automatically be visible under https://people.FreeBSD.org/[https://people." "FreeBSD.org/]." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:4013 #, no-wrap msgid "Where are the mailing list archives stored?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4016 msgid "" "The mailing lists are archived under [.filename]#/local/mail# on `freefall." "FreeBSD.org`." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:4017 #, no-wrap msgid "I would like to mentor a new committer. What process do I need to follow?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4020 msgid "" "See the https://www.freebsd.org/internal/new-account/[New Account Creation " "Procedure] document on the internal pages." msgstr "" #. type: Title == #: documentation/content/en/articles/committers-guide/_index.adoc:4022 #, no-wrap msgid "Benefits and Perks for FreeBSD Committers" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:4025 #, no-wrap msgid "Recognition" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4029 msgid "" "Recognition as a competent software engineer is the longest lasting value. " "In addition, getting a chance to work with some of the best people that " "every engineer would dream of meeting is a great perk!" msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:4031 #, no-wrap msgid "FreeBSD Mall" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4034 msgid "" "FreeBSD committers can get a free 4-CD or DVD set at conferences from http://" "www.freebsdmall.com[FreeBSD Mall, Inc.]." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:4036 #, no-wrap msgid "`Gandi.net`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4039 msgid "" "https://gandi.net[Gandi] provides website hosting, cloud computing, domain " "registration, and X.509 certificate services." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4043 msgid "" "Gandi offers an E-rate discount to all FreeBSD developers. In order to " "streamline the process of getting the discount first set up a Gandi account, " "fill in the billing information and select the currency. Then send an mail " "to mailto:non-profit@gandi.net[non-profit@gandi.net] using your `@freebsd." "org` mail address, and indicate your Gandi handle." msgstr "" #. type: Title === #: documentation/content/en/articles/committers-guide/_index.adoc:4045 #, no-wrap msgid "`rsync.net`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/committers-guide/_index.adoc:4048 msgid "" "https://rsync.net[rsync.net] provides cloud storage for offsite backup that " "is optimized for UNIX users. Their service runs entirely on FreeBSD and ZFS." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/articles/committers-guide/_index.adoc:4049 +#: documentation/content/en/articles/committers-guide/_index.adoc:4050 msgid "" "rsync.net offers a free-forever 500 GB account to FreeBSD developers. Simply " "sign up at https://www.rsync.net/freebsd.html[https://www.rsync.net/freebsd." "html] using your `@freebsd.org` address to receive this free account." msgstr "" + +#. type: Title === +#: documentation/content/en/articles/committers-guide/_index.adoc:4052 +#, no-wrap +msgid "`JetBrains`" +msgstr "" + +#. type: delimited block = 4 +#: documentation/content/en/articles/committers-guide/_index.adoc:4055 +msgid "" +"https://www.jetbrains.com[JetBrains] is a software development company which " +"makes tools for software developers and project managers. The company offers " +"many integrated development environments (IDEs) for different programming " +"languages." +msgstr "" + +#. type: delimited block = 4 +#: documentation/content/en/articles/committers-guide/_index.adoc:4057 +msgid "" +"JetBrains offers 100 free yearly licenses for all https://www.jetbrains.com/" +"products[JetBrains IDE products]. Simply sign up at https://account." +"jetbrains.com/a/322tl3z7[https://account.jetbrains.com/a/322tl3z7] using " +"your `@freebsd.org` address and the account will have a license attached to " +"it automatically. Once the account is active, use it in any of the products " +"to activate them and you're done." +msgstr "" + +#. type: Plain text +#: documentation/content/en/articles/committers-guide/_index.adoc:4061 +msgid "" +"Please, only use these licences personally and do not share them with anyone " +"outside of the FreeBSD project, as that would be a violation of the terms of " +"the donation." +msgstr "" diff --git a/documentation/content/en/articles/linux-users/_index.po b/documentation/content/en/articles/linux-users/_index.po index 7db8fd8115..9f8d341a4b 100644 --- a/documentation/content/en/articles/linux-users/_index.po +++ b/documentation/content/en/articles/linux-users/_index.po @@ -1,807 +1,808 @@ # 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: 2022-02-01 10:28-0300\n" +"POT-Creation-Date: 2022-10-16 17:07-0300\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/articles/linux-users/_index.adoc:1 #, no-wrap msgid "This document is intended to quickly familiarize intermediate to advanced Linux® users with the basics of FreeBSD." msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/articles/linux-users/_index.adoc:1 #, no-wrap msgid "FreeBSD Quickstart Guide for Linux® Users" msgstr "" #. type: Title = #: documentation/content/en/articles/linux-users/_index.adoc:11 #, no-wrap msgid "FreeBSD Quickstart Guide for Linux(R) Users" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:44 msgid "Abstract" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:46 msgid "" "This document is intended to quickly familiarize intermediate to advanced " "Linux(R) users with the basics of FreeBSD." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:48 msgid "'''" msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:52 #, no-wrap msgid "Introduction" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:55 msgid "" "This document highlights some of the technical differences between FreeBSD " "and Linux(R) so that intermediate to advanced Linux(R) users can quickly " "familiarize themselves with the basics of FreeBSD." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:58 msgid "" "This document assumes that FreeBSD is already installed. Refer to the " "extref:{handbook}[Installing FreeBSD, bsdinstall] chapter of the FreeBSD " "Handbook for help with the installation process." msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:60 #, no-wrap msgid "Default Shell" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:67 msgid "" "Linux(R) users are often surprised to find that Bash is not the default " "shell in FreeBSD. In fact, Bash is not included in the default " "installation. Instead, FreeBSD uses man:tcsh[1] as the default root shell, " "and the Bourne shell-compatible man:sh[1] as the default user shell. man:" "sh[1] is very similar to Bash but with a much smaller feature-set. " "Generally shell scripts written for man:sh[1] will run in Bash, but the " "reverse is not always true." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:69 msgid "" "However, Bash and other shells are available for installation using the " "FreeBSD extref:{handbook}[Packages and Ports Collection, ports]." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:74 msgid "" "After installing another shell, use man:chsh[1] to change a user's default " "shell. It is recommended that the `root` user's default shell remain " "unchanged since shells which are not included in the base distribution are " "installed to [.filename]#/usr/local/bin#. In the event of a problem, the " "file system where [.filename]#/usr/local/bin# is located may not be " "mounted. In this case, `root` would not have access to its default shell, " "preventing `root` from logging in and fixing the problem." msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:76 #, no-wrap msgid "Packages and Ports: Adding Software in FreeBSD" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:80 msgid "" "FreeBSD provides two methods for installing applications: binary packages " "and compiled ports. Each method has its own benefits:" msgstr "" #. type: Block title #: documentation/content/en/articles/linux-users/_index.adoc:81 #, no-wrap msgid "Binary Packages" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:83 msgid "Faster installation as compared to compiling large applications." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:84 msgid "Does not require an understanding of how to compile software." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:85 msgid "No need to install a compiler." msgstr "" #. type: Title === #: documentation/content/en/articles/linux-users/_index.adoc:86 #: documentation/content/en/articles/linux-users/_index.adoc:111 #, no-wrap msgid "Ports" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:88 msgid "Ability to customize installation options." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:89 msgid "Custom patches can be applied." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:93 msgid "" "If an application installation does not require any customization, " "installing the package is sufficient. Compile the port instead whenever an " "application requires customization of the default options. If needed, a " "custom package can be compiled from ports using `make package`." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:95 msgid "" "A complete list of all available ports and packages can be found https://www." "freebsd.org/ports/[here]." msgstr "" #. type: Title === #: documentation/content/en/articles/linux-users/_index.adoc:97 #, no-wrap msgid "Packages" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:102 msgid "" "Packages are pre-compiled applications, the FreeBSD equivalents of [." "filename]#.deb# files on Debian/Ubuntu based systems and [.filename]#.rpm# " "files on Red Hat/Fedora based systems. Packages are installed using `pkg`. " "For example, the following command installs Apache 2.4:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:106 #, no-wrap msgid "# pkg install apache24\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:109 msgid "" "For more information on packages refer to section 5.4 of the FreeBSD " "Handbook: extref:{handbook}[Using pkgng for Binary Package Management, pkgng-" "intro]." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:115 msgid "" "The FreeBSD Ports Collection is a framework of [.filename]#Makefiles# and " "patches specifically customized for installing applications from source on " "FreeBSD. When installing a port, the system will fetch the source code, " "apply any required patches, compile the code, and install the application " "and any required dependencies." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:118 msgid "" "The Ports Collection, sometimes referred to as the ports tree, can be " -"installed to [.filename]#/usr/ports# using man:portsnap[8]. Detailed " -"instructions for installing the Ports Collection can be found in extref:" -"{handbook}[section 5.5, ports-using] of the FreeBSD Handbook." +"installed to [.filename]#/usr/ports# using link:{handbook}mirrors/" +"#git[Git]. Detailed instructions for installing the Ports Collection can be " +"found in extref:{handbook}[section 4.5.1, ports-using-installation-methods] " +"of the FreeBSD Handbook." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:120 msgid "" "To compile a port, change to the port's directory and start the build " "process. The following example installs Apache 2.4 from the Ports Collection:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:125 #, no-wrap msgid "" "# cd /usr/ports/www/apache24\n" "# make install clean\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:129 msgid "" "A benefit of using ports to install software is the ability to customize the " "installation options. This example specifies that the mod_ldap module " "should also be installed:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:134 #, no-wrap msgid "" "# cd /usr/ports/www/apache24\n" "# make WITH_LDAP=\"YES\" install clean\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:137 msgid "" "Refer to extref:{handbook}[Using the Ports Collection, ports-using] for more " "information." msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:139 #, no-wrap msgid "System Startup" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:146 msgid "" "Many Linux(R) distributions use the SysV init system, whereas FreeBSD uses " "the traditional BSD-style man:init[8]. Under the BSD-style man:init[8], " "there are no run-levels and [.filename]#/etc/inittab# does not exist. " "Instead, startup is controlled by man:rc[8] scripts. At system boot, [." "filename]#/etc/rc# reads [.filename]#/etc/rc.conf# and [.filename]#/etc/" "defaults/rc.conf# to determine which services are to be started. The " "specified services are then started by running the corresponding service " "initialization scripts located in [.filename]#/etc/rc.d/# and [.filename]#/" "usr/local/etc/rc.d/#. These scripts are similar to the scripts located in [." "filename]#/etc/init.d/# on Linux(R) systems." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:149 msgid "" "The scripts found in [.filename]#/etc/rc.d/# are for applications that are " "part of the \"base\" system, such as man:cron[8], man:sshd[8], and man:" "syslog[3]. The scripts in [.filename]#/usr/local/etc/rc.d/# are for user-" "installed applications such as Apache and Squid." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:154 msgid "" "Since FreeBSD is developed as a complete operating system, user-installed " "applications are not considered to be part of the \"base\" system. User-" "installed applications are generally installed using extref:{handbook}" "[Packages or Ports, ports-using]. In order to keep them separate from the " "base system, user-installed applications are installed under [.filename]#/" "usr/local/#. Therefore, user-installed binaries reside in [.filename]#/usr/" "local/bin/#, configuration files are in [.filename]#/usr/local/etc/#, and so " "on." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:159 msgid "" "Services are enabled by adding an entry for the service in [.filename]#/etc/" "rc.conf#. The system defaults are found in [.filename]#/etc/defaults/rc." "conf# and these default settings are overridden by settings in [.filename]#/" "etc/rc.conf#. Refer to man:rc.conf[5] for more information about the " "available entries. When installing additional applications, review the " "application's install message to determine how to enable any associated " "services." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:161 msgid "" "The following entries in [.filename]#/etc/rc.conf# enable man:sshd[8], " "enable Apache 2.4, and specify that Apache should be started with SSL." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:169 #, no-wrap msgid "" "# enable SSHD\n" "sshd_enable=\"YES\"\n" "# enable Apache with SSL\n" "apache24_enable=\"YES\"\n" "apache24_flags=\"-DSSL\"\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:172 msgid "" "Once a service has been enabled in [.filename]#/etc/rc.conf#, it can be " "started without rebooting the system:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:177 #, no-wrap msgid "" "# service sshd start\n" "# service apache24 start\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:180 msgid "" "If a service has not been enabled, it can be started from the command line " "using `onestart`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:184 #, no-wrap msgid "# service sshd onestart\n" msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:187 #, no-wrap msgid "Network Configuration" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:191 msgid "" "Instead of a generic _ethX_ identifier that Linux(R) uses to identify a " "network interface, FreeBSD uses the driver name followed by a number. The " "following output from man:ifconfig[8] shows two Intel(R) Pro 1000 network " "interfaces ([.filename]#em0# and [.filename]#em1#):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:207 #, no-wrap msgid "" "% ifconfig\n" "em0: flags=8843 mtu 1500\n" " options=b\n" " inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255\n" " ether 00:50:56:a7:70:b2\n" " media: Ethernet autoselect (1000baseTX )\n" " status: active\n" "em1: flags=8843 mtu 1500\n" " options=b\n" " inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255\n" " ether 00:50:56:a7:03:2b\n" " media: Ethernet autoselect (1000baseTX )\n" " status: active\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:212 msgid "" "An IP address can be assigned to an interface using man:ifconfig[8]. To " "remain persistent across reboots, the IP configuration must be included in [." "filename]#/etc/rc.conf#. The following [.filename]#/etc/rc.conf# entries " "specify the hostname, IP address, and default gateway:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:218 #, no-wrap msgid "" "hostname=\"server1.example.com\"\n" "ifconfig_em0=\"inet 10.10.10.100 netmask 255.255.255.0\"\n" "defaultrouter=\"10.10.10.1\"\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:221 msgid "Use the following entries to instead configure an interface for DHCP:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:226 #, no-wrap msgid "" "hostname=\"server1.example.com\"\n" "ifconfig_em0=\"DHCP\"\n" msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:229 #, no-wrap msgid "Firewall" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:233 msgid "" "FreeBSD does not use Linux(R) IPTABLES for its firewall. Instead, FreeBSD " "offers a choice of three kernel level firewalls:" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:235 msgid "extref:{handbook}[PF, firewalls-pf]" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:236 msgid "extref:{handbook}[IPFILTER, firewalls-ipf]" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:237 msgid "extref:{handbook}[IPFW, firewalls-ipfw]" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:241 msgid "" "PF is developed by the OpenBSD project and ported to FreeBSD. PF was " "created as a replacement for IPFILTER and its syntax is similar to that of " "IPFILTER. PF can be paired with man:altq[4] to provide QoS features." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:243 msgid "This sample PF entry allows inbound SSH:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:247 #, no-wrap msgid "pass in on $ext_if inet proto tcp from any to ($ext_if) port 22\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:251 msgid "" "IPFILTER is the firewall application developed by Darren Reed. It is not " "specific to FreeBSD and has been ported to several operating systems " "including NetBSD, OpenBSD, SunOS, HP/UX, and Solaris." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:253 msgid "The IPFILTER syntax to allow inbound SSH is:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:257 #, no-wrap msgid "pass in on $ext_if proto tcp from any to any port = 22\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:261 msgid "" "IPFW is the firewall developed and maintained by FreeBSD. It can be paired " "with man:dummynet[4] to provide traffic shaping capabilities and simulate " "different types of network connections." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:263 msgid "The IPFW syntax to allow inbound SSH would be:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:267 #, no-wrap msgid "ipfw add allow tcp from any to me 22 in via $ext_if\n" msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:270 #, no-wrap msgid "Updating FreeBSD" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:273 msgid "" "There are two methods for updating a FreeBSD system: from source or binary " "updates." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:277 msgid "" "Updating from source is the most involved update method, but offers the " "greatest amount of flexibility. The process involves synchronizing a local " "copy of the FreeBSD source code with the FreeBSD Subversion servers. Once " "the local source code is up-to-date, a new version of the kernel and " "userland can be compiled." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:281 msgid "" "Binary updates are similar to using `yum` or `apt-get` to update a Linux(R) " "system. In FreeBSD, man:freebsd-update[8] can be used fetch new binary " "updates and install them. These updates can be scheduled using man:cron[8]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/linux-users/_index.adoc:285 msgid "" "When using man:cron[8] to schedule updates, use `freebsd-update cron` in the " "man:crontab[1] to reduce the possibility of a large number of machines all " "pulling updates at the same time:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:289 #, no-wrap msgid "0 3 * * * root /usr/sbin/freebsd-update cron\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/linux-users/_index.adoc:294 msgid "" "For more information on source and binary updates, refer to extref:{handbook}" "[the chapter on updating, updating-upgrading] in the FreeBSD Handbook." msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:296 #, no-wrap msgid "procfs: Gone But Not Forgotten" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/linux-users/_index.adoc:300 msgid "" "In some Linux(R) distributions, one could look at [.filename]#/proc/sys/net/" "ipv4/ip_forward# to determine if IP forwarding is enabled. In FreeBSD, man:" "sysctl[8] is instead used to view this and other system settings." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/linux-users/_index.adoc:302 msgid "" "For example, use the following to determine if IP forwarding is enabled on a " "FreeBSD system:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:307 #, no-wrap msgid "" "% sysctl net.inet.ip.forwarding\n" "net.inet.ip.forwarding: 0\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:310 msgid "Use `-a` to list all the system settings:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:314 #, no-wrap msgid "% sysctl -a | more\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:317 msgid "" "If an application requires procfs, add the following entry to [.filename]#/" "etc/fstab#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:321 #, no-wrap msgid "proc /proc procfs rw,noauto 0 0\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:324 msgid "" "Including `noauto` will prevent [.filename]#/proc# from being automatically " "mounted at boot." msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:326 msgid "To mount the file system without rebooting:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/linux-users/_index.adoc:330 #, no-wrap msgid "# mount /proc\n" msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:333 #, no-wrap msgid "Common Commands" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:336 msgid "Some common command equivalents are as follows:" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:341 #, no-wrap msgid "Linux(R) command (Red Hat/Debian)" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:342 #, no-wrap msgid "FreeBSD equivalent" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:344 #, no-wrap msgid "Purpose" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:345 #, no-wrap msgid "`yum install _package_` / `apt-get install _package_`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:346 #, no-wrap msgid "`pkg install _package_`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:348 #, no-wrap msgid "Install package from remote repository" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:349 #, no-wrap msgid "`rpm -ivh _package_` / `dpkg -i _package_`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:350 #, no-wrap msgid "`pkg add _package_`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:352 #, no-wrap msgid "Install local package" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:353 #, no-wrap msgid "`rpm -qa` / `dpkg -l`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:354 #, no-wrap msgid "`pkg info`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:356 #, no-wrap msgid "List installed packages" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:357 #, no-wrap msgid "`lspci`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:358 #, no-wrap msgid "`pciconf`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:360 #, no-wrap msgid "List PCI devices" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:361 #, no-wrap msgid "`lsmod`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:362 #, no-wrap msgid "`kldstat`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:364 #, no-wrap msgid "List loaded kernel modules" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:365 #, no-wrap msgid "`modprobe`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:366 #, no-wrap msgid "`kldload` / `kldunload`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:368 #, no-wrap msgid "Load/Unload kernel modules" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:369 #, no-wrap msgid "`strace`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:370 #, no-wrap msgid "`truss`" msgstr "" #. type: Table #: documentation/content/en/articles/linux-users/_index.adoc:371 #, no-wrap msgid "Trace system calls" msgstr "" #. type: Title == #: documentation/content/en/articles/linux-users/_index.adoc:374 #, no-wrap msgid "Conclusion" msgstr "" #. type: Plain text #: documentation/content/en/articles/linux-users/_index.adoc:377 msgid "" "This document has provided an overview of FreeBSD. Refer to the extref:" "{handbook}[FreeBSD Handbook] for more in-depth coverage of these topics as " "well as the many topics not covered by this document." msgstr "" diff --git a/documentation/content/en/articles/pgpkeys/_index.po b/documentation/content/en/articles/pgpkeys/_index.po index 27e1c73979..ebb13ddbd0 100644 --- a/documentation/content/en/articles/pgpkeys/_index.po +++ b/documentation/content/en/articles/pgpkeys/_index.po @@ -1,2806 +1,2806 @@ # 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: 2022-08-07 10:35-0300\n" +"POT-Creation-Date: 2022-10-16 17:07-0300\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/articles/pgpkeys/_index.adoc:1 #, no-wrap msgid "List of OpenPGP keys that can be used to verify a signature or send encrypted email to FreeBSD.org officers or developers." msgstr "" #. type: Title = #: documentation/content/en/articles/pgpkeys/_index.adoc:1 #: documentation/content/en/articles/pgpkeys/_index.adoc:7 #, no-wrap msgid "OpenPGP Keys" msgstr "" #. type: Plain text #: documentation/content/en/articles/pgpkeys/_index.adoc:45 msgid "'''" msgstr "" #. type: Plain text #: documentation/content/en/articles/pgpkeys/_index.adoc:50 msgid "" "These OpenPGP keys can be used to verify a signature or send encrypted email " "to `FreeBSD.org` officers or developers. The complete keyring can be " "downloaded at link:https://docs.FreeBSD.org/pgpkeys/pgpkeys.txt[pgpkeyring." "txt]." msgstr "" # # #. Do not edit this file except as instructed by the addkey.sh script. #. See the README file in /data/pgpkeys for instructions. #. This article contains all the keys. The officer keys are also #. shown in the Handbook PGP keys chapter. #. type: Title == #: documentation/content/en/articles/pgpkeys/_index.adoc:61 #, no-wrap msgid "Officers" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:63 #, no-wrap msgid "{security-officer-name} `<{security-officer-email}>`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:66 #, no-wrap msgid "{secteam-secretary-name} `<{secteam-secretary-email}>`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:69 #, no-wrap msgid "{core-secretary-name} `<{core-secretary-email}>`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:72 #, no-wrap msgid "{portmgr-secretary-name} `<{portmgr-secretary-email}>`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:75 #, no-wrap -msgid "`{doceng-secretary-email}`" +msgid "{doceng-secretary-name} `<{doceng-secretary-email}>`" msgstr "" #. type: Title == #: documentation/content/en/articles/pgpkeys/_index.adoc:79 #, no-wrap msgid "Core Team Members" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:81 #: documentation/content/en/articles/pgpkeys/_index.adoc:339 #, no-wrap msgid "`{bapt}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:84 #: documentation/content/en/articles/pgpkeys/_index.adoc:1074 #, no-wrap msgid "`{bcr}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:87 #: documentation/content/en/articles/pgpkeys/_index.adoc:750 #, no-wrap msgid "`{grog}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:90 #: documentation/content/en/articles/pgpkeys/_index.adoc:174 #, no-wrap msgid "`{jhb}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:93 #: documentation/content/en/articles/pgpkeys/_index.adoc:573 #, no-wrap msgid "`{lwhsu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:96 #: documentation/content/en/articles/pgpkeys/_index.adoc:1335 #, no-wrap msgid "`{manu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:99 #: documentation/content/en/articles/pgpkeys/_index.adoc:201 #, no-wrap msgid "`{tcberner}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:102 #: documentation/content/en/articles/pgpkeys/_index.adoc:1026 #, no-wrap msgid "`{0mp}`" msgstr "" #. type: Title == #: documentation/content/en/articles/pgpkeys/_index.adoc:106 #, no-wrap msgid "Developers" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:108 #, no-wrap msgid "`{jgh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:111 #, no-wrap msgid "`{ariff}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:114 #, no-wrap msgid "`{tabthorpe}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:117 #, no-wrap msgid "`{eadler}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:120 #, no-wrap msgid "`{pauamma}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:123 #, no-wrap msgid "`{shaun}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:126 #, no-wrap msgid "`{brix}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:129 #, no-wrap msgid "`{mandree}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:132 #, no-wrap msgid "`{will}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:135 #, no-wrap msgid "`{dim}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:138 #, no-wrap msgid "`{anholt}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:141 #, no-wrap msgid "`{fernape}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:144 #, no-wrap msgid "`{mva}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:147 #, no-wrap msgid "`{araujo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:150 #, no-wrap msgid "`{mat}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:153 #, no-wrap msgid "`{syuu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:156 #, no-wrap msgid "`{asami}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:159 #, no-wrap msgid "`{jsa}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:162 #, no-wrap msgid "`{jadawin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:165 #, no-wrap msgid "`{jwb}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:168 #, no-wrap msgid "`{dbaio}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:171 #, no-wrap msgid "`{timur}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:177 #, no-wrap msgid "`{gjb}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:180 #, no-wrap msgid "`{snb}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:183 #, no-wrap msgid "`{barner}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:186 #, no-wrap msgid "`{lbartoletti}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:189 #, no-wrap msgid "`{art}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:192 #, no-wrap msgid "`{tobez}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:195 #, no-wrap msgid "`{damien}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:198 #, no-wrap msgid "`{bdragon}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:204 #, no-wrap msgid "`{tdb}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:207 #, no-wrap msgid "`{mbr}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:210 #, no-wrap msgid "`{bvs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:213 #, no-wrap msgid "`{novel}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:216 #, no-wrap msgid "`{garga}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:219 #, no-wrap msgid "`{kbowling}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:222 #, no-wrap msgid "`{alexbl}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:225 #, no-wrap msgid "`{ebrandi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:228 #, no-wrap msgid "`{harti}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:231 #, no-wrap msgid "`{obraun}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:234 #, no-wrap msgid "`{makc}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:237 #, no-wrap msgid "`{jmb}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:240 #, no-wrap msgid "`{antoine}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:243 #, no-wrap msgid "`{db}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:246 #, no-wrap msgid "`{brueffer}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:249 #, no-wrap msgid "`{markus}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:252 #, no-wrap msgid "`{br}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:255 #, no-wrap msgid "`{jch}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:258 #, no-wrap msgid "`{jchandra}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:261 #, no-wrap msgid "`{jcamou}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:264 #, no-wrap msgid "`{acm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:267 #, no-wrap msgid "`{gahr}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:270 #, no-wrap msgid "`{dchagin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:273 #, no-wrap msgid "`{perky}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:276 #, no-wrap msgid "`{jon}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:279 #, no-wrap msgid "`{jonathan}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:282 #, no-wrap msgid "`{loader}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:285 #, no-wrap msgid "`{luoqi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:288 #, no-wrap msgid "`{ache}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:291 #, no-wrap msgid "`{melifaro}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:294 #, no-wrap msgid "`{cjh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:297 #, no-wrap msgid "`{davidch}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:300 #, no-wrap msgid "`{milki}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:303 #, no-wrap msgid "`{cjc}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:306 #, no-wrap msgid "`{marcus}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:309 #, no-wrap msgid "`{nik}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:312 #, no-wrap msgid "`{benjsc}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:315 #, no-wrap msgid "`{lcook}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:318 #, no-wrap msgid "`{ngie}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:321 #, no-wrap msgid "`{rakuco}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:324 #, no-wrap msgid "`{alc}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:327 #, no-wrap msgid "`{olivier}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:330 #, no-wrap msgid "`{bcran}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:333 #, no-wrap msgid "`{culot}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:336 #, no-wrap msgid "`{alfredo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:342 #, no-wrap msgid "`{ceri}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:345 #, no-wrap msgid "`{edavis}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:348 #, no-wrap msgid "`{alexey}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:351 #, no-wrap msgid "`{bsd}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:354 #, no-wrap msgid "`{carl}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:357 #, no-wrap msgid "`{carlavilla}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:360 #, no-wrap msgid "`{vd}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:363 #, no-wrap msgid "`{rdivacky}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:366 #, no-wrap msgid "`{danfe}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:369 #, no-wrap msgid "`{dd}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:372 #, no-wrap msgid "`{bdrewery}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:375 #, no-wrap msgid "`{gad}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:378 #, no-wrap msgid "`{kd}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:381 #, no-wrap msgid "`{olivierd}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:384 #, no-wrap msgid "`{bruno}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:387 #, no-wrap msgid "`{ale}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:390 #, no-wrap msgid "`{nemysis}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:393 #, no-wrap msgid "`{peadar}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:396 #, no-wrap msgid "`{deischen}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:399 #, no-wrap msgid "`{diizzy}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:402 #, no-wrap msgid "`{ue}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:405 #, no-wrap msgid "`{madpilot}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:408 #, no-wrap msgid "`{rafan}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:411 #, no-wrap msgid "`{kami}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:414 #, no-wrap msgid "`{farrokhi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:417 #, no-wrap msgid "`{jedgar}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:420 #, no-wrap msgid "`{mfechner}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:423 #, no-wrap msgid "`{feld}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:426 #, no-wrap msgid "`{green}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:429 #, no-wrap msgid "`{fanf}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:432 #, no-wrap msgid "`{blackend}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:435 #, no-wrap msgid "`{petef}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:438 #, no-wrap msgid "`{decke}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:441 #, no-wrap msgid "`{landonf}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:444 #, no-wrap msgid "`{billf}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:447 #, no-wrap msgid "`{grembo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:450 #, no-wrap msgid "`{sgalabov}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:453 #, no-wrap msgid "`{avg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:456 #, no-wrap msgid "`{beat}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:459 #, no-wrap msgid "`{sjg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:462 #, no-wrap msgid "`{gibbs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:465 #, no-wrap msgid "`{pfg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:468 #, no-wrap msgid "`{girgen}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:471 #, no-wrap msgid "`{eugen}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:474 #, no-wrap msgid "`{pgollucci}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:477 #, no-wrap msgid "`{trociny}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:480 #, no-wrap msgid "`{dmgk}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:483 #, no-wrap msgid "`{daichi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:486 #, no-wrap msgid "`{grehan}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:489 #, no-wrap msgid "`{jamie}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:492 #, no-wrap msgid "`{adridg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:495 #, no-wrap msgid "`{wg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:498 #, no-wrap msgid "`{bar}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:501 #, no-wrap msgid "`{jmg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:504 #, no-wrap msgid "`{mjg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:507 #, no-wrap msgid "`{jhale}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:510 #, no-wrap msgid "`{dannyboy}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:513 #, no-wrap msgid "`{dhartmei}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:516 #, no-wrap msgid "`{ohauer}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:519 #, no-wrap msgid "`{ehaupt}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:522 #, no-wrap msgid "`{jhay}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:525 #, no-wrap msgid "`{bhd}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:528 #, no-wrap msgid "`{sheldonh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:531 #, no-wrap msgid "`{mikeh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:534 #, no-wrap msgid "`{mheinen}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:537 #, no-wrap msgid "`{niels}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:540 #, no-wrap msgid "`{ghelmer}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:543 #, no-wrap msgid "`{mux}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:546 #, no-wrap msgid "`{wen}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:549 #, no-wrap msgid "`{dhn}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:552 #, no-wrap msgid "`{jhibbits}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:555 #, no-wrap msgid "`{jhixson}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:558 #, no-wrap msgid "`{pho}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:561 #, no-wrap msgid "`{oh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:564 #, no-wrap msgid "`{mhorne}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:567 #, no-wrap msgid "`{bhughes}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:570 #, no-wrap msgid "`{sunpoet}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:576 #, no-wrap msgid "`{foxfair}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:579 #, no-wrap msgid "`{whu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:582 #, no-wrap msgid "`{chinsan}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:585 #, no-wrap msgid "`{davide}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:588 #, no-wrap msgid "`{jkh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:591 #, no-wrap msgid "`{versus}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:594 #, no-wrap msgid "`{pi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:597 #, no-wrap msgid "`{weongyo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:600 #, no-wrap msgid "`{peterj}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:603 #, no-wrap msgid "`{jinmei}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:606 #, no-wrap msgid "`{ahze}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:609 #, no-wrap msgid "`{markj}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:612 #, no-wrap msgid "`{trevor}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:615 #, no-wrap msgid "`{erj}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:618 #, no-wrap msgid "`{allanjude}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:621 #, no-wrap msgid "`{bjk}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:624 #, no-wrap msgid "`{phk}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:627 #, no-wrap msgid "`{pluknet}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:630 #, no-wrap msgid "`{cokane}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:633 #, no-wrap msgid "`{karels}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:636 #, no-wrap msgid "`{kato}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:639 #, no-wrap msgid "`{vkashyap}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:642 #, no-wrap msgid "`{pkubaj}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:645 #, no-wrap msgid "`{kris}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:648 #, no-wrap msgid "`{keramida}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:651 #, no-wrap msgid "`{fjoe}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:654 #, no-wrap msgid "`{manolis}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:657 #, no-wrap msgid "`{stevek}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:660 #, no-wrap msgid "`{jkim}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:663 #, no-wrap msgid "`{zack}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:666 #, no-wrap msgid "`{jceel}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:669 #, no-wrap msgid "`{andreas}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:672 #, no-wrap msgid "`{kai}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:675 #, no-wrap msgid "`{jkois}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:678 #, no-wrap msgid "`{sergei}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:681 #, no-wrap msgid "`{maxim}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:684 #, no-wrap msgid "`{taras}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:687 #, no-wrap msgid "`{tobik}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:690 #, no-wrap msgid "`{jkoshy}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:693 #, no-wrap msgid "`{wkoszek}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:696 #, no-wrap msgid "`{ak}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:699 #, no-wrap msgid "`{gabor}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:702 #, no-wrap msgid "`{anchie}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:705 #, no-wrap msgid "`{rushani}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:708 #, no-wrap msgid "`{kuriyama}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:711 #, no-wrap msgid "`{rene}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:714 #, no-wrap msgid "`{jlaffaye}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:717 #, no-wrap msgid "`{clement}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:720 #, no-wrap msgid "`{mlaier}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:723 #, no-wrap msgid "`{martymac}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:726 #, no-wrap msgid "`{glarkin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:729 #, no-wrap msgid "`{dru}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:732 #, no-wrap msgid "`{lawrance}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:735 #, no-wrap msgid "`{njl}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:738 #, no-wrap msgid "`{jlh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:741 #, no-wrap msgid "`{leeym}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:744 #, no-wrap msgid "`{sam}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:747 #, no-wrap msgid "`{jylefort}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:753 #, no-wrap msgid "`{oliver}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:756 #, no-wrap msgid "`{netchild}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:759 #, no-wrap msgid "`{leitao}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:762 #, no-wrap msgid "`{ae}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:765 #, no-wrap msgid "`{lesi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:768 #, no-wrap msgid "`{achim}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:771 #, no-wrap msgid "`{cel}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:774 #, no-wrap msgid "`{glewis}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:777 #, no-wrap msgid "`{vishwin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:780 #, no-wrap msgid "`{delphij}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:783 #, no-wrap msgid "`{avatar}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:786 #, no-wrap msgid "`{ijliao}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:789 #, no-wrap msgid "`{rlibby}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:792 #, no-wrap msgid "`{pclin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:795 #, no-wrap msgid "`{yzlin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:798 #, no-wrap msgid "`{linimon}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:801 #, no-wrap msgid "`{arved}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:804 #, no-wrap msgid "`{dryice}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:807 #, no-wrap msgid "`{nemoliu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:810 #, no-wrap msgid "`{kevlo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:813 #, no-wrap msgid "`{zml}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:816 #, no-wrap msgid "`{nox}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:819 #, no-wrap msgid "`{avl}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:822 #, no-wrap msgid "`{scottl}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:825 #, no-wrap msgid "`{rmacklem}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:828 #, no-wrap msgid "`{vmaffione}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:831 #, no-wrap msgid "`{bmah}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:834 #, no-wrap msgid "`{rm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:837 #, no-wrap msgid "`{mtm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:840 #, no-wrap msgid "`{dwmalone}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:843 #, no-wrap msgid "`{marino}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:846 #, no-wrap msgid "`{cherry}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:849 #, no-wrap msgid "`{matusita}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:852 #, no-wrap msgid "`{mm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:855 #, no-wrap msgid "`{sem}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:858 #, no-wrap msgid "`{mckusick}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:861 #, no-wrap msgid "`{tmclaugh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:864 #, no-wrap msgid "`{jmelo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:867 #, no-wrap msgid "`{mmel}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:870 #, no-wrap msgid "`{jmmv}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:873 #, no-wrap msgid "`{kadesai}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:876 #, no-wrap msgid "`{ken}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:879 #, no-wrap msgid "`{markm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:882 #, no-wrap msgid "`{dinoex}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:885 #, no-wrap msgid "`{sanpei}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:888 #, no-wrap msgid "`{rmh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:891 #, no-wrap msgid "`{driesm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:894 #, no-wrap msgid "`{jrm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:897 #, no-wrap msgid "`{freqlabs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:900 #, no-wrap msgid "`{mmoll}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:903 #, no-wrap msgid "`{cmt}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:906 #, no-wrap msgid "`{stephen}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:909 #, no-wrap msgid "`{marcel}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:912 #, no-wrap msgid "`{dougm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:915 #, no-wrap msgid "`{kmoore}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:918 #, no-wrap msgid "`{marck}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:921 #, no-wrap msgid "`{mav}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:924 #, no-wrap msgid "`{rich}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:927 #, no-wrap msgid "`{knu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:930 #, no-wrap msgid "`{tmm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:933 #, no-wrap msgid "`{max}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:936 #, no-wrap msgid "`{maho}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:939 #, no-wrap msgid "`{yoichi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:942 #, no-wrap msgid "`{bland}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:945 #, no-wrap msgid "`{gnn}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:948 #, no-wrap msgid "`{khng}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:951 #, no-wrap msgid "`{simon}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:954 #, no-wrap msgid "`{rnoland}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:957 #, no-wrap msgid "`{anders}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:960 #, no-wrap msgid "`{lofi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:963 #, no-wrap msgid "`{obrien}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:966 #, no-wrap msgid "`{olgeni}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:969 #, no-wrap msgid "`{philip}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:972 #, no-wrap msgid "`{jpaetzel}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:975 #, no-wrap msgid "`{zirias}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:978 #, no-wrap msgid "`{hiren}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:981 #, no-wrap msgid "`{hmp}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:984 #, no-wrap msgid "`{fluffy}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:987 #, no-wrap msgid "`{sat}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:990 #, no-wrap msgid "`{np}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:993 #, no-wrap msgid "`{royger}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:996 #, no-wrap msgid "`{rpaulo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:999 #, no-wrap msgid "`{rpokala}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1002 #, no-wrap msgid "`{mp}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1005 #, no-wrap msgid "`{roam}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1008 #, no-wrap msgid "`{den}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1011 #, no-wrap msgid "`{csjp}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1014 #, no-wrap msgid "`{grahamperrin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1017 #, no-wrap msgid "`{gerald}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1020 #, no-wrap msgid "`{scottph}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1023 #, no-wrap msgid "`{jacula}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1029 #, no-wrap msgid "`{jdp}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1032 #, no-wrap msgid "`{krion}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1035 #, no-wrap msgid "`{sepotvin}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1038 #, no-wrap msgid "`{cpm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1041 #, no-wrap msgid "`{markp}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1044 #, no-wrap msgid "`{alepulver}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1047 #, no-wrap msgid "`{kp}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1050 #, no-wrap msgid "`{thomas}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1053 #, no-wrap msgid "`{hq}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1056 #, no-wrap msgid "`{bofh}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1059 #, no-wrap msgid "`{fox}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1062 #, no-wrap msgid "`{lbr}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1065 #, no-wrap msgid "`{crees}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1068 #, no-wrap msgid "`{rees}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1071 #, no-wrap msgid "`{mr}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1077 #, no-wrap msgid "`{trhodes}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1080 #, no-wrap msgid "`{benno}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1083 #, no-wrap msgid "`{beech}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1086 #, no-wrap msgid "`{roberto}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1089 #, no-wrap msgid "`{rodrigc}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1092 #, no-wrap msgid "`{ler}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1095 #, no-wrap msgid "`{leres}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1098 #, no-wrap msgid "`{robak}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1101 #, no-wrap msgid "`{guido}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1104 #, no-wrap msgid "`{rea}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1107 #, no-wrap msgid "`{ray}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1110 #, no-wrap msgid "`{niklas}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1113 #, no-wrap msgid "`{salvadore}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1116 #, no-wrap msgid "`{bsam}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1119 #, no-wrap msgid "`{marks}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1122 #, no-wrap msgid "`{bschmidt}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1125 #, no-wrap msgid "`{wosch}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1128 #, no-wrap msgid "`{cy}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1131 #, no-wrap msgid "`{das}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1134 #, no-wrap msgid "`{scheidell}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1137 #, no-wrap msgid "`{matthew}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1140 #, no-wrap msgid "`{tmseck}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1143 #, no-wrap msgid "`{johans}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1146 #, no-wrap msgid "`{bakul}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1149 #, no-wrap msgid "`{gshapiro}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1152 #, no-wrap msgid "`{wxs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1155 #, no-wrap msgid "`{nork}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1158 #, no-wrap msgid "`{syrinx}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1161 #, no-wrap msgid "`{vanilla}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1164 #, no-wrap msgid "`{ashish}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1167 #, no-wrap msgid "`{asiciliano}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1170 #, no-wrap msgid "`{chs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1173 #, no-wrap msgid "`{bms}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1176 #, no-wrap msgid "`{demon}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1179 #, no-wrap msgid "`{jesper}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1182 #, no-wrap msgid "`{scop}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1185 #, no-wrap msgid "`{anray}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1188 #, no-wrap msgid "`{flo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1191 #, no-wrap msgid "`{glebius}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1194 #, no-wrap msgid "`{kensmith}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1197 #, no-wrap msgid "`{ben}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1200 #, no-wrap msgid "`{des}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1203 #, no-wrap msgid "`{sobomax}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1206 #, no-wrap msgid "`{asomers}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1209 #, no-wrap msgid "`{brian}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1212 #, no-wrap msgid "`{sson}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1215 #, no-wrap msgid "`{nsouch}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1218 #, no-wrap msgid "`{ssouhlal}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1221 #, no-wrap msgid "`{loos}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1224 #, no-wrap msgid "`{brnrd}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1227 #, no-wrap msgid "`{rink}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1230 #, no-wrap msgid "`{vsevolod}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1233 #, no-wrap msgid "`{pstef}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1236 #, no-wrap msgid "`{zi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1239 #, no-wrap msgid "`{lstewart}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1242 #, no-wrap msgid "`{murray}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1245 #, no-wrap msgid "`{vs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1248 #, no-wrap msgid "`{xride}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1251 #, no-wrap msgid "`{marius}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1254 #, no-wrap msgid "`{cs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1257 #, no-wrap msgid "`{clsung}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1260 #, no-wrap msgid "`{gsutter}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1263 #, no-wrap msgid "`{metal}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1266 #, no-wrap msgid "`{ryusuke}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1269 #, no-wrap msgid "`{nyan}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1272 #, no-wrap msgid "`{sahil}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1275 #, no-wrap msgid "`{tota}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1278 #, no-wrap msgid "`{romain}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1281 #, no-wrap msgid "`{eduardo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1284 #, no-wrap msgid "`{sylvio}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1287 #, no-wrap msgid "`{itetcu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1290 #, no-wrap msgid "`{mi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1293 #, no-wrap msgid "`{gordon}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1296 #, no-wrap msgid "`{lth}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1299 #, no-wrap msgid "`{fabient}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1302 #, no-wrap msgid "`{thierry}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1305 #, no-wrap msgid "`{thompsa}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1308 #, no-wrap msgid "`{flz}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1311 #, no-wrap msgid "`{jilles}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1314 #, no-wrap msgid "`{ganbold}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1317 #, no-wrap msgid "`{tuexen}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1320 #, no-wrap msgid "`{gonzo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1323 #, no-wrap msgid "`{ume}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1326 #, no-wrap msgid "`{ups}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1329 #, no-wrap msgid "`{fsu}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1332 #, no-wrap msgid "`{mikael}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1338 #, no-wrap msgid "`{ram}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1341 #, no-wrap msgid "`{bryanv}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1344 #, no-wrap msgid "`{nectar}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1347 #, no-wrap msgid "`{avilla}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1350 #, no-wrap msgid "`{nivit}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1353 #, no-wrap msgid "`{ivoras}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1356 #, no-wrap msgid "`{stefan}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1359 #, no-wrap msgid "`{kaiw}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1362 #, no-wrap msgid "`{adamw}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1365 #, no-wrap msgid "`{naddy}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1368 #, no-wrap msgid "`{peter}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1371 #, no-wrap msgid "`{nwhitehorn}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1374 #, no-wrap msgid "`{miwi}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1377 #, no-wrap msgid "`{nate}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1380 #, no-wrap msgid "`{twinterg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1383 #, no-wrap msgid "`{def}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1386 #, no-wrap msgid "`{wollman}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1389 #, no-wrap msgid "`{joerg}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1392 #, no-wrap msgid "`{ygy}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1395 #, no-wrap msgid "`{emax}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1398 #, no-wrap msgid "`{oshogbo}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1401 #, no-wrap msgid "`{riggs}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1404 #, no-wrap msgid "`{egypcio}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1407 #, no-wrap msgid "`{bz}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1410 #, no-wrap msgid "`{dsl}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1413 #, no-wrap msgid "`{zeising}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1416 #, no-wrap msgid "`{phantom}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1419 #, no-wrap msgid "`{tz}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1422 #, no-wrap msgid "`{rigoletto}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1425 #, no-wrap msgid "`{kaktus}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1428 #, no-wrap msgid "`{samm}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1431 #, no-wrap msgid "`{arrowd}`" msgstr "" #. type: Title == #: documentation/content/en/articles/pgpkeys/_index.adoc:1435 #, no-wrap msgid "Other Cluster Account Holders" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1437 #, no-wrap msgid "`{bk}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1440 #, no-wrap msgid "`{deb}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1443 #, no-wrap msgid "`{debdrup}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1446 #, no-wrap msgid "`{dutchdaemon}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1449 #, no-wrap msgid "`{keymaster}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1452 #, no-wrap msgid "`{mwlucas}`" msgstr "" #. type: Title === #: documentation/content/en/articles/pgpkeys/_index.adoc:1455 #, no-wrap msgid "`{dhw}`" msgstr "" diff --git a/documentation/content/en/books/dev-model/_index.po b/documentation/content/en/books/dev-model/_index.po index 44c34d7c87..1bfab9a87f 100644 --- a/documentation/content/en/books/dev-model/_index.po +++ b/documentation/content/en/books/dev-model/_index.po @@ -1,3298 +1,2874 @@ # 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: 2022-02-01 10:28-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/dev-model/_index.adoc:1 #, no-wrap msgid "A formal study of the organization of the FreeBSD project" msgstr "" #. Copyright (c) 2002-2005 Niklas Saers #. All rights reserved. #. Redistribution and use in source and binary forms, with or without #. modification, are permitted provided that the following conditions #. are met: #. 1. Redistributions of source code must retain the above copyright #. notice, this list of conditions and the following disclaimer. #. 2. Redistributions in binary form must reproduce the above copyright #. notice, this list of conditions and the following disclaimer in the #. documentation and/or other materials provided with the distribution. #. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND #. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE #. ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE #. FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL #. DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS #. OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) #. HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT #. LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY #. OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF #. SUCH DAMAGE. #. type: Title = #: documentation/content/en/books/dev-model/_index.adoc:1 #: documentation/content/en/books/dev-model/_index.adoc:38 #, no-wrap msgid "A project model for the FreeBSD Project" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:71 msgid "'''" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:77 msgid "Foreword" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:83 msgid "" "Up until now, the FreeBSD project has released a number of described " "techniques to do different parts of work. However, a project model " "summarising how the project is structured is needed because of the " "increasing amount of project members. footnote:[This goes hand-in-hand with " "Brooks' law that adding another person to a late project will make it later " "since it will increase the communication needs . A project model is a tool " "to reduce the communication needs.] This paper will provide such a project " "model and is donated to the FreeBSD Documentation project where it can " "evolve together with the project so that it can at any point in time reflect " "the way the project works. It is based on [<>]." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:85 msgid "" "I would like to thank the following people for taking the time to explain " "things that were unclear to me and for proofreading the document." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:87 msgid "Andrey A. Chernov mailto:ache@freebsd.org[ache@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:88 msgid "Bruce A. Mah mailto:bmah@freebsd.org[bmah@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:89 msgid "Dag-Erling Smørgrav mailto:des@freebsd.org[des@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:90 msgid "Giorgos Keramidas mailto:keramida@freebsd.org[keramida@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:91 msgid "" "Ingvil Hovig mailto:ingvil.hovig@skatteetaten.no[ingvil.hovig@skatteetaten." "no]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:92 msgid "Jesper Holck mailto:jeh.inf@cbs.dk[jeh.inf@cbs.dk]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:93 msgid "John Baldwin mailto:jhb@freebsd.org[jhb@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:94 msgid "John Polstra mailto:jdp@freebsd.org[jdp@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:95 msgid "Kirk McKusick mailto:mckusick@freebsd.org[mckusick@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:96 msgid "Mark Linimon mailto:linimon@freebsd.org[linimon@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:97 msgid "Marleen Devos" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:98 msgid "Niels Jørgenssen mailto:nielsj@ruc.dk[nielsj@ruc.dk]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:99 msgid "Nik Clayton mailto:nik@freebsd.org[nik@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:100 msgid "Poul-Henning Kamp mailto:phk@freebsd.org[phk@freebsd.org]" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:101 msgid "Simon L. Nielsen mailto:simon@freebsd.org[simon@freebsd.org]" msgstr "" #. type: Title == #: documentation/content/en/books/dev-model/_index.adoc:103 #, no-wrap msgid "Overview" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:108 msgid "" "A project model is a means to reduce the communications overhead in a " "project. As shown by [<>], increasing the number of " "project participants increases the communication in the project " "exponentionally. FreeBSD has during the past few years increased both its " "mass of active users and committers, and the communication in the project " "has risen accordingly. This project model will serve to reduce this " "overhead by providing an up-to-date description of the project." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:114 msgid "" "During the Core elections in 2002, Mark Murray stated \"I am opposed to a " "long rule-book, as that satisfies lawyer-tendencies, and is counter to the " "technocentricity that the project so badly needs.\" [<>]. This project model is not meant to be a tool to justify " "creating impositions for developers, but as a tool to facilitate " "coordination. It is meant as a description of the project, with an overview " "of how the different processes are executed. It is an introduction to how " "the FreeBSD project works." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:117 msgid "" "The FreeBSD project model will be described as of July 1st, 2004. It is " "based on the Niels Jørgensen's paper [<>], " "FreeBSD's official documents, discussions on FreeBSD mailing lists and " "interviews with developers." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:120 msgid "" "After providing definitions of terms used, this document will outline the " "organisational structure (including role descriptions and communication " "lines), discuss the methodology model and after presenting the tools used " "for process control, it will present the defined processes. Finally it will " "outline major sub-projects of the FreeBSD project." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:124 msgid "" "[<>] Section 1.2 and 1.3 give " "the vision and the architectural guidelines for the project. The vision is " "\"To produce the best UNIX-like operating system package possible, with due " "respect to the original software tools ideology as well as usability, " "performance and stability.\" The architectural guidelines help determine " "whether a problem that someone wants to be solved is within the scope of the " "project" msgstr "" #. type: Title == #: documentation/content/en/books/dev-model/_index.adoc:126 #, no-wrap msgid "Definitions" msgstr "" #. type: Title === #: documentation/content/en/books/dev-model/_index.adoc:129 #, no-wrap msgid "Activity" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:134 msgid "" "An \"activity\" is an element of work performed during the course of a " "project [<>]. It has an output and leads towards an " "outcome. Such an output can either be an input to another activity or a " "part of the process' delivery." msgstr "" #. type: Title === #: documentation/content/en/books/dev-model/_index.adoc:136 #, no-wrap msgid "Process" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:141 msgid "" "A \"process\" is a series of activities that lead towards a particular " "outcome. A process can consist of one or more sub-processes. An example of " "a process is software design." msgstr "" #. type: Title === #: documentation/content/en/books/dev-model/_index.adoc:143 #, no-wrap msgid "Hat" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:149 msgid "" "A \"hat\" is synonymous with role. A hat has certain responsibilities in a " "process and for the process outcome. The hat executes activities. It is " "well defined what issues the hat should be contacted about by the project " "members and people outside the project." msgstr "" #. type: Title === #: documentation/content/en/books/dev-model/_index.adoc:151 #, no-wrap msgid "Outcome" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:157 msgid "" "An \"outcome\" is the final output of the process. This is synonymous with " "deliverable, that is defined as \"any measurable, tangible, verifiable " "outcome, result or item that must be produced to complete a project or part " "of a project. Often used more narrowly in reference to an external " "deliverable, which is a deliverable that is subject to approval by the " "project sponsor or customer\" by [<>]. Examples of " "outcomes are a piece of software, a decision made or a report written." msgstr "" #. type: Title === #: documentation/content/en/books/dev-model/_index.adoc:159 #, no-wrap msgid "FreeBSD" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:162 msgid "" "When saying \"FreeBSD\" we will mean the BSD derivative UNIX-like operating " "system FreeBSD, whereas when saying \"the FreeBSD Project\" we will mean the " "project organisation." msgstr "" #. type: Title == #: documentation/content/en/books/dev-model/_index.adoc:164 #, no-wrap msgid "Organisational structure" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:167 msgid "" "While no-one takes ownership of FreeBSD, the FreeBSD organisation is divided " "into core, committers and contributors and is part of the FreeBSD community " "that lives around it." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:169 msgid "The FreeBSD Project's structure (in order of descending authority)" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:174 #: documentation/content/en/books/dev-model/_index.adoc:209 #, no-wrap msgid "Group" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:176 #: documentation/content/en/books/dev-model/_index.adoc:212 #, no-wrap msgid "Number of people" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:177 #: documentation/content/en/books/dev-model/_index.adoc:213 #, no-wrap msgid "Core members" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:179 #: documentation/content/en/books/dev-model/_index.adoc:216 -#: documentation/content/en/books/dev-model/_index.adoc:228 #, no-wrap msgid "9" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:180 #: documentation/content/en/books/dev-model/_index.adoc:217 #, no-wrap msgid "Committers" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:182 -#: documentation/content/en/books/dev-model/_index.adoc:236 #, no-wrap -msgid "269" +msgid "318" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:183 -#: documentation/content/en/books/dev-model/_index.adoc:237 +#: documentation/content/en/books/dev-model/_index.adoc:233 #, no-wrap msgid "Contributors" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:184 -#: documentation/content/en/books/dev-model/_index.adoc:239 +#: documentation/content/en/books/dev-model/_index.adoc:235 #, no-wrap msgid "~3000" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:187 msgid "" "Number of committers has been determined by going through CVS logs from " "January 1st, 2004 to December 31st, 2004 and contributors by going through " "the list of contributions and problem reports." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:192 msgid "" "The main resource in the FreeBSD community is its developers: the committers " "and contributors. It is with their contributions that the project can move " "forward. Regular developers are referred to as contributors. As of January " "1st, 2003, there are an estimated 5500 contributors on the project." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:196 msgid "" "Committers are developers with the privilege of being able to commit " "changes. These are usually the most active developers who are willing to " "spend their time not only integrating their own code but integrating code " "submitted by the developers who do not have this privilege. They are also " "the developers who elect the core team, and they have access to closed " "discussions." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:200 msgid "" "The project can be grouped into four distinct separate parts, and most " "developers will focus their involvement in one part of FreeBSD. The four " "parts are kernel development, userland development, ports and " "documentation. When referring to the base system, both kernel and userland " "is meant." msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:202 msgid "This split changes our table to look like this:" msgstr "" #. type: Plain text #: documentation/content/en/books/dev-model/_index.adoc:204 msgid "The FreeBSD Project's structure with committers in categories" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:210 #, no-wrap msgid "Category" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:218 #, no-wrap -msgid "Kernel" +msgid "Base" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:220 #, no-wrap -msgid "56" +msgid "164" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:222 #, no-wrap -msgid "Userland" +msgid "Docs" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:224 #, no-wrap -msgid "50" +msgid "45" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:226 #, no-wrap -msgid "Docs" +msgid "Ports" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:230 +#: documentation/content/en/books/dev-model/_index.adoc:228 #, no-wrap -msgid "Ports" +msgid "166" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:232 +#: documentation/content/en/books/dev-model/_index.adoc:230 #, no-wrap -msgid "120" +msgid "Total" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:234 +#: documentation/content/en/books/dev-model/_index.adoc:232 #, no-wrap -msgid "Total" +msgid "374" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:244 +#: documentation/content/en/books/dev-model/_index.adoc:240 msgid "" "Number of committers per area has been determined by going through CVS logs " "from January 1st, 2004 to December 31st, 2004. Note that many committers " "work in multiple areas, making the total number higher than the real number " -"of committers. The total number of committers at that time was 269." +"of committers. The total number of active unique committers on June 2022 " +"was 317." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:247 +#: documentation/content/en/books/dev-model/_index.adoc:243 msgid "" "Committers fall into three groups: committers who are only concerned with " "one area of the project (for instance file systems), committers who are " "involved only with one sub-project, and committers who commit to different " "parts of the code, including sub-projects. Because some committers work on " "different parts, the total number in the committers section of the table is " "higher than in the above table." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:252 +#: documentation/content/en/books/dev-model/_index.adoc:248 msgid "" "The kernel is the main building block of FreeBSD. While the userland " "applications are protected against faults in other userland applications, " "the entire system is vulnerable to errors in the kernel. This, combined " "with the vast amount of dependencies in the kernel and that it is not easy " "to see all the consequences of a kernel change, demands developers with a " "relative full understanding of the kernel. Multiple development efforts in " "the kernel also require a closer coordination than userland applications do." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:256 +#: documentation/content/en/books/dev-model/_index.adoc:252 msgid "" "The core utilities, known as userland, provide the interface that identifies " "FreeBSD, both user interface, shared libraries and external interfaces to " "connecting clients. Currently, 162 people are involved in userland " "development and maintenance, many being maintainers for their own part of " "the code. Maintainership will be discussed in the <> " "section." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:259 +#: documentation/content/en/books/dev-model/_index.adoc:255 msgid "" "Documentation is handled by <> and includes all " "documents surrounding the FreeBSD project, including the web pages. There " "were during 2004 101 people making commits to the FreeBSD Documentation " "Project." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:267 +#: documentation/content/en/books/dev-model/_index.adoc:263 msgid "" "Ports is the collection of meta-data that is needed to make software " "packages build correctly on FreeBSD. An example of a port is the port for " "the web-browser Mozilla. It contains information about where to fetch the " "source, what patches to apply and how, and how the package should be " "installed on the system. This allows automated tools to fetch, build and " "install the package. As of this writing, there are more than 12600 ports " "available. footnote:[Statistics are generated by counting the number of " "entries in the file fetched by portsdb by April 1st, 2005. portsdb is a part " "of the port sysutils/portupgrade.] , ranging from web servers to games, " "programming languages and most of the application types that are in use on " "modern computers. Ports will be discussed further in the section <>." msgstr "" #. type: Title == -#: documentation/content/en/books/dev-model/_index.adoc:269 +#: documentation/content/en/books/dev-model/_index.adoc:265 #, no-wrap msgid "Methodology model" msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:272 +#: documentation/content/en/books/dev-model/_index.adoc:268 #, no-wrap msgid "Development model" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:276 +#: documentation/content/en/books/dev-model/_index.adoc:272 msgid "" "There is no defined model for how people write code in FreeBSD. However, " "Niels Jørgenssen has suggested a model of how written code is integrated " "into the project." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:278 -#: documentation/content/en/books/dev-model/_index.adoc:852 +#: documentation/content/en/books/dev-model/_index.adoc:274 +#: documentation/content/en/books/dev-model/_index.adoc:848 msgid "Jørgenssen's model for change integration" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:283 -#: documentation/content/en/books/dev-model/_index.adoc:857 +#: documentation/content/en/books/dev-model/_index.adoc:279 +#: documentation/content/en/books/dev-model/_index.adoc:853 #, no-wrap msgid "Stage" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:284 -#: documentation/content/en/books/dev-model/_index.adoc:858 +#: documentation/content/en/books/dev-model/_index.adoc:280 +#: documentation/content/en/books/dev-model/_index.adoc:854 #, no-wrap msgid "Next if successful" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:286 -#: documentation/content/en/books/dev-model/_index.adoc:860 +#: documentation/content/en/books/dev-model/_index.adoc:282 +#: documentation/content/en/books/dev-model/_index.adoc:856 #, no-wrap msgid "Next if unsuccessful" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:287 +#: documentation/content/en/books/dev-model/_index.adoc:283 +#: documentation/content/en/books/dev-model/_index.adoc:290 #: documentation/content/en/books/dev-model/_index.adoc:294 #: documentation/content/en/books/dev-model/_index.adoc:298 #: documentation/content/en/books/dev-model/_index.adoc:302 -#: documentation/content/en/books/dev-model/_index.adoc:306 -#: documentation/content/en/books/dev-model/_index.adoc:309 -#: documentation/content/en/books/dev-model/_index.adoc:861 +#: documentation/content/en/books/dev-model/_index.adoc:305 +#: documentation/content/en/books/dev-model/_index.adoc:857 +#: documentation/content/en/books/dev-model/_index.adoc:864 #: documentation/content/en/books/dev-model/_index.adoc:868 #: documentation/content/en/books/dev-model/_index.adoc:872 #: documentation/content/en/books/dev-model/_index.adoc:876 -#: documentation/content/en/books/dev-model/_index.adoc:880 -#: documentation/content/en/books/dev-model/_index.adoc:883 +#: documentation/content/en/books/dev-model/_index.adoc:879 #, no-wrap msgid "code" msgstr "" +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:284 +#: documentation/content/en/books/dev-model/_index.adoc:287 +#: documentation/content/en/books/dev-model/_index.adoc:858 +#: documentation/content/en/books/dev-model/_index.adoc:861 +#, no-wrap +msgid "review" +msgstr "" + #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:288 #: documentation/content/en/books/dev-model/_index.adoc:291 #: documentation/content/en/books/dev-model/_index.adoc:862 #: documentation/content/en/books/dev-model/_index.adoc:865 #, no-wrap -msgid "review" +msgid "pre-commit test" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:292 #: documentation/content/en/books/dev-model/_index.adoc:295 #: documentation/content/en/books/dev-model/_index.adoc:866 #: documentation/content/en/books/dev-model/_index.adoc:869 #, no-wrap -msgid "pre-commit test" +msgid "development release" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:296 #: documentation/content/en/books/dev-model/_index.adoc:299 #: documentation/content/en/books/dev-model/_index.adoc:870 #: documentation/content/en/books/dev-model/_index.adoc:873 #, no-wrap -msgid "development release" +msgid "parallel debugging" msgstr "" #. type: Table #: documentation/content/en/books/dev-model/_index.adoc:300 #: documentation/content/en/books/dev-model/_index.adoc:303 #: documentation/content/en/books/dev-model/_index.adoc:874 #: documentation/content/en/books/dev-model/_index.adoc:877 #, no-wrap -msgid "parallel debugging" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:304 -#: documentation/content/en/books/dev-model/_index.adoc:307 -#: documentation/content/en/books/dev-model/_index.adoc:878 -#: documentation/content/en/books/dev-model/_index.adoc:881 -#, no-wrap msgid "production release" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:312 +#: documentation/content/en/books/dev-model/_index.adoc:308 msgid "" "The \"development release\" is the FreeBSD-CURRENT (\"-CURRENT\") branch and " "the \"production release\" is the FreeBSD-STABLE branch (\"-STABLE\") " "[<>]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:318 +#: documentation/content/en/books/dev-model/_index.adoc:314 msgid "" "This is a model for one change, and shows that after coding, developers seek " "community review and try integrating it with their own systems. After " "integrating the change into the development release, called FreeBSD-CURRENT, " "it is tested by many users and developers in the FreeBSD community. After " "it has gone through enough testing, it is merged into the production " "release, called FreeBSD-STABLE. Unless each stage is finished successfully, " "the developer needs to go back and make modifications in the code and " "restart the process. To integrate a change with either -CURRENT or -STABLE " "is called making a commit." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:321 +#: documentation/content/en/books/dev-model/_index.adoc:317 msgid "" "Jørgensen found that most FreeBSD developers work individually, meaning that " "this model is used in parallel by many developers on the different ongoing " "development efforts. A developer can also be working on multiple changes, " "so that while they are waiting for review or people to test one or more of " "their changes, they may be writing another change." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:324 +#: documentation/content/en/books/dev-model/_index.adoc:320 msgid "" "As each commit represents an increment, this is a massively incremental " "model. The commits are in fact so frequent that during one year footnote:" "[The period from January 1st, 2004 to December 31st, 2004 was examined to " "find this number.] , 85427 commits were made, making a daily average of 233 " "commits." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:328 +#: documentation/content/en/books/dev-model/_index.adoc:324 msgid "" "Within the \"code\" bracket in Jørgensen's model, each programmer has their " "own working style and follows their own development models. The bracket " "could very well have been called \"development\" as it includes requirements " "gathering and analysis, system and detailed design, implementation and " "verification. However, the only output from these stages is the source code " "or system documentation." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:334 +#: documentation/content/en/books/dev-model/_index.adoc:330 msgid "" "From a stepwise model's perspective (such as the waterfall model), the other " "brackets can be seen as further verification and system integration. This " "system integration is also important to see if a change is accepted by the " "community. Up until the code is committed, the developer is free to choose " "how much to communicate about it to the rest of the project. In order for -" "CURRENT to work as a buffer (so that bright ideas that had some undiscovered " "drawbacks can be backed out) the minimum time a commit should be in -CURRENT " "before merging it to -STABLE is 3 days. Such a merge is referred to as an " "MFC (Merge From Current)." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:337 +#: documentation/content/en/books/dev-model/_index.adoc:333 msgid "" "It is important to notice the word \"change\". Most commits do not contain " "radical new features, but are maintenance updates." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:340 +#: documentation/content/en/books/dev-model/_index.adoc:336 msgid "" "The only exceptions from this model are security fixes and changes to " "features that are deprecated in the -CURRENT branch. In these cases, " "changes can be committed directly to the -STABLE branch." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:345 +#: documentation/content/en/books/dev-model/_index.adoc:341 msgid "" "In addition to many people working on the project, there are many related " "projects to the FreeBSD Project. These are either projects developing brand " "new features, sub-projects or projects whose outcome is incorporated into " "FreeBSD footnote:[For instance, the development of the Bluetooth stack " "started as a sub-project until it was deemed stable enough to be merged into " "the -CURRENT branch. Now it is a part of the core FreeBSD system.]. These " "projects fit into the FreeBSD Project just like regular development efforts: " "they produce code that is integrated with the FreeBSD Project. However, " "some of them (like Ports and Documentation) have the privilege of being " "applicable to both branches or commit directly to both -CURRENT and -STABLE." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:352 +#: documentation/content/en/books/dev-model/_index.adoc:348 msgid "" "There is no standards to how design should be done, nor is design collected " "in a centralised repository. The main design is that of 4.4BSD. footnote:" "[According to Kirk McKusick, after 20 years of developing UNIX operating " "systems, the interfaces are for the most part figured out. There is " "therefore no need for much design. However, new applications of the system " "and new hardware leads to some implementations being more beneficial than " "those that used to be preferred. One example is the introduction of web " "browsing that made the normal TCP/IP connection a short burst of data rather " "than a steady stream over a longer period of time.] As design is a part of " "the \"Code\" bracket in Jørgenssen's model, it is up to every developer or " "sub-project how this should be done. Even if the design should be stored in " "a central repository, the output from the design stages would be of limited " "use as the differences of methodologies would make them poorly if at all " "interoperable. For the overall design of the project, the project relies on " "the sub-projects to negotiate fit interfaces between each other rather than " "to dictate interfacing." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:354 +#: documentation/content/en/books/dev-model/_index.adoc:350 #, no-wrap msgid "Release branches" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:358 +#: documentation/content/en/books/dev-model/_index.adoc:354 msgid "" "The releases of FreeBSD are best illustrated by a tree with many branches " "where each major branch represents a major version. Minor versions are " "represented by branches of the major branches." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:365 +#: documentation/content/en/books/dev-model/_index.adoc:361 msgid "" "In the following release tree, arrows that follow one-another in a " "particular direction represent a branch. Boxes with full lines and diamonds " "represent official releases. Boxes with dotted lines represent the " "development branch at that time. Security branches are represented by " "ovals. Diamonds differ from boxes in that they represent a fork, meaning a " "place where a branch splits into two branches where one of the branches " "becomes a sub-branch. For example, at 4.0-RELEASE the 4.0-CURRENT branch " "split into 4-STABLE and 5.0-CURRENT. At 4.5-RELEASE, the branch forked off a " "security branch called RELENG_4_5." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:366 +#: documentation/content/en/books/dev-model/_index.adoc:362 #, no-wrap msgid "The FreeBSD release tree" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' -#: documentation/content/en/books/dev-model/_index.adoc:367 +#: documentation/content/en/books/dev-model/_index.adoc:363 #, no-wrap msgid "Refer to table below for a screen-reader friendly version." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:367 +#: documentation/content/en/books/dev-model/_index.adoc:363 #, no-wrap msgid "branches.png" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:373 +#: documentation/content/en/books/dev-model/_index.adoc:369 #, no-wrap msgid "Major release" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:374 +#: documentation/content/en/books/dev-model/_index.adoc:370 #, no-wrap msgid "Forked from" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:376 +#: documentation/content/en/books/dev-model/_index.adoc:372 #, no-wrap msgid "Following minor releases" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:377 -#: documentation/content/en/books/dev-model/_index.adoc:397 +#: documentation/content/en/books/dev-model/_index.adoc:373 +#: documentation/content/en/books/dev-model/_index.adoc:393 #, no-wrap msgid "..." msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:381 +#: documentation/content/en/books/dev-model/_index.adoc:377 #, no-wrap msgid "3.0 Current (development branch)" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:384 +#: documentation/content/en/books/dev-model/_index.adoc:380 #, no-wrap msgid "Releng 3 branches: 3.0 Release to 3.5 Release, leading to 3.5.1 Release and the subsequent 3 Stable branch" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:385 +#: documentation/content/en/books/dev-model/_index.adoc:381 #, no-wrap msgid "4.0 Current (development branch)" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:386 +#: documentation/content/en/books/dev-model/_index.adoc:382 #, no-wrap msgid "3.1 Release" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:388 +#: documentation/content/en/books/dev-model/_index.adoc:384 #, no-wrap msgid "Releng 4 branches: 4.1 Release to 4.6 Release (and 4.6.2 Release), then 4.7 Release to 4.11 Release (all starting at 4.3 Release also leading to a Releng_4_n branch), and the subsequent 4 Release branch" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:389 +#: documentation/content/en/books/dev-model/_index.adoc:385 #, no-wrap msgid "5.0 Current (development branch)" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:390 +#: documentation/content/en/books/dev-model/_index.adoc:386 #, no-wrap msgid "4.0 Release" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:392 +#: documentation/content/en/books/dev-model/_index.adoc:388 #, no-wrap msgid "Releng 5 branches: 5.0 Release to 5.4 Release (all except 5.0 and 5.3 also leading to a Releng_5_n branch), and the subsequent 5 Release branch" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:393 +#: documentation/content/en/books/dev-model/_index.adoc:389 #, no-wrap msgid "6.0 Current (development branch)" msgstr "" #. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:394 +#: documentation/content/en/books/dev-model/_index.adoc:390 #, no-wrap msgid "5.3 Release" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:404 +#: documentation/content/en/books/dev-model/_index.adoc:400 msgid "" "The latest -CURRENT version is always referred to as -CURRENT, while the " "latest -STABLE release is always referred to as -STABLE. In this figure, -" "STABLE refers to 4-STABLE while -CURRENT refers to 5.0-CURRENT following 5.0-" "RELEASE. [<>]" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:411 +#: documentation/content/en/books/dev-model/_index.adoc:407 msgid "" "A \"major release\" is always made from the -CURRENT branch. However, the -" "CURRENT branch does not need to fork at that point in time, but can focus on " "stabilising. An example of this is that following 3.0-RELEASE, 3.1-RELEASE " "was also a continuation of the -CURRENT-branch, and -CURRENT did not become " "a true development branch until this version was released and the 3-STABLE " "branch was forked. When -CURRENT returns to becoming a development branch, " "it can only be followed by a major release. 5-STABLE is predicted to be " "forked off 5.0-CURRENT at around 5.3-RELEASE. It is not until 5-STABLE is " "forked that the development branch will be branded 6.0-CURRENT." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:413 +#: documentation/content/en/books/dev-model/_index.adoc:409 msgid "" "A \"minor release\" is made from the -CURRENT branch following a major " "release, or from the -STABLE branch." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:416 +#: documentation/content/en/books/dev-model/_index.adoc:412 msgid "" "Following and including, 4.3-RELEASEfootnote:[The first release this " "actually happened for was 4.5-RELEASE, but security branches were at the " "same time created for 4.3-RELEASE and 4.4-RELEASE.], when a minor release " "has been made, it becomes a \"security branch\". This is meant for " "organisations that do not want to follow the -STABLE branch and the " "potential new/changed features it offers, but instead require an absolutely " "stable environment, only updating to implement security updates. footnote:" "[There is a terminology overlap with respect to the word \"stable\", which " "leads to some confusion. The -STABLE branch is still a development branch, " "whose goal is to be useful for most people. If it is never acceptable for a " "system to get changes that are not announced at the time it is deployed, " "that system should run a security branch.]" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:421 +#: documentation/content/en/books/dev-model/_index.adoc:417 msgid "" "Each update to a security branch is called a \"patchlevel\". For every " "security enhancement that is done, the patchlevel number is increased, " "making it easy for people tracking the branch to see what security " "enhancements they have implemented. In cases where there have been " "especially serious security flaws, an entire new release can be made from a " "security branch. An example of this is 4.6.2-RELEASE." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:423 +#: documentation/content/en/books/dev-model/_index.adoc:419 #, no-wrap msgid "Model summary" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:426 +#: documentation/content/en/books/dev-model/_index.adoc:422 msgid "" "To summarise, the development model of FreeBSD can be seen as the following " "tree:" msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:427 +#: documentation/content/en/books/dev-model/_index.adoc:423 #, no-wrap msgid "The overall development model" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' -#: documentation/content/en/books/dev-model/_index.adoc:428 +#: documentation/content/en/books/dev-model/_index.adoc:424 #, no-wrap msgid "Refer to paragraphs below for a screen-reader friendly version." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:428 +#: documentation/content/en/books/dev-model/_index.adoc:424 #, no-wrap msgid "freebsd-code-model.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:431 +#: documentation/content/en/books/dev-model/_index.adoc:427 msgid "" "The tree of the FreeBSD development with ongoing development efforts and " "continuous integration." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:435 +#: documentation/content/en/books/dev-model/_index.adoc:431 msgid "" "The tree symbolises the release versions with major versions spawning new " "main branches and minor versions being versions of the main branch. The top " "branch is the -CURRENT branch where all new development is integrated, and " "the -STABLE branch is the branch directly below it. Below the -STABLE " "branch are old, unsupported versions." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:439 +#: documentation/content/en/books/dev-model/_index.adoc:435 msgid "" "Clouds of development efforts hang over the project where developers use the " "development models they see fit. The product of their work is then " "integrated into -CURRENT where it undergoes parallel debugging and is " "finally merged from -CURRENT into -STABLE. Security fixes are merged from -" "STABLE to the security branches." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:446 +#: documentation/content/en/books/dev-model/_index.adoc:442 msgid "" "Many committers have a special area of responsibility. These roles are " "called hats. These hats can be either project roles, such as public " "relations officer, or maintainer for a certain area of the code. Because " "this is a project where people give voluntarily of their spare time, people " "with assigned hats are not always available. They must therefore appoint a " "deputy that can perform the hat's role in their absence. The other option " "is to have the role held by a group." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:451 +#: documentation/content/en/books/dev-model/_index.adoc:447 msgid "" "Many of these hats are not formalised. Formalised hats have a charter " "stating the exact purpose of the hat along with its privileges and " "responsibilities. The writing of such charters is a new part of the " "project, and has thus yet to be completed for all hats. These hat " "descriptions are not such a formalisation, rather a summary of the role with " "links to the charter where available and contact addresses." msgstr "" #. type: Title == -#: documentation/content/en/books/dev-model/_index.adoc:453 +#: documentation/content/en/books/dev-model/_index.adoc:449 #, no-wrap msgid "Hats" msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:456 +#: documentation/content/en/books/dev-model/_index.adoc:452 #, no-wrap msgid "General Hats" msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:459 +#: documentation/content/en/books/dev-model/_index.adoc:455 #, no-wrap msgid "Contributor" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:462 +#: documentation/content/en/books/dev-model/_index.adoc:458 msgid "" "A Contributor contributes to the FreeBSD project either as a developer, as " "an author, by sending problem reports, or in other ways contributing to the " "progress of the project. A contributor has no special privileges in the " "FreeBSD project. [<>]" msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:464 +#: documentation/content/en/books/dev-model/_index.adoc:460 #, no-wrap msgid "Committer" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:469 +#: documentation/content/en/books/dev-model/_index.adoc:465 msgid "" "A person who has the required privileges to add their code or documentation " "to the repository. A committer has made a commit within the past 12 " "months. [<>] An active " "committer is a committer who has made an average of one commit per month " "during that time." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:472 +#: documentation/content/en/books/dev-model/_index.adoc:468 msgid "" "It is worth noting that there are no technical barriers to prevent someone, " "once having gained commit privileges to the main- or a sub-project, to make " "commits in parts of that project's source the committer did not specifically " "get permission to modify. However, when wanting to make modifications to " "parts a committer has not been involved in before, they should read the logs " "to see what has happened in this area before, and also read the MAINTAINERS " "file to see if the maintainer of this part has any special requests on how " "changes in the code should be made." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:474 +#: documentation/content/en/books/dev-model/_index.adoc:470 #, no-wrap msgid "Core Team" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:480 +#: documentation/content/en/books/dev-model/_index.adoc:476 msgid "" "The core team is elected by the committers from the pool of committers and " "serves as the board of directors of the FreeBSD project. It promotes active " "contributors to committers, assigns people to well-defined hats, and is the " "final arbiter of decisions involving which way the project should be " "heading. As of July 1st, 2004, core consisted of 9 members. Elections are " "held every two years." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:482 +#: documentation/content/en/books/dev-model/_index.adoc:478 #, no-wrap msgid "Maintainership" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:486 +#: documentation/content/en/books/dev-model/_index.adoc:482 msgid "" "Maintainership means that the person is responsible for what is allowed to " "go into that area of the code and has the final say should disagreements " "over the code occur. This involves proactive work aimed at stimulating " "contributions and reactive work in reviewing commits." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:489 +#: documentation/content/en/books/dev-model/_index.adoc:485 msgid "" "With the FreeBSD source comes the MAINTAINERS file that contains a one-line " "summary of how each maintainer would like contributions to be made. Having " "this notice and contact information enables developers to focus on the " "development effort rather than being stuck in a slow correspondence should " "the maintainer be unavailable for some time." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:492 +#: documentation/content/en/books/dev-model/_index.adoc:488 msgid "" "If the maintainer is unavailable for an unreasonably long period of time, " "and other people do a significant amount of work, maintainership may be " "switched without the maintainer's approval. This is based on the stance " "that maintainership should be demonstrated, not declared." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:494 +#: documentation/content/en/books/dev-model/_index.adoc:490 msgid "" "Maintainership of a particular piece of code is a hat that is not held as a " "group." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:496 +#: documentation/content/en/books/dev-model/_index.adoc:492 #, no-wrap msgid "Official Hats" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:501 +#: documentation/content/en/books/dev-model/_index.adoc:497 msgid "" "The official hats in the FreeBSD Project are hats that are more or less " "formalised and mainly administrative roles. They have the authority and " "responsibility for their area. The following list shows the responsibility " "lines and gives a description of each hat, including who it is held by." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:503 +#: documentation/content/en/books/dev-model/_index.adoc:499 #, no-wrap msgid "Documentation project manager" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:506 +#: documentation/content/en/books/dev-model/_index.adoc:502 msgid "" "<> architect is responsible for defining and " "following up documentation goals for the committers in the Documentation " "project, which they supervise." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:509 +#: documentation/content/en/books/dev-model/_index.adoc:505 msgid "" "Hat held by: The DocEng team mailto:doceng@FreeBSD.org[doceng@FreeBSD.org]. " "The https://www.freebsd.org/internal/doceng/[ DocEng Charter]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:511 +#: documentation/content/en/books/dev-model/_index.adoc:507 #, no-wrap msgid "Postmaster" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:515 +#: documentation/content/en/books/dev-model/_index.adoc:511 msgid "" "The Postmaster is responsible for mail being correctly delivered to the " "committers' email address. They are also responsible for ensuring that the " "mailing lists work and should take measures against possible disruptions of " "mail such as having troll-, spam- and virus-filters." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:517 +#: documentation/content/en/books/dev-model/_index.adoc:513 msgid "" "Hat currently held by: the Postmaster Team mailto:postmaster@FreeBSD." "org[postmaster@FreeBSD.org]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:519 +#: documentation/content/en/books/dev-model/_index.adoc:515 #, no-wrap msgid "Release Coordination" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:522 +#: documentation/content/en/books/dev-model/_index.adoc:518 msgid "The responsibilities of the Release Engineering Team are" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:524 +#: documentation/content/en/books/dev-model/_index.adoc:520 msgid "" "Setting, publishing and following a release schedule for official releases" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:525 +#: documentation/content/en/books/dev-model/_index.adoc:521 msgid "Documenting and formalising release engineering procedures" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:526 +#: documentation/content/en/books/dev-model/_index.adoc:522 msgid "Creation and maintenance of code branches" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:527 +#: documentation/content/en/books/dev-model/_index.adoc:523 msgid "" "Coordinating with the Ports and Documentation teams to have an updated set " "of packages and documentation released with the new releases" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:528 +#: documentation/content/en/books/dev-model/_index.adoc:524 msgid "" "Coordinating with the Security team so that pending releases are not " "affected by recently disclosed vulnerabilities." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:530 +#: documentation/content/en/books/dev-model/_index.adoc:526 msgid "" "Further information about the development process is available in the " "<> section." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:534 +#: documentation/content/en/books/dev-model/_index.adoc:530 msgid "" "Hat held by: the Release Engineering team mailto:re@FreeBSD.org[re@FreeBSD." "org]. The https://www.freebsd.org/releng/charter/[ Release Engineering " "Charter]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:536 +#: documentation/content/en/books/dev-model/_index.adoc:532 #, no-wrap msgid "Public Relations & Corporate Liaison" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:539 +#: documentation/content/en/books/dev-model/_index.adoc:535 msgid "The Public Relations & Corporate Liaison's responsibilities are:" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:541 +#: documentation/content/en/books/dev-model/_index.adoc:537 msgid "" "Making press statements when happenings that are important to the FreeBSD " "Project happen." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:542 +#: documentation/content/en/books/dev-model/_index.adoc:538 msgid "" "Being the official contact person for corporations that are working close " "with the FreeBSD Project." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:543 +#: documentation/content/en/books/dev-model/_index.adoc:539 msgid "" "Take steps to promote FreeBSD within both the Open Source community and the " "corporate world." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:544 +#: documentation/content/en/books/dev-model/_index.adoc:540 msgid "Handle the \"freebsd-advocacy\" mailing list." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:546 +#: documentation/content/en/books/dev-model/_index.adoc:542 msgid "This hat is currently not occupied." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:548 +#: documentation/content/en/books/dev-model/_index.adoc:544 #, no-wrap msgid "Security Officer" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:552 +#: documentation/content/en/books/dev-model/_index.adoc:548 msgid "" "The Security Officer's main responsibility is to coordinate information " "exchange with others in the security community and in the FreeBSD project. " "The Security Officer is also responsible for taking action when security " "problems are reported and promoting proactive development behavior when it " "comes to security." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:555 +#: documentation/content/en/books/dev-model/_index.adoc:551 msgid "" "Because of the fear that information about vulnerabilities may leak out to " "people with malicious intent before a patch is available, only the Security " "Officer, consisting of an officer, a deputy and two <> members, " "receive sensitive information about security issues. However, to create or " "implement a patch, the Security Officer has the Security Officer Team mailto:" "security-team@FreeBSD.org[security-team@FreeBSD.org] to help do the work." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:557 +#: documentation/content/en/books/dev-model/_index.adoc:553 #, no-wrap msgid "Source Repository Manager" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:562 +#: documentation/content/en/books/dev-model/_index.adoc:558 msgid "" "The Source Repository Manager is the only one who is allowed to directly " "modify the repository without using the <> tool. It is their " "responsibility to ensure that technical problems that arise in the " "repository are resolved quickly. The source repository manager has the " "authority to back out commits if this is necessary to resolve a SVN " "technical problem." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:564 +#: documentation/content/en/books/dev-model/_index.adoc:560 msgid "" "Hat held by: the Source Repository Manager mailto:clusteradm@FreeBSD." "org[clusteradm@FreeBSD.org]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:566 +#: documentation/content/en/books/dev-model/_index.adoc:562 #, no-wrap msgid "Election Manager" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:571 +#: documentation/content/en/books/dev-model/_index.adoc:567 msgid "" "The Election Manager is responsible for the <> " "process. The manager is responsible for running and maintaining the " "election system, and is the final authority should minor unforeseen events " "happen in the election process. Major unforeseen events have to be " "discussed with the <>" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:573 +#: documentation/content/en/books/dev-model/_index.adoc:569 msgid "Hat held only during elections." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:575 +#: documentation/content/en/books/dev-model/_index.adoc:571 #, no-wrap msgid "Web site Management" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:579 +#: documentation/content/en/books/dev-model/_index.adoc:575 msgid "" "The Web site Management hat is responsible for coordinating the rollout of " "updated web pages on mirrors around the world, for the overall structure of " "the primary web site and the system it is running upon. The management " "needs to coordinate the content with <> and acts " "as maintainer for the \"www\" tree." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:581 +#: documentation/content/en/books/dev-model/_index.adoc:577 msgid "" "Hat held by: the FreeBSD Webmasters mailto:www@FreeBSD.org[www@FreeBSD.org]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:583 +#: documentation/content/en/books/dev-model/_index.adoc:579 #, no-wrap msgid "Ports Manager" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:586 +#: documentation/content/en/books/dev-model/_index.adoc:582 msgid "" "The Ports Manager acts as a liaison between <> and the " "core project, and all requests from the project should go to the ports " "manager." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:589 +#: documentation/content/en/books/dev-model/_index.adoc:585 msgid "" "Hat held by: the Ports Management Team mailto:portmgr@FreeBSD." "org[portmgr@FreeBSD.org]. The https://www.freebsd.org/portmgr/charter/" "[Portmgr charter]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:591 +#: documentation/content/en/books/dev-model/_index.adoc:587 #, no-wrap msgid "Standards" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:594 +#: documentation/content/en/books/dev-model/_index.adoc:590 msgid "" "The Standards hat is responsible for ensuring that FreeBSD complies with the " "standards it is committed to , keeping up to date on the development of " "these standards and notifying FreeBSD developers of important changes that " "allows them to take a proactive role and decrease the time between a " "standards update and FreeBSD's compliancy." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:596 +#: documentation/content/en/books/dev-model/_index.adoc:592 msgid "" "Hat currently held by: Garrett Wollman mailto:wollman@FreeBSD." "org[wollman@FreeBSD.org]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:598 +#: documentation/content/en/books/dev-model/_index.adoc:594 #, no-wrap msgid "Core Secretary" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:602 +#: documentation/content/en/books/dev-model/_index.adoc:598 msgid "" "The Core Secretary's main responsibility is to write drafts to and publish " "the final Core Reports. The secretary also keeps the core agenda, thus " "ensuring that no balls are dropped unresolved." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:604 -msgid "Hat currently held by: {bofh}." +#: documentation/content/en/books/dev-model/_index.adoc:600 +msgid "Hat currently held by: {carlavilla}." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:606 +#: documentation/content/en/books/dev-model/_index.adoc:602 #, no-wrap msgid "Bugmeister" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:610 +#: documentation/content/en/books/dev-model/_index.adoc:606 msgid "" "The Bugmeister is responsible for ensuring that the maintenance database is " "in working order, that the entries are correctly categorised and that there " "are no invalid entries. They supervise bugbusters." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:612 +#: documentation/content/en/books/dev-model/_index.adoc:608 msgid "" "Hat currently held by: the Bugmeister Team mailto:bugmeister@FreeBSD." "org[bugmeister@FreeBSD.org]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:614 +#: documentation/content/en/books/dev-model/_index.adoc:610 #, no-wrap msgid "Donations Liaison Officer" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:617 +#: documentation/content/en/books/dev-model/_index.adoc:613 msgid "" "The task of the donations liaison officer is to match the developers with " "needs with people or organisations willing to make a donation." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:620 +#: documentation/content/en/books/dev-model/_index.adoc:616 msgid "" "Hat held by: the Donations Liaison Office mailto:donations@FreeBSD." "org[donations@FreeBSD.org]. The https://www.freebsd.org/donations/" "[ Donations Liaison Charter]." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:622 +#: documentation/content/en/books/dev-model/_index.adoc:618 #, no-wrap msgid "Admin" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:625 +#: documentation/content/en/books/dev-model/_index.adoc:621 msgid "(Also called \"FreeBSD Cluster Admin\")" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:628 +#: documentation/content/en/books/dev-model/_index.adoc:624 msgid "" "The admin team consists of the people responsible for administrating the " "computers that the project relies on for its distributed work and " "communication to be synchronised. It consists mainly of those people who " "have physical access to the servers." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:630 +#: documentation/content/en/books/dev-model/_index.adoc:626 msgid "" "Hat held by: the Admin team mailto:admin@FreeBSD.org[admin@FreeBSD.org]." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:632 +#: documentation/content/en/books/dev-model/_index.adoc:628 #, no-wrap msgid "Process dependent hats" msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:635 +#: documentation/content/en/books/dev-model/_index.adoc:631 #, no-wrap msgid "Report originator" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:638 +#: documentation/content/en/books/dev-model/_index.adoc:634 msgid "The person originally responsible for filing a Problem Report." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:640 +#: documentation/content/en/books/dev-model/_index.adoc:636 #, no-wrap msgid "Bugbuster" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:643 +#: documentation/content/en/books/dev-model/_index.adoc:639 msgid "" "A person who will either find the right person to solve the problem, or " "close the PR if it is a duplicate or otherwise not an interesting one." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:645 +#: documentation/content/en/books/dev-model/_index.adoc:641 #, no-wrap msgid "Mentor" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:648 +#: documentation/content/en/books/dev-model/_index.adoc:644 msgid "" "A mentor is a committer who takes it upon them to introduce a new committer " "to the project, both in terms of ensuring the new committer's setup is " "valid, that the new committer knows the available tools required in their " "work, and that the new committer knows what is expected of them in terms of " "behavior." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:650 +#: documentation/content/en/books/dev-model/_index.adoc:646 #, no-wrap msgid "Vendor" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:653 +#: documentation/content/en/books/dev-model/_index.adoc:649 msgid "" "The person(s) or organisation whom external code comes from and whom patches " "are sent to." msgstr "" #. type: Title ==== -#: documentation/content/en/books/dev-model/_index.adoc:655 +#: documentation/content/en/books/dev-model/_index.adoc:651 #, no-wrap msgid "Reviewers" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:658 +#: documentation/content/en/books/dev-model/_index.adoc:654 msgid "People on the mailing list where the request for review is posted." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:661 +#: documentation/content/en/books/dev-model/_index.adoc:657 msgid "" "The following section will describe the defined project processes. Issues " "that are not handled by these processes happen on an ad-hoc basis based on " "what has been customary to do in similar cases." msgstr "" #. type: Title == -#: documentation/content/en/books/dev-model/_index.adoc:663 +#: documentation/content/en/books/dev-model/_index.adoc:659 #, no-wrap msgid "Processes" msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:666 +#: documentation/content/en/books/dev-model/_index.adoc:662 #, no-wrap msgid "Adding new and removing old committers" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:671 +#: documentation/content/en/books/dev-model/_index.adoc:667 msgid "" "The Core team has the responsibility of giving and removing commit " "privileges to contributors. This can only be done through a vote on the " "core mailing list. The ports and documentation sub-projects can give commit " "privileges to people working on these projects, but have to date not removed " "such privileges." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:674 +#: documentation/content/en/books/dev-model/_index.adoc:670 msgid "" "Normally a contributor is recommended to core by a committer. For " "contributors or outsiders to contact core asking to be a committer is not " "well thought of and is usually rejected." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:677 +#: documentation/content/en/books/dev-model/_index.adoc:673 msgid "" "If the area of particular interest for the developer potentially overlaps " "with other committers' area of maintainership, the opinion of those " "maintainers is sought. However, it is frequently this committer that " "recommends the developer." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:680 +#: documentation/content/en/books/dev-model/_index.adoc:676 msgid "" "When a contributor is given committer status, they are assigned a mentor. " "The committer who recommended the new committer will, in the general case, " "take it upon themselves to be the new committers mentor." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:684 +#: documentation/content/en/books/dev-model/_index.adoc:680 msgid "" "When a contributor is given their commit bit, a <>-signed email is " "sent from either <>, <>, or " "nik@freebsd.org to both admins@freebsd.org, the assigned mentor, the new " "committer, and core confirming the approval of a new account. The mentor " "then gathers a password line, <> public key, and PGP key from the " "new committer and sends them to <>. When the new account is " "created, the mentor activates the commit bit and guides the new committer " "through the rest of the initial process." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:685 +#: documentation/content/en/books/dev-model/_index.adoc:681 #, no-wrap msgid "Process summary: adding a new committer" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' -#: documentation/content/en/books/dev-model/_index.adoc:686 -#: documentation/content/en/books/dev-model/_index.adoc:701 -#: documentation/content/en/books/dev-model/_index.adoc:744 -#: documentation/content/en/books/dev-model/_index.adoc:795 -#: documentation/content/en/books/dev-model/_index.adoc:917 +#: documentation/content/en/books/dev-model/_index.adoc:682 +#: documentation/content/en/books/dev-model/_index.adoc:697 +#: documentation/content/en/books/dev-model/_index.adoc:740 +#: documentation/content/en/books/dev-model/_index.adoc:791 +#: documentation/content/en/books/dev-model/_index.adoc:913 #, no-wrap msgid "Refer to paragraph below for a screen-reader friendly version." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:686 +#: documentation/content/en/books/dev-model/_index.adoc:682 #, no-wrap msgid "proc-add-committer.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:693 +#: documentation/content/en/books/dev-model/_index.adoc:689 msgid "" "When a contributor sends a piece of code, the receiving committer may choose " "to recommend that the contributor is given commit privileges. If they " "recommend this to core, core will vote on this recommendation. If the vote " "is in favour, a mentor is assigned the new committer and the new committer " "has to email their details to the administrators for an account to be " "created. After this, the new committer is all set to make their first " "commit. By tradition, this is by adding their name to the committers list." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:696 +#: documentation/content/en/books/dev-model/_index.adoc:692 msgid "" "Recall that a committer is considered to be someone who has committed code " "during the past 12 months. However, it is not until after 18 months of " "inactivity have passed that commit privileges are eligible to be revoked." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:699 +#: documentation/content/en/books/dev-model/_index.adoc:695 msgid "" "There are, however, no automatic procedures for doing this. For reactions " "concerning commit privileges not triggered by time, see <>." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:700 +#: documentation/content/en/books/dev-model/_index.adoc:696 #, no-wrap msgid "Process summary: removing a committer" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:701 +#: documentation/content/en/books/dev-model/_index.adoc:697 #, no-wrap msgid "proc-rm-committer.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:705 +#: documentation/content/en/books/dev-model/_index.adoc:701 msgid "" "When Core decides to clean up the committers list, they check who has not " "made a commit for the past 18 months. Committers who have not done so have " "their commit bits revoked and their account removed by the administrators." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:708 +#: documentation/content/en/books/dev-model/_index.adoc:704 msgid "" "It is also possible for committers to request that their commit bit be " "retired if for some reason they are no longer going to be actively " "committing to the project. In this case, it can also be restored at a later " "time by core, should the committer ask." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:710 +#: documentation/content/en/books/dev-model/_index.adoc:706 msgid "Roles in this process:" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:712 -#: documentation/content/en/books/dev-model/_index.adoc:804 -#: documentation/content/en/books/dev-model/_index.adoc:958 +#: documentation/content/en/books/dev-model/_index.adoc:708 +#: documentation/content/en/books/dev-model/_index.adoc:800 +#: documentation/content/en/books/dev-model/_index.adoc:954 msgid "<>" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:713 -#: documentation/content/en/books/dev-model/_index.adoc:763 +#: documentation/content/en/books/dev-model/_index.adoc:709 +#: documentation/content/en/books/dev-model/_index.adoc:759 msgid "<>" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:714 -#: documentation/content/en/books/dev-model/_index.adoc:762 -#: documentation/content/en/books/dev-model/_index.adoc:805 -#: documentation/content/en/books/dev-model/_index.adoc:959 +#: documentation/content/en/books/dev-model/_index.adoc:710 +#: documentation/content/en/books/dev-model/_index.adoc:758 +#: documentation/content/en/books/dev-model/_index.adoc:801 +#: documentation/content/en/books/dev-model/_index.adoc:955 msgid "<>" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:715 -#: documentation/content/en/books/dev-model/_index.adoc:928 +#: documentation/content/en/books/dev-model/_index.adoc:711 +#: documentation/content/en/books/dev-model/_index.adoc:924 msgid "<>" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:716 +#: documentation/content/en/books/dev-model/_index.adoc:712 msgid "<>" msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:720 +#: documentation/content/en/books/dev-model/_index.adoc:716 #, no-wrap msgid "Committing code" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:725 +#: documentation/content/en/books/dev-model/_index.adoc:721 msgid "" "The committing of new or modified code is one of the most frequent processes " "in the FreeBSD project and will usually happen many times a day. Committing " "of code can only be done by a \"committer\". Committers commit either code " "written by themselves, code submitted to them, or code submitted through a " "<>." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:731 +#: documentation/content/en/books/dev-model/_index.adoc:727 msgid "" "When code is written by the developer that is non-trivial, they should seek " "a code review from the community. This is done by sending mail to the " "relevant list asking for review. Before submitting the code for review, " "they should ensure it compiles correctly with the entire tree and that all " "relevant tests run. This is called \"pre-commit test\". When contributed " "code is received, it should be reviewed by the committer and tested the same " "way." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:734 +#: documentation/content/en/books/dev-model/_index.adoc:730 msgid "" "When a change is committed to a part of the source that has been contributed " "from an outside <>, the maintainer should ensure that the patch " "is contributed back to the vendor. This is in line with the open source " "philosophy and makes it easier to stay in sync with outside projects as the " "patches do not have to be reapplied every time a new release is made." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:739 +#: documentation/content/en/books/dev-model/_index.adoc:735 msgid "" "After the code has been available for review and no further changes are " "necessary, the code is committed into the development branch, -CURRENT. If " "the change applies for the -STABLE branch or the other branches as well, a " "\"Merge From Current\" (\"MFC\") countdown is set by the committer. After " "the number of days the committer chose when setting the MFC have passed, an " "email will automatically be sent to the committer reminding them to commit " "it to the -STABLE branch (and possibly security branches as well). Only " "security critical changes should be merged to security branches." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:742 +#: documentation/content/en/books/dev-model/_index.adoc:738 msgid "" "Delaying the commit to -STABLE and other branches allows for \"parallel " "debugging\" where the committed code is tested on a wide range of " "configurations. This makes changes to -STABLE to contain fewer faults and " "thus giving the branch its name." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:743 +#: documentation/content/en/books/dev-model/_index.adoc:739 #, no-wrap msgid "Process summary: A committer commits code" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:744 +#: documentation/content/en/books/dev-model/_index.adoc:740 #, no-wrap msgid "proc-commit.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:752 +#: documentation/content/en/books/dev-model/_index.adoc:748 msgid "" "When a committer has written a piece of code and wants to commit it, they " "first need to determine if it is trivial enough to go in without prior " "review or if it should first be reviewed by the developer community. If the " "code is trivial or has been reviewed and the committer is not the " "maintainer, they should consult the maintainer before proceeding. If the " "code is contributed by an outside vendor, the maintainer should create a " "patch that is sent back to the vendor. The code is then committed and then " "deployed by the users. Should they find problems with the code, this will " "be reported and the committer can go back to writing a patch. If a vendor " "is affected, they can choose to implement or ignore the patch." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:753 +#: documentation/content/en/books/dev-model/_index.adoc:749 #, no-wrap msgid "Process summary: A contributor commits code" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' -#: documentation/content/en/books/dev-model/_index.adoc:754 +#: documentation/content/en/books/dev-model/_index.adoc:750 #, no-wrap msgid "Refer to paragraphs below and above for a screen-reader friendly version." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:754 +#: documentation/content/en/books/dev-model/_index.adoc:750 #, no-wrap msgid "proc-contrib.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:758 +#: documentation/content/en/books/dev-model/_index.adoc:754 msgid "" "The difference when a contributor makes a code contribution is that they " "submit the code through the Bugzilla interface. This report is picked up by " "the maintainer who reviews the code and commits it." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:760 +#: documentation/content/en/books/dev-model/_index.adoc:756 msgid "Hats included in this process are:" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:764 +#: documentation/content/en/books/dev-model/_index.adoc:760 msgid "<>" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:765 +#: documentation/content/en/books/dev-model/_index.adoc:761 msgid "<>" msgstr "" -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:767 -msgid "" -"[<>] [<>]" -msgstr "" - #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:769 +#: documentation/content/en/books/dev-model/_index.adoc:765 #, no-wrap msgid "Core election" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:774 +#: documentation/content/en/books/dev-model/_index.adoc:770 msgid "" "Core elections are held at least every two years. footnote:[The first Core " "election was held September 2000] Nine core members are elected. New " "elections are held if the number of core members drops below seven. New " "elections can also be held should at least 1/3 of the active committers " "demand this." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:776 +#: documentation/content/en/books/dev-model/_index.adoc:772 msgid "" "When an election is to take place, core announces this at least 6 weeks in " "advance, and appoints an election manager to run the elections." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:781 +#: documentation/content/en/books/dev-model/_index.adoc:777 msgid "" "Only committers can be elected into core. The candidates need to submit " "their candidacy at least one week before the election starts, but can refine " "their statements until the voting starts. They are presented in the http://" "election.uk.freebsd.org/candidates.html[candidates list]. When writing " "their election statements, the candidates must answer a few standard " "questions submitted by the election manager." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:784 +#: documentation/content/en/books/dev-model/_index.adoc:780 msgid "" "During elections, the rule that a committer must have committed during the " "12 past months is followed strictly. Only these committers are eligible to " "vote." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:787 +#: documentation/content/en/books/dev-model/_index.adoc:783 msgid "" "When voting, the committer may vote once in support of up to nine nominees. " "The voting is done over a period of four weeks with reminders being posted " "on \"developers\" mailing list that is available to all committers." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:789 +#: documentation/content/en/books/dev-model/_index.adoc:785 msgid "" "The election results are released one week after the election ends, and the " "new core team takes office one week after the results have been posted." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:791 +#: documentation/content/en/books/dev-model/_index.adoc:787 msgid "" "Should there be a voting tie, this will be resolved by the new, " "unambiguously elected core members." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:793 +#: documentation/content/en/books/dev-model/_index.adoc:789 msgid "" "Votes and candidate statements are archived, but the archives are not " "publicly available." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:794 +#: documentation/content/en/books/dev-model/_index.adoc:790 #, no-wrap msgid "Process summary: Core elections" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:795 +#: documentation/content/en/books/dev-model/_index.adoc:791 #, no-wrap msgid "proc-elections.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:800 +#: documentation/content/en/books/dev-model/_index.adoc:796 msgid "" "Core announces the election and selects an election manager who prepares the " "elections, and when ready, candidates can announce their candidacies through " "submitting their statements. The committers then vote. After the vote is " "over, the election results are announced and the new core team takes office." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:802 +#: documentation/content/en/books/dev-model/_index.adoc:798 msgid "Hats in core elections are:" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:806 +#: documentation/content/en/books/dev-model/_index.adoc:802 msgid "<>" msgstr "" -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:808 -msgid "" -"[<>] [<>] " -"[<>]" -msgstr "" - #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:810 +#: documentation/content/en/books/dev-model/_index.adoc:806 #, no-wrap msgid "Development of new features" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:817 +#: documentation/content/en/books/dev-model/_index.adoc:813 msgid "" "Within the project there are sub-projects that are working on new features. " "These projects are generally done by one person [<>]. Every project is free to organise development as it sees fit. " "However, when the project is merged to the -CURRENT branch it must follow " "the project guidelines. When the code has been well tested in the -CURRENT " "branch and deemed stable enough and relevant to the -STABLE branch, it is " "merged to the -STABLE branch." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:823 +#: documentation/content/en/books/dev-model/_index.adoc:819 msgid "" "The requirements of the project are given by developer wishes, requests from " "the community in terms of direct requests by mail, Problem Reports, " "commercial funding for the development of features, or contributions by the " "scientific community. The wishes that come within the responsibility of a " "developer are given to that developer who prioritises their time between the " "request and their wishes. A common way to do this is maintain a TODO-list " "maintained by the project. Items that do not come within someone's " "responsibility are collected on TODO-lists unless someone volunteers to take " "the responsibility. All requests, their distribution and follow-up are " "handled by the <> tool." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:828 +#: documentation/content/en/books/dev-model/_index.adoc:824 msgid "" "Requirements analysis happens in two ways. The requests that come in are " "discussed on mailing lists, both within the main project and in the sub-" "project that the request belongs to or is spawned by the request. " "Furthermore, individual developers on the sub-project will evaluate the " "feasibility of the requests and determine the prioritisation between them. " "Other than archives of the discussions that have taken place, no outcome is " "created by this phase that is merged into the main project." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:831 +#: documentation/content/en/books/dev-model/_index.adoc:827 msgid "" "As the requests are prioritised by the individual developers on the basis of " "doing what they find interesting, necessary, or are funded to do, there is " "no overall strategy or prioritisation of what requests to regard as " "requirements and following up their correct implementation. However, most " "developers have some shared vision of what issues are more important, and " "they can ask for guidelines from the release engineering team." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:838 +#: documentation/content/en/books/dev-model/_index.adoc:834 msgid "" "The verification phase of the project is two-fold. Before committing code " "to the current-branch, developers request their code to be reviewed by their " "peers. This review is for the most part done by functional testing, but " "also code review is important. When the code is committed to the branch, a " "broader functional testing will happen, that may trigger further code review " "and debugging should the code not behave as expected. This second " "verification form may be regarded as structural verification. Although the " "sub-projects themselves may write formal tests such as unit tests, these are " "usually not collected by the main project and are usually removed before the " "code is committed to the current branch. footnote:[More and more tests are " "however performed when building the system (make world). These tests are " "however a very new addition and no systematic framework for these tests have " "yet been created.]" msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:840 +#: documentation/content/en/books/dev-model/_index.adoc:836 #, no-wrap msgid "Maintenance" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:847 +#: documentation/content/en/books/dev-model/_index.adoc:843 msgid "" "It is an advantage to the project to for each area of the source have at " "least one person that knows this area well. Some parts of the code have " "designated maintainers. Others have de-facto maintainers, and some parts of " "the system do not have maintainers. The maintainer is usually a person from " "the sub-project that wrote and integrated the code, or someone who has " "ported it from the platform it was written for. footnote:[sendmail and " "named are examples of code that has been merged from other platforms.] The " "maintainer's job is to make sure the code is in sync with the project the " "code comes from if it is contributed code, and apply patches submitted by " "the community or write fixes to issues that are discovered." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:850 +#: documentation/content/en/books/dev-model/_index.adoc:846 msgid "" "The main bulk of work that is put into the FreeBSD project is maintenance. " "[<>] has made a figure showing the life " "cycle of changes." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:888 +#: documentation/content/en/books/dev-model/_index.adoc:884 msgid "" "Here \"development release\" refers to the -CURRENT branch while " "\"production release\" refers to the -STABLE branch. The \"pre-commit test" "\" is the functional testing by peer developers when asked to do so or " "trying out the code to determine the status of the sub-project. \"Parallel " "debugging\" is the functional testing that can trigger more review, and " "debugging when the code is included in the -CURRENT branch." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:895 +#: documentation/content/en/books/dev-model/_index.adoc:891 msgid "" "As of this writing, there were 269 committers in the project. When they " "commit a change to a branch, that constitutes a new release. It is very " "common for users in the community to track a particular branch. The " "immediate existence of a new release makes the changes widely available " "right away and allows for rapid feedback from the community. This also " "gives the community the response time they expect on issues that are of " "importance to them. This makes the community more engaged, and thus allows " "for more and better feedback that again spurs more maintenance and " "ultimately should create a better product." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:897 +#: documentation/content/en/books/dev-model/_index.adoc:893 msgid "" "Before making changes to code in parts of the tree that has a history " "unknown to the committer, the committer is required to read the commit logs " "to see why certain features are implemented the way they are in order not to " "make mistakes that have previously either been thought through or resolved." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:899 +#: documentation/content/en/books/dev-model/_index.adoc:895 #, no-wrap msgid "Problem reporting" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:904 +#: documentation/content/en/books/dev-model/_index.adoc:900 msgid "" "Before FreeBSD 10, FreeBSD included a problem reporting tool called `send-" "pr`. Problems include bug reports, feature requests, feature enhancements " "and notices of new versions of external software that are included in the " "project. Although `send-pr` is available, users and developers are " "encouraged to submit issues using our https://bugs.freebsd.org/submit/" "[ problem report form]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:915 +#: documentation/content/en/books/dev-model/_index.adoc:911 msgid "" "Problem reports are sent to an email address where it is inserted into the " "Problem Reports maintenance database. A <> classifies the " "problem and sends it to the correct group or maintainer within the project. " "After someone has taken responsibility for the report, the report is being " "analysed. This analysis includes verifying the problem and thinking out a " "solution for the problem. Often feedback is required from the report " "originator or even from the FreeBSD community. Once a patch for the problem " "is made, the originator may be asked to try it out. Finally, the working " "patch is integrated into the project, and documented if applicable. It " "there goes through the regular maintenance cycle as described in section " "<>. These are the states a problem report can be in: " "open, analyzed, feedback, patched, suspended and closed. The suspended " "state is for when further progress is not possible due to the lack of " "information or for when the task would require so much work that nobody is " "working on it at the moment." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:916 +#: documentation/content/en/books/dev-model/_index.adoc:912 #, no-wrap msgid "Process summary: problem reporting" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:917 +#: documentation/content/en/books/dev-model/_index.adoc:913 #, no-wrap msgid "proc-pr.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:923 +#: documentation/content/en/books/dev-model/_index.adoc:919 msgid "" "A problem is reported by the report originator. It is then classified by a " "bugbuster and handed to the correct maintainer. They verify the problem and " "discuss the problem with the originator until they have enough information " "to create a working patch. This patch is then committed and the problem " "report is closed." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:925 +#: documentation/content/en/books/dev-model/_index.adoc:921 msgid "The roles included in this process are:" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:927 +#: documentation/content/en/books/dev-model/_index.adoc:923 msgid "<>" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:929 +#: documentation/content/en/books/dev-model/_index.adoc:925 msgid "<>" msgstr "" -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:931 -msgid "" -"[<>]. [<>]" -msgstr "" - #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:933 +#: documentation/content/en/books/dev-model/_index.adoc:929 #, no-wrap msgid "Reacting to misbehavior" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:939 +#: documentation/content/en/books/dev-model/_index.adoc:935 msgid "" "[<>] has a number of rules that committers " "should follow. However, it happens that these rules are broken. The " "following rules exist in order to be able to react to misbehavior. They " "specify what actions will result in how long a suspension of the committer's " "commit privileges." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:941 +#: documentation/content/en/books/dev-model/_index.adoc:937 msgid "" "Committing during code freezes without the approval of the Release " "Engineering team - 2 days" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:942 +#: documentation/content/en/books/dev-model/_index.adoc:938 msgid "Committing to a security branch without approval - 2 days" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:943 +#: documentation/content/en/books/dev-model/_index.adoc:939 msgid "Commit wars - 5 days to all participating parties" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:944 +#: documentation/content/en/books/dev-model/_index.adoc:940 msgid "Impolite or inappropriate behavior - 5 days" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:951 +#: documentation/content/en/books/dev-model/_index.adoc:947 msgid "" "For the suspensions to be efficient, any single core member can implement a " "suspension before discussing it on the \"core\" mailing list. Repeat " "offenders can, with a 2/3 vote by core, receive harsher penalties, including " "permanent removal of commit privileges. (However, the latter is always " "viewed as a last resort, due to its inherent tendency to create " "controversy.) All suspensions are posted to the \"developers\" mailing " "list, a list available to committers only." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:954 +#: documentation/content/en/books/dev-model/_index.adoc:950 msgid "" "It is important that you cannot be suspended for making technical errors. " "All penalties come from breaking social etiquette." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:956 +#: documentation/content/en/books/dev-model/_index.adoc:952 msgid "Hats involved in this process:" msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:961 +#: documentation/content/en/books/dev-model/_index.adoc:957 #, no-wrap msgid "Release engineering" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:967 +#: documentation/content/en/books/dev-model/_index.adoc:963 msgid "" "The FreeBSD project has a Release Engineering team with a principal release " "engineer that is responsible for creating releases of FreeBSD that can be " "brought out to the user community via the net or sold in retail outlets. " "Since FreeBSD is available on multiple platforms and releases for the " "different architectures are made available at the same time, the team has " "one person in charge of each architecture. Also, there are roles in the " "team responsible for coordinating quality assurance efforts, building a " "package set and for having an updated set of documents. When referring to " "the release engineer, a representative for the release engineering team is " "meant." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:974 +#: documentation/content/en/books/dev-model/_index.adoc:970 msgid "" "When a release is coming, the FreeBSD project changes shape somewhat. A " "release schedule is made containing feature- and code-freezes, release of " "interim releases and the final release. A feature-freeze means no new " "features are allowed to be committed to the branch without the release " "engineers' explicit consent. Code-freeze means no changes to the code (like " "bugs-fixes) are allowed to be committed without the release engineers' " "explicit consent. This feature- and code-freeze is known as stabilising. " "During the release process, the release engineer has the full authority to " "revert to older versions of code and thus \"back out\" changes should they " "find that the changes are not suitable to be included in the release." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:976 +#: documentation/content/en/books/dev-model/_index.adoc:972 msgid "There are three different kinds of releases:" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:978 +#: documentation/content/en/books/dev-model/_index.adoc:974 msgid "" ".0 releases are the first release of a major version. These are branched of " "the -CURRENT branch and have a significantly longer release engineering " "cycle due to the unstable nature of the -CURRENT branch" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:979 +#: documentation/content/en/books/dev-model/_index.adoc:975 msgid "" ".X releases are releases of the -STABLE branch. They are scheduled to come " "out every 4 months." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:980 +#: documentation/content/en/books/dev-model/_index.adoc:976 msgid "" ".X.Y releases are security releases that follow the .X branch. These come " "out only when sufficient security fixes have been merged since the last " "release on that branch. New features are rarely included, and the security " "team is far more involved in these than in regular releases." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:989 +#: documentation/content/en/books/dev-model/_index.adoc:985 msgid "" "For releases of the -STABLE-branch, the release process starts 45 days " "before the anticipated release date. During the first phase, the first 15 " "days, the developers merge what changes they have had in -CURRENT that they " "want to have in the release to the release branch. When this period is " "over, the code enters a 15 day code freeze in which only bug fixes, " "documentation updates, security-related fixes and minor device driver " "changes are allowed. These changes must be approved by the release engineer " "in advance. At the beginning of the last 15 day period a release candidate " "is created for widespread testing. Updates are less likely to be allowed " "during this period, except for important bug fixes and security updates. In " "this final period, all releases are considered release candidates. At the " "end of the release process, a release is created with the new version " "number, including binary distributions on web sites and the creation of CD-" "ROM images. However, the release is not considered \"really released\" " "until a <>-signed message stating exactly that, is sent to the " "mailing list freebsd-announce; anything labelled as a \"release\" before " "that may well be in-process and subject to change before the PGP-signed " "message is sent. footnote:[Many commercial vendors use these images to " "create CD-ROMs that are sold in retail outlets.]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:998 +#: documentation/content/en/books/dev-model/_index.adoc:994 msgid "" "The releases of the -CURRENT-branch (that is, all releases that end with " "\".0\") are very similar, but with twice as long timeframe. It starts 8 " "weeks prior to the release with announcement of the release time line. Two " "weeks into the release process, the feature freeze is initiated and " "performance tweaks should be kept to a minimum. Four weeks prior to the " "release, an official beta version is made available. Two weeks prior to " "release, the code is officially branched into a new version. This version " "is given release candidate status, and as with the release engineering of -" "STABLE, the code freeze of the release candidate is hardened. However, " "development on the main development branch can continue. Other than these " "differences, the release engineering processes are alike." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1000 +#: documentation/content/en/books/dev-model/_index.adoc:996 #, no-wrap -msgid "*.0 releases go into their own branch and are aimed mainly at early adopters. The branch then goes through a period of stabilisation, and it is not until the <> decides the demands to stability have been satisfied that the branch becomes -STABLE and -CURRENT targets the next major version. While this for the majority has been with *.1 versions, this is not a demand. \n" +msgid "*.0 releases go into their own branch and are aimed mainly at early adopters. The branch then goes through a period of stabilisation, and it is not until the <> decides the demands to stability have been satisfied that the branch becomes -STABLE and -CURRENT targets the next major version. While this for the majority has been with *.1 versions, this is not a demand.\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1005 +#: documentation/content/en/books/dev-model/_index.adoc:1001 msgid "" "Most releases are made when a given date that has been deemed a long enough " "time since the previous release comes. A target is set for having major " "releases every 18 months and minor releases every 4 months. The user " "community has made it very clear that security and stability cannot be " "sacrificed by self-imposed deadlines and target release dates. For slips of " "time not to become too long with regards to security and stability issues, " "extra discipline is required when committing changes to -STABLE." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1007 +#: documentation/content/en/books/dev-model/_index.adoc:1003 msgid "Make release schedule" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1008 +#: documentation/content/en/books/dev-model/_index.adoc:1004 msgid "Feature freeze" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1009 +#: documentation/content/en/books/dev-model/_index.adoc:1005 msgid "Code freeze" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1010 +#: documentation/content/en/books/dev-model/_index.adoc:1006 msgid "Make branch" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1011 +#: documentation/content/en/books/dev-model/_index.adoc:1007 msgid "Release candidate" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1012 +#: documentation/content/en/books/dev-model/_index.adoc:1008 msgid "" "Stabilize release (loop back to previous step as many times as necessary; " "when release is considered stable, proceed with next step)" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1013 +#: documentation/content/en/books/dev-model/_index.adoc:1009 msgid "Build packages" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1014 +#: documentation/content/en/books/dev-model/_index.adoc:1010 msgid "Warn mirrors" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1015 +#: documentation/content/en/books/dev-model/_index.adoc:1011 msgid "Publish release" msgstr "" -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1017 -msgid "[<>]" -msgstr "" - #. type: Title == -#: documentation/content/en/books/dev-model/_index.adoc:1019 +#: documentation/content/en/books/dev-model/_index.adoc:1015 #, no-wrap msgid "Tools" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1023 +#: documentation/content/en/books/dev-model/_index.adoc:1019 msgid "" "The major support tools for supporting the development process are Bugzilla, " "Mailman, and OpenSSH. These are externally developed tools and are commonly " "used in the open source world." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:1025 +#: documentation/content/en/books/dev-model/_index.adoc:1021 #, no-wrap msgid "Subversion (SVN)" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1029 +#: documentation/content/en/books/dev-model/_index.adoc:1025 msgid "" "Subversion (\"SVN\") is a system to handle multiple versions of text files " "and tracking who committed what changes and why. A project lives within a " "\"repository\" and different versions are considered different \"branches\"." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:1031 +#: documentation/content/en/books/dev-model/_index.adoc:1027 #, no-wrap msgid "Bugzilla" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1037 +#: documentation/content/en/books/dev-model/_index.adoc:1033 msgid "" "Bugzilla is a maintenance database consisting of a set of tools to track " "bugs at a central site. It supports the bug tracking process for sending " "and handling bugs as well as querying and updating the database and editing " "bug reports. The project uses its web interface to send \"Problem Reports\" " "to the project's central Bugzilla server. The committers also have web and " "command-line clients." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:1039 +#: documentation/content/en/books/dev-model/_index.adoc:1035 #, no-wrap msgid "Mailman" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1046 +#: documentation/content/en/books/dev-model/_index.adoc:1042 msgid "" "Mailman is a program that automates the management of mailing lists. The " "FreeBSD Project uses it to run 16 general lists, 60 technical lists, 4 " "limited lists and 5 lists with SVN commit logs. It is also used for many " "mailing lists set up and used by other people and projects in the FreeBSD " "community. General lists are lists for the general public, technical lists " "are mainly for the development of specific areas of interest, and closed " "lists are for internal communication not intended for the general public. " "The majority of all the communication in the project goes through these 85 " "lists [<>, Appendix C]." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:1048 +#: documentation/content/en/books/dev-model/_index.adoc:1044 #, no-wrap msgid "Pretty Good Privacy" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1053 +#: documentation/content/en/books/dev-model/_index.adoc:1049 msgid "" "Pretty Good Privacy, better known as PGP, is a cryptosystem using a public " "key architecture to allow people to digitally sign and/or encrypt " "information in order to ensure secure communication between two parties. A " "signature is used when sending information out to many recipients, enabling " "them to verify that the information has not been tampered with before they " "received it. In the FreeBSD Project this is the primary means of ensuring " "that information has been written by the person who claims to have written " "it, and not altered in transit." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:1055 +#: documentation/content/en/books/dev-model/_index.adoc:1051 #, no-wrap msgid "Secure Shell" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1062 +#: documentation/content/en/books/dev-model/_index.adoc:1058 msgid "" "Secure Shell is a standard for securely logging into a remote system and for " "executing commands on the remote system. It allows other connections, " "called tunnels, to be established and protected between the two involved " "systems. This standard exists in two primary versions, and only version two " "is used for the FreeBSD Project. The most common implementation of the " "standard is OpenSSH that is a part of the project's main distribution. " "Since its source is updated more often than FreeBSD releases, the latest " "version is also available in the ports tree." msgstr "" #. type: Title == -#: documentation/content/en/books/dev-model/_index.adoc:1064 +#: documentation/content/en/books/dev-model/_index.adoc:1060 #, no-wrap msgid "Sub-projects" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1067 +#: documentation/content/en/books/dev-model/_index.adoc:1063 msgid "" "Sub-projects are formed to reduce the amount of communication needed to " "coordinate the group of developers. When a problem area is sufficiently " "isolated, most communication would be within the group focusing on the " "problem, requiring less communication with the groups they communicate with " "than were the group not isolated." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:1069 +#: documentation/content/en/books/dev-model/_index.adoc:1065 #, no-wrap msgid "The Ports Subproject" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1073 +#: documentation/content/en/books/dev-model/_index.adoc:1069 msgid "" "A \"port\" is a set of meta-data and patches that are needed to fetch, " "compile and install correctly an external piece of software on a FreeBSD " "system. The amount of ports has grown at a tremendous rate, as shown by the " "following figure." msgstr "" #. type: Block title -#: documentation/content/en/books/dev-model/_index.adoc:1074 -#, no-wrap -msgid "Number of ports added between 1996 and 2008 [[fig-ports]]" -msgstr "" - -#. type: Positional ($1) AttributeList argument for macro 'image' -#: documentation/content/en/books/dev-model/_index.adoc:1075 +#: documentation/content/en/books/dev-model/_index.adoc:1070 #, no-wrap -msgid "Refer to tables below for a screen-reader friendly version." +msgid "Number of ports added between 1995 and 2022 [[fig-ports]]" msgstr "" -#. type: Target for macro image -#: documentation/content/en/books/dev-model/_index.adoc:1075 -#, no-wrap -msgid "portsstatus.png" +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1072 +msgid "image::portsstatus.svg" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1079 +#: documentation/content/en/books/dev-model/_index.adoc:1075 msgid "" "<> shows the number of ports available to FreeBSD in the period " -"1995 to 2008. It looks like the curve has first grown exponentially, and " +"1995 to 2022. It looks like the curve has first grown exponentially, and " "then from the middle of 2001 to the middle of 2007 grown linearly at a rate " "of about 2000 ports/year, before its growth rate gets lower." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1081 -msgid "Approximate dates each multiple of 1000 ports is reached" +#: documentation/content/en/books/dev-model/_index.adoc:1078 +msgid "" +"As the external software described by the port often is under continued " +"development, the amount of work required to maintain the ports is already " +"large, and increasing. This has led to the ports part of the FreeBSD " +"project gaining a more empowered structure, and is more and more becoming a " +"sub-project of the FreeBSD project." msgstr "" -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1086 -#, no-wrap -msgid "Number of ports" +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1081 +msgid "" +"Ports has its own core team with the <> as its leader, " +"and this team can appoint committers without FreeBSD Core's approval. " +"Unlike in the FreeBSD Project, where a lot of maintenance frequently is " +"rewarded with a commit bit, the ports sub-project contains many active " +"maintainers that are not committers." msgstr "" -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1088 -#, no-wrap -msgid "Approximate date" +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1085 +msgid "" +"Unlike the main project, the ports tree is not branched. Every release of " +"FreeBSD follows the current ports collection and has thus available updated " +"information on where to find programs and how to build them. This, however, " +"means that a port that makes dependencies on the system may need to have " +"variations depending on what version of FreeBSD it runs on." msgstr "" -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1089 -#, no-wrap -msgid "1000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1091 -#, no-wrap -msgid "Late 1997" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1092 -#: documentation/content/en/books/dev-model/_index.adoc:1163 -#: documentation/content/en/books/dev-model/_index.adoc:1164 -#, no-wrap -msgid "2000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1094 -#, no-wrap -msgid "Late 1998" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1095 -#, no-wrap -msgid "3000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1097 -#, no-wrap -msgid "Early 2000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1098 -#, no-wrap -msgid "4000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1100 -#, no-wrap -msgid "Late 2000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1101 -#, no-wrap -msgid "5000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1103 -#, no-wrap -msgid "Mid 2001" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1104 -#, no-wrap -msgid "6000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1106 -#, no-wrap -msgid "4th quarter of 2001" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1107 -#, no-wrap -msgid "7000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1109 -#, no-wrap -msgid "Mid 2002" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1110 -#, no-wrap -msgid "8000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1112 -#, no-wrap -msgid "4th quarter of 2002" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1113 -#, no-wrap -msgid "9000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1115 -#, no-wrap -msgid "Mid 2003" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1116 -#, no-wrap -msgid "10000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1118 -#, no-wrap -msgid "End of 2003" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1119 -#, no-wrap -msgid "11000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1121 -#, no-wrap -msgid "Mid 2004" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1122 -#, no-wrap -msgid "12000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1124 -#, no-wrap -msgid "End of 2004" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1125 -#, no-wrap -msgid "13000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1127 -#, no-wrap -msgid "Mid 2005" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1128 -#: documentation/content/en/books/dev-model/_index.adoc:1184 -#, no-wrap -msgid "14000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1130 -#, no-wrap -msgid "Early 2006" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1131 -#, no-wrap -msgid "15000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1133 -#, no-wrap -msgid "Mid 2006" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1134 -#, no-wrap -msgid "16000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1136 -#, no-wrap -msgid "3rd quarter 2006" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1137 -#, no-wrap -msgid "17000" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1138 -#, no-wrap -msgid "2nd quarter 2007" -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1141 -msgid "Approximate number of ports at the start of each year" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1146 -#, no-wrap -msgid "Year" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1148 -#, no-wrap -msgid "Approximate number of ports" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1149 -#, no-wrap -msgid "1995" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1151 -#, no-wrap -msgid "100" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1152 -#, no-wrap -msgid "1996" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1154 -#, no-wrap -msgid "300" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1155 -#, no-wrap -msgid "1997" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1157 -#, no-wrap -msgid "700" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1158 -#, no-wrap -msgid "1998" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1160 -#, no-wrap -msgid "1200" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1161 -#, no-wrap -msgid "1999" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1166 -#, no-wrap -msgid "2900" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1167 -#, no-wrap -msgid "2001" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1169 -#, no-wrap -msgid "4300" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1170 -#, no-wrap -msgid "2002" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1172 -#, no-wrap -msgid "6200" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1173 -#, no-wrap -msgid "2003" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1175 -#, no-wrap -msgid "8100" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1176 -#, no-wrap -msgid "2004" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1178 -#, no-wrap -msgid "10050" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1179 -#, no-wrap -msgid "2005" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1181 -#, no-wrap -msgid "12100" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1182 -#, no-wrap -msgid "2006" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1185 -#, no-wrap -msgid "2007" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1187 -#, no-wrap -msgid "16200" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1188 -#, no-wrap -msgid "2008" -msgstr "" - -#. type: Table -#: documentation/content/en/books/dev-model/_index.adoc:1189 -#, no-wrap -msgid "17900" -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1193 -msgid "" -"As the external software described by the port often is under continued " -"development, the amount of work required to maintain the ports is already " -"large, and increasing. This has led to the ports part of the FreeBSD " -"project gaining a more empowered structure, and is more and more becoming a " -"sub-project of the FreeBSD project." -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1196 -msgid "" -"Ports has its own core team with the <> as its leader, " -"and this team can appoint committers without FreeBSD Core's approval. " -"Unlike in the FreeBSD Project, where a lot of maintenance frequently is " -"rewarded with a commit bit, the ports sub-project contains many active " -"maintainers that are not committers." -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1200 -msgid "" -"Unlike the main project, the ports tree is not branched. Every release of " -"FreeBSD follows the current ports collection and has thus available updated " -"information on where to find programs and how to build them. This, however, " -"means that a port that makes dependencies on the system may need to have " -"variations depending on what version of FreeBSD it runs on." +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1088 +msgid "" +"With an unbranched ports repository it is not possible to guarantee that any " +"port will run on anything other than -CURRENT and -STABLE, in particular " +"older, minor releases. There is neither the infrastructure nor volunteer " +"time needed to guarantee this." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1203 -msgid "" -"With an unbranched ports repository it is not possible to guarantee that any " -"port will run on anything other than -CURRENT and -STABLE, in particular " -"older, minor releases. There is neither the infrastructure nor volunteer " -"time needed to guarantee this." -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1205 +#: documentation/content/en/books/dev-model/_index.adoc:1090 msgid "" "For efficiency of communication, teams depending on Ports, such as the " "release engineering team, have their own ports liaisons." msgstr "" #. type: Title === -#: documentation/content/en/books/dev-model/_index.adoc:1207 +#: documentation/content/en/books/dev-model/_index.adoc:1092 #, no-wrap msgid "The FreeBSD Documentation Project" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1212 +#: documentation/content/en/books/dev-model/_index.adoc:1097 msgid "" "The FreeBSD Documentation project was started January 1995. From the " "initial group of a project leader, four team leaders and 16 members, they " "are now a total of 44 committers. The documentation mailing list has just " "under 300 members, indicating that there is quite a large community around " "it." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1214 +#: documentation/content/en/books/dev-model/_index.adoc:1099 msgid "" "The goal of the Documentation project is to provide good and useful " "documentation of the FreeBSD project, thus making it easier for new users to " "get familiar with the system and detailing advanced features for the users." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1216 +#: documentation/content/en/books/dev-model/_index.adoc:1101 msgid "" "The main tasks in the Documentation project are to work on current projects " "in the \"FreeBSD Documentation Set\", and translate the documentation to " "other languages." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1220 +#: documentation/content/en/books/dev-model/_index.adoc:1105 msgid "" "Like the FreeBSD Project, documentation is split in the same branches. This " "is done so that there is always an updated version of the documentation for " "each version. Only documentation errors are corrected in the security " "branches." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1222 +#: documentation/content/en/books/dev-model/_index.adoc:1107 msgid "" "Like the ports sub-project, the Documentation project can appoint " "documentation committers without FreeBSD Core's approval. [<>]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1225 +#: documentation/content/en/books/dev-model/_index.adoc:1110 msgid "" "The Documentation project has extref:{fdp-primer}[a primer]. This is used " "both to introduce new project members to the standard tools and syntaxes and " "to act as a reference when working on the project." msgstr "" #. type: Title == -#: documentation/content/en/books/dev-model/_index.adoc:1230 +#: documentation/content/en/books/dev-model/_index.adoc:1115 #, no-wrap msgid "References" msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1234 +#: documentation/content/en/books/dev-model/_index.adoc:1119 msgid "" "[Brooks, 1995] Frederick P. Brooks. Copyright © 1975, 1995 Pearson Education " "Limited. 0201835959. Addison-Wesley Pub Co. The Mythical Man-Month. Essays " "on Software Engineering, Anniversary Edition (2nd Edition)." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1237 +#: documentation/content/en/books/dev-model/_index.adoc:1122 msgid "" "[Saers, 2003] Niklas Saers. Copyright © 2003. A project model for the " "FreeBSD Project. Candidatus Scientiarum thesis. http://niklas.saers.com/" "thesis." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1240 +#: documentation/content/en/books/dev-model/_index.adoc:1125 msgid "" "[Jørgensen, 2001] Niels Jørgensen. Copyright © 2001. Putting it All in the " "Trunk. Incremental Software Development in the FreeBSD Open Source Project. " "http://www.dat.ruc.dk/~nielsj/research/papers/freebsd.pdf." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1243 +#: documentation/content/en/books/dev-model/_index.adoc:1128 msgid "" "[PMI, 2000] Project Management Institute. Copyright © 1996, 2000 Project " "Management Institute. 1-880410-23-0. Project Management Institute. Newtown " "Square Pennsylvania USA . PMBOK Guide. A Guide to the Project Management " "Body of Knowledge, 2000 Edition." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1246 +#: documentation/content/en/books/dev-model/_index.adoc:1131 msgid "" "[FreeBSD, 2000A] Copyright © 2002 The FreeBSD Project. Core Bylaws. https://" "www.freebsd.org/internal/bylaws/." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1249 +#: documentation/content/en/books/dev-model/_index.adoc:1134 msgid "" "[FreeBSD, 2002A] Copyright © 2002 The FreeBSD Documentation Project. FreeBSD " "Developer's Handbook. extref:{developers-handbook}[Developers Handbook]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1252 +#: documentation/content/en/books/dev-model/_index.adoc:1137 msgid "" "[FreeBSD, 2002B] Copyright © 2002 The FreeBSD Project. Core team election " "2002. http://election.uk.freebsd.org/candidates.html." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1255 +#: documentation/content/en/books/dev-model/_index.adoc:1140 msgid "" "[FreeBSD, 2002C] Dag-Erling Smørgrav and Hiten Pandya. Copyright © 2002 The " "FreeBSD Documentation Project. The FreeBSD Documentation Project. Problem " "Report Handling Guidelines. extref:{pr-guidelines}[Problem Report Handling " "Guidelines]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1258 +#: documentation/content/en/books/dev-model/_index.adoc:1143 msgid "" "[FreeBSD, 2002D] Dag-Erling Smørgrav. Copyright © 2002 The FreeBSD " "Documentation Project. The FreeBSD Documentation Project. Writing FreeBSD " "Problem Reports. extref:{problem-reports}[Writing FreeBSD Problem Reports]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1261 +#: documentation/content/en/books/dev-model/_index.adoc:1146 msgid "" "[FreeBSD, 2001] Copyright © 2001 The FreeBSD Documentation Project. The " "FreeBSD Documentation Project. Committers Guide. extref:{committers-guide}" "[Committer's Guide]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1264 +#: documentation/content/en/books/dev-model/_index.adoc:1149 msgid "" "[FreeBSD, 2002E] Murray Stokely. Copyright © 2002 The FreeBSD Documentation " "Project. The FreeBSD Documentation Project. FreeBSD Release Engineering. " "extref:{releng}[FreeBSD Release Engineering]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1267 +#: documentation/content/en/books/dev-model/_index.adoc:1152 msgid "" "[FreeBSD, 2003A] The FreeBSD Documentation Project. FreeBSD Handbook. extref:" "{handbook}[FreeBSD Handbook]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1270 +#: documentation/content/en/books/dev-model/_index.adoc:1155 msgid "" "[FreeBSD, 2002F] Copyright © 2002 The FreeBSD Documentation Project. The " "FreeBSD Documentation Project. Contributors to FreeBSD. extref:{contributors}" "[Contributors to FreeBSD]." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1273 +#: documentation/content/en/books/dev-model/_index.adoc:1158 msgid "" "[FreeBSD, 2002G] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " "Core team elections 2002. http://election.uk.freebsd.org." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1276 +#: documentation/content/en/books/dev-model/_index.adoc:1161 msgid "" "[FreeBSD, 2002H] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " "Commit Bit Expiration Policy. 2002/04/06 15:35:30. https://www.freebsd.org/" "internal/expire-bits/." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1279 +#: documentation/content/en/books/dev-model/_index.adoc:1164 msgid "" "[FreeBSD, 2002I] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " "New Account Creation Procedure. 2002/08/19 17:11:27. https://www.freebsd.org/" "internal/new-account/." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1282 +#: documentation/content/en/books/dev-model/_index.adoc:1167 msgid "" "[FreeBSD, 2003B] Copyright © 2002 The FreeBSD Documentation Project. The " "FreeBSD Documentation Project. FreeBSD DocEng Team Charter. 2003/03/16 " "12:17. https://www.freebsd.org/internal/doceng/." msgstr "" #. type: Plain text -#: documentation/content/en/books/dev-model/_index.adoc:1284 +#: documentation/content/en/books/dev-model/_index.adoc:1169 msgid "" "[Lehey, 2002] Greg Lehey. Copyright © 2002 Greg Lehey. Greg Lehey. Two years " "in the trenches. The evolution of a software project. http://www.lemis.com/" "grog/In-the-trenches.pdf." msgstr "" diff --git a/documentation/content/en/books/handbook/bsdinstall/_index.po b/documentation/content/en/books/handbook/bsdinstall/_index.po index dcf3739063..bb99eb2096 100644 --- a/documentation/content/en/books/handbook/bsdinstall/_index.po +++ b/documentation/content/en/books/handbook/bsdinstall/_index.po @@ -1,3551 +1,3577 @@ # 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: 2022-10-01 13:49-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/handbook/bsdinstall/_index.adoc:1 #, no-wrap msgid "Guide about how to install FreeBSD, the minimum hardware requirements and supported architectures, how to create the installation media, etc" msgstr "" #. type: YAML Front Matter: part #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1 #, no-wrap msgid "Part I. Getting Started" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1 #, no-wrap msgid "Chapter 2. Installing FreeBSD" msgstr "" #. type: Title = #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:15 #, no-wrap msgid "Installing FreeBSD" msgstr "" #. type: Title == #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:53 #, no-wrap msgid "Synopsis" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:57 msgid "" "There are several different ways of getting FreeBSD to run, depending on the " "environment. Those are:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:59 msgid "" "Virtual Machine images, to download and import on a virtual environment of " "choice. These can be downloaded from the https://www.freebsd.org/where/" "[Download FreeBSD] page. There are images for KVM (\"qcow2\"), VMWare (\"vmdk" "\"), Hyper-V (\"vhd\"), and raw device images that are universally " "supported. These are not installation images, but rather the preconfigured " "(\"already installed\") instances, ready to run and perform post-" "installation tasks." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:60 msgid "" "Virtual Machine images available at Amazon's https://aws.amazon.com/" "marketplace/pp/prodview-ukzmy5dzc6nbq[AWS Marketplace], https://" "azuremarketplace.microsoft.com/en-US/marketplace/apps/thefreebsdfoundation." "freebsd-13_0[Microsoft Azure Marketplace], and https://console.cloud.google." "com/marketplace/product/freebsd-cloud/freebsd-13[Google Cloud Platform], to " "run on their respective hosting services. For more information on deploying " "FreeBSD on Azure please consult the relevant chapter in the https://docs." "microsoft.com/en-us/azure/virtual-machines/linux/freebsd-intro-on-" "azure[Azure Documentation]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:61 msgid "" "SD card images, for embedded systems such as Raspberry Pi or BeagleBone " "Black. These can be downloaded from the https://www.freebsd.org/where/" "[Download FreeBSD] page. These files must be uncompressed and written as a " "raw image to an SD card, from which the board will then boot." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:62 msgid "" "Installation images, to install FreeBSD on a hard drive for the usual " "desktop, laptop, or server systems." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:64 msgid "" "The rest of this chapter describes the fourth case, explaining how to " "install FreeBSD using the text-based installation program named bsdinstall." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:68 msgid "" "In general, the installation instructions in this chapter are written for " "the i386(TM) and AMD64 architectures. Where applicable, instructions " "specific to other platforms will be listed. There may be minor differences " "between the installer and what is shown here, so use this chapter as a " "general guide rather than as a set of literal instructions." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:72 msgid "" "Users who prefer to install FreeBSD using a graphical installer may be " "interested in https://ghostbsd.org[GhostBSD], https://www.midnightbsd." "org[MidnightBSD] or https://nomadbsd.org[NomadBSD]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:75 msgid "After reading this chapter, you will know:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:77 msgid "The minimum hardware requirements and FreeBSD supported architectures." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:78 msgid "How to create the FreeBSD installation media." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:79 msgid "How to start bsdinstall." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:80 msgid "" "The questions bsdinstall will ask, what they mean, and how to answer them." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:81 msgid "How to troubleshoot a failed installation." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:82 msgid "" "How to access a live version of FreeBSD before committing to an installation." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:84 msgid "Before reading this chapter, you should:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:86 msgid "" "Read the supported hardware list that shipped with the version of FreeBSD to " "be installed and verify that the system's hardware is supported." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:88 #, no-wrap msgid "Minimum Hardware Requirements" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:93 msgid "" "The hardware requirements to install FreeBSD vary by architecture. Hardware " "architectures and devices supported by a FreeBSD release are listed on the " "link:https://www.FreeBSD.org/releases/[FreeBSD Release Information] page. " "The link:https://www.FreeBSD.org/where/[FreeBSD download page] also has " "recommendations for choosing the correct image for different architectures." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:98 msgid "" "A FreeBSD installation requires a minimum of 96 MB of RAM and 1.5 GB of free " "hard drive space. However, such small amounts of memory and disk space are " "really only suitable for custom applications like embedded appliances. " "General-purpose desktop systems need more resources. 2-4 GB RAM and at " "least 8 GB hard drive space is a good starting point." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:100 msgid "These are the processor requirements for each architecture:" msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:101 #, no-wrap msgid "amd64" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:105 msgid "" "This is the most common desktop and laptop processor type, used in most " "modern systems. Intel(R) calls it Intel64. Other manufacturers sometimes " "call it x86-64." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:107 msgid "" "Examples of amd64 compatible processors include: AMD Athlon(TM)64, AMD " "Opteron(TM), multi-core Intel(R) Xeon(TM), and Intel(R) Core(TM) 2 and later " "processors." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:108 #, no-wrap msgid "i386" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:110 msgid "Older desktops and laptops often use this 32-bit, x86 architecture." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:114 msgid "" "Almost all i386-compatible processors with a floating point unit are " "supported. All Intel(R) processors 486 or higher are supported. However, " "binaries released by the project are compiled for the 686 processor, so a " "special build will be needed for 486 and 586 systems." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:118 msgid "" "FreeBSD will take advantage of Physical Address Extensions (PAE) support on " "CPUs with this feature. A kernel with the PAE feature enabled will detect " "memory above 4 GB and allow it to be used by the system. However, using PAE " "places constraints on device drivers and other features of FreeBSD." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:119 #, no-wrap msgid "arm64" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:122 msgid "" "Most embedded boards are 64-bit ARM computers. A number of arm64 servers " "are supported." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:123 #, no-wrap msgid "arm" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:125 msgid "Older armv7 boards are supported." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:126 #, no-wrap msgid "powerpc" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:129 msgid "" "All New World ROM Apple(R) Mac(R) systems with built-in USB are supported. " "SMP is supported on machines with multiple CPUs." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:131 msgid "A 32-bit kernel can only use the first 2 GB of RAM." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:133 #, no-wrap msgid "Pre-Installation Tasks" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:137 msgid "" "Once it has been determined that the system meets the minimum hardware " "requirements for installing FreeBSD, the installation file should be " "downloaded and the installation media prepared. Before doing this, check " "that the system is ready for an installation by verifying the items in this " "checklist:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:140 #, no-wrap msgid "*Back Up Important Data*\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:146 msgid "" "Before installing any operating system, _always_ backup all important data " "first. Do not store the backup on the system being installed. Instead, " "save the data to a removable disk such as a USB drive, another system on the " "network, or an online backup service. Test the backup before starting the " "installation to make sure it contains all of the needed files. Once the " "installer formats the system's disk, all data stored on that disk will be " "lost." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:147 #, no-wrap msgid "*Decide Where to Install FreeBSD*\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:150 msgid "" "If FreeBSD will be the only operating system installed, this step can be " "skipped. But if FreeBSD will share the disk with another operating system, " "decide which disk or partition will be used for FreeBSD." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:157 msgid "" "In the i386 and amd64 architectures, disks can be divided into multiple " "partitions using one of two partitioning schemes. A traditional _Master " "Boot Record_ (MBR) holds a partition table defining up to four _primary " "partitions_. For historical reasons, FreeBSD calls these primary partition " "_slices_. One of these primary partitions can be made into an _extended " "partition_ containing multiple _logical partitions_. The _GUID Partition " "Table_ (GPT) is a newer and simpler method of partitioning a disk. Common " "GPT implementations allow up to 128 partitions per disk, eliminating the " "need for logical partitions." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:161 msgid "" "The FreeBSD boot loader requires either a primary or GPT partition. If all " "of the primary or GPT partitions are already in use, one must be freed for " "FreeBSD. To create a partition without deleting existing data, use a " "partition resizing tool to shrink an existing partition and create a new " "partition using the freed space." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:165 msgid "" "A variety of free and commercial partition resizing tools are listed at " "http://en.wikipedia.org/wiki/List_of_disk_partitioning_software[http://en." "wikipedia.org/wiki/List_of_disk_partitioning_software]. GParted Live " "(https://gparted.org/livecd.php[https://gparted.org/livecd.php]) is a free " "live CD which includes the GParted partition editor. GParted is also " "included with many other Linux live CD distributions." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:170 msgid "" "When used properly, disk shrinking utilities can safely create space for " "creating a new partition. Since the possibility of selecting the wrong " "partition exists, always backup any important data and verify the integrity " "of the backup before modifying disk partitions." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:174 msgid "" "Disk partitions containing different operating systems make it possible to " "install multiple operating systems on one computer. An alternative is to " "use virtualization (crossref:virtualization[virtualization,Virtualization]) " "which allows multiple operating systems to run at the same time without " "modifying any disk partitions." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:175 #, no-wrap msgid "*Collect Network Information*\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:178 msgid "" "Some FreeBSD installation methods require a network connection in order to " "download the installation files. After any installation, the installer will " "offer to setup the system's network interfaces." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:181 msgid "" "If the network has a DHCP server, it can be used to provide automatic " "network configuration. If DHCP is not available, the following network " "information for the system must be obtained from the local network " "administrator or Internet service provider:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:184 msgid "Required Network Information" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:186 msgid "IP address" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:187 msgid "Subnet mask" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:188 msgid "IP address of default gateway" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:189 msgid "Domain name of the network" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:190 msgid "IP addresses of the network's DNS servers" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:192 #, no-wrap msgid "*Check for FreeBSD Errata*\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:197 msgid "" "Although the FreeBSD Project strives to ensure that each release of FreeBSD " "is as stable as possible, bugs occasionally creep into the process. On very " "rare occasions those bugs affect the installation process. As these " "problems are discovered and fixed, they are noted in the FreeBSD Errata " "(link:https://www.FreeBSD.org/releases/{rel130-current}R/errata/[https://www." "freebsd.org/releases/{rel130-current}R/errata/]) on the FreeBSD web site. " "Check the errata before installing to make sure that there are no problems " "that might affect the installation." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:199 msgid "" "Information and errata for all the releases can be found on the release " "information section of the FreeBSD web site (link:https://www.FreeBSD.org/" "releases/[https://www.freebsd.org/releases/])." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:201 #, no-wrap msgid "Prepare the Installation Media" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:205 msgid "" "The FreeBSD installer is not an application that can be run from within " "another operating system. Instead, download a FreeBSD installation file, " "burn it to the media associated with its file type and size (CD, DVD, or " "USB), and boot the system to install from the inserted media." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:209 msgid "" "FreeBSD installation files are available at link:https://www.FreeBSD.org/" "where/[www.freebsd.org/where/]. Each installation file's name includes the " "release version of FreeBSD, the architecture, and the type of file. For " "example, to install FreeBSD 13.0 on an amd64 system from a DVD, download [." "filename]#FreeBSD-13.0-RELEASE-amd64-dvd1.iso#, burn this file to a DVD, and " "boot the system with the DVD inserted." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:212 msgid "" "Installation files are available in several formats. The formats vary " "depending on computer architecture and media type." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:216 msgid "" "Additional installation files are included for computers that boot with UEFI " "(Unified Extensible Firmware Interface). The names of these files include " "the string [.filename]#uefi#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:218 msgid "File types:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:220 msgid "" "`-bootonly.iso`: This is the smallest installation file as it only contains " "the installer. A working Internet connection is required during installation " "as the installer will download the files it needs to complete the FreeBSD " "installation. This file should be burned to a CD using a CD burning " "application." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:221 msgid "" "`-disc1.iso`: This file contains all of the files needed to install FreeBSD, " "its source, and the Ports Collection. It should be burned to a CD using a CD " "burning application." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:222 msgid "" "`-dvd1.iso`: This file contains all of the files needed to install FreeBSD, " "its source, and the Ports Collection. It also contains a set of popular " "binary packages for installing a window manager and some applications so " "that a complete system can be installed from media without requiring a " "connection to the Internet. This file should be burned to a DVD using a DVD " "burning application." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:223 msgid "" "`-memstick.img`: This file contains all of the files needed to install " "FreeBSD, its source, and the Ports Collection. It should be burned to a USB " "stick using the instructions below." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:224 msgid "" "`-mini-memstick.img`: Like `-bootonly.iso`, does not include installation " "files, but downloads them as needed. A working internet connection is " "required during installation. Write this file to a USB stick as shown in " "<>." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:229 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:228 msgid "" -"After downloading the image file, download [.filename]#CHECKSUM.SHA256# from " -"the same directory. Calculate a _checksum_ for the image file. FreeBSD " -"provides man:sha256[1] for this, used as `sha256 _imagefilename_`. Other " -"operating systems have similar programs." +"After downloading the image file, download at least one _checksum_ file from " +"the same directory. There are two _checksum_ files available, named after " +"the release number and the architecture name. For example: [." +"filename]#CHECKSUM.SHA256-FreeBSD-13.1-RELEASE-amd64# and [." +"filename]#CHECKSUM.SHA512-FreeBSD-13.1-RELEASE-amd64#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:233 msgid "" -"Compare the calculated checksum with the one shown in [.filename]#CHECKSUM." -"SHA256#. The checksums must match exactly. If the checksums do not match, " -"the image file is corrupt and must be downloaded again." +"After downloading one of the files (or both), calculate the _checksum_ for " +"the image file and compare it with the one shown in the _checksum_ file. " +"Note that you need to compare the calculated _checksum_ against the correct " +"file, as they correspond to two different algorithms: SHA256 and SHA512. " +"FreeBSD provides man:sha256[1] and man:sha512[1] that can be used for " +"calculating the _checksum_. Other operating systems have similar programs." msgstr "" -#. type: Title ==== +#. type: Plain text #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:235 +msgid "" +"Verifying the _checksum_ in FreeBSD can be done automatically using man:" +"sha256sum[1] (and man:sha512sum[1]) by executing:" +msgstr "" + +#. type: delimited block . 4 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:240 +#, no-wrap +msgid "" +"% sha256sum -c CHECKSUM.SHA256-FreeBSD-13.1-RELEASE-amd64 FreeBSD-13.1-RELEASE-amd64-dvd1.iso\n" +"FreeBSD-13.1-RELEASE-amd64-dvd1.iso: OK\n" +msgstr "" + +#. type: Plain text +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:243 +msgid "" +"The checksums must match exactly. If the checksums do not match, the image " +"file is corrupt and must be downloaded again." +msgstr "" + +#. type: Title ==== +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:245 #, no-wrap msgid "Writing an Image File to USB" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:241 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:251 msgid "" "The [.filename]#\\*.img# file is an _image_ of the complete contents of a " "memory stick. It _cannot_ be copied to the target device as a file. " "Several applications are available for writing the [.filename]#*.img# to a " "USB stick. This section describes two of these utilities." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:246 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:256 msgid "" "Before proceeding, back up any important data on the USB stick. This " "procedure will erase the existing data on the stick." msgstr "" #. type: delimited block * 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:252 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:262 #, no-wrap msgid "*Procedure. Using `dd` to Write the Image* +\n" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:257 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:267 msgid "" "This example uses [.filename]#/dev/da0# as the target device where the image " "will be written. Be _very careful_ that the correct device is used as this " "command will destroy the existing data on the specified target device." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:260 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:270 msgid "" "The command-line utility is available on BSD, Linux(R), and Mac OS(R) " "systems. To burn the image using `dd`, insert the USB stick and determine " "its device name. Then, specify the name of the downloaded installation file " "and the device name for the USB stick. This example burns the amd64 " "installation image to the first USB device on an existing FreeBSD system." msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:264 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:274 #, no-wrap msgid "# dd if=FreeBSD-13.0-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=sync\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:271 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:281 msgid "" "If this command fails, verify that the USB stick is not mounted and that the " "device name is for the disk, not a partition. Some operating systems might " "require this command to be run with man:sudo[8]. The man:dd[1] syntax " "varies slightly across different platforms; for example, Mac OS(R) requires " "a lower-case `bs=1m`. Systems like Linux(R) might buffer writes. To force " "all writes to complete, use man:sync[8]." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:276 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:286 #, no-wrap msgid "*Procedure. Using Windows(R) to Write the Image* +\n" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:281 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:291 msgid "" "Be sure to give the correct drive letter as the existing data on the " "specified drive will be overwritten and destroyed." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:283 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:293 #, no-wrap msgid "*Obtaining Image Writer for Windows(R)*\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:286 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:296 msgid "" "Image Writer for Windows(R) is a free application that can correctly write " "an image file to a memory stick. Download it from https://sourceforge.net/" "projects/win32diskimager/[https://sourceforge.net/projects/win32diskimager/] " "and extract it into a folder." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:288 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:298 #, no-wrap msgid "*Writing the Image with Image Writer*\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:295 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:305 msgid "" "Double-click the Win32DiskImager icon to start the program. Verify that the " "drive letter shown under `Device` is the drive with the memory stick. Click " "the folder icon and select the image to be written to the memory stick. " "Click btn:[Save] to accept the image file name. Verify that everything is " "correct, and that no folders on the memory stick are open in other windows. " "When everything is ready, click btn:[Write] to write the image file to the " "memory stick." msgstr "" #. type: delimited block * 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:298 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:308 msgid "You are now ready to start installing FreeBSD." msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:300 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:310 #, no-wrap msgid "Starting the Installation" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:305 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:315 msgid "" "By default, the installation will not make any changes to the disk(s) before " "the following message:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:312 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:322 #, no-wrap msgid "" "Your changes will now be written to disk. If you\n" "have chosen to overwrite existing data, it will\n" "be PERMANENTLY ERASED. Are you sure you want to\n" "commit your changes?\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:316 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:326 msgid "" "The install can be exited at any time prior to this warning. If there is a " "concern that something is incorrectly configured, just turn the computer off " "before this point and no changes will be made to the system's disks." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:322 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:332 msgid "" "This section describes how to boot the system from the installation media " "which was prepared using the instructions in <>. When using a bootable USB stick, plug in the USB stick before " "turning on the computer. When booting from CD or DVD, turn on the computer " "and insert the media at the first opportunity. How to configure the system " "to boot from the inserted media depends upon the architecture." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:324 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:334 #, no-wrap msgid "Booting on i386(TM) and amd64" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:330 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:340 msgid "" "These architectures provide a BIOS menu for selecting the boot device. " "Depending upon the installation media being used, select the CD/DVD or USB " "device as the first boot device. Most systems also provide a key for " "selecting the boot device during startup without having to enter the BIOS. " "Typically, the key is either kbd:[F10], kbd:[F11], kbd:[F12], or kbd:" "[Escape]." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:332 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:342 msgid "" "If the computer loads the existing operating system instead of the FreeBSD " "installer, then either:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:334 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:344 msgid "" "The installation media was not inserted early enough in the boot process. " "Leave the media inserted and try restarting the computer." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:335 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:345 msgid "" "The BIOS changes were incorrect or not saved. Double-check that the right " "boot device is selected as the first boot device." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:336 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:346 msgid "" "This system is too old to support booting from the chosen media. In this " "case, the Plop Boot Manager (http://www.plop.at/en/bootmanagers.html[]) can " "be used to boot the system from the selected media." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:337 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:347 #, no-wrap msgid "Booting on PowerPC(R)" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:342 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:352 msgid "" "On most machines, holding kbd:[C] on the keyboard during boot will boot from " "the CD. Otherwise, hold kbd:[Command+Option+O+F], or kbd:[Windows+Alt+O+F] " "on non-Apple(R) keyboards. At the `0 >` prompt, enter" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:346 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:356 #, no-wrap msgid " boot cd:,\\ppc\\loader cd:0\n" msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:349 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:359 #, no-wrap msgid "FreeBSD Boot Menu" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:352 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:362 msgid "" "Once the system boots from the installation media, a menu similar to the " "following will be displayed:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:354 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:364 #, no-wrap msgid "FreeBSD Boot Loader Menu" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:355 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:365 #, no-wrap msgid "bsdinstall-newboot-loader-menu.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:361 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:371 msgid "" "By default, the menu will wait ten seconds for user input before booting " "into the FreeBSD installer or, if FreeBSD is already installed, before " "booting into FreeBSD. To pause the boot timer in order to review the " "selections, press kbd:[Space]. To select an option, press its highlighted " "number, character, or key. The following options are available." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:363 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:373 msgid "" "`Boot Multi User`: This will continue the FreeBSD boot process. If the boot " "timer has been paused, press kbd:[1], upper- or lower-case kbd:[B], or kbd:" "[Enter]." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:364 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:374 msgid "" "`Boot Single User`: This mode can be used to fix an existing FreeBSD " "installation as described in crossref:boot[boot-singleuser,“Single-User " "Mode”]. Press kbd:[2] or the upper- or lower-case kbd:[S] to enter this mode." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:365 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:375 msgid "" "`Escape to loader prompt`: This will boot the system into a repair prompt " "that contains a limited number of low-level commands. This prompt is " "described in crossref:boot[boot-loader,“Stage Three”]. Press kbd:[3] or kbd:" "[Esc] to boot into this prompt." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:366 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:376 msgid "`Reboot`: Reboots the system." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:367 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:377 msgid "`Kernel`: Loads a different kernel." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:368 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:378 msgid "" "`Boot Options`: Opens the menu shown in, and described under, <>." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:370 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:380 #, no-wrap msgid "FreeBSD Boot Options Menu" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:371 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:381 #, no-wrap msgid "bsdinstall-boot-options-menu.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:375 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:385 msgid "" "The boot options menu is divided into two sections. The first section can " "be used to either return to the main boot menu or to reset any toggled " "options back to their defaults." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:379 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:389 msgid "" "The next section is used to toggle the available options to `On` or `Off` by " "pressing the option's highlighted number or character. The system will " "always boot using the settings for these options until they are modified. " "Several options can be toggled using this menu:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:381 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:391 msgid "" "`ACPI Support`: If the system hangs during boot, try toggling this option to " "`Off`." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:382 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:392 msgid "" "`Safe Mode`: If the system still hangs during boot even with `ACPI Support` " "set to `Off`, try setting this option to `On`." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:383 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:393 msgid "" "`Single User`: Toggle this option to `On` to fix an existing FreeBSD " "installation as described in crossref:boot[boot-singleuser,“Single-User " "Mode”]. Once the problem is fixed, set it back to `Off`." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:384 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:394 msgid "" "`Verbose`: Toggle this option to `On` to see more detailed messages during " "the boot process. This can be useful when troubleshooting a piece of " "hardware." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:388 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:398 msgid "" "After making the needed selections, press kbd:[1] or kbd:[Backspace] to " "return to the main boot menu, then press kbd:[Enter] to continue booting " "into FreeBSD. A series of boot messages will appear as FreeBSD carries out " "its hardware device probes and loads the installation program. Once the " "boot is complete, the welcome menu shown in <> will " "be displayed." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:390 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:400 #, no-wrap msgid "Welcome Menu" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:391 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:401 #, no-wrap msgid "bsdinstall-choose-mode.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:399 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:409 msgid "" "Press kbd:[Enter] to select the default of btn:[Install] to enter the " "installer. The rest of this chapter describes how to use this installer. " "Otherwise, use the right or left arrows or the colorized letter to select " "the desired menu item. The btn:[Shell] can be used to access a FreeBSD " "shell in order to use command line utilities to prepare the disks before " "installation. The btn:[Live CD] option can be used to try out FreeBSD " "before installing it. The live version is described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:405 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:415 msgid "" "To review the boot messages, including the hardware device probe, press the " "upper- or lower-case kbd:[S] and then kbd:[Enter] to access a shell. At the " "shell prompt, type `more /var/run/dmesg.boot` and use the space bar to " "scroll through the messages. When finished, type `exit` to return to the " "welcome menu." msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:408 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:418 #, no-wrap msgid "Using bsdinstall" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:413 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:423 msgid "" "This section shows the order of the bsdinstall menus and the type of " "information that will be asked before the system is installed. Use the " "arrow keys to highlight a menu option, then kbd:[Space] to select or " "deselect that menu item. When finished, press kbd:[Enter] to save the " "selection and move onto the next screen." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:415 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:425 #, no-wrap msgid "Selecting the Keymap Menu" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:418 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:428 msgid "" "Before starting the process, bsdinstall will load the keymap files as show " "in <>." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:420 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:430 #, no-wrap msgid "Keymap Loading" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:421 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:431 #, no-wrap msgid "bsdinstall-keymap-loading.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:426 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:436 msgid "" "After the keymaps have been loaded, bsdinstall displays the menu shown in " "<>. Use the up and down arrows to select the keymap " "that most closely represents the mapping of the keyboard attached to the " "system. Press kbd:[Enter] to save the selection." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:428 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:438 #, no-wrap msgid "Keymap Selection Menu" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:429 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:439 #, no-wrap msgid "bsdinstall-keymap-10.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:435 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:445 msgid "" "Pressing kbd:[Esc] will exit this menu and use the default keymap. If the " "choice of keymap is not clear, [.guimenuitem]#United States of America " "ISO-8859-1# is also a safe option." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:438 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:448 msgid "" "In addition, when selecting a different keymap, the user can try the keymap " "and ensure it is correct before proceeding, as shown in <>." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:440 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:450 #, no-wrap msgid "Keymap Testing Menu" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:441 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:451 #, no-wrap msgid "bsdinstall-keymap-testing.png" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:444 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:449 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:454 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:459 #, no-wrap msgid "Setting the Hostname" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:447 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:457 msgid "" "The next bsdinstall menu is used to set the hostname for the newly installed " "system." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:450 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:460 #, no-wrap msgid "bsdinstall-config-hostname.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:454 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:464 msgid "" "Type in a hostname that is unique for the network. It should be a fully-" "qualified hostname, such as `machine3.example.com`." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:456 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:461 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:466 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:471 #, no-wrap msgid "Selecting Components to Install" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:459 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:469 msgid "Next, bsdinstall will prompt to select optional components to install." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:462 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:472 #, no-wrap msgid "bsdinstall-config-components.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:467 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:477 msgid "" "Deciding which components to install will depend largely on the intended use " "of the system and the amount of disk space available. The FreeBSD kernel " "and userland, collectively known as the _base system_, are always " "installed. Depending on the architecture, some of these components may not " "appear:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:469 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:479 msgid "" "`base-dbg` - Base tools like cat and ls, among many others, with debug " "symbols activated." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:470 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:480 msgid "`kernel-dbg` - Kernel and modules with debug symbols activated." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:471 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:481 msgid "" "`lib32-dbg` - Compatibility libraries for running 32-bit applications on a " "64-bit version of FreeBSD with debug symbols activated." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:472 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:482 msgid "" "`lib32` - Compatibility libraries for running 32-bit applications on a 64-" "bit version of FreeBSD." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:473 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:483 msgid "" "`ports` - The FreeBSD Ports Collection is a collection of files which " "automates the downloading, compiling and installation of third-party " "software packages. crossref:ports[ports,Installing Applications: Packages " "and Ports] discusses how to use the Ports Collection." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:479 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:489 msgid "" "The installation program does not check for adequate disk space. Select " "this option only if sufficient hard disk space is available. The FreeBSD " "Ports Collection takes up about {ports-size} of disk space." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:482 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:492 msgid "" "`src` - The complete FreeBSD source code for both the kernel and the " "userland. Although not required for the majority of applications, it may be " "required to build device drivers, kernel modules, or some applications from " "the Ports Collection. It is also used for developing FreeBSD itself. The " "full source tree requires 1 GB of disk space and recompiling the entire " "FreeBSD system requires an additional 5 GB of space." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:483 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:493 msgid "`tests` - FreeBSD Test Suite." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:485 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:492 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:495 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:502 #, no-wrap msgid "Installing from the Network" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:490 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:500 msgid "" "The menu shown in <> only appears when " "installing from a [.filename]#-bootonly.iso# or [.filename]#-mini-memstick." "img#, as this installation media does not hold copies of the installation " "files. Since the installation files must be retrieved over a network " "connection, this menu indicates that the network interface must be " "configured first. If this menu is shown in any step of the process, " "remember to follow the instructions in <>." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:493 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:503 #, no-wrap msgid "bsdinstall-netinstall-files.png" msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:496 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:506 #, no-wrap msgid "Allocating Disk Space" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:499 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:509 msgid "" "The next menu is used to determine the method for allocating disk space." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:501 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:511 #, no-wrap msgid "Partitioning Choices" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:502 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:512 #, no-wrap msgid "bsdinstall-zfs-partmenu.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:505 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:515 msgid "bsdinstall gives the user four methods for allocating disk space:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:507 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:517 msgid "" "`Auto (UFS)` partitioning automatically sets up the disk partitions using " "the `UFS` file system." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:508 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:518 msgid "" "`Manual` partitioning allows advanced users to create customized partitions " "from menu options." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:509 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:519 msgid "" "`Shell` opens a shell prompt where advanced users can create customized " "partitions using command-line utilities like man:gpart[8], man:fdisk[8], and " "man:bsdlabel[8]." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:510 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:520 msgid "" "`Auto (ZFS)` partitioning creates a root-on-ZFS system with optional GELI " "encryption support for _boot environments_." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:513 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:523 msgid "" "This section describes what to consider when laying out the disk " "partitions. It then demonstrates how to use the different partitioning " "methods." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:515 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:525 #, no-wrap msgid "Designing the Partition Layout" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:520 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:530 msgid "" "When laying out file systems, remember that hard drives transfer data faster " "from the outer tracks to the inner. Thus, smaller and heavier-accessed file " "systems should be closer to the outside of the drive, while larger " "partitions like [.filename]#/usr# should be placed toward the inner parts of " "the disk. It is a good idea to create partitions in an order similar to: [." "filename]#/#, swap, [.filename]#/var#, and [.filename]#/usr#." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:525 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:535 msgid "" "The size of the [.filename]#/var# partition reflects the intended machine's " "usage. This partition is used to hold mailboxes, log files, and printer " "spools. Mailboxes and log files can grow to unexpected sizes depending on " "the number of users and how long log files are kept. On average, most users " "rarely need more than about a gigabyte of free disk space in [.filename]#/" "var#." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:531 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:541 msgid "" "Sometimes, a lot of disk space is required in [.filename]#/var/tmp#. When " "new software is installed, the packaging tools extract a temporary copy of " "the packages under [.filename]#/var/tmp#. Large software packages, like " "Firefox or LibreOffice may be tricky to install if there is not enough disk " "space under [.filename]#/var/tmp#." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:535 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:545 msgid "" "The [.filename]#/usr# partition holds many of the files which support the " "system, including the FreeBSD Ports Collection and system source code. At " "least 2 gigabytes of space is recommended for this partition." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:538 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:548 msgid "" "When selecting partition sizes, keep the space requirements in mind. " "Running out of space in one partition while barely using another can be a " "hassle." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:542 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:552 msgid "" "As a rule of thumb, the swap partition should be about double the size of " "physical memory (RAM). Systems with minimal RAM may perform better with " "more swap. Configuring too little swap can lead to inefficiencies in the VM " "page scanning code and might create issues later if more memory is added." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:549 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:559 msgid "" "On larger systems with multiple SCSI disks or multiple IDE disks operating " "on different controllers, it is recommended that swap be configured on each " "drive, up to four drives. The swap partitions should be approximately the " "same size. The kernel can handle arbitrary sizes, but internal data " "structures scale to 4 times the largest swap partition. Keeping the swap " "partitions near the same size will allow the kernel to optimally stripe swap " "space across disks. Large swap sizes are fine, even if swap is not used " "much. It might be easier to recover from a runaway program before being " "forced to reboot." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:553 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:563 msgid "" "By properly partitioning a system, fragmentation introduced in the smaller " "write-heavy partitions will not bleed over into the mostly read partitions. " "Keeping the write-loaded partitions closer to the disk's edge will increase " "I/O performance in the partitions where it occurs the most. While I/O " "performance in the larger partitions may be needed, shifting them more " "toward the edge of the disk will not lead to a significant performance " "improvement over moving [.filename]#/var# to the edge." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:555 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:565 #, no-wrap msgid "Guided Partitioning Using UFS" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:559 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:569 msgid "" "When this method is selected, a menu will display the available disk(s). If " "multiple disks are connected, choose the one where FreeBSD is to be " "installed." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:561 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:571 #, no-wrap msgid "Selecting from Multiple Disks" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:562 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:572 #, no-wrap msgid "bsdinstall-part-guided-disk.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:567 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:577 msgid "" "Once the disk is selected, the next menu prompts to install to either the " "entire disk or to create a partition using free space. If btn:[Entire Disk] " "is chosen, a general partition layout filling the whole disk is " "automatically created. Selecting btn:[Partition] creates a partition layout " "from the unused space on the disk." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:569 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:579 #, no-wrap msgid "Selecting Entire Disk or Partition" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:570 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:580 #, no-wrap msgid "bsdinstall-part-entire-part.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:573 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:583 msgid "" "After btn:[Entire Disk] is chosen, bsdinstall displays a dialog indicating " "that the disk will be erased." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:575 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:585 #, no-wrap msgid "Confirmation" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:576 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:586 #, no-wrap msgid "bsdinstall-ufs-warning.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:583 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:593 msgid "" "The next menu shows a list with the available partition scheme types. GPT " "is usually the most appropriate choice for amd64 computers. Older computers " "that are not compatible with GPT should use MBR. The other partition " "schemes are generally used for uncommon or older computers. More " "information is available in <>." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:585 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:595 #, no-wrap msgid "Select Partition Scheme" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:586 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:621 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:596 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:631 #, no-wrap msgid "bsdinstall-part-manual-partscheme.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:592 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:602 msgid "" "After the partition layout has been created, review it to ensure it meets " "the needs of the installation. Selecting btn:[Revert] will reset the " "partitions to their original values. Pressing btn:[Auto] will recreate the " "automatic FreeBSD partitions. Partitions can also be manually created, " "modified, or deleted. When the partitioning is correct, select btn:[Finish] " "to continue with the installation." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:594 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:604 #, no-wrap msgid "Review Created Partitions" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:595 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:605 #, no-wrap msgid "bsdinstall-part-review.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:601 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:611 msgid "" "Once the disks are configured, the next menu provides the last chance to " "make changes before the selected drives are formatted. If changes need to " "be made, select btn:[Back] to return to the main partitioning menu. btn:" "[Revert & Exit] exits the installer without making any changes to the " "drive. Otherwise, select btn:[Commit] to start the installation process." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:603 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:613 #, no-wrap msgid "Final Confirmation" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:604 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:614 #, no-wrap msgid "bsdinstall-final-confirmation.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:607 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:617 msgid "" "To continue with the installation process, go to <>." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:609 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:619 #, no-wrap msgid "Manual Partitioning" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:612 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:622 msgid "Selecting this method opens the partition editor:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:614 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:620 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:651 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:624 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:630 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:661 #, no-wrap msgid "Manually Create Partitions" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:615 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:625 #, no-wrap msgid "bsdinstall-part-manual-create.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:618 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:628 msgid "" "Highlight the installation drive ([.filename]#ada0# in this example) and " "select btn:[Create] to display a menu of available partition schemes:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:626 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:636 msgid "" "GPT is usually the most appropriate choice for amd64 computers. Older " "computers that are not compatible with GPT should use MBR. The other " "partition schemes are generally used for uncommon or older computers." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:628 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:638 #, no-wrap msgid "Partitioning Schemes" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:632 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:642 #, no-wrap msgid "Abbreviation" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:634 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:644 #, no-wrap msgid "Description" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:635 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:645 #, no-wrap msgid "APM" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:637 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:647 #, no-wrap msgid "Apple Partition Map, used by PowerPC(R)." msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:638 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:648 #, no-wrap msgid "BSD" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:640 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:650 #, no-wrap msgid "BSD label without an MBR, sometimes called _dangerously dedicated mode_ as non-BSD disk utilities may not recognize it." msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:641 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:651 #, no-wrap msgid "GPT" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:643 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:653 #, no-wrap msgid "GUID Partition Table (http://en.wikipedia.org/wiki/GUID_Partition_Table[http://en.wikipedia.org/wiki/GUID_Partition_Table])." msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:644 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:654 #, no-wrap msgid "MBR" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:645 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:655 #, no-wrap msgid "Master Boot Record (http://en.wikipedia.org/wiki/Master_boot_record[http://en.wikipedia.org/wiki/Master_boot_record])." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:649 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:659 msgid "" "After the partitioning scheme has been selected and created, select btn:" "[Create] again to create the partitions. The kbd:[Tab] key is used to move " "the cursor between fields." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:652 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:662 #, no-wrap msgid "bsdinstall-part-manual-addpart.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:655 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:665 msgid "A standard FreeBSD GPT installation uses at least three partitions:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:657 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:667 msgid "`freebsd-boot` - Holds the FreeBSD boot code." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:658 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:668 msgid "`freebsd-ufs` - A FreeBSD UFS file system." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:659 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:669 msgid "" "`freebsd-zfs` - A FreeBSD ZFS file system. More information about ZFS is " "available in crossref:zfs[zfs,The Z File System (ZFS)]." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:660 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:670 msgid "`freebsd-swap` - FreeBSD swap space." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:662 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:672 msgid "" "Refer to man:gpart[8] for descriptions of the available GPT partition types." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:665 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:675 msgid "" "Multiple file system partitions can be created. Some people prefer a " "traditional layout with separate partitions for [.filename]#/#, [.filename]#/" "var#, [.filename]#/tmp#, and [.filename]#/usr#. See <> for an example." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:667 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:677 msgid "" "The `Size` may be entered with common abbreviations: _K_ for kilobytes, _M_ " "for megabytes, or _G_ for gigabytes." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:673 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:683 msgid "" "Proper sector alignment provides the best performance, and making partition " "sizes even multiples of 4K bytes helps to ensure alignment on drives with " "either 512-byte or 4K-byte sectors. Generally, using partition sizes that " "are even multiples of 1M or 1G is the easiest way to make sure every " "partition starts at an even multiple of 4K. There is one exception: the " "_freebsd-boot_ partition should be no larger than 512K due to current boot " "code limitations." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:677 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:687 msgid "" "A `Mountpoint` is needed if the partition will contain a file system. If " "only a single UFS partition will be created, the mountpoint should be [." "filename]#/#." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:683 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:693 msgid "" "The `Label` is a name by which the partition will be known. Drive names or " "numbers can change if the drive is connected to a different controller or " "port, but the partition label does not change. Referring to labels instead " "of drive names and partition numbers in files like [.filename]#/etc/fstab# " "makes the system more tolerant to hardware changes. GPT labels appear in [." "filename]#/dev/gpt/# when a disk is attached. Other partitioning schemes " "have different label capabilities and their labels appear in different " "directories in [.filename]#/dev/#." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:689 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:699 msgid "" "Use a unique label on every partition to avoid conflicts from identical " "labels. A few letters from the computer's name, use, or location can be " "added to the label. For instance, use `labroot` or `rootfslab` for the UFS " "root partition on the computer named `lab`." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:692 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:702 #, no-wrap msgid "Creating Traditional Split File System Partitions" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:699 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:709 msgid "" "For a traditional partition layout where the [.filename]#/#, [.filename]#/" "var#, [.filename]#/tmp#, and [.filename]#/usr# directories are separate file " "systems on their own partitions, create a GPT partitioning scheme, then " "create the partitions as shown. Partition sizes shown are typical for a 20G " "target disk. If more space is available on the target disk, larger swap or " "[.filename]#/var# partitions may be useful. Labels shown here are prefixed " "with `ex` for \"example\", but readers should use other unique label values " "as described above." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:701 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:711 msgid "" "By default, FreeBSD's [.filename]#gptboot# expects the first UFS partition " "to be the [.filename]#/# partition." msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:706 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:716 #, no-wrap msgid "Partition Type" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:707 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:717 #, no-wrap msgid "Size" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:708 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:718 #, no-wrap msgid "Mountpoint" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:710 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:720 #, no-wrap msgid "Label" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:711 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:721 #, no-wrap msgid "`freebsd-boot`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:712 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:722 #, no-wrap msgid "`512K`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:716 #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:726 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:731 #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:736 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:741 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:746 #, no-wrap msgid "`freebsd-ufs`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:717 #: documentation/content/en/books/handbook/bsdinstall/_index.adoc:727 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:737 #, no-wrap msgid "`2G`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:718 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:728 #, no-wrap msgid "[.filename]#/#" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:720 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:730 #, no-wrap msgid "`exrootfs`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:721 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:731 #, no-wrap msgid "`freebsd-swap`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:722 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:732 #, no-wrap msgid "`4G`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:725 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:735 #, no-wrap msgid "`exswap`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:728 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:738 #, no-wrap msgid "[.filename]#/var#" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:730 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:740 #, no-wrap msgid "`exvarfs`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:732 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:742 #, no-wrap msgid "`1G`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:733 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:743 #, no-wrap msgid "[.filename]#/tmp#" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:735 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:745 #, no-wrap msgid "`extmpfs`" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:737 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:747 #, no-wrap msgid "accept the default (remainder of the disk)" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:738 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:748 #, no-wrap msgid "[.filename]#/usr#" msgstr "" #. type: Table -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:739 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:749 #, no-wrap msgid "`exusrfs`" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:743 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:753 msgid "" "After the custom partitions have been created, select btn:[Finish] to " "continue with the installation and go to <>." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:745 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:755 #, no-wrap msgid "Guided Partitioning Using Root-on-ZFS" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:749 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:759 msgid "" "This partitioning mode only works with whole disks and will erase the " "contents of the entire disk. The main ZFS configuration menu offers a " "number of options to control the creation of the pool." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:751 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:761 #, no-wrap msgid "ZFS Partitioning Menu" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:752 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:762 #, no-wrap msgid "bsdinstall-zfs-menu.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:755 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:765 msgid "Here is a summary of the options in this menu:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:757 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:767 msgid "`Install` - Proceed with the installation with the selected options." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:758 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:768 msgid "" "`Pool Type/Disks` - Configure the `Pool Type` and the disk(s) that will " "constitute the pool. The automatic ZFS installer currently only supports the " "creation of a single top level vdev, except in stripe mode. To create more " "complex pools, use the instructions in <> to create " "the pool." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:759 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:769 msgid "`Rescan Devices` - Repopulate the list of available disks." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:760 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:770 msgid "" "`Disk Info` - This menu can be used to inspect each disk, including its " "partition table and various other information such as the device model " "number and serial number, if available." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:761 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:771 msgid "" "`Pool Name` - Establish the name of the pool. The default name is _zroot_." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:762 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:772 msgid "" "`Force 4K Sectors?` - Force the use of 4K sectors. By default, the installer " "will automatically create partitions aligned to 4K boundaries and force ZFS " "to use 4K sectors. This is safe even with 512 byte sector disks, and has the " "added benefit of ensuring that pools created on 512 byte disks will be able " "to have 4K sector disks added in the future, either as additional storage " "space or as replacements for failed disks. Press the kbd:[Enter] key to " "chose to activate it or not." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:763 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:773 msgid "" "`Encrypt Disks?` - Encrypting the disks allows the user to encrypt the disks " "using GELI. More information about disk encryption is available in crossref:" "disks[disks-encrypting-geli,“Disk Encryption with geli”]. Press the kbd:" "[Enter] key to chose activate it or not." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:764 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:774 msgid "" "`Partition Scheme` - Choose the partition scheme. GPT is the recommended " "option in most cases. Press the kbd:[Enter] key to chose between the " "different options." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:765 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:775 msgid "`Swap Size` - Establish the amount of swap space." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:766 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:776 msgid "" "`Mirror Swap?` - Whether to mirror the swap between the disks. Be aware that " "enabling mirror swap will break crash dumps. Press the kbd:[Enter] key to " "activate it or not." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:767 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:777 msgid "" "`Encrypt Swap?` - Whether to encrypt the swap. This will encrypt the swap " "with a temporary key each time the system boots, and discards it on reboot. " "Press the kbd:[Enter] key to chose activate it or not. More information " "about swap encryption in crossref:disks[swap-encrypting,“Encrypting Swap”]." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:769 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:779 msgid "" "Select kbd:[T] to configure the `Pool Type` and the disk(s) that will " "constitute the pool." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:771 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:781 #, no-wrap msgid "ZFS Pool Type" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:772 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:782 #, no-wrap msgid "bsdinstall-zfs-vdev_type.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:775 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:785 msgid "Here is a summary of the `Pool Type` that can be selected in this menu:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:777 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:787 msgid "" "`stripe` - Striping provides maximum storage of all connected devices, but " "no redundancy. If just one disk fails the data on the pool is lost " "irrevocably." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:778 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:788 msgid "" "`mirror` - Mirroring stores a complete copy of all data on every disk. " "Mirroring provides good read performance because data is read from all disks " "in parallel. Write performance is slower as the data must be written to all " "disks in the pool. Allows all but one disk to fail. This option requires at " "least two disks." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:779 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:789 msgid "" "`raid10` - Striped mirrors. Provides the best performance, but the least " "storage. This option needs at least an even number of disks and a minimum of " "four disks." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:780 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:790 msgid "" "`raidz1` - Single Redundant RAID. Allow one disk to fail concurrently. This " "option needs at least three disks." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:781 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:791 msgid "" "`raidz2` - Double Redundant RAID. Allows two disks to fail concurrently. " "This option needs at least four disks." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:782 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:792 msgid "" "`raidz3` - Triple Redundant RAID. Allows three disks to fail concurrently. " "This option needs at least five disks." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:786 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:796 msgid "" "Once a `Pool Type` has been selected, a list of available disks is " "displayed, and the user is prompted to select one or more disks to make up " "the pool. The configuration is then validated to ensure that enough disks " "are selected. If validation fails, select btn:[] to " "return to the list of disks or btn:[] to change the `Pool Type`." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:788 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:798 #, no-wrap msgid "Disk Selection" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:789 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:799 #, no-wrap msgid "bsdinstall-zfs-disk_select.png" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:792 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:802 #, no-wrap msgid "Invalid Selection" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:793 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:803 #, no-wrap msgid "bsdinstall-zfs-vdev_invalid.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:796 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:806 msgid "" "If one or more disks are missing from the list, or if disks were attached " "after the installer was started, select btn:[- Rescan Devices] to repopulate " "the list of available disks." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:798 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:808 #, no-wrap msgid "Rescan Devices" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:799 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:809 #, no-wrap msgid "bsdinstall-zfs-rescan-devices.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:802 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:812 msgid "" "To avoid accidentally erasing the wrong disk, the btn:[- Disk Info] menu can " "be used to inspect each disk, including its partition table and various " "other information such as the device model number and serial number, if " "available." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:804 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:814 #, no-wrap msgid "Analyzing a Disk" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:805 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:815 #, no-wrap msgid "bsdinstall-zfs-disk_info.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:809 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:819 msgid "" "Select kbd:[N] to configure the `Pool Name`. Enter the desired name, then " "select btn:[] to establish it or btn:[] to return to the main " "menu and leave the default name." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:811 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:821 #, no-wrap msgid "Pool Name" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:812 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:822 #, no-wrap msgid "bsdinstall-zfs-pool-name.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:816 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:826 msgid "" "Select kbd:[S] to set the amount of swap. Enter the desired amount of swap, " "then select btn:[] to establish it or btn:[] to return to the " "main menu and let the default amount." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:818 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:828 #, no-wrap msgid "Swap Amount" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:819 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:829 #, no-wrap msgid "bsdinstall-zfs-swap-amount.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:823 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:833 msgid "" "Once all options have been set to the desired values, select the btn:[>>> " "Install] option at the top of the menu. The installer then offers a last " "chance to cancel before the contents of the selected drives are destroyed to " "create the ZFS pool." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:825 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:835 #, no-wrap msgid "Last Chance" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:826 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:836 #, no-wrap msgid "bsdinstall-zfs-warning.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:830 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:840 msgid "" "If GELI disk encryption was enabled, the installer will prompt twice for the " "passphrase to be used to encrypt the disks. Initialization of the " "encryption then begins." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:832 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:842 #, no-wrap msgid "Disk Encryption Password" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:833 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:843 #, no-wrap msgid "bsdinstall-zfs-geli_password.png" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:836 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:846 #, no-wrap msgid "Initializing Encryption" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:837 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:847 #, no-wrap msgid "bsdinstall-zfs-init-encription.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:841 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:851 msgid "" "The installation then proceeds normally. To continue with the installation, " "go to <>." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:843 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:853 #, no-wrap msgid "Shell Mode Partitioning" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:848 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:858 msgid "" "When creating advanced installations, the bsdinstall partitioning menus may " "not provide the level of flexibility required. Advanced users can select " "the btn:[Shell] option from the partitioning menu in order to manually " "partition the drives, create the file system(s), populate [.filename]#/tmp/" "bsdinstall_etc/fstab#, and mount the file systems under [.filename]#/mnt#. " "Once this is done, type `exit` to return to bsdinstall and continue the " "installation." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:850 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:859 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:860 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:869 #, no-wrap msgid "Fetching Distribution Files" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:854 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:864 msgid "" "Installation time will vary depending on the distributions chosen, " "installation media, and speed of the computer. A series of messages will " "indicate the progress." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:857 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:867 msgid "" "First, the installer formats the selected disk(s) and initializes the " "partitions. Next, in the case of a `bootonly media` or `mini memstick`, it " "downloads the selected components:" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:860 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:870 #, no-wrap msgid "bsdinstall-distfile-fetching.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:863 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:873 msgid "" "Next, the integrity of the distribution files is verified to ensure they " "have not been corrupted during download or misread from the installation " "media:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:865 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:875 #, no-wrap msgid "Verifying Distribution Files" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:866 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:876 #, no-wrap msgid "bsdinstall-distfile-verifying.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:869 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:879 msgid "Finally, the verified distribution files are extracted to the disk:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:871 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:881 #, no-wrap msgid "Extracting Distribution Files" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:872 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:882 #, no-wrap msgid "bsdinstall-distfile-extracting.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:876 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:886 msgid "" "Once all requested distribution files have been extracted, bsdinstall " "displays the first post-installation configuration screen. The available " "post-configuration options are described in the next section." msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:878 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:888 #, no-wrap msgid "Accounts, Time Zone, Services and Hardening" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:881 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:888 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:891 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:898 #, no-wrap msgid "Setting the `root` Password" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:886 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:896 msgid "" "First, the `root` password must be set. While entering the password, the " "characters being typed are not displayed on the screen. The password must " "be entered twice to prevent typing errors." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:889 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:899 #, no-wrap msgid "bsdinstall-post-root-passwd.png" msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:892 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:902 #, no-wrap msgid "Setting the Time Zone" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:896 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:906 msgid "" "The next series of menus are used to determine the correct local time by " "selecting the geographic region, country, and time zone. Setting the time " "zone allows the system to automatically correct for regional time changes, " "such as daylight savings time, and perform other time zone related functions " "properly." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:899 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:909 msgid "" "The example shown here is for a machine located in the mainland time zone of " "Spain, Europe. The selections will vary according to the geographical " "location." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:901 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:911 #, no-wrap msgid "Select a Region" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:902 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:912 #, no-wrap msgid "bsdinstall-timezone-region.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:905 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:915 msgid "" "The appropriate region is selected using the arrow keys and then pressing " "kbd:[Enter]." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:907 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:917 #, no-wrap msgid "Select a Country" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:908 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:918 #, no-wrap msgid "bsdinstall-timezone-country.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:911 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:921 msgid "" "Select the appropriate country using the arrow keys and press kbd:[Enter]." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:913 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:923 #, no-wrap msgid "Select a Time Zone" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:914 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:924 #, no-wrap msgid "bsdinstall-timezone-zone.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:917 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:927 msgid "" "The appropriate time zone is selected using the arrow keys and pressing kbd:" "[Enter]." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:919 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:929 #, no-wrap msgid "Confirm Time Zone" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:920 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:930 #, no-wrap msgid "bsdinstall-timezone-confirm.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:923 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:933 msgid "Confirm the abbreviation for the time zone is correct." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:925 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:935 #, no-wrap msgid "Select Date" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:926 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:936 #, no-wrap msgid "bsdinstall-timezone-date.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:930 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:940 msgid "" "The appropriate date is selected using the arrow keys and then pressing btn:" "[Set Date]. Otherwise, the date selection can be skipped by pressing btn:" "[Skip]." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:932 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:942 #, no-wrap msgid "Select Time" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:933 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:943 #, no-wrap msgid "bsdinstall-timezone-time.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:937 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:947 msgid "" "The appropriate time is selected using the arrow keys and then pressing btn:" "[Set Time]. Otherwise, the time selection can be skipped by pressing btn:" "[Skip]." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:939 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:949 #, no-wrap msgid "Enabling Services" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:944 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:954 msgid "" "The next menu is used to configure which system services will be started " "whenever the system boots. All of these services are optional. Only start " "the services that are needed for the system to function." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:946 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:956 #, no-wrap msgid "Selecting Additional Services to Enable" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:947 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:957 #, no-wrap msgid "bsdinstall-config-services.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:950 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:960 msgid "Here is a summary of the services that can be enabled in this menu:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:952 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:962 msgid "" "`local_unbound` - Enable the DNS local unbound. It is necessary to keep in " "mind that this is the unbound of the base system and is only meant for use " "as a local caching forwarding resolver. If the objective is to set up a " "resolver for the entire network install package:dns/unbound[]." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:953 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:963 msgid "" "`sshd` - The Secure Shell (SSH) daemon is used to remotely access a system " "over an encrypted connection. Only enable this service if the system should " "be available for remote logins." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:954 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:964 msgid "" "`moused` - Enable this service if the mouse will be used from the command-" "line system console." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:955 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:965 msgid "" "`ntpdate` - Enable the automatic clock synchronization at boot time. The " "functionality of this program is now available in the man:ntpd[8] daemon. " "After a suitable period of mourning, the man:ntpdate[8] utility will be " "retired." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:956 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:966 msgid "" "`ntpd` - The Network Time Protocol (NTP) daemon for automatic clock " "synchronization. Enable this service if there is a Windows(R), Kerberos, or " "LDAP server on the network." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:957 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:967 msgid "" "`powerd` - System power control utility for power control and energy saving." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:958 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:968 msgid "" "`dumpdev` - Crash dumps are useful when debugging issues with the system, so " "users are encouraged to enable them." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:960 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:970 #, no-wrap msgid "Enabling Hardening Security Options" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:965 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:975 msgid "" "The next menu is used to configure which security options will be enabled. " "All of these options are optional. But their use is encouraged." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:967 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:977 #, no-wrap msgid "Selecting Hardening Security Options" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:968 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:978 #, no-wrap msgid "bsdinstall-hardening.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:971 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:981 msgid "Here is a summary of the options that can be enabled in this menu:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:973 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:983 msgid "" "`hide_uids` - Hide processes running as other users (UID). This prevents " "unprivileged users from seeing running processes from other users." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:974 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:984 msgid "" "`hide_gids` - Hide processes running as other groups (GID). This prevents " "unprivileged users from seeing running processes from other groups." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:975 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:985 msgid "" "`hide_jail` - Hide processes running in jails. This prevents unprivileged " "users from seeing processes running inside jails." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:976 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:986 msgid "" "`read_msgbuf` - Disable reading kernel message buffer for unprivileged " "users. Prevent unprivileged users from using man:dmesg[8] to view messages " "from the kernel's log buffer." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:977 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:987 msgid "" "`proc_debug` - Disable process debugging facilities for unprivileged users. " "Disables a variety of unprivileged inter-process debugging services, " "including some procfs functionality, `ptrace()`, and `ktrace()`. Please note " "that this will also prevent debugging tools such as man:lldb[1], man:" "truss[1] and man:procstat[1], as well as some built-in debugging facilities " "in certain scripting languages like PHP." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:978 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:988 msgid "`random_pid` - Randomize the PID of processes." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:979 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:989 msgid "`clear_tmp` - Clean [.filename]#/tmp# when the system starts up." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:980 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:990 msgid "" "`disable_syslogd` - Disable opening the syslogd network socket. By default, " "FreeBSD runs syslogd in a secure way with `-s`. This prevents the daemon " "from listening for incoming UDP requests on port 514. With this option " "enabled, syslogd will instead run with `-ss`, which prevents syslogd from " "opening any port. For more information, see man:syslogd[8]." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:981 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:991 msgid "`disable_sendmail` - Disable the sendmail mail transport agent." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:982 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:992 msgid "" "`secure_console` - Make the command prompt request the `root` password when " "entering single-user mode." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:983 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:993 msgid "" "`disable_ddtrace` - DTrace can run in a mode that affects the running " "kernel. Destructive actions may not be used unless explicitly enabled. Use `-" "w` to enable this option when using DTrace. For more information, see man:" "dtrace[1]." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:985 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:995 #, no-wrap msgid "Add Users" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:991 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1001 msgid "" "The next menu prompts to create at least one user account. It is " "recommended to log into the system using a user account rather than as " "`root`. When logged in as `root`, there are essentially no limits or " "protection on what can be done. Logging in as a normal user is safer and " "more secure." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:993 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1003 msgid "Select btn:[Yes] to add new users." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:995 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1005 #, no-wrap msgid "Add User Accounts" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:996 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1006 #, no-wrap msgid "bsdinstall-adduser1.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1000 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1010 msgid "" "Follow the prompts and input the requested information for the user " "account. The example shown in <> creates the " "`asample` user account." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1002 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1012 #, no-wrap msgid "Enter User Information" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1003 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1013 #, no-wrap msgid "bsdinstall-adduser2.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1006 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1016 msgid "Here is a summary of the information to input:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1008 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1018 msgid "" "`Username` - The name the user will enter to log in. A common convention is " "to use the first letter of the first name combined with the last name, as " "long as each username is unique for the system. The username is case " "sensitive and should not contain any spaces." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1009 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1019 msgid "" "`Full name` - The user's full name. This can contain spaces and is used as a " "description for the user account." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1010 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1020 msgid "" "`Uid` - User ID. This is typically left blank so the system automatically " "assigns a value." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1011 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1021 msgid "" "`Login group` - The user's group. This is typically left blank to accept the " "default." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1012 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1022 msgid "" "`Invite _user_ into other groups?` - Additional groups to which the user " "will be added as a member. If the user needs administrative access, type " "`wheel` here." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1013 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1023 msgid "`Login class` - Typically left blank for the default." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1014 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1024 msgid "" "`Shell` - Type in one of the listed values to set the interactive shell for " "the user. Refer to crossref:basics[shells,Shells] for more information about " "shells." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1015 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1025 msgid "" "`Home directory` - The user's home directory. The default is usually correct." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1016 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1026 msgid "" "`Home directory permissions` - Permissions on the user's home directory. The " "default is usually correct." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1017 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1027 msgid "" "`Use password-based authentication?` - Typically `yes` so that the user is " "prompted to input their password at login." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1018 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1028 msgid "" "`Use an empty password?` - Typically `no` as empty or blank passwords are " "insecure." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1019 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1029 msgid "" "`Use a random password?` - Typically `no` so that the user can set their own " "password in the next prompt." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1020 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1030 msgid "" "`Enter password` - The password for this user. Typed-in characters will not " "be shown on the screen." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1021 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1031 msgid "" "`Enter password again` - The password must be typed again for verification." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1022 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1032 msgid "" "`Lock out the account after creation?` - Typically `no` so that the user can " "log in." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1026 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1036 msgid "" "After entering all the details, a summary is shown for review. If a mistake " "was made, enter `no` to correct it. Once everything is correct, enter `yes` " "to create the new user." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1028 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1038 #, no-wrap msgid "Exit User and Group Management" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1029 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1039 #, no-wrap msgid "bsdinstall-adduser3.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1033 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1043 msgid "" "If there are more users to add, answer the `Add another user?` question with " "`yes`. Enter `no` to finish adding users and continue the installation." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1035 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1045 msgid "" "For more information on adding users and user management, see crossref:" "basics[users-synopsis,Users and Basic Account Management]." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1037 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1042 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1047 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1052 #, no-wrap msgid "Final Configuration" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1040 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1050 msgid "" "After everything has been installed and configured, a final chance is " "provided to modify settings." msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1043 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1053 #, no-wrap msgid "bsdinstall-finalconfiguration.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1046 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1056 msgid "" "Use this menu to make any changes or to do any additional configuration " "before completing the installation." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1048 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1058 msgid "`Add User` - Described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1049 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1059 msgid "`Root Password` - Described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1050 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1060 msgid "`Hostname` - Described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1051 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1061 msgid "`Network` - Described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1052 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1062 msgid "`Services` - Described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1053 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1063 msgid "`System Hardening` - Described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1054 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1064 msgid "`Time Zone` - Described in <>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1055 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1065 msgid "`Handbook` - Download and install the FreeBSD Handbook." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1057 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1067 msgid "Once configuration is complete, select btn:[Exit]." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1059 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1069 #, no-wrap msgid "Manual Configuration" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1060 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1070 #, no-wrap msgid "bsdinstall-final-modification-shell.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1064 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1074 msgid "" "bsdinstall will prompt for any additional configuration that needs to be " "done before rebooting into the new system. Select btn:[Yes] to exit to a " "shell within the new system or btn:[No] to proceed to the last step of the " "installation." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1066 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1076 #, no-wrap msgid "Complete the Installation" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1067 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1077 #, no-wrap msgid "bsdinstall-mainexit.png" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1070 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1080 msgid "" "If further configuration or special setup is needed, select btn:[Live CD] to " "boot the install media into Live CD mode." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1073 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1083 msgid "" "If the installation is complete, select btn:[Reboot] to reboot the computer " "and start the new FreeBSD system. Do not forget to remove the FreeBSD " "install media or the computer might boot from it again." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1079 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1089 msgid "" "As FreeBSD boots, informational messages are displayed. After the system " "finishes booting, a login prompt is displayed. At the `login:` prompt, " "enter the username added during the installation. Avoid logging in as " "`root`. Refer to crossref:basics[users-superuser,The Superuser Account] for " "instructions on how to become the superuser when administrative access is " "needed." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1085 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1095 msgid "" "The messages that appear during boot can be reviewed by pressing kbd:[Scroll-" "Lock] to turn on the scroll-back buffer. The kbd:[PgUp], kbd:[PgDn], and " "arrow keys can be used to scroll back through the messages. When finished, " "press kbd:[Scroll-Lock] again to unlock the display and return to the " "console. To review these messages once the system has been up for some " "time, type `less /var/run/dmesg.boot` from a command prompt. Press kbd:[q] " "to return to the command line after viewing." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1089 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1099 msgid "" "If sshd was enabled in <>, the first boot might be a " "bit slower as the system generates SSH host keys. Subsequent boots will be " "faster. The fingerprints of the keys are then displayed as in the following " "example:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1127 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1137 #, no-wrap msgid "" "Generating public/private rsa1 key pair.\n" "Your identification has been saved in /etc/ssh/ssh_host_key.\n" "Your public key has been saved in /etc/ssh/ssh_host_key.pub.\n" "The key fingerprint is:\n" "10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com\n" "The key's randomart image is:\n" "+--[RSA1 1024]----+\n" "| o.. |\n" "| o . . |\n" "| . o |\n" "| o |\n" "| o S |\n" "| + + o |\n" "|o . + * |\n" "|o+ ..+ . |\n" "|==o..o+E |\n" "+-----------------+\n" "Generating public/private dsa key pair.\n" "Your identification has been saved in /etc/ssh/ssh_host_dsa_key.\n" "Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.\n" "The key fingerprint is:\n" "7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com\n" "The key's randomart image is:\n" "+--[ DSA 1024]----+\n" "| .. . .|\n" "| o . . + |\n" "| . .. . E .|\n" "| . . o o . . |\n" "| + S = . |\n" "| + . = o |\n" "| + . * . |\n" "| . . o . |\n" "| .o. . |\n" "+-----------------+\n" "Starting sshd.\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1130 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1140 msgid "" "Refer to crossref:security[openssh,\"OpenSSH\"] for more information about " "fingerprints and SSH." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1133 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1143 msgid "" "FreeBSD does not install a graphical environment by default. Refer to " "crossref:x11[x11,The X Window System] for more information about installing " "and configuring a graphical window manager." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1137 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1147 msgid "" "Proper shutdown of a FreeBSD computer helps protect data and hardware from " "damage. _Do not turn off the power before the system has been properly shut " "down!_ If the user is a member of the `wheel` group, become the superuser by " "typing `su` at the command line and entering the `root` password. Then, " "type `shutdown -p now` and the system will shut down cleanly, and, if the " "hardware supports it, turn itself off." msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1139 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1149 #, no-wrap msgid "Network Interfaces" msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1142 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1152 #, no-wrap msgid "Configuring Network Interfaces" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1146 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1156 msgid "" "Next, a list of the network interfaces found on the computer is shown. " "Select the interface to configure." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1148 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1158 #, no-wrap msgid "Choose a Network Interface" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1149 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1159 #, no-wrap msgid "bsdinstall-configure-network-interface.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1153 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1163 msgid "" "If an Ethernet interface is selected, the installer will skip ahead to the " "menu shown in <>. If a wireless network " "interface is chosen, the system will instead scan for wireless access points:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1155 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1165 #, no-wrap msgid "Scanning for Wireless Access Points" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1156 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1166 #, no-wrap msgid "bsdinstall-configure-wireless-scan.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1163 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1173 msgid "" "Wireless networks are identified by a Service Set Identifier (SSID), a " "short, unique name given to each network. SSIDs found during the scan are " "listed, followed by a description of the encryption types available for that " "network. If the desired SSID does not appear in the list, select btn:" "[Rescan] to scan again. If the desired network still does not appear, check " "for problems with antenna connections or try moving the computer closer to " "the access point. Rescan after each change is made." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1165 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1175 #, no-wrap msgid "Choosing a Wireless Network" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1166 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1176 #, no-wrap msgid "bsdinstall-configure-wireless-accesspoints.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1172 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1182 msgid "" "Next, enter the encryption information for connecting to the selected " "wireless network. WPA2 encryption is strongly recommended over older " "encryption types such as WEP, which offer little security. If the network " "uses WPA2, input the password, also known as the Pre-Shared Key (PSK). For " "security reasons, the characters typed into the input box are displayed as " "asterisks." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1174 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1184 #, no-wrap msgid "WPA2 Setup" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1175 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1185 #, no-wrap msgid "bsdinstall-configure-wireless-wpa2setup.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1178 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1188 msgid "" "Next, choose whether or not an IPv4 address should be configured on the " "Ethernet or wireless interface:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1180 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1190 #, no-wrap msgid "Choose IPv4 Networking" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1181 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1191 #, no-wrap msgid "bsdinstall-configure-network-interface-ipv4.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1186 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1196 msgid "" "There are two methods of IPv4 configuration. DHCP will automatically " "configure the network interface correctly and should be used if the network " "provides a DHCP server. Otherwise, the addressing information needs to be " "input manually as a static configuration." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1191 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1201 msgid "" "Do not enter random network information as it will not work. If a DHCP " "server is not available, obtain the information listed in <> from the network " "administrator or Internet service provider." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1195 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1205 msgid "" "If a DHCP server is available, select btn:[Yes] in the next menu to " "automatically configure the network interface. The installer will appear to " "pause for a minute or so as it finds the DHCP server and obtains the " "addressing information for the system." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1197 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1207 #, no-wrap msgid "Choose IPv4DHCP Configuration" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1198 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1208 #, no-wrap msgid "bsdinstall-configure-network-interface-ipv4-dhcp.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1201 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1211 msgid "" "If a DHCP server is not available, select btn:[No] and input the following " "addressing information in this menu:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1203 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1213 #, no-wrap msgid "IPv4 Static Configuration" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1204 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1214 #, no-wrap msgid "bsdinstall-configure-network-interface-ipv4-static.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1207 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1217 msgid "" "`IP Address` - The IPv4 address assigned to this computer. The address must " "be unique and not already in use by another device on the local network." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1208 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1218 msgid "`Subnet Mask` - The subnet mask for the network." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1209 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1219 msgid "`Default Router` - The IP address of the network's default gateway." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1211 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1221 msgid "" "The next screen will ask if the interface should be configured for IPv6. If " "IPv6 is available and desired, choose btn:[Yes] to select it." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1213 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1223 #, no-wrap msgid "Choose IPv6 Networking" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1214 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1224 #, no-wrap msgid "bsdinstall-configure-network-interface-ipv6.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1220 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1230 msgid "" "IPv6 also has two methods of configuration. StateLess Address " "AutoConfiguration (SLAAC) will automatically request the correct " "configuration information from a local router. Refer to http://tools.ietf." "org/html/rfc4862[rfc4862] for more information. Static configuration " "requires manual entry of network information." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1223 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1233 msgid "" "If an IPv6 router is available, select btn:[Yes] in the next menu to " "automatically configure the network interface. The installer will appear to " "pause for a minute or so as it finds the router and obtains the addressing " "information for the system." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1225 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1235 #, no-wrap msgid "Choose IPv6 SLAAC Configuration" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1226 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1236 #, no-wrap msgid "bsdinstall-configure-network-interface-slaac.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1229 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1239 msgid "" "If an IPv6 router is not available, select btn:[No] and input the following " "addressing information in this menu:" msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1231 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1241 #, no-wrap msgid "IPv6 Static Configuration" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1232 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1242 #, no-wrap msgid "bsdinstall-configure-network-interface-ipv6-static.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1235 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1245 msgid "" "`IPv6 Address` - The IPv6 address assigned to this computer. The address " "must be unique and not already in use by another device on the local network." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1236 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1246 msgid "`Default Router` - The IPv6 address of the network's default gateway." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1242 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1252 msgid "" "The last network configuration menu is used to configure the Domain Name " "System (DNS) resolver, which converts hostnames to and from network " "addresses. If DHCP or SLAAC was used to autoconfigure the network " "interface, the `Resolver Configuration` values may already be filled in. " "Otherwise, enter the local network's domain name in the `Search` field. " "`DNS #1` and `DNS #2` are the IPv4 and/or IPv6 addresses of the DNS " "servers. At least one DNS server is required." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1244 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1254 #, no-wrap msgid "DNS Configuration" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1245 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1255 #, no-wrap msgid "bsdinstall-configure-network-ipv4-dns.png" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1249 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1259 msgid "" "Once the interface is configured, select a mirror site that is located in " "the same region of the world as the computer on which FreeBSD is being " "installed. Files can be retrieved more quickly when the mirror is close to " "the target computer, reducing installation time." msgstr "" #. type: Block title -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1251 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1261 #, no-wrap msgid "Choosing a Mirror" msgstr "" #. type: Target for macro image -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1252 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1262 #, no-wrap msgid "bsdinstall-netinstall-mirrorselect.png" msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1255 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1265 #, no-wrap msgid "Troubleshooting" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1258 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1268 msgid "" "This section covers basic installation troubleshooting, such as common " "problems people have reported." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1263 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1273 msgid "" "Check the Hardware Notes (link:https://www.FreeBSD.org/releases/[https://www." "freebsd.org/releases/]) document for the version of FreeBSD to make sure the " "hardware is supported. If the hardware is supported and locks up or other " "problems occur, build a custom kernel using the instructions in crossref:" "kernelconfig[kernelconfig,Configuring the FreeBSD Kernel] to add support for " "devices which are not present in the [.filename]#GENERIC# kernel. The " "default kernel assumes that most hardware devices are in their factory " "default configuration in terms of IRQs, I/O addresses, and DMA channels. If " "the hardware has been reconfigured, a custom kernel configuration file can " "tell FreeBSD where to find things." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1269 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1279 msgid "" "Some installation problems can be avoided or alleviated by updating the " "firmware on various hardware components, most notably the motherboard. " "Motherboard firmware is usually referred to as the BIOS. Most motherboard " "and computer manufacturers have a website for upgrades and upgrade " "information." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1272 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1282 msgid "" "Manufacturers generally advise against upgrading the motherboard BIOS unless " "there is a good reason for doing so, like a critical update. The upgrade " "process _can_ go wrong, leaving the BIOS incomplete and the computer " "inoperative." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1278 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1288 msgid "" "If the system hangs while probing hardware during boot or behaves strangely " "during the installation process, ACPI may be the culprit. FreeBSD makes " "extensive use of the system ACPI service on the i386 and amd64 platforms to " "aid in system configuration if it is detected during boot. Unfortunately, " "some bugs still exist in both the ACPI driver and within system motherboards " "and BIOS firmware. ACPI can be disabled by setting the `hint.acpi.0." "disabled` hint in the third stage boot loader:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1282 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1292 #, no-wrap msgid " set hint.acpi.0.disabled=\"1\"\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1286 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1296 msgid "" "This is reset each time the system is booted, so it is necessary to add " "`hint.acpi.0.disabled=\"1\"` to the file [.filename]#/boot/loader.conf#. " "More information about the boot loader can be found in crossref:boot[boot-" "synopsis,“Synopsis”]." msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1288 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1298 #, no-wrap msgid "Using the Live CD" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1292 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1302 msgid "" "The welcome menu of bsdinstall, shown in <>, " "provides a btn:[Live CD] option. This is useful for those who are still " "wondering whether FreeBSD is the right operating system for them and want to " "test some of the features before installing." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1294 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1304 msgid "The following points should be noted before using the btn:[Live CD]:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1296 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1306 msgid "" "To gain access to the system, authentication is required. The username is " "`root` and the password is blank." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1297 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1307 msgid "" "As the system runs directly from the installation media, performance will be " "significantly slower than that of a system installed on a hard disk." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1297 +#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1307 msgid "" "This option only provides a command prompt and not a graphical interface." msgstr "" diff --git a/documentation/content/en/books/handbook/jails/_index.po b/documentation/content/en/books/handbook/jails/_index.po index f5f8f94822..e6a122cc30 100644 --- a/documentation/content/en/books/handbook/jails/_index.po +++ b/documentation/content/en/books/handbook/jails/_index.po @@ -1,2389 +1,2389 @@ # 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: 2022-10-01 13:49-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/handbook/jails/_index.adoc:1 #, no-wrap msgid "Jails improve on the concept of the traditional chroot environment in several ways" msgstr "" #. type: YAML Front Matter: part #: documentation/content/en/books/handbook/jails/_index.adoc:1 #, no-wrap msgid "Part III. System Administration" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/handbook/jails/_index.adoc:1 #, no-wrap msgid "Chapter 15. Jails" msgstr "" #. type: Title = #: documentation/content/en/books/handbook/jails/_index.adoc:15 #, no-wrap msgid "Jails" msgstr "" #. type: Title == #: documentation/content/en/books/handbook/jails/_index.adoc:53 #, no-wrap msgid "Synopsis" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:59 msgid "" "Since system administration is a difficult task, many tools have been " "developed to make life easier for the administrator. These tools often " "enhance the way systems are installed, configured, and maintained. One of " "the tools which can be used to enhance the security of a FreeBSD system is " "_jails_. Jails have been available since FreeBSD 4.X and continue to be " "enhanced in their usefulness, performance, reliability, and security." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:67 msgid "" "Jails build upon the man:chroot[2] concept, which is used to change the root " "directory of a set of processes. This creates a safe environment, separate " "from the rest of the system. Processes created in the chrooted environment " "can not access files or resources outside of it. For that reason, " "compromising a service running in a chrooted environment should not allow " "the attacker to compromise the entire system. However, a chroot has several " "limitations. It is suited to easy tasks which do not require much " "flexibility or complex, advanced features. Over time, many ways have been " "found to escape from a chrooted environment, making it a less than ideal " "solution for securing services." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:74 msgid "" "Jails improve on the concept of the traditional chroot environment in " "several ways. In a traditional chroot environment, processes are only " "limited in the part of the file system they can access. The rest of the " "system resources, system users, running processes, and the networking " "subsystem are shared by the chrooted processes and the processes of the host " "system. Jails expand this model by virtualizing access to the file system, " "the set of users, and the networking subsystem. More fine-grained controls " "are available for tuning the access of a jailed environment. Jails can be " "considered as a type of operating system-level virtualization." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:76 msgid "A jail is characterized by four elements:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:78 msgid "" "A directory subtree: the starting point from which a jail is entered. Once " "inside the jail, a process is not permitted to escape outside of this " "subtree." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:79 msgid "A hostname: which will be used by the jail." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:80 msgid "" "An IP address: which is assigned to the jail. The IP address of a jail is " "often an alias address for an existing network interface." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:81 msgid "" "A command: the path name of an executable to run inside the jail. The path " "is relative to the root directory of the jail environment." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:84 msgid "" "Jails have their own set of users and their own `root` account which are " "limited to the jail environment. The `root` account of a jail is not " "allowed to perform operations to the system outside of the associated jail " "environment." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:87 msgid "" "This chapter provides an overview of the terminology and commands for " "managing FreeBSD jails. Jails are a powerful tool for both system " "administrators, and advanced users." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:89 msgid "After reading this chapter, you will know:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:91 msgid "What a jail is and what purpose it may serve in FreeBSD installations." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:92 msgid "How to build, start, and stop a jail." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:93 msgid "" "The basics of jail administration, both from inside and outside the jail." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:98 msgid "" "Jails are a powerful tool, but they are not a security panacea. While it is " "not possible for a jailed process to break out on its own, there are several " "ways in which an unprivileged user outside the jail can cooperate with a " "privileged user inside the jail to obtain elevated privileges in the host " "environment." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:101 msgid "" "Most of these attacks can be mitigated by ensuring that the jail root is not " "accessible to unprivileged users in the host environment. As a general " "rule, untrusted users with privileged access to a jail should not be given " "access to the host environment." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/jails/_index.adoc:104 #, no-wrap msgid "Terms Related to Jails" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:107 msgid "" "To facilitate better understanding of parts of the FreeBSD system related to " "jails, their internals and the way they interact with the rest of FreeBSD, " "the following terms are used further in this chapter:" msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/jails/_index.adoc:108 #, no-wrap msgid "man:chroot[8] (command)" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:110 msgid "" "Utility, which uses man:chroot[2] FreeBSD system call to change the root " "directory of a process and all its descendants." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/jails/_index.adoc:111 #, no-wrap msgid "man:chroot[2] (environment)" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:114 msgid "" "The environment of processes running in a \"chroot\". This includes " "resources such as the part of the file system which is visible, user and " "group IDs which are available, network interfaces and other IPC mechanisms, " "etc." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/jails/_index.adoc:115 #, no-wrap msgid "man:jail[8] (command)" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:117 msgid "" "The system administration utility which allows launching of processes within " "a jail environment." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/jails/_index.adoc:118 #, no-wrap msgid "host (system, process, user, etc.)" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:122 msgid "" "The controlling system of a jail environment. The host system has access to " "all the hardware resources available, and can control processes both outside " "of and inside a jail environment. One of the important differences of the " "host system from a jail is that the limitations which apply to superuser " "processes inside a jail are not enforced for processes of the host system." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/jails/_index.adoc:123 #, no-wrap msgid "hosted (system, process, user, etc.)" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:125 msgid "" "A process, user or other entity, whose access to resources is restricted by " "a FreeBSD jail." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/jails/_index.adoc:127 #, no-wrap msgid "Creating and Controlling Jails" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:132 msgid "" "Some administrators divide jails into the following two types: \"complete\" " "jails, which resemble a real FreeBSD system, and \"service\" jails, " "dedicated to one application or service, possibly running with privileges. " "This is only a conceptual division and the process of building a jail is not " "affected by it. When creating a \"complete\" jail there are two options for " "the source of the userland: use prebuilt binaries (such as those supplied on " "an install media) or build from source." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:133 #, no-wrap msgid "Installing a Jail" msgstr "" #. type: Title ==== #: documentation/content/en/books/handbook/jails/_index.adoc:136 #, no-wrap msgid "To install a Jail from the Internet" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:140 msgid "" "The man:bsdinstall[8] tool can be used to fetch and install the binaries " "needed for a jail. This will walk through the picking of a mirror, which " "distributions will be installed into the destination directory, and some " "basic configuration of the jail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:144 #, no-wrap msgid "# bsdinstall jail /here/is/the/jail\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:147 msgid "" "Once the command is complete, the next step is configuring the host to run " "the jail." msgstr "" #. type: Title ==== #: documentation/content/en/books/handbook/jails/_index.adoc:149 #, no-wrap msgid "To install a Jail from an ISO" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:153 msgid "" "To install the userland from installation media, first create the root " "directory for the jail. This can be done by setting the `DESTDIR` variable " "to the proper location." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:155 msgid "Start a shell and define `DESTDIR`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:160 #, no-wrap msgid "" "# sh\n" "# export DESTDIR=/here/is/the/jail\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:163 msgid "" "Mount the install media as covered in man:mdconfig[8] when using the install " "ISO:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:168 #, no-wrap msgid "" "# mount -t cd9660 /dev/`mdconfig -f cdimage.iso` /mnt\n" "# cd /mnt/usr/freebsd-dist/\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:172 msgid "" "Extract the binaries from the tarballs on the install media into the " "declared destination. Minimally, only the base set needs to be extracted, " "but a complete install can be performed when preferred." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:174 msgid "To install just the base system:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:178 #, no-wrap msgid "# tar -xf base.txz -C $DESTDIR\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:181 msgid "To install everything except the kernel:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:185 #, no-wrap msgid "# for set in base ports; do tar -xf $set.txz -C $DESTDIR ; done\n" msgstr "" #. type: Title ==== #: documentation/content/en/books/handbook/jails/_index.adoc:188 #, no-wrap msgid "To build and install a Jail from source" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:191 msgid "The man:jail[8] manual page explains the procedure for building a jail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:201 #, no-wrap msgid "" "# setenv D /here/is/the/jail\n" "# mkdir -p $D <.>\n" "# cd /usr/src\n" "# make buildworld <.>\n" "# make installworld DESTDIR=$D <.>\n" "# make distribution DESTDIR=$D <.>\n" "# mount -t devfs devfs $D/dev <.>\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:204 msgid "" "Selecting a location for a jail is the best starting point. This is where " "the jail will physically reside within the file system of the jail's host. A " "good choice can be [.filename]#/usr/jail/jailname#, where _jailname_ is the " "hostname identifying the jail. Usually, [.filename]#/usr/# has enough space " "for the jail file system, which for \"complete\" jails is, essentially, a " "replication of every file present in a default installation of the FreeBSD " "base system." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:206 msgid "" "If you have already rebuilt your userland using `make world` or `make " "buildworld`, you can skip this step and install your existing userland into " "the new jail." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:208 msgid "" "This command will populate the directory subtree chosen as jail's physical " "location on the file system with the necessary binaries, libraries, manual " "pages and so on." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:209 msgid "" "The `distribution` target for make installs every needed configuration file. " "In simple words, it installs every installable file of [.filename]#/usr/src/" "etc/# to the [.filename]#/etc# directory of the jail environment: [." "filename]#$D/etc/#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:211 msgid "" "Mounting the man:devfs[8] file system inside a jail is not required. On the " "other hand, any, or almost any application requires access to at least one " "device, depending on the purpose of the given application. It is very " "important to control access to devices from inside a jail, as improper " "settings could permit an attacker to do nasty things in the jail. Control " "over man:devfs[8] is managed through rulesets which are described in the man:" "devfs[8] and man:devfs.conf[5] manual pages." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:212 #, no-wrap msgid "Configuring the Host" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:219 msgid "" "Once a jail is installed, it can be started by using the man:jail[8] " "utility. The man:jail[8] utility takes four mandatory arguments which are " "described in the <>. Other arguments may be specified too, " "e.g., to run the jailed process with the credentials of a specific user. " "The `_command_` argument depends on the type of the jail; for a _virtual " "system_, [.filename]#/etc/rc# is a good choice, since it will replicate the " "startup sequence of a real FreeBSD system. For a _service_ jail, it depends " "on the service or application that will run within the jail." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:221 msgid "" "Jails are often started at boot time and the FreeBSD [.filename]#rc# " "mechanism provides an easy way to do this." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:224 msgid "Configure jail parameters in [.filename]#jail.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:235 #, no-wrap msgid "" "www {\n" " host.hostname = www.example.org; # Hostname\n" " ip4.addr = 192.168.0.10; # IP address of the jail\n" " path = \"/usr/jail/www\"; # Path to the jail\n" " mount.devfs; # Mount devfs inside the jail\n" " exec.start = \"/bin/sh /etc/rc\"; # Start command\n" " exec.stop = \"/bin/sh /etc/rc.shutdown\"; # Stop command\n" "}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:239 msgid "Configure jails to start at boot time in [.filename]#rc.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:243 #, no-wrap msgid "jail_enable=\"YES\" # Set to NO to disable starting of any jails\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:247 msgid "" "The default startup of jails configured in man:jail.conf[5], will run the [." "filename]#/etc/rc# script of the jail, which assumes the jail is a complete " "virtual system. For service jails, the default startup command of the jail " "should be changed, by setting the `exec.start` option appropriately." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:251 msgid "" "For a full list of available options, please see the man:jail.conf[5] manual " "page." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:254 msgid "" "man:service[8] can be used to start or stop a jail by hand, if an entry for " "it exists in [.filename]#jail.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:259 #, no-wrap msgid "" "# service jail start www\n" "# service jail stop www\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:263 msgid "" "Jails can be shut down with man:jexec[8]. Use man:jls[8] to identify the " "jail's `JID`, then use man:jexec[8] to run the shutdown script in that jail." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:270 #, no-wrap msgid "" "# jls\n" " JID IP Address Hostname Path\n" " 3 192.168.0.10 www /usr/jail/www\n" "# jexec 3 /etc/rc.shutdown\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:273 msgid "" "More information about this can be found in the man:jail[8] manual page." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/jails/_index.adoc:275 #, no-wrap msgid "Fine Tuning and Administration" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:279 msgid "" "There are several options which can be set for any jail, and various ways of " "combining a host FreeBSD system with jails, to produce higher level " "applications. This section presents:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:281 msgid "" "Some of the options available for tuning the behavior and security " "restrictions implemented by a jail installation." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:282 msgid "" "Some of the high-level applications for jail management, which are available " "through the FreeBSD Ports Collection, and can be used to implement overall " "jail-based solutions." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:284 #, no-wrap msgid "System Tools for Jail Tuning in FreeBSD" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:290 msgid "" "Fine tuning of a jail's configuration is mostly done by setting man:" "sysctl[8] variables. A special subtree of sysctl exists as a basis for " "organizing all the relevant options: the `security.jail.*` hierarchy of " "FreeBSD kernel options. Here is a list of the main jail-related sysctls, " "complete with their default value. Names should be self-explanatory, but " "for more information about them, please refer to the man:jail[8] and man:" "sysctl[8] manual pages." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:292 msgid "`security.jail.set_hostname_allowed: 1`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:293 msgid "`security.jail.socket_unixiproute_only: 1`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:294 msgid "`security.jail.sysvipc_allowed: 0`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:295 msgid "`security.jail.enforce_statfs: 2`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:296 msgid "`security.jail.allow_raw_sockets: 0`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:297 msgid "`security.jail.chflags_allowed: 0`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:298 msgid "`security.jail.jailed: 0`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:303 msgid "" "These variables can be used by the system administrator of the _host system_ " "to add or remove some of the limitations imposed by default on the `root` " "user. Note that there are some limitations which cannot be removed. The " "`root` user is not allowed to mount or unmount file systems from within a " "man:jail[8]. The `root` inside a jail may not load or unload man:devfs[8] " "rulesets, set firewall rules, or do many other administrative tasks which " "require modifications of in-kernel data, such as setting the `securelevel` " "of the kernel." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:306 msgid "" "The base system of FreeBSD contains a basic set of tools for viewing " "information about the active jails, and attaching to a jail to run " "administrative commands. The man:jls[8] and man:jexec[8] commands are part " "of the base FreeBSD system, and can be used to perform the following simple " "tasks:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:308 msgid "" "Print a list of active jails and their corresponding jail identifier (JID), " "IP address, hostname and path." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:309 msgid "" "Attach to a running jail, from its host system, and run a command inside the " "jail or perform administrative tasks inside the jail itself. This is " "especially useful when the `root` user wants to cleanly shut down a jail. " "The man:jexec[8] utility can also be used to start a shell in a jail to do " "administration in it; for example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:313 #, no-wrap msgid "# jexec 1 tcsh\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:316 #, no-wrap msgid "High-Level Administrative Tools in the FreeBSD Ports Collection" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:321 msgid "" "Among the many third-party utilities for jail administration, one of the " "most complete and useful is package:sysutils/ezjail[]. It is a set of " "scripts that contribute to man:jail[8] management. Please refer to <> for more information." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:323 #, no-wrap msgid "Keeping Jails Patched and up to Date" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:328 msgid "" "Jails should be kept up to date from the host operating system as attempting " "to patch userland from within the jail may likely fail as the default " "behavior in FreeBSD is to disallow the use of man:chflags[1] in a jail which " "prevents the replacement of some files. It is possible to change this " "behavior but it is recommended to use man:freebsd-update[8] to maintain " "jails instead. Use `-b` to specify the path of the jail to be updated." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:330 msgid "" "To update the jail to the latest patch release of the version of FreeBSD it " "is already running, then execute the following commands on the host:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:335 #, no-wrap msgid "" "# freebsd-update -b /here/is/the/jail fetch\n" "# freebsd-update -b /here/is/the/jail install\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:340 msgid "" "To upgrade the jail to a new major or minor version, first upgrade the host " "system as described in crossref:cutting-edge[freebsdupdate-" "upgrade,“Performing Major and Minor Version Upgrades”]. Once the host has " "been upgraded and rebooted, the jail can then be upgraded. For example to " "upgrade from 12.0-RELEASE to 12.1-RELEASE, on the host run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:347 #, no-wrap msgid "" "# freebsd-update -b /here/is/the/jail --currently-running 12.0-RELEASE -r 12.1-RELEASE upgrade\n" "# freebsd-update -b /here/is/the/jail install\n" "# service jail restart myjail\n" "# freebsd-update -b /here/is/the/jail install\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:352 msgid "" "Then, if it was a major version upgrade, reinstall all installed packages " "and restart the jail again. This is required because the ABI version " "changes when upgrading between major versions of FreeBSD. From the host:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:357 #, no-wrap msgid "" "# pkg -j myjail upgrade -f\n" "# service jail restart myjail\n" msgstr "" #. type: Title == #: documentation/content/en/books/handbook/jails/_index.adoc:360 #, no-wrap msgid "Updating Multiple Jails" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:364 msgid "" "The management of multiple jails can become problematic because every jail " "has to be rebuilt from scratch whenever it is upgraded. This can be time " "consuming and tedious if a lot of jails are created and manually updated." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:368 msgid "" "This section demonstrates one method to resolve this issue by safely sharing " "as much as is possible between jails using read-only man:mount_nullfs[8] " "mounts, so that updating is simpler. This makes it more attractive to put " "single services, such as HTTP, DNS, and SMTP, into individual jails. " "Additionally, it provides a simple way to add, remove, and upgrade jails." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:373 msgid "" "Simpler solutions exist, such as ezjail, which provides an easier method of " "administering FreeBSD jails but is less versatile than this setup. ezjail " "is covered in more detail in <>." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:376 msgid "The goals of the setup described in this section are:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:378 msgid "" "Create a simple and easy to understand jail structure that does not require " "running a full installworld on each and every jail." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:379 msgid "Make it easy to add new jails or remove existing ones." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:380 msgid "Make it easy to update or upgrade existing jails." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:381 msgid "Make it possible to run a customized FreeBSD branch." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:382 msgid "" "Be paranoid about security, reducing as much as possible the possibility of " "compromise." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:383 msgid "Save space and inodes, as much as possible." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:387 msgid "" "This design relies on a single, read-only master template which is mounted " "into each jail and one read-write device per jail. A device can be a " "separate physical disc, a partition, or a vnode backed memory device. This " "example uses read-write nullfs mounts." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:389 msgid "The file system layout is as follows:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:391 msgid "The jails are based under the [.filename]#/home# partition." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:392 msgid "Each jail will be mounted under the [.filename]#/home/j# directory." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:393 msgid "" "The template for each jail and the read-only partition for all of the jails " "is [.filename]#/home/j/mroot#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:394 msgid "" "A blank directory will be created for each jail under the [.filename]#/home/" "j# directory." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:395 msgid "" "Each jail will have a [.filename]#/s# directory that will be linked to the " "read-write portion of the system." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:396 msgid "" "Each jail will have its own read-write system that is based upon [." "filename]#/home/j/skel#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:397 msgid "" "The read-write portion of each jail will be created in [.filename]#/home/js#." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:399 #, no-wrap msgid "Creating the Template" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:402 msgid "This section describes the steps needed to create the master template." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:405 msgid "" "It is recommended to first update the host FreeBSD system to the latest -" "RELEASE branch using the instructions in crossref:cutting-" "edge[makeworld,“Updating FreeBSD from Source”]. Additionally, this template " -"uses the package:sysutils/cpdup[] package or port and portsnap will be used " -"to download the FreeBSD Ports Collection." +"uses the package:sysutils/cpdup[] package or port and link:{handbook}mirrors/" +"#git[Git] will be used to download the FreeBSD Ports Collection." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:408 msgid "" "First, create a directory structure for the read-only file system which will " "contain the FreeBSD binaries for the jails. Then, change directory to the " "FreeBSD source tree and install the read-only file system to the jail " "template:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:414 #, no-wrap msgid "" "# mkdir /home/j /home/j/mroot\n" "# cd /usr/src\n" "# make installworld DESTDIR=/home/j/mroot\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:417 msgid "" "Next, prepare a FreeBSD Ports Collection for the jails as well as a FreeBSD " "source tree, which is required for mergemaster:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:424 #, no-wrap msgid "" "# cd /home/j/mroot\n" "# mkdir usr/ports\n" -"# portsnap -p /home/j/mroot/usr/ports fetch extract\n" +"# git clone -o freebsd https://git.FreeBSD.org/ports.git /home/j/mroot/usr/ports\n" "# cpdup /usr/src /home/j/mroot/usr/src\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:427 msgid "Create a skeleton for the read-write portion of the system:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:436 #, no-wrap msgid "" "# mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles\n" "# mv etc /home/j/skel\n" "# mv usr/local /home/j/skel/usr-local\n" "# mv tmp /home/j/skel\n" "# mv var /home/j/skel\n" "# mv root /home/j/skel\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:439 msgid "" "Use mergemaster to install missing configuration files. Then, remove the " "extra directories that mergemaster creates:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:445 #, no-wrap msgid "" "# mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i\n" "# cd /home/j/skel\n" "# rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:448 msgid "" "Now, symlink the read-write file system to the read-only file system. Ensure " "that the symlinks are created in the correct [.filename]#s/# locations as " "the creation of directories in the wrong locations will cause the " "installation to fail." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:461 #, no-wrap msgid "" "# cd /home/j/mroot\n" "# mkdir s\n" "# ln -s s/etc etc\n" "# ln -s s/home home\n" "# ln -s s/root root\n" "# ln -s ../s/usr-local usr/local\n" "# ln -s ../s/usr-X11R6 usr/X11R6\n" "# ln -s ../../s/distfiles usr/ports/distfiles\n" "# ln -s s/tmp tmp\n" "# ln -s s/var var\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:464 msgid "" "As a last step, create a generic [.filename]#/home/j/skel/etc/make.conf# " "containing this line:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:468 #, no-wrap msgid "WRKDIRPREFIX?= /s/portbuild\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:473 msgid "" "This makes it possible to compile FreeBSD ports inside each jail. Remember " "that the ports directory is part of the read-only system. The custom path " "for `WRKDIRPREFIX` allows builds to be done in the read-write portion of " "every jail." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:475 #, no-wrap msgid "Creating Jails" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:479 msgid "" "The jail template can now be used to setup and configure the jails in [." "filename]#/etc/rc.conf#. This example demonstrates the creation of 3 jails: " "`NS`, `MAIL` and `WWW`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:482 msgid "" "Add the following lines to [.filename]#/etc/fstab#, so that the read-only " "template for the jails and the read-write space will be available in the " "respective jails:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:491 #, no-wrap msgid "" "/home/j/mroot /home/j/ns nullfs ro 0 0\n" "/home/j/mroot /home/j/mail nullfs ro 0 0\n" "/home/j/mroot /home/j/www nullfs ro 0 0\n" "/home/js/ns /home/j/ns/s nullfs rw 0 0\n" "/home/js/mail /home/j/mail/s nullfs rw 0 0\n" "/home/js/www /home/j/www/s nullfs rw 0 0\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:494 msgid "" "To prevent fsck from checking nullfs mounts during boot and dump from " "backing up the read-only nullfs mounts of the jails, the last two columns " "are both set to `0`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:495 msgid "Configure the jails in [.filename]#/etc/rc.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:513 #, no-wrap msgid "" "jail_enable=\"YES\"\n" "jail_set_hostname_allow=\"NO\"\n" "jail_list=\"ns mail www\"\n" "jail_ns_hostname=\"ns.example.org\"\n" "jail_ns_ip=\"192.168.3.17\"\n" "jail_ns_rootdir=\"/usr/home/j/ns\"\n" "jail_ns_devfs_enable=\"YES\"\n" "jail_mail_hostname=\"mail.example.org\"\n" "jail_mail_ip=\"192.168.3.18\"\n" "jail_mail_rootdir=\"/usr/home/j/mail\"\n" "jail_mail_devfs_enable=\"YES\"\n" "jail_www_hostname=\"www.example.org\"\n" "jail_www_ip=\"62.123.43.14\"\n" "jail_www_rootdir=\"/usr/home/j/www\"\n" "jail_www_devfs_enable=\"YES\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:517 msgid "" "The `jail__name__rootdir` variable is set to [.filename]#/usr/home# instead " "of [.filename]#/home# because the physical path of [.filename]#/home# on a " "default FreeBSD installation is [.filename]#/usr/home#. The " "`jail__name__rootdir` variable must _not_ be set to a path which includes a " "symbolic link, otherwise the jails will refuse to start." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:518 msgid "" "Create the required mount points for the read-only file system of each jail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:522 #, no-wrap msgid "# mkdir /home/j/ns /home/j/mail /home/j/www\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:525 msgid "" "Install the read-write template into each jail using package:sysutils/" "cpdup[]:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:532 #, no-wrap msgid "" "# mkdir /home/js\n" "# cpdup /home/j/skel /home/js/ns\n" "# cpdup /home/j/skel /home/js/mail\n" "# cpdup /home/j/skel /home/js/www\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:535 msgid "" "In this phase, the jails are built and prepared to run. First, mount the " "required file systems for each jail, and then start them:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:540 #: documentation/content/en/books/handbook/jails/_index.adoc:639 #, no-wrap msgid "" "# mount -a\n" "# service jail start\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:545 msgid "" "The jails should be running now. To check if they have started correctly, " "use `jls`. Its output should be similar to the following:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:553 #, no-wrap msgid "" "# jls\n" " JID IP Address Hostname Path\n" " 3 192.168.3.17 ns.example.org /home/j/ns\n" " 2 192.168.3.18 mail.example.org /home/j/mail\n" " 1 62.123.43.14 www.example.org /home/j/www\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:558 msgid "" "At this point, it should be possible to log onto each jail, add new users, " "or configure daemons. The `JID` column indicates the jail identification " "number of each running jail. Use the following command to perform " "administrative tasks in the jail whose JID is `3`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:562 #, no-wrap msgid "# jexec 3 tcsh\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:565 #, no-wrap msgid "Upgrading" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:569 msgid "" "The design of this setup provides an easy way to upgrade existing jails " "while minimizing their downtime. Also, it provides a way to roll back to " "the older version should a problem occur." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:572 msgid "" "The first step is to upgrade the host system. Then, create a new temporary " "read-only template in [.filename]#/home/j/mroot2#." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:581 #, no-wrap msgid "" "# mkdir /home/j/mroot2\n" "# cd /usr/src\n" "# make installworld DESTDIR=/home/j/mroot2\n" "# cd /home/j/mroot2\n" "# cpdup /usr/src usr/src\n" "# mkdir s\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:584 msgid "" "The `installworld` creates a few unnecessary directories, which should be " "removed:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:589 #, no-wrap msgid "" "# chflags -R 0 var\n" "# rm -R etc var root usr/local tmp\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:592 msgid "Recreate the read-write symlinks for the master file system:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:602 #, no-wrap msgid "" "# ln -s s/etc etc\n" "# ln -s s/root root\n" "# ln -s s/home home\n" "# ln -s ../s/usr-local usr/local\n" "# ln -s ../s/usr-X11R6 usr/X11R6\n" "# ln -s s/tmp tmp\n" "# ln -s s/var var\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:605 msgid "Next, stop the jails:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:609 #, no-wrap msgid "# service jail stop\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:612 msgid "" "Unmount the original file systems as the read-write systems are attached to " "the read-only system ([.filename]#/s#):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:621 #, no-wrap msgid "" "# umount /home/j/ns/s\n" "# umount /home/j/ns\n" "# umount /home/j/mail/s\n" "# umount /home/j/mail\n" "# umount /home/j/www/s\n" "# umount /home/j/www\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:624 msgid "" "Move the old read-only file system and replace it with the new one. This " "will serve as a backup and archive of the old read-only file system should " "something go wrong. The naming convention used here corresponds to when a " "new read-only file system has been created. Move the original FreeBSD Ports " "Collection over to the new file system to save some space and inodes:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:631 #, no-wrap msgid "" "# cd /home/j\n" "# mv mroot mroot.20060601\n" "# mv mroot2 mroot\n" "# mv mroot.20060601/usr/ports mroot/usr\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:634 msgid "" "At this point the new read-only template is ready, so the only remaining " "task is to remount the file systems and start the jails:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:643 msgid "" "Use `jls` to check if the jails started correctly. Run `mergemaster` in " "each jail to update the configuration files." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/jails/_index.adoc:645 #, no-wrap msgid "Managing Jails with ezjail" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:653 msgid "" "Creating and managing multiple jails can quickly become tedious and error-" "prone. Dirk Engling's ezjail automates and greatly simplifies many jail " "tasks. A _basejail_ is created as a template. Additional jails use man:" "mount_nullfs[8] to share many of the basejail directories without using " "additional disk space. Each additional jail takes only a few megabytes of " "disk space before applications are installed. Upgrading the copy of the " "userland in the basejail automatically upgrades all of the other jails." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:655 msgid "" "Additional benefits and features are described in detail on the ezjail web " "site, https://erdgeist.org/arts/software/ezjail/[]." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:657 #, no-wrap msgid "Installing ezjail" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:660 msgid "" "Installing ezjail consists of adding a loopback interface for use in jails, " "installing the port or package, and enabling the service." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:664 msgid "" "To keep jail loopback traffic off the host's loopback network interface " "`lo0`, a second loopback interface is created by adding an entry to [." "filename]#/etc/rc.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:668 #: documentation/content/en/books/handbook/jails/_index.adoc:1085 #, no-wrap msgid "cloned_interfaces=\"lo1\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:672 msgid "" "The second loopback interface `lo1` will be created when the system starts. " "It can also be created manually without a restart:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:677 #: documentation/content/en/books/handbook/jails/_index.adoc:1093 #, no-wrap msgid "" "# service netif cloneup\n" "Created clone interfaces: lo1.\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:680 msgid "" "Jails can be allowed to use aliases of this secondary loopback interface " "without interfering with the host." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:683 msgid "" "Inside a jail, access to the loopback address `127.0.0.1` is redirected to " "the first IP address assigned to the jail. To make the jail loopback " "correspond with the new `lo1` interface, that interface must be specified " "first in the list of interfaces and IP addresses given when creating a new " "jail." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:685 msgid "Give each jail a unique loopback address in the `127.0.0.0/8` netblock." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:686 msgid "Install package:sysutils/ezjail[]:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:691 #, no-wrap msgid "" "# cd /usr/ports/sysutils/ezjail\n" "# make install clean\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:694 msgid "Enable ezjail by adding this line to [.filename]#/etc/rc.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:698 #, no-wrap msgid "ezjail_enable=\"YES\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:701 msgid "" "The service will automatically start on system boot. It can be started " "immediately for the current session:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:705 #, no-wrap msgid "# service ezjail start\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:708 #, no-wrap msgid "Initial Setup" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:712 msgid "" "With ezjail installed, the basejail directory structure can be created and " "populated. This step is only needed once on the jail host computer." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:717 msgid "" "In both of these examples, `-p` causes the ports tree to be retrieved with " "man:portsnap[8] into the basejail. That single copy of the ports directory " "will be shared by all the jails. Using a separate copy of the ports " "directory for jails isolates them from the host. The ezjailFAQ explains in " "more detail: http://erdgeist.org/arts/software/ezjail/#FAQ[]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:722 msgid "To Populate the Jail with FreeBSD-RELEASE" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:725 msgid "" "For a basejail based on the FreeBSD RELEASE matching that of the host " "computer, use `install`. For example, on a host computer running FreeBSD 10-" "STABLE, the latest RELEASE version of FreeBSD -10 will be installed in the " "jail):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:729 #, no-wrap msgid "# ezjail-admin install -p\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:732 msgid "To Populate the Jail with `installworld`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:734 msgid "" "The basejail can be installed from binaries created by `buildworld` on the " "host with `ezjail-admin update`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:738 msgid "" "In this example, FreeBSD 10-STABLE has been built from source. The jail " "directories are created. Then `installworld` is executed, installing the " "host's [.filename]#/usr/obj# into the basejail." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:742 #, no-wrap msgid "# ezjail-admin update -i -p\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:746 msgid "" "The host's [.filename]#/usr/src# is used by default. A different source " "directory on the host can be specified with `-s` and a path, or set with " "`ezjail_sourcetree` in [.filename]#/usr/local/etc/ezjail.conf#." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:753 msgid "" "The basejail's ports tree is shared by other jails. However, downloaded " "distfiles are stored in the jail that downloaded them. By default, these " "files are stored in [.filename]#/var/ports/distfiles# within each jail. [." "filename]#/var/ports# inside each jail is also used as a work directory when " "building ports." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:761 msgid "" "The FTP protocol is used by default to download packages for the " "installation of the basejail. Firewall or proxy configurations can prevent " "or interfere with FTP transfers. The HTTP protocol works differently and " "avoids these problems. It can be chosen by specifying a full URL for a " "particular download mirror in [.filename]#/usr/local/etc/ezjail.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:765 #, no-wrap msgid "ezjail_ftphost=http://ftp.FreeBSD.org\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:768 msgid "See the crossref:mirrors[mirrors,mirrors] section for a list of sites." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:771 #, no-wrap msgid "Creating and Starting a New Jail" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:775 msgid "" "New jails are created with `ezjail-admin create`. In these examples, the " "`lo1` loopback interface is used as described above." msgstr "" #. type: Block title #: documentation/content/en/books/handbook/jails/_index.adoc:778 #, no-wrap msgid "Procedure: Create and Start a New Jail" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:780 msgid "" "Create the jail, specifying a name and the loopback and network interfaces " "to use, along with their IP addresses. In this example, the jail is named " "`dnsjail`." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:784 #, no-wrap msgid "# ezjail-admin create dnsjail 'lo1|127.0.1.1,em0|192.168.1.50'\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:792 msgid "" "Most network services run in jails without problems. A few network " "services, most notably man:ping[8], use _raw network sockets_. In jails, " "raw network sockets are disabled by default for security. Services that " "require them will not work." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:797 msgid "" "Occasionally, a jail genuinely needs raw sockets. For example, network " "monitoring applications often use man:ping[8] to check the availability of " "other computers. When raw network sockets are actually needed in a jail, " "they can be enabled by editing the ezjail configuration file for the " "individual jail, [.filename]#/usr/local/etc/ezjail/jailname#. Modify the " "`parameters` entry:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:801 #, no-wrap msgid "export jail_jailname_parameters=\"allow.raw_sockets=1\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:804 msgid "" "Do not enable raw network sockets unless services in the jail actually " "require them." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:807 msgid "Start the jail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:811 #, no-wrap msgid "# ezjail-admin start dnsjail\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:814 msgid "Use a console on the jail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:818 #, no-wrap msgid "# ezjail-admin console dnsjail\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:822 msgid "" "The jail is operating and additional configuration can be completed. " "Typical settings added at this point include:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:825 msgid "Set the `root` Password" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:827 msgid "Connect to the jail and set the `root` user's password:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:835 #, no-wrap msgid "" "# ezjail-admin console dnsjail\n" "# passwd\n" "Changing local password for root\n" "New Password:\n" "Retype New Password:\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:838 msgid "Time Zone Configuration" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:842 msgid "" "The jail's time zone can be set with man:tzsetup[8]. To avoid spurious " "error messages, the man:adjkerntz[8] entry in [.filename]#/etc/crontab# can " "be commented or removed. This job attempts to update the computer's " "hardware clock with time zone changes, but jails are not allowed to access " "that hardware." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:843 msgid "DNS Servers" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:845 msgid "" "Enter domain name server lines in [.filename]#/etc/resolv.conf# so DNS works " "in the jail." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:846 msgid "Edit [.filename]#/etc/hosts#" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:848 msgid "" "Change the address and add the jail name to the `localhost` entries in [." "filename]#/etc/hosts#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:849 msgid "Configure [.filename]#/etc/rc.conf#" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:854 msgid "" "Enter configuration settings in [.filename]#/etc/rc.conf#. This is much " "like configuring a full computer. The host name and IP address are not set " "here. Those values are already provided by the jail configuration." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:856 msgid "" "With the jail configured, the applications for which the jail was created " "can be installed." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:861 msgid "" "Some ports must be built with special options to be used in a jail. For " "example, both of the network monitoring plugin packages package:net-mgmt/" "nagios-plugins[] and package:net-mgmt/monitoring-plugins[] have a `JAIL` " "option which must be enabled for them to work correctly inside a jail." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:864 #, no-wrap msgid "Updating Jails" msgstr "" #. type: Title ==== #: documentation/content/en/books/handbook/jails/_index.adoc:867 #, no-wrap msgid "Updating the Operating System" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:871 msgid "" "Because the basejail's copy of the userland is shared by the other jails, " "updating the basejail automatically updates all of the other jails. Either " "source or binary updates can be used." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:873 msgid "" "To build the world from source on the host, then install it in the basejail, " "use:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:877 #, no-wrap msgid "# ezjail-admin update -b\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:880 msgid "" "If the world has already been compiled on the host, install it in the " "basejail with:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:884 #, no-wrap msgid "# ezjail-admin update -i\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:889 msgid "" "Binary updates use man:freebsd-update[8]. These updates have the same " "limitations as if man:freebsd-update[8] were being run directly. The most " "important one is that only -RELEASE versions of FreeBSD are available with " "this method." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:892 msgid "" "Update the basejail to the latest patched release of the version of FreeBSD " "on the host. For example, updating from RELEASE-p1 to RELEASE-p2." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:896 #, no-wrap msgid "# ezjail-admin update -u\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:902 msgid "" "To upgrade the basejail to a new version, first upgrade the host system as " "described in crossref:cutting-edge[freebsdupdate-upgrade,“Performing Major " "and Minor Version Upgrades”]. Once the host has been upgraded and rebooted, " "the basejail can then be upgraded. man:freebsd-update[8] has no way of " "determining which version is currently installed in the basejail, so the " "original version must be specified. Use man:file[1] to determine the " "original version in the basejail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:907 #, no-wrap msgid "" "# file /usr/jails/basejail/bin/sh\n" "/usr/jails/basejail/bin/sh: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 9.3, stripped\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:910 msgid "" "Now use this information to perform the upgrade from `9.3-RELEASE` to the " "current version of the host system:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:914 #, no-wrap msgid "# ezjail-admin update -U -s 9.3-RELEASE\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:917 msgid "" "After updating the basejail, man:mergemaster[8] must be run to update each " "jail's configuration files." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:920 msgid "" "How to use man:mergemaster[8] depends on the purpose and trustworthiness of " "a jail. If a jail's services or users are not trusted, then man:" "mergemaster[8] should only be run from within that jail:" msgstr "" #. type: Block title #: documentation/content/en/books/handbook/jails/_index.adoc:922 #, no-wrap msgid "man:mergemaster[8] on Untrusted Jail" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:927 msgid "" "Delete the link from the jail's [.filename]#/usr/src# into the basejail and " "create a new [.filename]#/usr/src# in the jail as a mountpoint. Mount the " "host computer's [.filename]#/usr/src# read-only on the jail's new [." "filename]#/usr/src# mountpoint:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:933 #, no-wrap msgid "" "# rm /usr/jails/jailname/usr/src\n" "# mkdir /usr/jails/jailname/usr/src\n" "# mount -t nullfs -o ro /usr/src /usr/jails/jailname/usr/src\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:936 msgid "Get a console in the jail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:940 #, no-wrap msgid "# ezjail-admin console jailname\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:944 msgid "Inside the jail, run `mergemaster`. Then exit the jail console:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:950 #, no-wrap msgid "" "# cd /usr/src\n" "# mergemaster -U\n" "# exit\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:953 msgid "Finally, unmount the jail's [.filename]#/usr/src#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:957 #, no-wrap msgid "# umount /usr/jails/jailname/usr/src\n" msgstr "" #. type: Block title #: documentation/content/en/books/handbook/jails/_index.adoc:962 #, no-wrap msgid "man:mergemaster[8] on Trusted Jail" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:967 msgid "" "If the users and services in a jail are trusted, man:mergemaster[8] can be " "run from the host:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:971 #, no-wrap msgid "# mergemaster -U -D /usr/jails/jailname\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:979 msgid "" "After a major version update it is recommended by package:sysutils/ezjail[] " "to make sure your `pkg` is of the correct version. Therefore enter:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:983 #, no-wrap msgid "# pkg-static upgrade -f pkg\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:986 msgid "to upgrade or downgrade to the appropriate version." msgstr "" #. type: Title ==== #: documentation/content/en/books/handbook/jails/_index.adoc:989 #, no-wrap msgid "Updating Ports" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:993 msgid "" "The ports tree in the basejail is shared by the other jails. Updating that " "copy of the ports tree gives the other jails the updated version also." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:995 msgid "The basejail ports tree is updated with man:portsnap[8]:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:999 #, no-wrap msgid "# ezjail-admin update -P\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:1002 #, no-wrap msgid "Controlling Jails" msgstr "" #. type: Title ==== #: documentation/content/en/books/handbook/jails/_index.adoc:1005 #, no-wrap msgid "Stopping and Starting Jails" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1009 msgid "" "ezjail automatically starts jails when the computer is started. Jails can " "be manually stopped and restarted with `stop` and `start`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1014 #, no-wrap msgid "" "# ezjail-admin stop sambajail\n" "Stopping jails: sambajail.\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1018 msgid "" "By default, jails are started automatically when the host computer starts. " "Autostarting can be disabled with `config`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1022 #, no-wrap msgid "# ezjail-admin config -r norun seldomjail\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1026 msgid "" "This takes effect the next time the host computer is started. A jail that " "is already running will not be stopped." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1028 msgid "Enabling autostart is very similar:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1032 #, no-wrap msgid "# ezjail-admin config -r run oftenjail\n" msgstr "" #. type: Title ==== #: documentation/content/en/books/handbook/jails/_index.adoc:1035 #, no-wrap msgid "Archiving and Restoring Jails" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1041 msgid "" "Use `archive` to create a [.filename]#.tar.gz# archive of a jail. The file " "name is composed from the name of the jail and the current date. Archive " "files are written to the archive directory, [.filename]#/usr/jails/" "ezjail_archives#. A different archive directory can be chosen by setting " "`ezjail_archivedir` in the configuration file." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1044 msgid "" "The archive file can be copied elsewhere as a backup, or an existing jail " "can be restored from it with `restore`. A new jail can be created from the " "archive, providing a convenient way to clone existing jails." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1046 msgid "Stop and archive a jail named `wwwserver`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1054 #, no-wrap msgid "" "# ezjail-admin stop wwwserver\n" "Stopping jails: wwwserver.\n" "# ezjail-admin archive wwwserver\n" "# ls /usr/jails/ezjail-archives/\n" "wwwserver-201407271153.13.tar.gz\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1058 msgid "" "Create a new jail named `wwwserver-clone` from the archive created in the " "previous step. Use the [.filename]#em1# interface and assign a new IP " "address to avoid conflict with the original:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1062 #, no-wrap msgid "# ezjail-admin create -a /usr/jails/ezjail_archives/wwwserver-201407271153.13.tar.gz wwwserver-clone 'lo1|127.0.3.1,em1|192.168.1.51'\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/jails/_index.adoc:1065 #, no-wrap msgid "Full Example: BIND in a Jail" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1069 msgid "" "Putting the BINDDNS server in a jail improves security by isolating it. " "This example creates a simple caching-only name server." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1071 msgid "The jail will be called `dns1`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1072 msgid "" "The jail will use IP address `192.168.1.240` on the host's `re0` interface." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1073 msgid "The upstream ISP's DNS servers are at `10.0.0.62` and `10.0.0.61`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1074 msgid "" "The basejail has already been created and a ports tree installed as shown in " "<>." msgstr "" #. type: Block title #: documentation/content/en/books/handbook/jails/_index.adoc:1076 #, no-wrap msgid "Running BIND in a Jail" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1081 msgid "" "Create a cloned loopback interface by adding a line to [.filename]#/etc/rc." "conf#:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1088 msgid "Immediately create the new loopback interface:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1096 msgid "Create the jail:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1100 #, no-wrap msgid "# ezjail-admin create dns1 'lo1|127.0.2.1,re0|192.168.1.240'\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1103 msgid "" "Start the jail, connect to a console running on it, and perform some basic " "configuration:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1115 #, no-wrap msgid "" "# ezjail-admin start dns1\n" "# ezjail-admin console dns1\n" "# passwd\n" "Changing local password for root\n" "New Password:\n" "Retype New Password:\n" "# tzsetup\n" "# sed -i .bak -e '/adjkerntz/ s/^/#/' /etc/crontab\n" "# sed -i .bak -e 's/127.0.0.1/127.0.2.1/g; s/localhost.my.domain/dns1.my.domain dns1/' /etc/hosts\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1118 msgid "" "Temporarily set the upstream DNS servers in [.filename]#/etc/resolv.conf# so " "ports can be downloaded:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1123 #, no-wrap msgid "" "nameserver 10.0.0.62\n" "nameserver 10.0.0.61\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1126 msgid "Still using the jail console, install package:dns/bind99[]." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1130 #, no-wrap msgid "# make -C /usr/ports/dns/bind99 install clean\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1133 msgid "" "Configure the name server by editing [.filename]#/usr/local/etc/namedb/named." "conf#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1136 msgid "" "Create an Access Control List (ACL) of addresses and networks that are " "permitted to send DNS queries to this name server. This section is added " "just before the `options` section already in the file:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1141 #, no-wrap msgid "" "...\n" "// or cause huge amounts of useless Internet traffic.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1147 #, no-wrap msgid "" "acl \"trusted\" {\n" "\t192.168.1.0/24;\n" "\tlocalhost;\n" "\tlocalnets;\n" "};\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1150 #, no-wrap msgid "" "options {\n" "...\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1153 msgid "" "Use the jail IP address in the `listen-on` setting to accept DNS queries " "from other computers on the network:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1157 #, no-wrap msgid "\tlisten-on\t{ 192.168.1.240; };\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1161 msgid "" "A simple caching-only DNS name server is created by changing the " "`forwarders` section. The original file contains:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1169 #, no-wrap msgid "" "/*\n" "\tforwarders {\n" "\t\t127.0.0.1;\n" "\t};\n" "*/\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1174 msgid "" "Uncomment the section by removing the `/\\*` and `*/` lines. Enter the IP " "addresses of the upstream DNS servers. Immediately after the `forwarders` " "section, add references to the `trusted` ACL defined earlier:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1181 #, no-wrap msgid "" "\tforwarders {\n" "\t\t10.0.0.62;\n" "\t\t10.0.0.61;\n" "\t};\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1185 #, no-wrap msgid "" "\tallow-query { any; };\n" "\tallow-recursion { trusted; };\n" "\tallow-query-cache { trusted; };\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1188 msgid "Enable the service in [.filename]#/etc/rc.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1192 #, no-wrap msgid "named_enable=\"YES\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1195 msgid "Start and test the name server:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1202 #, no-wrap msgid "" "# service named start\n" "wrote key file \"/usr/local/etc/namedb/rndc.key\"\n" "Starting named.\n" "# /usr/local/bin/dig @192.168.1.240 freebsd.org\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1205 msgid "A response that includes" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1209 #, no-wrap msgid ";; Got answer;\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1213 msgid "" "shows that the new DNS server is working. A long delay followed by a " "response including" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1217 #, no-wrap msgid ";; connection timed out; no servers could be reached\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1221 msgid "" "shows a problem. Check the configuration settings and make sure any local " "firewalls allow the new DNS access to the upstream DNS servers." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1224 msgid "" "The new DNS server can use itself for local name resolution, just like other " "local computers. Set the address of the DNS server in the client computer's " "[.filename]#/etc/resolv.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/jails/_index.adoc:1228 #, no-wrap msgid "nameserver 192.168.1.240\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/jails/_index.adoc:1231 msgid "" "A local DHCP server can be configured to provide this address for a local " "DNS server, providing automatic configuration on DHCP clients." msgstr "" diff --git a/documentation/content/en/books/handbook/mirrors/_index.po b/documentation/content/en/books/handbook/mirrors/_index.po index 543fe3415a..ccc71c4eab 100644 --- a/documentation/content/en/books/handbook/mirrors/_index.po +++ b/documentation/content/en/books/handbook/mirrors/_index.po @@ -1,1656 +1,1656 @@ # 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: 2022-10-01 13:49-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/handbook/mirrors/_index.adoc:1 #, no-wrap msgid "How to get FreeBSD: CD and DVD sets, FTP sites and how to install and use Git" msgstr "" #. type: YAML Front Matter: part #: documentation/content/en/books/handbook/mirrors/_index.adoc:1 #, no-wrap msgid "Part V. Appendices" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/handbook/mirrors/_index.adoc:1 #, no-wrap msgid "Appendix A. Obtaining FreeBSD" msgstr "" #. type: Title = #: documentation/content/en/books/handbook/mirrors/_index.adoc:15 #, no-wrap msgid "Obtaining FreeBSD" msgstr "" #. type: Title == #: documentation/content/en/books/handbook/mirrors/_index.adoc:53 #, no-wrap msgid "Mirrors" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:57 msgid "" "The official mirrors of the FreeBSD project are made up of many machines " "operated by the project cluster administrators and behind GeoDNS to direct " "users to the closest available mirror. Current locations are Australia, " "Brazil, Japan (two sites), Malaysia, Netherlands, South Africa, Taiwan, " "United Kingdom, United States of America (California, New Jersey, and " "Washington)." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:59 msgid "Official mirrors service:" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:62 #, no-wrap msgid "Service Name" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:62 #: documentation/content/en/books/handbook/mirrors/_index.adoc:95 #, no-wrap msgid "Protocols" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:64 #, no-wrap msgid "More information" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:65 #, no-wrap msgid "**download.FreeBSD.org**" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:66 #, no-wrap msgid "link:https://download.FreeBSD.org/[https] link:ftp://download.FreeBSD.org/pub/FreeBSD/[ftp]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:68 #, no-wrap msgid "Same content as `ftp.FreeBSD.org`, `ftp` is a legacy name; `download.FreeBSD.org` is recommended." msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:69 #, no-wrap msgid "**git.FreeBSD.org**" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:70 #, no-wrap msgid "git over `https` and `ssh`" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:72 #, no-wrap msgid "More details on link:https://docs.freebsd.org/en/books/handbook/mirrors/#git[using git] section." msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:73 #, no-wrap msgid "**pkg.FreeBSD.org**" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:74 #, no-wrap msgid "man:pkg[8] over `http` and `https`" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:76 #, no-wrap msgid "Official FreeBSD package repositories used by the man:pkg[8] program." msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:77 #, no-wrap msgid "**vuxml.FreeBSD.org** / **www.VuXML.org**" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:78 #, no-wrap msgid "link:https://www.vuxml.org/[https]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:79 #, no-wrap msgid "FreeBSD Project VuXML web page. `pkg audit` fetches the list of vulnerabilities from this service." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:82 msgid "All official mirrors support IPv4 and IPv6." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:84 msgid "" "The FreeBSD website (https://www.FreeBSD.org and https://docs.FreeBSD.org) " "are not hosted in the GeoDNS Infrastructure; there are ongoing studies of " "its implementation." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:86 msgid "" "http://ftp-archive.FreeBSD.org is not in the GeoDNS Infrastructure, hosted " "in only one location (US)." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:88 msgid "" "The project is looking for new locations; those willing to sponsor, please " "reach out to the Cluster Administrators team for more information." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:90 msgid "Mirror list maintained by the community and other companies:" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:93 #, no-wrap msgid "Country" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:93 #, no-wrap msgid "Hostname" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:96 #, no-wrap msgid "Australia icon:envelope[link=mailto:{mirrors-australia-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:97 #, no-wrap msgid "ftp.au.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:99 #, no-wrap msgid "link:http://ftp.au.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.au.FreeBSD.org/pub/FreeBSD[http_v6] link:rsync://ftp.au.FreeBSD.org[rsync] link:rsync://ftp.au.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:101 #, no-wrap msgid "ftp3.au.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:103 #, no-wrap msgid "link:http://ftp3.au.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp3.au.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp3.au.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:104 #, no-wrap msgid "Austria icon:envelope[link=mailto:{mirrors-austria-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:105 #, no-wrap msgid "ftp.at.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:107 #, no-wrap msgid "link:http://ftp.at.FreeBSD.org/pub/FreeBSD/[http] link:http://ftp.at.FreeBSD.org/pub/FreeBSD/[http_v6] link:ftp://ftp.at.FreeBSD.org/pub/FreeBSD/[ftp] link:ftp://ftp.at.FreeBSD.org/pub/FreeBSD/[ftp_v6] link:rsync://ftp.at.FreeBSD.org/pub/FreeBSD/[rsync] link:rsync://ftp.at.FreeBSD.org/pub/FreeBSD/[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:108 #, no-wrap msgid "Brazil icon:envelope[link=mailto:{mirrors-brazil-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:109 #, no-wrap msgid "ftp2.br.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:111 #, no-wrap msgid "link:http://ftp2.br.FreeBSD.org/FreeBSD[http] link:rsync://ftp2.br.FreeBSD.org[rsync] link:rsync://ftp2.br.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:113 #, no-wrap msgid "ftp3.br.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:115 #, no-wrap msgid "link:http://ftp3.br.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp3.br.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp3.br.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:116 #, no-wrap msgid "Bulgaria icon:envelope[link=mailto:{mirrors-bulgaria-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:117 #, no-wrap msgid "ftp.bg.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:119 #, no-wrap msgid "link:ftp://ftp.bg.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.bg.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.bg.FreeBSD.org[rsync] link:rsync://ftp.bg.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:120 #, no-wrap msgid "Czech Republic icon:envelope[link=mailto:{mirrors-czech-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:121 #, no-wrap msgid "ftp.cz.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:123 #, no-wrap msgid "link:http://ftp.cz.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.cz.FreeBSD.org/pub/FreeBSD[http_v6] link:rsync://ftp.cz.FreeBSD.org[rsync] link:rsync://ftp.cz.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:124 #, no-wrap msgid "Denmark icon:envelope[link=mailto:{mirrors-denmark-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:125 #, no-wrap msgid "ftp.dk.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:127 #, no-wrap msgid "link:http://ftp.dk.FreeBSD.org/FreeBSD/[http] link:http://ftp.dk.FreeBSD.org/FreeBSD/[http_v6] link:ftp://ftp.dk.FreeBSD.org/FreeBSD/[ftp] link:ftp://ftp.dk.FreeBSD.org/FreeBSD/[ftp_v6] link:rsync://ftp.dk.FreeBSD.org/FreeBSD/[rsync] link:rsync://ftp.dk.FreeBSD.org/FreeBSD/[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:128 #, no-wrap msgid "Finland icon:envelope[link=mailto:{mirrors-finland-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:129 #, no-wrap msgid "ftp.fi.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:131 #, no-wrap msgid "link:ftp://ftp.fi.FreeBSD.org/pub/FreeBSD[ftp]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:132 #, no-wrap msgid "France icon:envelope[link=mailto:{mirrors-france-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:133 #, no-wrap msgid "ftp.fr.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:135 #, no-wrap msgid "link:http://ftp.fr.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.fr.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.fr.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.fr.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.fr.FreeBSD.org[rsync] link:rsync://ftp.fr.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:137 #, no-wrap msgid "ftp3.fr.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:139 #, no-wrap msgid "link:ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD[ftp]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:141 #, no-wrap msgid "ftp6.fr.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:143 #, no-wrap msgid "link:http://ftp6.fr.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp6.fr.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:144 #, no-wrap msgid "Germany icon:envelope[link=mailto:{mirrors-germany-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:145 #, no-wrap msgid "ftp.de.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:147 #, no-wrap msgid "link:ftp://ftp.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.de.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.de.FreeBSD.org[rsync] link:rsync://ftp.de.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:149 #, no-wrap msgid "ftp1.de.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:151 #, no-wrap msgid "link:http://ftp1.de.FreeBSD.org/pub/FreeBSD[http] link:http://ftp1.de.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp1.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp1.de.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp1.de.FreeBSD.org[rsync] link:rsync://ftp1.de.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:153 #, no-wrap msgid "ftp2.de.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:155 #, no-wrap msgid "link:http://ftp2.de.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.de.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp2.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp2.de.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp2.de.FreeBSD.org[rsync] link:rsync://ftp2.de.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:157 #, no-wrap msgid "ftp5.de.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:159 #, no-wrap msgid "link:ftp://ftp5.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp5.de.FreeBSD.org/pub/FreeBSD[ftp_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:161 #, no-wrap msgid "ftp7.de.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:163 #, no-wrap msgid "link:http://ftp7.de.FreeBSD.org/pub/FreeBSD[http] link:http://ftp7.de.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp7.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp7.de.FreeBSD.org/pub/FreeBSD[ftp_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:164 #, no-wrap msgid "Greece icon:envelope[link=mailto:{mirrors-greece-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:165 #, no-wrap msgid "ftp.gr.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:167 #, no-wrap msgid "link:http://ftp.gr.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.gr.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.gr.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.gr.FreeBSD.org/pub/FreeBSD[ftp_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:169 #, no-wrap msgid "ftp2.gr.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:171 #, no-wrap msgid "link:http://ftp2.gr.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.gr.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp2.gr.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp2.gr.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp2.gr.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:172 #, no-wrap msgid "Japan icon:envelope[link=mailto:{mirrors-japan-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:173 #, no-wrap msgid "ftp.jp.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:175 #, no-wrap msgid "link:http://ftp.jp.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.jp.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.jp.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.jp.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.jp.FreeBSD.org[rsync] link:rsync://ftp.jp.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:177 #, no-wrap msgid "ftp2.jp.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:179 #, no-wrap msgid "link:ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp2.jp.FreeBSD.org[rsync] link:rsync://ftp2.jp.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:181 #, no-wrap msgid "ftp3.jp.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:183 #, no-wrap msgid "link:http://ftp3.jp.FreeBSD.org/pub/FreeBSD[http] link:rsync://ftp3.jp.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:185 #, no-wrap msgid "ftp4.jp.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:187 #, no-wrap msgid "link:ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD[ftp]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:189 #, no-wrap msgid "ftp6.jp.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:191 #, no-wrap msgid "link:http://ftp6.jp.FreeBSD.org/pub/FreeBSD[http] link:http://ftp6.jp.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp6.jp.FreeBSD.org[rsync] link:rsync://ftp6.jp.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:192 #, no-wrap msgid "Korea icon:envelope[link=mailto:{mirrors-korea-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:193 #, no-wrap msgid "ftp.kr.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:195 #, no-wrap msgid "link:http://ftp.kr.FreeBSD.org/pub/FreeBSD[http] link:https://ftp.kr.FreeBSD.org/pub/FreeBSD[https] link:ftp://ftp.kr.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp.kr.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:197 #, no-wrap msgid "ftp2.kr.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:199 #, no-wrap msgid "link:rsync://ftp2.kr.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:200 #, no-wrap msgid "Latvia icon:envelope[link=mailto:{mirrors-latvia-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:201 #, no-wrap msgid "ftp.lv.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:203 #, no-wrap msgid "link:http://ftp.lv.FreeBSD.org/freebsd[http] link:ftp://ftp.lv.FreeBSD.org/freebsd[ftp]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:204 #, no-wrap msgid "Netherlands icon:envelope[link=mailto:{mirrors-netherlands-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:205 #, no-wrap msgid "ftp.nl.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:207 #, no-wrap msgid "link:http://ftp.nl.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.nl.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.nl.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.nl.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.nl.FreeBSD.org[rsync] link:rsync://ftp.nl.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:209 #, no-wrap msgid "ftp2.nl.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:211 #, no-wrap msgid "link:http://ftp2.nl.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp2.nl.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp2.nl.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:212 #, no-wrap msgid "New Zealand icon:envelope[link=mailto:{mirrors-new-zealand-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:213 #, no-wrap msgid "ftp.nz.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:215 #, no-wrap msgid "link:http://ftp.nz.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp.nz.FreeBSD.org/pub/FreeBSD[ftp]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:216 #, no-wrap msgid "Norway icon:envelope[link=mailto:{mirrors-norway-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:217 #, no-wrap msgid "ftp.no.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:219 #, no-wrap msgid "link:ftp://ftp.no.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.no.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.no.FreeBSD.org[rsync] link:rsync://ftp.no.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:220 #, no-wrap msgid "Poland icon:envelope[link=mailto:{mirrors-poland-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:221 #, no-wrap msgid "ftp.pl.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:223 #, no-wrap msgid "link:http://ftp.pl.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.pl.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.pl.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp.pl.FreeBSD.org[rsync] link:rsync://ftp.pl.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:224 #, no-wrap msgid "Russia icon:envelope[link=mailto:{mirrors-russia-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:225 #, no-wrap msgid "ftp.ru.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:227 #, no-wrap msgid "link:http://ftp.ru.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.ru.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.ru.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.ru.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.ru.FreeBSD.org[rsync] link:rsync://ftp.ru.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:229 #, no-wrap msgid "ftp2.ru.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:231 #, no-wrap msgid "link:https://ftp2.ru.FreeBSD.org/pub/FreeBSD[https] link:ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp2.ru.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:232 #, no-wrap msgid "Slovenia icon:envelope[link=mailto:{mirrors-slovenia-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:233 #, no-wrap msgid "ftp.si.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:235 #, no-wrap msgid "link:http://ftp.si.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.si.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.si.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.si.FreeBSD.org/pub/FreeBSD[ftp_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:236 #, no-wrap msgid "South Africa icon:envelope[link=mailto:{mirrors-south-africa-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:237 #, no-wrap msgid "ftp.za.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:239 #, no-wrap msgid "link:https://ftp.za.FreeBSD.org/pub/FreeBSD[https] link:https://ftp.za.FreeBSD.org/pub/FreeBSD[https_v6] link:rsync://ftp.za.FreeBSD.org[rsync] link:rsync://ftp.za.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:241 #, no-wrap msgid "ftp2.za.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:243 #, no-wrap msgid "link:http://ftp2.za.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.za.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp2.za.FreeBSD.org/pub/FreeBSD[ftp_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:245 #, no-wrap msgid "ftp4.za.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:247 #, no-wrap msgid "link:http://ftp4.za.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp4.za.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp4.za.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:248 #, no-wrap msgid "Sweden icon:envelope[link=mailto:{mirrors-sweden-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:249 #, no-wrap msgid "ftp.se.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:251 #, no-wrap msgid "link:http://ftp.se.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.se.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.se.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.se.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.se.FreeBSD.org[rsync] link:rsync://ftp.se.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:252 #, no-wrap msgid "Taiwan icon:envelope[link=mailto:{mirrors-taiwan-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:253 #, no-wrap msgid "ftp4.tw.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:255 #, no-wrap msgid "link:https://ftp4.tw.FreeBSD.org/pub/FreeBSD[https] link:ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp4.tw.FreeBSD.org[rsync]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:257 #, no-wrap msgid "ftp5.tw.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:259 #, no-wrap msgid "link:http://ftp5.tw.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp5.tw.FreeBSD.org/pub/FreeBSD[ftp]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:260 #, no-wrap msgid "Ukraine icon:envelope[link=mailto:{mirrors-ukraine-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:261 #, no-wrap msgid "ftp.ua.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:263 #, no-wrap msgid "link:http://ftp.ua.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp.ua.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.ua.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.ua.FreeBSD.org[rsync] link:rsync://ftp.ua.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:264 #, no-wrap msgid "United Kingdom icon:envelope[link=mailto:{mirrors-uk-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:265 #, no-wrap msgid "ftp.uk.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:267 #, no-wrap msgid "link:http://ftp.uk.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.uk.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.uk.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.uk.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.uk.FreeBSD.org[rsync] link:rsync://ftp.uk.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:269 #, no-wrap msgid "ftp2.uk.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:271 #, no-wrap msgid "link:http://ftp2.uk.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.uk.FreeBSD.org/pub/FreeBSD[http_v6] link:https://ftp2.uk.FreeBSD.org/pub/FreeBSD[https] link:https://ftp2.uk.FreeBSD.org/pub/FreeBSD[https_v6] link:ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD[ftp_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:272 #, no-wrap msgid "United States of America icon:envelope[link=mailto:{mirrors-us-email}, title=\"mirror contact\"]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:273 #, no-wrap msgid "ftp11.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:275 #, no-wrap msgid "link:http://ftp11.FreeBSD.org/pub/FreeBSD[http] link:http://ftp11.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp11.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp11.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp11.FreeBSD.org[rsync] link:rsync://ftp11.FreeBSD.org[rsync_v6]" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:277 #, no-wrap msgid "ftp14.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:279 #, no-wrap msgid "link:ftp://ftp14.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp14.FreeBSD.org[rsync] (Former official tier 1)" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:281 #, no-wrap msgid "ftp5.FreeBSD.org" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:282 #, no-wrap msgid "link:http://ftp5.FreeBSD.org/pub/FreeBSD[http] link:http://ftp5.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp5.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp5.FreeBSD.org/pub/FreeBSD[ftp_v6]" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:285 msgid "" "The current list of protocols supported by the community mirrors was last " "updated on 2022-01-31, and it's not guaranteed." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/mirrors/_index.adoc:287 #, no-wrap msgid "Using Git" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:290 #: documentation/content/en/books/handbook/mirrors/_index.adoc:422 #, no-wrap msgid "Introduction" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:294 msgid "" "As of December 2020, FreeBSD uses git as the primary version control system " "for storing all of FreeBSD's base source code and documentation. As of " "April 2021, FreeBSD uses git as the only version control system for storing " "all of FreeBSD's Ports Collection." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:299 msgid "" "Git is generally a developer tool. Users may prefer to use `freebsd-update` " "(crossref:cutting-edge[updating-upgrading-freebsdupdate,“FreeBSD Update”]) " -"to update the FreeBSD base system, and `portsnap` (crossref:ports[ports-" +"to update the FreeBSD base system, and `git` (crossref:ports[ports-" "using,“Using the Ports Collection”]) to update the FreeBSD Ports Collection." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:302 msgid "" "This section demonstrates how to install Git on a FreeBSD system and use it " "to create a local copy of a FreeBSD source code repository." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:304 #: documentation/content/en/books/handbook/mirrors/_index.adoc:448 #, no-wrap msgid "Installation" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:307 msgid "Git can be installed from the Ports Collection, or as a package:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:311 #, no-wrap msgid "# pkg install git\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:314 #, no-wrap msgid "Running Git" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:318 msgid "" "To fetch a clean copy of the sources into a local directory, use `git " "clone`. This directory of files is called the _working tree_." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:323 msgid "" "Git uses URLs to designate a repository. There are three different " "repositories, `src` for the FreeBSD system source code, `doc` for " "documentation, and `ports` for the FreeBSD Ports Collection. All three are " "reachable over two different protocols: HTTPS and SSH. For example, the URL " "`https://git.FreeBSD.org/src.git` specifies the main branch of the `src` " "repository, using the `https` protocol." msgstr "" #. type: Block title #: documentation/content/en/books/handbook/mirrors/_index.adoc:325 #, no-wrap msgid "FreeBSD Git Repository URL Table" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:328 #, no-wrap msgid "Item" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:329 #, no-wrap msgid "Git URL" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:329 #, no-wrap msgid "Read-only src repo via HTTPS" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:330 #, no-wrap msgid "`https://git.FreeBSD.org/src.git`" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:330 #, no-wrap msgid "Read-only src repo via anon-ssh" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:331 #, no-wrap msgid "`ssh://anongit@git.FreeBSD.org/src.git`" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:331 #, no-wrap msgid "Read-only doc repo via HTTPS" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:332 #, no-wrap msgid "`https://git.FreeBSD.org/doc.git`" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:332 #, no-wrap msgid "Read-only doc repo via anon-ssh" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:333 #, no-wrap msgid "`ssh://anongit@git.FreeBSD.org/doc.git`" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:333 #, no-wrap msgid "Read-only ports repo via HTTPS" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:334 #, no-wrap msgid "`https://git.FreeBSD.org/ports.git`" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:334 #, no-wrap msgid "Read-only ports repo via anon-ssh" msgstr "" #. type: Table #: documentation/content/en/books/handbook/mirrors/_index.adoc:335 #, no-wrap msgid "`ssh://anongit@git.FreeBSD.org/ports.git`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:338 msgid "" "External mirrors maintained by project members are also available; please " "refer to the <> section." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:340 msgid "To clone a copy of the FreeBSD system source code repository:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:344 #, no-wrap msgid "# git clone -o freebsd https://git.FreeBSD.org/src.git /usr/src\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:349 msgid "" "The `-o freebsd` option specifies the origin; by convention in the FreeBSD " "documentation, the origin is assumed to be `freebsd`. Because the initial " "checkout must download the full branch of the remote repository, it can take " "a while. Please be patient." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:352 msgid "" "Initially, the working tree contains source code for the `main` branch, " "which corresponds to CURRENT. To switch to 13-STABLE instead:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:356 #, no-wrap msgid "" "# cd /usr/src\n" "# git checkout stable/13\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:360 msgid "" "The working tree can be updated with `git pull`. To update [.filename]#/usr/" "src# created in the example above, use:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:365 #, no-wrap msgid "" "# cd /usr/src\n" "# git pull --rebase\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:368 #: documentation/content/en/books/handbook/mirrors/_index.adoc:523 msgid "" "The update is much quicker than a checkout, only transferring files that " "have changed." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:369 #, no-wrap msgid "Web-based repository browser" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:372 msgid "" "The FreeBSD project uses cgit as the web-based repository browser: link:" "https://cgit.FreeBSD.org/[https://cgit.FreeBSD.org/]." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:373 #, no-wrap msgid "For Developers" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:376 msgid "" "For information about write access to repositories see the extref:" "{committers-guide}[Committer's Guide, git-mini-primer]." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:378 #, no-wrap msgid "External mirrors" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:383 msgid "" "Those mirrors are not hosted in FreeBSD.org but still maintained by the " "project members. Users and developers are welcome to pull or browse " "repositories on those mirrors. Pull requests for the `doc` GitHub " "repository are being accepted; otherwise, the project workflow with those " "mirrors is still under discussion." msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/mirrors/_index.adoc:384 #, no-wrap msgid "Codeberg" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:386 msgid "doc: https://codeberg.org/FreeBSD/freebsd-doc" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:387 msgid "ports: https://codeberg.org/FreeBSD/freebsd-ports" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:388 msgid "src: https://codeberg.org/FreeBSD/freebsd-src" msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/mirrors/_index.adoc:389 #, no-wrap msgid "GitHub" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:391 msgid "doc: https://github.com/freebsd/freebsd-doc" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:392 msgid "ports: https://github.com/freebsd/freebsd-ports" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:393 msgid "src: https://github.com/freebsd/freebsd-src" msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/mirrors/_index.adoc:394 #, no-wrap msgid "GitLab" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:396 msgid "doc: https://gitlab.com/FreeBSD/freebsd-doc" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:397 msgid "ports: https://gitlab.com/FreeBSD/freebsd-ports" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:398 msgid "src: https://gitlab.com/FreeBSD/freebsd-src" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:399 #, no-wrap msgid "Mailing lists" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:403 msgid "" "The main mailing list for general usage and questions about git in the " "FreeBSD project is https://lists.freebsd.org/subscription/freebsd-" "git[freebsd-git]. For more details, including commit messages lists, see " "the crossref:handbook/eresources[eresources-mail, Mailing Lists] chapter." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:404 #, no-wrap msgid "SSH host keys" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:407 msgid "gitrepo.FreeBSD.org host key fingerprints:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:408 msgid "" "ECDSA key fingerprint is `SHA256:seWO5D27ySURcx4bknTNKlC1mgai0whP443PAKEvvZA`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:409 msgid "" "ED25519 key fingerprint is `SHA256:" "lNR6i4BEOaaUhmDHBA1WJsO7H3KtvjE2r5q4sOxtIWo`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:410 msgid "" "RSA key fingerprint is `SHA256:f453CUEFXEJAXlKeEHV+ajJfeEfx9MdKQUD7lIscnQI`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:412 msgid "git.FreeBSD.org host key fingerprints:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:413 msgid "" "ECDSA key fingerprint is `SHA256:/UlirUAsGiitupxmtsn7f9b7zCWd0vCs4Yo/tpVWP9w`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:414 msgid "" "ED25519 key fingerprint is `SHA256:" "y1ljKrKMD3lDObRUG3xJ9gXwEIuqnh306tSyFd1tuZE`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:415 msgid "" "RSA key fingerprint is `SHA256:jBe6FQGoH4HjvrIVM23dcnLZk9kmpdezR/CvQzm7rJM`" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:417 msgid "These are also published as SSHFP records in DNS." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/mirrors/_index.adoc:419 #, no-wrap msgid "Using Subversion" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:429 msgid "" "As of December 2020, FreeBSD uses git as the primary version control system " "for storing all of FreeBSD's source code and documentation. Changes from " "the git repo on the `stable/11`, `stable/12` and related releng branches are " "exported to the subversion repository. This export will continue through " "the life of these branches. From July 2012 to March 2021, FreeBSD used " "Subversion as the only version control system for storing all of FreeBSD's " "Ports Collection. As of April 2021, FreeBSD uses git as the only version " "control system for storing all of FreeBSD's Ports Collection." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:435 msgid "" "Subversion is generally a developer tool. Users may prefer to use `freebsd-" "update` (crossref:cutting-edge[updating-upgrading-freebsdupdate,“FreeBSD " -"Update”]) to update the FreeBSD base system, and `portsnap` (crossref:" -"ports[ports-using,“Using the Ports Collection”]) to update the FreeBSD Ports " +"Update”]) to update the FreeBSD base system, and `git` (crossref:ports[ports-" +"using,“Using the Ports Collection”]) to update the FreeBSD Ports " "Collection. After March 2021, subversion use is only for legacy branches " "(`stable/11` and `stable/12`)." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:438 msgid "" "This section demonstrates how to install Subversion on a FreeBSD system and " "use it to create a local copy of a FreeBSD repository. Additional " "information on the use of Subversion is included." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:440 #, no-wrap msgid "Svnlite" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:444 msgid "" "A lightweight version of Subversion is already installed on FreeBSD as " "`svnlite`. The port or package version of Subversion is only needed if the " "Python or Perl API is needed, or if a later version of Subversion is desired." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:446 msgid "" "The only difference from normal Subversion use is that the command name is " "`svnlite`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:451 msgid "" "If `svnlite` is unavailable or the full version of Subversion is needed, " "then it must be installed." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:453 msgid "Subversion can be installed from the Ports Collection:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:458 #, no-wrap msgid "" "# cd /usr/ports/devel/subversion\n" "# make install clean\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:461 msgid "Subversion can also be installed as a package:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:465 #, no-wrap msgid "# pkg install subversion\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:468 #, no-wrap msgid "Running Subversion" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:472 msgid "" "To fetch a clean copy of the sources into a local directory, use `svn`. The " "files in this directory are called a _local working copy_." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:477 msgid "" "Move or delete an existing destination directory before using `checkout` for " "the first time. Checkout over an existing non-`svn` directory can cause " "conflicts between the existing files and those brought in from the " "repository." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:483 msgid "" "Subversion uses URLs to designate a repository, taking the form of " "_protocol://hostname/path_. The first component of the path is the FreeBSD " "repository to access. There are three different repositories, `base` for " "the FreeBSD base system source code, `ports` for the Ports Collection, and " "`doc` for documentation. For example, the URL `https://svn.FreeBSD.org/base/" "head/` specifies the main branch of the src repository, using the `https` " "protocol." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:485 msgid "" "A checkout from a given repository is performed with a command like this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:489 #, no-wrap msgid "# svn checkout https://svn.FreeBSD.org/repository/branch lwcdir\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:492 msgid "where:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:494 msgid "" "_repository_ is one of the Project repositories: `base`, `ports`, or `doc`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:495 msgid "" "_branch_ depends on the repository used. `ports` and `doc` are mostly " "updated in the `head` branch, while `base` maintains the latest version of -" "CURRENT under `head` and the respective latest versions of the -STABLE " "branches under `stable/11` (11._x_) and `stable/12` (12._x_)." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:496 msgid "" "_lwcdir_ is the target directory where the contents of the specified branch " "should be placed. This is usually [.filename]#/usr/ports# for `ports`, [." "filename]#/usr/src# for `base`, and [.filename]#/usr/doc# for `doc`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:499 msgid "" "This example checks out the Source Tree from the FreeBSD repository using " "the HTTPS protocol, placing the local working copy in [.filename]#/usr/" "src#. If [.filename]#/usr/src# is already present but was not created by " "`svn`, remember to rename or delete it before the checkout." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:503 #, no-wrap msgid "# svn checkout https://svn.FreeBSD.org/base/head /usr/src\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:507 msgid "" "Because the initial checkout must download the full branch of the remote " "repository, it can take a while. Please be patient." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:509 msgid "" "After the initial checkout, the local working copy can be updated by running:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:513 #, no-wrap msgid "# svn update lwcdir\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:516 msgid "To update [.filename]#/usr/src# created in the example above, use:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:520 #, no-wrap msgid "# svn update /usr/src\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:527 msgid "" "An alternate way of updating the local working copy after checkout is " "provided by the [.filename]#Makefile# in the [.filename]#/usr/ports#, [." "filename]#/usr/src#, and [.filename]#/usr/doc# directories. Set " "`SVN_UPDATE` and use the `update` target. For example, to update [." "filename]#/usr/src#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:532 #, no-wrap msgid "" "# cd /usr/src\n" "# make update SVN_UPDATE=yes\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:535 #, no-wrap msgid "Subversion Mirror Sites" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:538 msgid "The FreeBSD Subversion repository is:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/mirrors/_index.adoc:542 #, no-wrap msgid "svn.FreeBSD.org\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:546 msgid "" "This is a publicly accessible mirror network that uses GeoDNS to select an " "appropriate back end server. To view the FreeBSD Subversion repositories " "through a browser, use https://svnweb.FreeBSD.org/[https://svnweb.FreeBSD." "org/]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:548 msgid "" "HTTPS is the preferred protocol, but the [.filename]#security/ca_root_nss# " "package will need to be installed in order to automatically validate " "certificates." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/mirrors/_index.adoc:549 #, no-wrap msgid "For More Information" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:552 msgid "" "For other information about using Subversion, please see the \"Subversion " "Book\", titled http://svnbook.red-bean.com/[Version Control with " "Subversion], or the http://subversion.apache.org/docs/[Subversion " "Documentation]." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/mirrors/_index.adoc:554 #, no-wrap msgid "CD and DVD Sets" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:557 msgid "FreeBSD CD and DVD sets are available from several online retailers:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:567 #, no-wrap msgid "" "FreeBSD Mall, Inc.\n" "1164 Claremont Dr\n" "Brentwood, CA\n" "94513\n" "USA\n" "Phone: +1 925 240-6652\n" "Fax: +1 925 674-0821\n" "Email: info@freebsdmall.com\n" "WWW: https://www.freebsdmall.com" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:570 #, no-wrap msgid "" "Getlinux\n" "WWW: https://www.getlinux.fr/" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/mirrors/_index.adoc:577 #, no-wrap msgid "" "Dr. Hinner EDV\n" "Schäftlarnstr. 10 // 4. Stock\n" "D-81371 München\n" "Germany\n" "Phone: +49 171 417 544 6\n" "Email: infow@hinner.de\n" "WWW: http://www.hinner.de/linux/freebsd.html" msgstr "" diff --git a/documentation/content/en/books/handbook/ports/_index.po b/documentation/content/en/books/handbook/ports/_index.po index 8b996a43ac..2d40728a4d 100644 --- a/documentation/content/en/books/handbook/ports/_index.po +++ b/documentation/content/en/books/handbook/ports/_index.po @@ -1,2637 +1,2554 @@ # 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: 2022-10-01 13:49-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/handbook/ports/_index.adoc:1 #, no-wrap msgid "FreeBSD provides two complementary technologies for installing third-party software: the FreeBSD Ports Collection, for installing from source, and packages, for installing from pre-built binaries" msgstr "" #. type: YAML Front Matter: part #: documentation/content/en/books/handbook/ports/_index.adoc:1 #, no-wrap msgid "Part I. Getting Started" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/handbook/ports/_index.adoc:1 #, no-wrap msgid "Chapter 4. Installing Applications: Packages and Ports" msgstr "" #. type: Title = #: documentation/content/en/books/handbook/ports/_index.adoc:15 #, no-wrap msgid "Installing Applications: Packages and Ports" msgstr "" #. type: Title == #: documentation/content/en/books/handbook/ports/_index.adoc:53 #, no-wrap msgid "Synopsis" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:59 msgid "" "FreeBSD is bundled with a rich collection of system tools as part of the " "base system. In addition, FreeBSD provides two complementary technologies " "for installing third-party software: the FreeBSD Ports Collection, for " "installing from source, and packages, for installing from pre-built " "binaries. Either method may be used to install software from local media or " "from the network." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:61 msgid "After reading this chapter, you will know:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:63 msgid "The difference between binary packages and ports." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:64 msgid "How to find third-party software that has been ported to FreeBSD." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:65 msgid "How to manage binary packages using pkg." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:66 msgid "" "How to build third-party software from source using the Ports Collection." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:67 msgid "" "How to find the files installed with the application for post-installation " "configuration." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:68 msgid "What to do if a software installation fails." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/ports/_index.adoc:70 #, no-wrap msgid "Overview of Software Installation" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:73 msgid "" "The typical steps for installing third-party software on a UNIX(R) system " "include:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:76 msgid "" "Find and download the software, which might be distributed in source code " "format or as a binary." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:77 msgid "" "Unpack the software from its distribution format. This is typically a " "tarball compressed with a program such as man:compress[1], man:gzip[1], man:" "bzip2[1] or man:xz[1]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:78 msgid "" "Locate the documentation in [.filename]#INSTALL#, [.filename]#README# or " "some file in a [.filename]#doc/# subdirectory and read up on how to install " "the software." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:79 msgid "" "If the software was distributed in source format, compile it. This may " "involve editing a [.filename]#Makefile# or running a `configure` script." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:80 msgid "Test and install the software." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:83 msgid "" "A FreeBSD _port_ is a collection of files designed to automate the process " "of compiling an application from source code. The files that comprise a " "port contain all the necessary information to automatically download, " "extract, patch, compile, and install the application." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:85 msgid "" "If the software has not already been adapted and tested on FreeBSD, the " "source code might need editing in order for it to install and run properly." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:88 msgid "" "However, over link:https://www.FreeBSD.org/ports/[{numports}] third-party " "applications have already been ported to FreeBSD. When feasible, these " "applications are made available for download as pre-compiled _packages_." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:90 msgid "" "Packages can be manipulated with the FreeBSD package management commands." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:93 msgid "" "Both packages and ports understand dependencies. If a package or port is " "used to install an application and a dependent library is not already " "installed, the library will automatically be installed first." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:96 msgid "" "A FreeBSD package contains pre-compiled copies of all the commands for an " "application, as well as any configuration files and documentation. A " "package can be manipulated with the man:pkg[8] commands, such as `pkg " "install`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:99 msgid "" "While the two technologies are similar, packages and ports each have their " "own strengths. Select the technology that meets your requirements for " "installing a particular application." msgstr "" #. type: Block title #: documentation/content/en/books/handbook/ports/_index.adoc:100 #, no-wrap msgid "Package Benefits" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:102 msgid "" "A compressed package tarball is typically smaller than the compressed " "tarball containing the source code for the application." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:103 msgid "" "Packages do not require compilation time. For large applications, such as " "Mozilla, KDE, or GNOME, this can be important on a slow system." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:104 msgid "" "Packages do not require any understanding of the process involved in " "compiling software on FreeBSD." msgstr "" #. type: Block title #: documentation/content/en/books/handbook/ports/_index.adoc:105 #, no-wrap msgid "Port Benefits" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:107 msgid "" "Packages are normally compiled with conservative options because they have " "to run on the maximum number of systems. By compiling from the port, one can " "change the compilation options." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:108 msgid "" "Some applications have compile-time options relating to which features are " "installed. For example, Apache can be configured with a wide variety of " "different built-in options." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:110 msgid "" "In some cases, multiple packages will exist for the same application to " "specify certain settings. For example, Ghostscript is available as a [." "filename]#ghostscript# package and a [.filename]#ghostscript-nox11# package, " "depending on whether or not Xorg is installed. Creating multiple packages " "rapidly becomes impossible if an application has more than one or two " "different compile-time options." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:111 msgid "" "The licensing conditions of some software forbid binary distribution. Such " "software must be distributed as source code which must be compiled by the " "end-user." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:112 msgid "" "Some people do not trust binary distributions or prefer to read through " "source code in order to look for potential problems." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:113 msgid "Source code is needed in order to apply custom patches." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:115 msgid "" "To keep track of updated ports, subscribe to the {freebsd-ports} and the " "{freebsd-ports-bugs}." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:120 msgid "" "Before installing any application, check https://vuxml.freebsd.org/[] for " "security issues related to the application or type `pkg audit -F` to check " "all installed applications for known vulnerabilities." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:123 msgid "" "The remainder of this chapter explains how to use packages and ports to " "install and manage third-party software on FreeBSD." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/ports/_index.adoc:125 #, no-wrap msgid "Finding Software" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:129 msgid "" "FreeBSD's list of available applications is growing all the time. There are " "a number of ways to find software to install:" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:131 msgid "" "The FreeBSD web site maintains an up-to-date searchable list of all the " "available applications, at link:https://www.FreeBSD.org/ports/[https://www." "FreeBSD.org/ports/]. The ports can be searched by application name or by " "software category." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:132 msgid "" "Dan Langille maintains http://www.FreshPorts.org/[FreshPorts.org] which " "provides a comprehensive search utility and also tracks changes to the " "applications in the Ports Collection. Registered users can create a " "customized watch list in order to receive an automated email when their " "watched ports are updated." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:133 msgid "" "If finding a particular application becomes challenging, try searching a " "site like http://www.sourceforge.net/[SourceForge.net] or http://www.github." "com/[GitHub.com] then check back at the link:https://www.FreeBSD.org/ports/" "[FreeBSD site] to see if the application has been ported." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:134 msgid "To search the binary package repository for an application:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:149 #, no-wrap msgid "" "# pkg search subversion\n" "git-subversion-1.9.2\n" "java-subversion-1.8.8_2\n" "p5-subversion-1.8.8_2\n" "py27-hgsubversion-1.6\n" "py27-subversion-1.8.8_2\n" "ruby-subversion-1.8.8_2\n" "subversion-1.8.8_2\n" "subversion-book-4515\n" "subversion-static-1.8.8_2\n" "subversion16-1.6.23_4\n" "subversion17-1.7.16_2\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:157 msgid "" "Package names include the version number and, in the case of ports based on " "python, the version number of the version of python the package was built " "with. Some ports also have multiple versions available. In the case of " "Subversion, there are different versions available, as well as different " "compile options. In this case, the statically linked version of " "Subversion. When indicating which package to install, it is best to specify " "the application by the port origin, which is the path in the ports tree. " "Repeat the `pkg search` with `-o` to list the origin of each package:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:172 #, no-wrap msgid "" "# pkg search -o subversion\n" "devel/git-subversion\n" "java/java-subversion\n" "devel/p5-subversion\n" "devel/py-hgsubversion\n" "devel/py-subversion\n" "devel/ruby-subversion\n" "devel/subversion16\n" "devel/subversion17\n" "devel/subversion\n" "devel/subversion-book\n" "devel/subversion-static\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:176 msgid "" "Searching by shell globs, regular expressions, exact match, by description, " "or any other field in the repository database is also supported by `pkg " "search`. After installing package:ports-mgmt/pkg[] or package:ports-mgmt/" "pkg-devel[], see man:pkg-search[8] for more details." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:177 msgid "" "If the Ports Collection is already installed, there are several methods to " "query the local version of the ports tree. To find out which category a port " "is in, type `whereis _file_`, where _file_ is the program to be installed:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:182 #, no-wrap msgid "" "# whereis lsof\n" "lsof: /usr/ports/sysutils/lsof\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:185 msgid "Alternately, an man:echo[1] statement can be used:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:190 #, no-wrap msgid "" "# echo /usr/ports/*/*lsof*\n" "/usr/ports/sysutils/lsof\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:193 msgid "" "Note that this will also return any matched files downloaded into the [." "filename]#/usr/ports/distfiles# directory." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:194 msgid "" "Another way to find software is by using the Ports Collection's built-in " "search mechanism. To use the search feature, cd to [.filename]#/usr/ports# " "then run `make search name=program-name` where _program-name_ is the name of " "the software. For example, to search for `lsof`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:206 #, no-wrap msgid "" "# cd /usr/ports\n" "# make search name=lsof\n" "Port: lsof-4.88.d,8\n" "Path: /usr/ports/sysutils/lsof\n" "Info: Lists information about open files (similar to fstat(1))\n" "Maint: ler@lerctr.org\n" "Index: sysutils\n" "B-deps:\n" "R-deps:\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:213 msgid "" "The built-in search mechanism uses a file of index information. If a " "message indicates that the [.filename]#INDEX# is required, run `make " "fetchindex` to download the current index file. With the [.filename]#INDEX# " "present, `make search` will be able to perform the requested search." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:216 msgid "The \"Path:\" line indicates where to find the port." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:218 msgid "To receive less information, use the `quicksearch` feature:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:226 #, no-wrap msgid "" "# cd /usr/ports\n" "# make quicksearch name=lsof\n" "Port: lsof-4.88.d,8\n" "Path: /usr/ports/sysutils/lsof\n" "Info: Lists information about open files (similar to fstat(1))\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:230 msgid "" "For more in-depth searching, use `make search key=_string_` or `make " "quicksearch key=_string_`, where _string_ is some text to search for. The " "text can be in comments, descriptions, or dependencies in order to find " "ports which relate to a particular subject when the name of the program is " "unknown." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:233 msgid "" "When using `search` or `quicksearch`, the search string is case-" "insensitive. Searching for \"LSOF\" will yield the same results as " "searching for \"lsof\"." msgstr "" #. type: Title == #: documentation/content/en/books/handbook/ports/_index.adoc:235 #, no-wrap msgid "Using pkg for Binary Package Management" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:238 msgid "" "pkg is the next generation replacement for the traditional FreeBSD package " "management tools, offering many features that make dealing with binary " "packages faster and easier." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:240 msgid "" "For sites wishing to only use prebuilt binary packages from the FreeBSD " "mirrors, managing packages with pkg can be sufficient." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:242 msgid "" "However, for those sites building from source or using their own " "repositories, a separate <> will " "be needed." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:245 msgid "" "Since pkg only works with binary packages, it is not a replacement for such " "tools. Those tools can be used to install software from both binary " "packages and the Ports Collection, while pkg installs only binary packages." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:247 #, no-wrap msgid "Getting Started with pkg" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:251 msgid "" "FreeBSD includes a bootstrap utility which can be used to download and " "install pkg and its manual pages. This utility is designed to work with " "versions of FreeBSD starting with 10._X_." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:257 msgid "" "Not all FreeBSD versions and architectures support this bootstrap process. " "The current list is at https://pkg.freebsd.org/[]. For other cases, pkg " "must instead be installed from the Ports Collection or as a binary package." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:260 msgid "To bootstrap the system, run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:264 #, no-wrap msgid "# /usr/sbin/pkg\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:267 msgid "" "You must have a working Internet connection for the bootstrap process to " "succeed." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:269 msgid "Otherwise, to install the port, run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:275 #, no-wrap msgid "" "# cd /usr/ports/ports-mgmt/pkg\n" "# make\n" "# make install clean\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:280 msgid "" "When upgrading an existing system that originally used the older pkg_* " "tools, the database must be converted to the new format, so that the new " "tools are aware of the already installed packages. Once pkg has been " "installed, the package database must be converted from the traditional " "format to the new format by running this command:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:284 #, no-wrap msgid "# pkg2ng\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:289 msgid "" "This step is not required for new installations that do not yet have any " "third-party software installed." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:295 msgid "" "This step is not reversible. Once the package database has been converted " "to the pkg format, the traditional `pkg_*` tools should no longer be used." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:303 msgid "" "The package database conversion may emit errors as the contents are " "converted to the new version. Generally, these errors can be safely " "ignored. However, a list of software that was not successfully converted is " "shown after `pkg2ng` finishes. These applications must be manually " "reinstalled." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:307 msgid "" "To ensure that the Ports Collection registers new software with pkg instead " "of the traditional packages database, FreeBSD versions earlier than 10._X_ " "require this line in [.filename]#/etc/make.conf#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:311 #, no-wrap msgid "WITH_PKGNG= yes\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:315 msgid "" "By default, pkg uses the binary packages from the FreeBSD package mirrors " "(the _repository_). For information about building a custom package " "repository, see <>." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:317 msgid "Additional pkg configuration options are described in man:pkg.conf[5]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:319 msgid "" "Usage information for pkg is available in the man:pkg[8] manual page or by " "running `pkg` without additional arguments." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:322 msgid "" "Each pkg command argument is documented in a command-specific manual page. " "To read the manual page for `pkg install`, for example, run either of these " "commands:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:326 #, no-wrap msgid "# pkg help install\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:331 #, no-wrap msgid "# man pkg-install\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:336 msgid "" "The rest of this section demonstrates common binary package management tasks " "which can be performed using pkg. Each demonstrated command provides many " "switches to customize its use. Refer to a command's help or man page for " "details and more examples." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:338 #, no-wrap msgid "Quarterly and Latest Ports Branches" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:347 msgid "" "The `Quarterly` branch provides users with a more predictable and stable " "experience for port and package installation and upgrades. This is done " "essentially by only allowing non-feature updates. Quarterly branches aim to " "receive security fixes (that may be version updates, or backports of " "commits), bug fixes and ports compliance or framework changes. The " "Quarterly branch is cut from HEAD at the beginning of every (yearly) quarter " "in January, April, July, and October. Branches are named according to the " "year (YYYY) and quarter (Q1-4) they are created in. For example, the " "quarterly branch created in January 2016, is named 2016Q1. And the `Latest` " "branch provides the latest versions of the packages to the users." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:349 msgid "To switch from quarterly to latest run the following commands:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:354 #, no-wrap msgid "" "# mkdir -p /usr/local/etc/pkg/repos\n" "# cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:357 msgid "" "Edit the file [.filename]#/usr/local/etc/pkg/repos/FreeBSD.conf# and change " "the string _quarterly_ to _latest_ in the `url:` line." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:359 msgid "The result should be similar to the following:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:369 #, no-wrap msgid "" "FreeBSD: {\n" " url: \"pkg+http://pkg.FreeBSD.org/${ABI}/latest\",\n" " mirror_type: \"srv\",\n" " signature_type: \"fingerprints\",\n" " fingerprints: \"/usr/share/keys/pkg\",\n" " enabled: yes\n" "}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:372 msgid "" "And finally run this command to update from the new (latest) repository " "metadata." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:376 #, no-wrap msgid "# pkg update -f\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:379 #, no-wrap msgid "Obtaining Information About Installed Packages" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:383 msgid "" "Information about the packages installed on a system can be viewed by " "running `pkg info` which, when run without any switches, will list the " "package version for either all installed packages or the specified package." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:385 msgid "For example, to see which version of pkg is installed, run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:390 #, no-wrap msgid "" "# pkg info pkg\n" "pkg-1.1.4_1\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:393 #, no-wrap msgid "Installing and Removing Packages" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:396 msgid "" "To install a binary package use the following command, where _packagename_ " "is the name of the package to install:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:400 #, no-wrap msgid "# pkg install packagename\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:404 msgid "" "This command uses repository data to determine which version of the software " "to install and if it has any uninstalled dependencies. For example, to " "install curl:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:410 #, no-wrap msgid "" "# pkg install curl\n" "Updating repository catalogue\n" "/usr/local/tmp/All/curl-7.31.0_1.txz 100% of 1181 kB 1380 kBps 00m01s\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:412 #, no-wrap msgid "/usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% of 288 kB 1700 kBps 00m00s\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:415 #, no-wrap msgid "" "Updating repository catalogue\n" "The following 2 packages will be installed:\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:418 #, no-wrap msgid "" " Installing ca_root_nss: 3.15.1_1\n" " Installing curl: 7.31.0_1\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:420 #, no-wrap msgid "The installation will require 3 MB more space\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:422 #, no-wrap msgid "0 B to be downloaded\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:428 #, no-wrap msgid "" "Proceed with installing packages [y/N]: y\n" "Checking integrity... done\n" "[1/2] Installing ca_root_nss-3.15.1_1... done\n" "[2/2] Installing curl-7.31.0_1... done\n" "Cleaning up cache files...Done\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:431 msgid "" "The new package and any additional packages that were installed as " "dependencies can be seen in the installed packages list:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:438 #, no-wrap msgid "" "# pkg info\n" "ca_root_nss-3.15.1_1\tThe root certificate bundle from the Mozilla Project\n" "curl-7.31.0_1\tNon-interactive tool to get files from FTP, GOPHER, HTTP(S) servers\n" "pkg-1.1.4_6\tNew generation package manager\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:442 msgid "" "Packages that are no longer needed can be removed with `pkg delete`. For " "example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:447 #, no-wrap msgid "" "# pkg delete curl\n" "The following packages will be deleted:\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:449 #, no-wrap msgid "\tcurl-7.31.0_1\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:451 #, no-wrap msgid "The deletion will free 3 MB\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:454 #, no-wrap msgid "" "Proceed with deleting packages [y/N]: y\n" "[1/1] Deleting curl-7.31.0_1... done\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:457 #, no-wrap msgid "Upgrading Installed Packages" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:460 msgid "Installed packages can be upgraded to their latest versions by running:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:464 #, no-wrap msgid "# pkg upgrade\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:467 msgid "" "This command will compare the installed versions with those available in the " "repository catalogue and upgrade them from the repository." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:469 #, no-wrap msgid "Auditing Installed Packages" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:474 msgid "" "Software vulnerabilities are regularly discovered in third-party " "applications. To address this, pkg includes a built-in auditing mechanism. " "To determine if there are any known vulnerabilities for the software " "installed on the system, run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:478 #, no-wrap msgid "# pkg audit -F\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:481 #, no-wrap msgid "Automatically Removing Unused Packages" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:485 msgid "" "Removing a package may leave behind dependencies which are no longer " "required. Unneeded packages that were installed as dependencies (leaf " "packages) can be automatically detected and removed using:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:491 #, no-wrap msgid "" "# pkg autoremove\n" "Packages to be autoremoved:\n" "\tca_root_nss-3.15.1_1\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:493 #, no-wrap msgid "The autoremoval will free 723 kB\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:496 #, no-wrap msgid "" "Proceed with autoremoval of packages [y/N]: y\n" "Deinstalling ca_root_nss-3.15.1_1... done\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:500 msgid "" "Packages installed as dependencies are called _automatic_ packages. Non-" "automatic packages, i.e the packages that were explicity installed not as a " "dependency to another package, can be listed using:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:507 #, no-wrap msgid "" "# pkg prime-list\n" "nginx\n" "openvpn\n" "sudo\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:512 msgid "" "`pkg prime-list` is an alias command declared in [.filename]#/usr/local/etc/" "pkg.conf#. There are many others that can be used to query the package " "database of the system. For instance, command `pkg prime-origins` can be " "used to get the origin port directory of the list mentioned above:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:519 #, no-wrap msgid "" "# pkg prime-origins\n" "www/nginx\n" "security/openvpn\n" "security/sudo\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:522 msgid "" "This list can be used to rebuild all packages installed on a system using " "build tools such as package:ports-mgmt/poudriere[] or package:ports-mgmt/" "synth[]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:524 msgid "Marking an installed package as automatic can be done using:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:528 #, no-wrap msgid "# pkg set -A 1 devel/cmake\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:531 msgid "" "Once a package is a leaf package and is marked as automatic, it gets " "selected by `pkg autoremove`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:533 msgid "Marking an installed package as _not_ automatic can be done using:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:537 #, no-wrap msgid "# pkg set -A 0 devel/cmake\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:540 #, no-wrap msgid "Restoring the Package Database" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:544 msgid "" "Unlike the traditional package management system, pkg includes its own " "package database backup mechanism. This functionality is enabled by default." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:548 msgid "" "To disable the periodic script from backing up the package database, set " "`daily_backup_pkgdb_enable=\"NO\"` in man:periodic.conf[5]." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:552 msgid "" "To restore the contents of a previous package database backup, run the " "following command replacing _/path/to/pkg.sql_ with the location of the " "backup:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:556 #, no-wrap msgid "# pkg backup -r /path/to/pkg.sql\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:561 msgid "" "If restoring a backup taken by the periodic script, it must be decompressed " "prior to being restored." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:565 msgid "" "To run a manual backup of the pkg database, run the following command, " "replacing _/path/to/pkg.sql_ with a suitable file name and location:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:569 #, no-wrap msgid "# pkg backup -d /path/to/pkg.sql\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:572 #, no-wrap msgid "Removing Stale Packages" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:577 msgid "" "By default, pkg stores binary packages in a cache directory defined by " "`PKG_CACHEDIR` in man:pkg.conf[5]. Only copies of the latest installed " "packages are kept. Older versions of pkg kept all previous packages. To " "remove these outdated binary packages, run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:581 #, no-wrap msgid "# pkg clean\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:584 msgid "The entire cache may be cleared by running:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:588 #, no-wrap msgid "# pkg clean -a\n" msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:591 #, no-wrap msgid "Modifying Package Metadata" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:596 msgid "" "Software within the FreeBSD Ports Collection can undergo major version " "number changes. To address this, pkg has a built-in command to update " "package origins. This can be useful, for example, if package:lang/php5[] is " "renamed to package:lang/php53[] so that package:lang/php5[] can now " "represent version `5.4`." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:598 msgid "To change the package origin for the above example, run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:602 #, no-wrap msgid "# pkg set -o lang/php5:lang/php53\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:605 msgid "" "As another example, to update package:lang/ruby18[] to package:lang/" "ruby19[], run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:609 #, no-wrap msgid "# pkg set -o lang/ruby18:lang/ruby19\n" msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:612 msgid "" "As a final example, to change the origin of the [.filename]#libglut# shared " "libraries from package:graphics/libglut[] to package:graphics/freeglut[], " "run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:616 #, no-wrap msgid "# pkg set -o graphics/libglut:graphics/freeglut\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:622 msgid "" "When changing package origins, it is important to reinstall packages that " "are dependent on the package with the modified origin. To force a " "reinstallation of dependent packages, run:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/ports/_index.adoc:626 #, no-wrap msgid "# pkg install -Rf graphics/freeglut\n" msgstr "" #. type: Title == #: documentation/content/en/books/handbook/ports/_index.adoc:631 #, no-wrap msgid "Using the Ports Collection" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:635 msgid "" "The Ports Collection is a set of [.filename]##Makefile##s, patches, and " "description files. Each set of these files is used to compile and install " "an individual application on FreeBSD, and is called a _port_." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:637 msgid "" "By default, the Ports Collection itself is stored as a subdirectory of [." "filename]#/usr/ports#." msgstr "" #. type: Plain text #: documentation/content/en/books/handbook/ports/_index.adoc:644 msgid "" "Before installing and using the Ports Collection, please be aware that it is " "generally ill-advised to use the Ports Collection in conjunction with the " "binary packages provided via pkg to install software. pkg, by default, " "tracks quarterly branch-releases of the ports tree and not HEAD. " "Dependencies could be different for a port in HEAD compared to its " "counterpart in a quarterly branch release and this could result in conflicts " "between dependencies installed by pkg and those from the Ports Collection. " "If the Ports Collection and pkg must be used in conjunction, then be sure " "that your Ports Collection and pkg are on the same branch release of the " "ports tree." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:650 msgid "" "The Ports Collection contains directories for software categories. Inside " "each category are subdirectories for individual applications. Each " "application subdirectory contains a set of files that tells FreeBSD how to " "compile and install that program, called a _ports skeleton_. Each port " "skeleton includes these files and directories:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:652 msgid "" "[.filename]#Makefile#: contains statements that specify how the application " "should be compiled and where its components should be installed." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:653 msgid "" "[.filename]#distinfo#: contains the names and checksums of the files that " "must be downloaded to build the port." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:654 msgid "" "[.filename]#files/#: this directory contains any patches needed for the " "program to compile and install on FreeBSD. This directory may also contain " "other files used to build the port." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:655 msgid "" "[.filename]#pkg-descr#: provides a more detailed description of the program." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:656 msgid "" "[.filename]#pkg-plist#: a list of all the files that will be installed by " "the port. It also tells the ports system which files to remove upon " "deinstallation." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:659 msgid "" "Some ports include [.filename]#pkg-message# or other files to handle special " "situations. For more details on these files, and on ports in general, refer " "to the extref:{porters-handbook}[FreeBSD Porter's Handbook]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:662 msgid "" "The port does not include the actual source code, also known as a [." "filename]#distfile#. The extract portion of building a port will " "automatically save the downloaded source to [.filename]#/usr/ports/" "distfiles#." msgstr "" #. type: Title === #: documentation/content/en/books/handbook/ports/_index.adoc:664 #, no-wrap msgid "Installing the Ports Collection" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/handbook/ports/_index.adoc:668 msgid "" "Before an application can be compiled using a port, the Ports Collection " "must first be installed. If it was not installed during the installation of " "FreeBSD, use one of the following methods to install it:" msgstr "" #. type: delimited block * 4 #: documentation/content/en/books/handbook/ports/_index.adoc:673 #, no-wrap -msgid "*Procedure: Portsnap Method*\n" -msgstr "" - -#. type: delimited block * 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:678 -msgid "" -"The base system of FreeBSD includes Portsnap. This is a fast and user-" -"friendly tool for retrieving the Ports Collection and is the recommended " -"choice for most users not running FreeBSD-CURRENT. This utility connects to " -"a FreeBSD site, verifies the secure key, and downloads a new copy of the " -"Ports Collection. The key is used to verify the integrity of all downloaded " -"files." -msgstr "" - -#. type: delimited block * 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:685 -msgid "" -"Note that Portsnap updates are generated from a snapshot of the main branch " -"of the Ports Collection and cannot be configured to use a different branch " -"(for example, `quarterly`). If it is necessary to use a different branch of " -"the Ports Collection (for instance as referenced earlier in conjunction with " -"binary packages), then the <> must be " -"used." -msgstr "" - -#. type: delimited block * 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:687 -msgid "" -"To download a compressed snapshot of the Ports Collection into [.filename]#/" -"var/db/portsnap#:" -msgstr "" - -#. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:691 -#, no-wrap -msgid "# portsnap fetch\n" -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:694 -msgid "" -"When running Portsnap for the first time, extract the snapshot into [." -"filename]#/usr/ports#:" -msgstr "" - -#. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:698 -#, no-wrap -msgid "# portsnap extract\n" -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:701 -msgid "" -"After the first use of Portsnap has been completed as shown above, [." -"filename]#/usr/ports# can be updated as needed by running:" -msgstr "" - -#. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:706 -#, no-wrap -msgid "" -"# portsnap fetch\n" -"# portsnap update\n" -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:709 -msgid "" -"When using `fetch`, the `extract` or the `update` operation may be run " -"consecutively, like so:" -msgstr "" - -#. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:713 -#, no-wrap -msgid "# portsnap fetch update\n" -msgstr "" - -#. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:720 -#, no-wrap msgid "*Procedure: Git Method*\n" msgstr "" -#. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:724 +#. type: delimited block * 4 +#: documentation/content/en/books/handbook/ports/_index.adoc:677 msgid "" "If more control over the ports tree is needed or if local changes need to be " "maintained, or if running FreeBSD-CURRENT, Git can be used to obtain the " "Ports Collection. Refer to extref:{committers-guide}[the Git Primer, git-" "primer] for a detailed description of Git." msgstr "" -#. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:726 +#. type: delimited block * 4 +#: documentation/content/en/books/handbook/ports/_index.adoc:679 msgid "" "Git must be installed before it can be used to check out the ports tree. If " "a copy of the ports tree is already present, install Git like this:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:731 +#: documentation/content/en/books/handbook/ports/_index.adoc:684 #, no-wrap msgid "" "# cd /usr/ports/devel/git\n" "# make install clean\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:734 +#: documentation/content/en/books/handbook/ports/_index.adoc:687 msgid "" "If the ports tree is not available, or pkg is being used to manage packages, " "Git can be installed as a package:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:738 +#: documentation/content/en/books/handbook/ports/_index.adoc:691 #, no-wrap msgid "# pkg install git\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:741 +#: documentation/content/en/books/handbook/ports/_index.adoc:694 msgid "Check out a copy of the HEAD branch of the ports tree:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:745 +#: documentation/content/en/books/handbook/ports/_index.adoc:698 #, no-wrap msgid "# git clone https://git.FreeBSD.org/ports.git /usr/ports\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:748 +#: documentation/content/en/books/handbook/ports/_index.adoc:701 msgid "Or, check out a copy of a quarterly branch:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:752 +#: documentation/content/en/books/handbook/ports/_index.adoc:705 #, no-wrap msgid "# git clone https://git.FreeBSD.org/ports.git -b 2020Q3 /usr/ports\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:755 +#: documentation/content/en/books/handbook/ports/_index.adoc:708 msgid "" "As needed, update [.filename]#/usr/ports# after the initial Git checkout:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:759 +#: documentation/content/en/books/handbook/ports/_index.adoc:712 #, no-wrap msgid "# git -C /usr/ports pull\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:762 +#: documentation/content/en/books/handbook/ports/_index.adoc:715 msgid "" "As needed, switch [.filename]#/usr/ports# to a different quarterly branch:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:766 +#: documentation/content/en/books/handbook/ports/_index.adoc:719 #, no-wrap msgid "# git -C /usr/ports switch 2020Q4\n" msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/ports/_index.adoc:769 +#: documentation/content/en/books/handbook/ports/_index.adoc:722 #, no-wrap msgid "Installing Ports" msgstr "" #. type: delimited block * 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:773 +#: documentation/content/en/books/handbook/ports/_index.adoc:726 msgid "" "This section provides basic instructions on using the Ports Collection to " "install or remove software. The detailed description of available `make` " "targets and environment variables is available in man:ports[7]." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:781 +#: documentation/content/en/books/handbook/ports/_index.adoc:734 msgid "" "Before compiling any port, be sure to update the Ports Collection as " "described in the previous section. Since the installation of any third-" "party software can introduce security vulnerabilities, it is recommended to " "first check https://vuxml.freebsd.org/[] for known security issues related " "to the port. Alternately, run `pkg audit -F` before installing a new port. " "This command can be configured to automatically perform a security audit and " "an update of the vulnerability database during the daily security system " "check. For more information, refer to man:pkg-audit[8] and man:periodic[8]." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:785 +#: documentation/content/en/books/handbook/ports/_index.adoc:738 msgid "" "Using the Ports Collection assumes a working Internet connection. It also " "requires superuser privilege." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:788 +#: documentation/content/en/books/handbook/ports/_index.adoc:741 msgid "" "To compile and install the port, change to the directory of the port to be " "installed, then type `make install` at the prompt. Messages will indicate " "the progress:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:810 +#: documentation/content/en/books/handbook/ports/_index.adoc:763 #, no-wrap msgid "" "# cd /usr/ports/sysutils/lsof\n" "# make install\n" ">> lsof_4.88D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n" ">> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.\n" "===> Extracting for lsof-4.88\n" "...\n" "[extraction output snipped]\n" "...\n" ">> Checksum OK for lsof_4.88D.freebsd.tar.gz.\n" "===> Patching for lsof-4.88.d,8\n" "===> Applying FreeBSD patches for lsof-4.88.d,8\n" "===> Configuring for lsof-4.88.d,8\n" "...\n" "[configure output snipped]\n" "...\n" "===> Building for lsof-4.88.d,8\n" "...\n" "[compilation output snipped]\n" "...\n" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:823 +#: documentation/content/en/books/handbook/ports/_index.adoc:776 #, no-wrap msgid "" "===> Installing for lsof-4.88.d,8\n" "...\n" "[installation output snipped]\n" "...\n" "===> Generating temporary packing list\n" "===> Compressing manual pages for lsof-4.88.d,8\n" "===> Registering installation for lsof-4.88.d,8\n" "===> SECURITY NOTE:\n" " This port has installed the following binaries which execute with\n" " increased privileges.\n" "/usr/local/sbin/lsof\n" "#\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:827 +#: documentation/content/en/books/handbook/ports/_index.adoc:780 msgid "" "Since `lsof` is a program that runs with increased privileges, a security " "warning is displayed as it is installed. Once the installation is complete, " "the prompt will be returned." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:832 +#: documentation/content/en/books/handbook/ports/_index.adoc:785 msgid "" "Some shells keep a cache of the commands that are available in the " "directories listed in the `PATH` environment variable, to speed up lookup " "operations for the executable file of these commands. Users of the `tcsh` " "shell should type `rehash` so that a newly installed command can be used " "without specifying its full path. Use `hash -r` instead for the `sh` " "shell. Refer to the documentation for the shell for more information." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:835 +#: documentation/content/en/books/handbook/ports/_index.adoc:788 msgid "" "During installation, a working subdirectory is created which contains all " "the temporary files used during compilation. Removing this directory saves " "disk space and minimizes the chance of problems later when upgrading to the " "newer version of the port:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:841 +#: documentation/content/en/books/handbook/ports/_index.adoc:794 #, no-wrap msgid "" "# make clean\n" "===> Cleaning for lsof-88.d,8\n" "#\n" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:846 +#: documentation/content/en/books/handbook/ports/_index.adoc:799 msgid "" "To save this extra step, instead use `make install clean` when compiling the " "port." msgstr "" #. type: Title ==== -#: documentation/content/en/books/handbook/ports/_index.adoc:848 +#: documentation/content/en/books/handbook/ports/_index.adoc:801 #, no-wrap msgid "Customizing Ports Installation" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:856 +#: documentation/content/en/books/handbook/ports/_index.adoc:809 msgid "" "Some ports provide build options which can be used to enable or disable " "application components, provide security options, or allow for other " "customizations. Examples include package:www/firefox[], package:security/" "gpgme[], and package:mail/sylpheed-claws[]. If the port depends upon other " "ports which have configurable options, it may pause several times for user " "interaction as the default behavior is to prompt the user to select options " "from a menu. To avoid this and do all of the configuration in one batch, " "run `make config-recursive` within the port skeleton. Then, run `make " "install [clean]` to compile and install the port." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:862 +#: documentation/content/en/books/handbook/ports/_index.adoc:815 msgid "" "When using `config-recursive`, the list of ports to configure are gathered " "by the `all-depends-list` target. It is recommended to run `make config-" "recursive` until all dependent ports options have been defined, and ports " "options screens no longer appear, to be certain that all dependency options " "have been configured." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:869 +#: documentation/content/en/books/handbook/ports/_index.adoc:822 msgid "" "There are several ways to revisit a port's build options menu in order to " "add, remove, or change these options after a port has been built. One " "method is to `cd` into the directory containing the port and type `make " "config`. Another option is to use `make showconfig`. Another option is to " "execute `make rmconfig` which will remove all selected options and allow you " "to start over. All of these options, and others, are explained in great " "detail in man:ports[7]." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:873 +#: documentation/content/en/books/handbook/ports/_index.adoc:826 msgid "" "The ports system uses man:fetch[1] to download the source files, which " "supports various environment variables. The `FTP_PASSIVE_MODE`, " "`FTP_PROXY`, and `FTP_PASSWORD` variables may need to be set if the FreeBSD " "system is behind a firewall or FTP/HTTP proxy. See man:fetch[3] for the " "complete list of supported variables." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:878 +#: documentation/content/en/books/handbook/ports/_index.adoc:831 msgid "" "For users who cannot be connected to the Internet all the time, `make fetch` " "can be run within [.filename]#/usr/ports#, to fetch all distfiles, or within " "a category, such as [.filename]#/usr/ports/net#, or within the specific port " "skeleton. Note that if a port has any dependencies, running this command in " "a category or ports skeleton will _not_ fetch the distfiles of ports from " "another category. Instead, use `make fetch-recursive` to also fetch the " "distfiles for all the dependencies of a port." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:881 +#: documentation/content/en/books/handbook/ports/_index.adoc:834 msgid "" "In rare cases, such as when an organization has a local distfiles " "repository, the `MASTER_SITES` variable can be used to override the download " "locations specified in the [.filename]#Makefile#. When using, specify the " "alternate location:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:887 +#: documentation/content/en/books/handbook/ports/_index.adoc:840 #, no-wrap msgid "" "# cd /usr/ports/directory\n" "# make MASTER_SITE_OVERRIDE= \\\n" "ftp://ftp.organization.org/pub/FreeBSD/ports/distfiles/ fetch\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:890 +#: documentation/content/en/books/handbook/ports/_index.adoc:843 msgid "" "The `WRKDIRPREFIX` and `PREFIX` variables can override the default working " "and target directories. For example:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:894 +#: documentation/content/en/books/handbook/ports/_index.adoc:847 #, no-wrap msgid "# make WRKDIRPREFIX=/usr/home/example/ports install\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:897 +#: documentation/content/en/books/handbook/ports/_index.adoc:850 msgid "" "will compile the port in [.filename]#/usr/home/example/ports# and install " "everything under [.filename]#/usr/local#." msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:901 +#: documentation/content/en/books/handbook/ports/_index.adoc:854 #, no-wrap msgid "# make PREFIX=/usr/home/example/local install\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:904 +#: documentation/content/en/books/handbook/ports/_index.adoc:857 msgid "" "will compile the port in [.filename]#/usr/ports# and install it in [." "filename]#/usr/home/example/local#. And:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:908 +#: documentation/content/en/books/handbook/ports/_index.adoc:861 #, no-wrap msgid "# make WRKDIRPREFIX=../ports PREFIX=../local install\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:911 +#: documentation/content/en/books/handbook/ports/_index.adoc:864 msgid "will combine the two." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:914 +#: documentation/content/en/books/handbook/ports/_index.adoc:867 msgid "" "These can also be set as environmental variables. Refer to the manual page " "for your shell for instructions on how to set an environmental variable." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/ports/_index.adoc:916 +#: documentation/content/en/books/handbook/ports/_index.adoc:869 #, no-wrap msgid "Removing Installed Ports" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:920 +#: documentation/content/en/books/handbook/ports/_index.adoc:873 msgid "" "Installed ports can be uninstalled using `pkg delete`. Examples for using " "this command can be found in the man:pkg-delete[8] manual page." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:922 +#: documentation/content/en/books/handbook/ports/_index.adoc:875 msgid "Alternately, `make deinstall` can be run in the port's directory:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:930 +#: documentation/content/en/books/handbook/ports/_index.adoc:883 #, no-wrap msgid "" "# cd /usr/ports/sysutils/lsof\n" "# make deinstall\n" "===> Deinstalling for sysutils/lsof\n" "===> Deinstalling\n" "Deinstallation has been requested for the following 1 packages:\n" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:932 +#: documentation/content/en/books/handbook/ports/_index.adoc:885 #, no-wrap msgid "\tlsof-4.88.d,8\n" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:935 +#: documentation/content/en/books/handbook/ports/_index.adoc:888 #, no-wrap msgid "" "The deinstallation will free 229 kB\n" "[1/1] Deleting lsof-4.88.d,8... done\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:940 +#: documentation/content/en/books/handbook/ports/_index.adoc:893 msgid "" "It is recommended to read the messages as the port is uninstalled. If the " "port has any applications that depend upon it, this information will be " "displayed but the uninstallation will proceed. In such cases, it may be " "better to reinstall the application in order to prevent broken dependencies." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/ports/_index.adoc:942 +#: documentation/content/en/books/handbook/ports/_index.adoc:895 #, no-wrap msgid "Upgrading Ports" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:946 +#: documentation/content/en/books/handbook/ports/_index.adoc:899 msgid "" "Over time, newer versions of software become available in the Ports " "Collection. This section describes how to determine which software can be " "upgraded and how to perform the upgrade." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:950 +#: documentation/content/en/books/handbook/ports/_index.adoc:903 msgid "" "To determine if newer versions of installed ports are available, ensure that " "the latest version of the ports tree is installed, using the updating " -"command described in either <> or <>. On FreeBSD 10 and " -"later, or if the system has been converted to pkg, the following command " -"will list the installed ports which are out of date:" +"command described in <>. On FreeBSD " +"10 and later, or if the system has been converted to pkg, the following " +"command will list the installed ports which are out of date:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:954 +#: documentation/content/en/books/handbook/ports/_index.adoc:907 #, no-wrap msgid "# pkg version -l \"<\"\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:957 +#: documentation/content/en/books/handbook/ports/_index.adoc:910 msgid "" "For FreeBSD 9._X_ and lower, the following command will list the installed " "ports that are out of date:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:961 +#: documentation/content/en/books/handbook/ports/_index.adoc:914 #, no-wrap msgid "# pkg_version -l \"<\"\n" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:968 +#: documentation/content/en/books/handbook/ports/_index.adoc:921 msgid "" "Before attempting an upgrade, read [.filename]#/usr/ports/UPDATING# from the " "top of the file to the date closest to the last time ports were upgraded or " "the system was installed. This file describes various issues and additional " "steps users may encounter and need to perform when updating a port, " "including such things as file format changes, changes in locations of " "configuration files, or any incompatibilities with previous versions. Make " "note of any instructions which match any of the ports that need upgrading " "and follow these instructions when performing the upgrade." msgstr "" #. type: Title ==== -#: documentation/content/en/books/handbook/ports/_index.adoc:971 +#: documentation/content/en/books/handbook/ports/_index.adoc:924 #, no-wrap msgid "Tools to Upgrade and Manage Ports" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:975 +#: documentation/content/en/books/handbook/ports/_index.adoc:928 msgid "" "The Ports Collection contains several utilities to perform the actual " "upgrade. Each has its strengths and weaknesses." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:978 +#: documentation/content/en/books/handbook/ports/_index.adoc:931 msgid "" "Historically, most installations used either Portmaster or Portupgrade. " "Synth is a newer alternative." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:983 +#: documentation/content/en/books/handbook/ports/_index.adoc:936 msgid "" "The choice of which tool is best for a particular system is up to the system " "administrator. It is recommended practice to back up your data before using " "any of these tools." msgstr "" #. type: Title ==== -#: documentation/content/en/books/handbook/ports/_index.adoc:986 +#: documentation/content/en/books/handbook/ports/_index.adoc:939 #, no-wrap msgid "Upgrading Ports Using Portmaster" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:991 +#: documentation/content/en/books/handbook/ports/_index.adoc:944 msgid "" "package:ports-mgmt/portmaster[] is a very small utility for upgrading " "installed ports. It is designed to use the tools installed with the FreeBSD " "base system without depending on other ports or databases. To install this " "utility as a port:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:996 +#: documentation/content/en/books/handbook/ports/_index.adoc:949 #, no-wrap msgid "" "# cd /usr/ports/ports-mgmt/portmaster\n" "# make install clean\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:999 +#: documentation/content/en/books/handbook/ports/_index.adoc:952 msgid "Portmaster defines four categories of ports:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1001 +#: documentation/content/en/books/handbook/ports/_index.adoc:954 msgid "" "Root port: has no dependencies and is not a dependency of any other ports." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1002 +#: documentation/content/en/books/handbook/ports/_index.adoc:955 msgid "Trunk port: has no dependencies, but other ports depend upon it." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1003 +#: documentation/content/en/books/handbook/ports/_index.adoc:956 msgid "Branch port: has dependencies and other ports depend upon it." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1004 +#: documentation/content/en/books/handbook/ports/_index.adoc:957 msgid "Leaf port: has dependencies but no other ports depend upon it." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1006 +#: documentation/content/en/books/handbook/ports/_index.adoc:959 msgid "To list these categories and search for updates:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1027 +#: documentation/content/en/books/handbook/ports/_index.adoc:980 #, no-wrap msgid "" "# portmaster -L\n" "===>>> Root ports (No dependencies, not depended on)\n" "===>>> ispell-3.2.06_18\n" "===>>> screen-4.0.3\n" " ===>>> New version available: screen-4.0.3_1\n" "===>>> tcpflow-0.21_1\n" "===>>> 7 root ports\n" "...\n" "===>>> Branch ports (Have dependencies, are depended on)\n" "===>>> apache22-2.2.3\n" " ===>>> New version available: apache22-2.2.8\n" "...\n" "===>>> Leaf ports (Have dependencies, not depended on)\n" "===>>> automake-1.9.6_2\n" "===>>> bash-3.1.17\n" " ===>>> New version available: bash-3.2.33\n" "...\n" "===>>> 32 leaf ports\n" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1030 +#: documentation/content/en/books/handbook/ports/_index.adoc:983 #, no-wrap msgid "" "===>>> 137 total installed ports\n" " ===>>> 83 have new versions available\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1033 +#: documentation/content/en/books/handbook/ports/_index.adoc:986 msgid "This command is used to upgrade all outdated ports:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1037 +#: documentation/content/en/books/handbook/ports/_index.adoc:990 #, no-wrap msgid "# portmaster -a\n" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1047 +#: documentation/content/en/books/handbook/ports/_index.adoc:1000 msgid "" "By default, Portmaster makes a backup package before deleting the existing " "port. If the installation of the new version is successful, Portmaster " "deletes the backup. Using `-b` instructs Portmaster not to automatically " "delete the backup. Adding `-i` starts Portmaster in interactive mode, " "prompting for confirmation before upgrading each port. Many other options " "are available. Read through the manual page for man:portmaster[8] for " "details regarding their usage." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1050 +#: documentation/content/en/books/handbook/ports/_index.adoc:1003 msgid "" "If errors are encountered during the upgrade process, add `-f` to upgrade " "and rebuild all ports:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1054 +#: documentation/content/en/books/handbook/ports/_index.adoc:1007 #, no-wrap msgid "# portmaster -af\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1058 +#: documentation/content/en/books/handbook/ports/_index.adoc:1011 msgid "" "Portmaster can also be used to install new ports on the system, upgrading " "all dependencies before building and installing the new port. To use this " "function, specify the location of the port in the Ports Collection:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1062 +#: documentation/content/en/books/handbook/ports/_index.adoc:1015 #, no-wrap msgid "# portmaster shells/bash\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1065 +#: documentation/content/en/books/handbook/ports/_index.adoc:1018 msgid "" "More information about package:ports-mgmt/portmaster[] may be found in its [." "filename]#pkg-descr#." msgstr "" #. type: Title ==== -#: documentation/content/en/books/handbook/ports/_index.adoc:1067 +#: documentation/content/en/books/handbook/ports/_index.adoc:1020 #, no-wrap msgid "Upgrading Ports Using Portupgrade" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1072 +#: documentation/content/en/books/handbook/ports/_index.adoc:1025 msgid "" "package:ports-mgmt/portupgrade[] is another utility that can be used to " "upgrade ports. It installs a suite of applications which can be used to " "manage ports. However, it is dependent upon Ruby. To install the port:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1077 +#: documentation/content/en/books/handbook/ports/_index.adoc:1030 #, no-wrap msgid "" "# cd /usr/ports/ports-mgmt/portupgrade\n" "# make install clean\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1080 +#: documentation/content/en/books/handbook/ports/_index.adoc:1033 msgid "" "Before performing an upgrade using this utility, it is recommended to scan " "the list of installed ports using `pkgdb -F` and to fix all the " "inconsistencies it reports." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1083 +#: documentation/content/en/books/handbook/ports/_index.adoc:1036 msgid "" "To upgrade all the outdated ports installed on the system, use `portupgrade -" "a`. Alternately, include `-i` to be asked for confirmation of every " "individual upgrade:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1087 +#: documentation/content/en/books/handbook/ports/_index.adoc:1040 #, no-wrap msgid "# portupgrade -ai\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1091 +#: documentation/content/en/books/handbook/ports/_index.adoc:1044 msgid "" "To upgrade only a specified application instead of all available ports, use " "`portupgrade _pkgname_`. It is very important to include `-R` to first " "upgrade all the ports required by the given application:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1095 +#: documentation/content/en/books/handbook/ports/_index.adoc:1048 #, no-wrap msgid "# portupgrade -R firefox\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1102 +#: documentation/content/en/books/handbook/ports/_index.adoc:1055 msgid "" "If `-P` is included, Portupgrade searches for available packages in the " "local directories listed in `PKG_PATH`. If none are available locally, it " "then fetches packages from a remote site. If packages can not be found " "locally or fetched remotely, Portupgrade will use ports. To avoid using " "ports entirely, specify `-PP`. This last set of options tells Portupgrade " "to abort if no packages are available:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1106 +#: documentation/content/en/books/handbook/ports/_index.adoc:1059 #, no-wrap msgid "# portupgrade -PP gnome3\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1110 +#: documentation/content/en/books/handbook/ports/_index.adoc:1063 msgid "" "To just fetch the port distfiles, or packages, if `-P` is specified, without " "building or installing anything, use `-F`. For further information on all " "of the available switches, refer to the manual page for `portupgrade`." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1112 +#: documentation/content/en/books/handbook/ports/_index.adoc:1065 msgid "" "More information about package:ports-mgmt/portupgrade[] may be found in its " "[.filename]#pkg-descr#." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/ports/_index.adoc:1114 +#: documentation/content/en/books/handbook/ports/_index.adoc:1067 #, no-wrap msgid "Ports and Disk Space" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1120 +#: documentation/content/en/books/handbook/ports/_index.adoc:1073 msgid "" "Using the Ports Collection will use up disk space over time. After building " "and installing a port, running `make clean` within the ports skeleton will " "clean up the temporary [.filename]#work# directory. If Portmaster is used " "to install a port, it will automatically remove this directory unless `-K` " "is specified. If Portupgrade is installed, this command will remove all [." "filename]#work# directories found within the local copy of the Ports " "Collection:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1124 +#: documentation/content/en/books/handbook/ports/_index.adoc:1077 #, no-wrap msgid "# portsclean -C\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1128 +#: documentation/content/en/books/handbook/ports/_index.adoc:1081 msgid "" "In addition, outdated source distribution files accumulate in [.filename]#/" "usr/ports/distfiles# over time. To use Portupgrade to delete all the " "distfiles that are no longer referenced by any ports:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1132 +#: documentation/content/en/books/handbook/ports/_index.adoc:1085 #, no-wrap msgid "# portsclean -D\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1135 +#: documentation/content/en/books/handbook/ports/_index.adoc:1088 msgid "" "Portupgrade can remove all distfiles not referenced by any port currently " "installed on the system:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1139 +#: documentation/content/en/books/handbook/ports/_index.adoc:1092 #, no-wrap msgid "# portsclean -DD\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1142 +#: documentation/content/en/books/handbook/ports/_index.adoc:1095 msgid "If Portmaster is installed, use:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1146 +#: documentation/content/en/books/handbook/ports/_index.adoc:1099 #, no-wrap msgid "# portmaster --clean-distfiles\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1149 +#: documentation/content/en/books/handbook/ports/_index.adoc:1102 msgid "" "By default, this command is interactive and prompts the user to confirm if a " "distfile should be deleted." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1151 +#: documentation/content/en/books/handbook/ports/_index.adoc:1104 msgid "" "In addition to these commands, package:ports-mgmt/pkg_cutleaves[] automates " "the task of removing installed ports that are no longer needed." msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/ports/_index.adoc:1153 +#: documentation/content/en/books/handbook/ports/_index.adoc:1106 #, no-wrap msgid "Building Packages with Poudriere" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1160 +#: documentation/content/en/books/handbook/ports/_index.adoc:1113 msgid "" "Poudriere is a `BSD`-licensed utility for creating and testing FreeBSD " "packages. It uses FreeBSD jails to set up isolated compilation " "environments. These jails can be used to build packages for versions of " "FreeBSD that are different from the system on which it is installed, and " "also to build packages for i386 if the host is an amd64 system. Once the " "packages are built, they are in a layout identical to the official mirrors. " "These packages are usable by man:pkg[8] and other package management tools." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1165 +#: documentation/content/en/books/handbook/ports/_index.adoc:1118 msgid "" "Poudriere is installed using the package:ports-mgmt/poudriere[] package or " "port. The installation includes a sample configuration file [.filename]#/" "usr/local/etc/poudriere.conf.sample#. Copy this file to [.filename]#/usr/" "local/etc/poudriere.conf#. Edit the copied file to suit the local " "configuration." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1171 +#: documentation/content/en/books/handbook/ports/_index.adoc:1124 msgid "" "While `ZFS` is not required on the system running poudriere, it is " "beneficial. When `ZFS` is used, `ZPOOL` must be specified in [.filename]#/" "usr/local/etc/poudriere.conf# and `FREEBSD_HOST` should be set to a nearby " "mirror. Defining `CCACHE_DIR` enables the use of package:devel/ccache[] to " "cache compilation and reduce build times for frequently-compiled code. It " "may be convenient to put poudriere datasets in an isolated tree mounted at [." "filename]#/poudriere#. Defaults for the other configuration values are " "adequate." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1175 +#: documentation/content/en/books/handbook/ports/_index.adoc:1128 msgid "" "The number of processor cores detected is used to define how many builds " "will run in parallel. Supply enough virtual memory, either with `RAM` or " "swap space. If virtual memory runs out, the compilation jails will stop and " "be torn down, resulting in weird error messages." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/ports/_index.adoc:1177 +#: documentation/content/en/books/handbook/ports/_index.adoc:1130 #, no-wrap msgid "Initialize Jails and Port Trees" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1183 +#: documentation/content/en/books/handbook/ports/_index.adoc:1136 msgid "" "After configuration, initialize poudriere so that it installs a jail with " "the required FreeBSD tree and a ports tree. Specify a name for the jail " "using `-j` and the FreeBSD version with `-v`. On systems running FreeBSD/" "amd64, the architecture can be set with `-a` to either `i386` or `amd64`. " "The default is the architecture shown by `uname`." msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1230 +#: documentation/content/en/books/handbook/ports/_index.adoc:1183 #, no-wrap msgid "" -"# poudriere jail -c -j 11amd64 -v 11.4-RELEASE\n" -"[00:00:00] Creating 11amd64 fs at /poudriere/jails/11amd64... done\n" -"[00:00:00] Using pre-distributed MANIFEST for FreeBSD 11.4-RELEASE amd64\n" -"[00:00:00] Fetching base for FreeBSD 11.4-RELEASE amd64\n" -"/poudriere/jails/11amd64/fromftp/base.txz 125 MB 4110 kBps 31s\n" +"# poudriere jail -c -j 13amd64 -v 13.1-RELEASE\n" +"[00:00:00] Creating 13amd64 fs at /poudriere/jails/13amd64... done\n" +"[00:00:00] Using pre-distributed MANIFEST for FreeBSD 13.1-RELEASE amd64\n" +"[00:00:00] Fetching base for FreeBSD 13.1-RELEASE amd64\n" +"/poudriere/jails/13amd64/fromftp/base.txz 125 MB 4110 kBps 31s\n" "[00:00:33] Extracting base... done\n" -"[00:00:54] Fetching src for FreeBSD 11.4-RELEASE amd64\n" -"/poudriere/jails/11amd64/fromftp/src.txz 154 MB 4178 kBps 38s\n" +"[00:00:54] Fetching src for FreeBSD 13.1-RELEASE amd64\n" +"/poudriere/jails/13amd64/fromftp/src.txz 154 MB 4178 kBps 38s\n" "[00:01:33] Extracting src... done\n" -"[00:02:31] Fetching lib32 for FreeBSD 11.4-RELEASE amd64\n" -"/poudriere/jails/11amd64/fromftp/lib32.txz 24 MB 3969 kBps 06s\n" +"[00:02:31] Fetching lib32 for FreeBSD 13.1-RELEASE amd64\n" +"/poudriere/jails/13amd64/fromftp/lib32.txz 24 MB 3969 kBps 06s\n" "[00:02:38] Extracting lib32... done\n" "[00:02:42] Cleaning up... done\n" "[00:02:42] Recording filesystem state for clean... done\n" "[00:02:42] Upgrading using ftp\n" -"/etc/resolv.conf -> /poudriere/jails/11amd64/etc/resolv.conf\n" +"/etc/resolv.conf -> /poudriere/jails/13amd64/etc/resolv.conf\n" "Looking up update.FreeBSD.org mirrors... 3 mirrors found.\n" "Fetching public key from update4.freebsd.org... done.\n" -"Fetching metadata signature for 11.4-RELEASE from update4.freebsd.org... done.\n" +"Fetching metadata signature for 13.1-RELEASE from update4.freebsd.org... done.\n" "Fetching metadata index... done.\n" "Fetching 2 metadata files... done.\n" "Inspecting system... done.\n" "Preparing to download files... done.\n" "Fetching 124 patches.....10....20....30....40....50....60....70....80....90....100....110....120.. done.\n" "Applying patches... done.\n" "Fetching 6 files... done.\n" "The following files will be added as part of updating to\n" -"11.4-RELEASE-p1:\n" +"13.1-RELEASE-p1:\n" "/usr/src/contrib/unbound/.github\n" "/usr/src/contrib/unbound/.github/FUNDING.yml\n" "/usr/src/contrib/unbound/contrib/drop2rpz\n" "/usr/src/contrib/unbound/contrib/unbound_portable.service.in\n" "/usr/src/contrib/unbound/services/rpz.c\n" "/usr/src/contrib/unbound/services/rpz.h\n" "/usr/src/lib/libc/tests/gen/spawnp_enoexec.sh\n" "The following files will be updated as part of updating to\n" -"11.4-RELEASE-p1:\n" +"13.1-RELEASE-p1:\n" "[…]\n" "Installing updates...Scanning //usr/share/certs/blacklisted for certificates...\n" "Scanning //usr/share/certs/trusted for certificates...\n" " done.\n" -"11.4-RELEASE-p1\n" +"13.1-RELEASE-p1\n" "[00:04:06] Recording filesystem state for clean... done\n" -"[00:04:07] Jail 11amd64 11.4-RELEASE-p1 amd64 is ready to be used\n" +"[00:04:07] Jail 13amd64 13.1-RELEASE-p1 amd64 is ready to be used\n" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1237 +#: documentation/content/en/books/handbook/ports/_index.adoc:1190 #, no-wrap msgid "" "# poudriere ports -c -p local -m git+https\n" "[00:00:00] Creating local fs at /poudriere/ports/local... done\n" "[00:00:00] Checking out the ports tree... done\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1242 +#: documentation/content/en/books/handbook/ports/_index.adoc:1195 msgid "" "On a single computer, poudriere can build ports with multiple " "configurations, in multiple jails, and from different port trees. Custom " "configurations for these combinations are called _sets_. See the " "CUSTOMIZATION section of man:poudriere[8] for details after package:ports-" "mgmt/poudriere[] or package:ports-mgmt/poudriere-devel[] is installed." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1246 +#: documentation/content/en/books/handbook/ports/_index.adoc:1199 msgid "" "The basic configuration shown here puts a single jail-, port-, and set-" "specific [.filename]#make.conf# in [.filename]#/usr/local/etc/poudriere.d#. " "The filename in this example is created by combining the jail name, port " -"name, and set name: [.filename]#11amd64-local-workstation-make.conf#. The " +"name, and set name: [.filename]#13amd64-local-workstation-make.conf#. The " "system [.filename]#make.conf# and this new file are combined at build time " "to create the [.filename]#make.conf# used by the build jail." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1248 +#: documentation/content/en/books/handbook/ports/_index.adoc:1201 msgid "" -"Packages to be built are entered in [.filename]#11amd64-local-workstation-" +"Packages to be built are entered in [.filename]#13amd64-local-workstation-" "pkglist#:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1255 +#: documentation/content/en/books/handbook/ports/_index.adoc:1208 #, no-wrap msgid "" "editors/emacs\n" "devel/git\n" "ports-mgmt/pkg\n" "...\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1258 +#: documentation/content/en/books/handbook/ports/_index.adoc:1211 msgid "Options and dependencies for the specified ports are configured:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1262 +#: documentation/content/en/books/handbook/ports/_index.adoc:1215 #, no-wrap -msgid "# poudriere options -j 11amd64 -p local -z workstation -f 11amd64-local-workstation-pkglist\n" +msgid "# poudriere options -j 13amd64 -p local -z workstation -f 13amd64-local-workstation-pkglist\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1265 +#: documentation/content/en/books/handbook/ports/_index.adoc:1218 msgid "Finally, packages are built and a package repository is created:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1269 +#: documentation/content/en/books/handbook/ports/_index.adoc:1222 #, no-wrap -msgid "# poudriere bulk -j 11amd64 -p local -z workstation -f 11amd64-local-workstation-pkglist\n" +msgid "# poudriere bulk -j 13amd64 -p local -z workstation -f 13amd64-local-workstation-pkglist\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1273 +#: documentation/content/en/books/handbook/ports/_index.adoc:1226 msgid "" "While running, pressing kbd:[Ctrl+t] displays the current state of the " "build. Poudriere also builds files in [.filename]#/poudriere/logs/bulk/" "jailname# that can be used with a web server to display build information." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1275 +#: documentation/content/en/books/handbook/ports/_index.adoc:1228 msgid "" "After completion, the new packages are now available for installation from " "the poudriere repository." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1277 +#: documentation/content/en/books/handbook/ports/_index.adoc:1230 msgid "" "For more information on using poudriere, see man:poudriere[8] and the main " "web site, https://github.com/freebsd/poudriere/wiki[]." msgstr "" #. type: Title === -#: documentation/content/en/books/handbook/ports/_index.adoc:1278 +#: documentation/content/en/books/handbook/ports/_index.adoc:1231 #, no-wrap msgid "Configuring pkg Clients to Use a Poudriere Repository" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1283 +#: documentation/content/en/books/handbook/ports/_index.adoc:1236 msgid "" "While it is possible to use both a custom repository along side of the " "official repository, sometimes it is useful to disable the official " "repository. This is done by creating a configuration file that overrides " "and disables the official configuration file. Create [.filename]#/usr/local/" "etc/pkg/repos/FreeBSD.conf# that contains the following:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1289 +#: documentation/content/en/books/handbook/ports/_index.adoc:1242 #, no-wrap msgid "" "FreeBSD: {\n" "\tenabled: no\n" "}\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1293 +#: documentation/content/en/books/handbook/ports/_index.adoc:1246 msgid "" "Usually it is easiest to serve a poudriere repository to the client machines " "via HTTP. Set up a webserver to serve up the package directory, for " -"instance: [.filename]#/usr/local/poudriere/data/packages/11amd64#, where [." -"filename]#11amd64# is the name of the build." +"instance: [.filename]#/usr/local/poudriere/data/packages/13amd64#, where [." +"filename]#13amd64# is the name of the build." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1296 +#: documentation/content/en/books/handbook/ports/_index.adoc:1249 msgid "" -"If the URL to the package repository is: `http://pkg.example.com/11amd64`, " +"If the URL to the package repository is: `http://pkg.example.com/13amd64`, " "then the repository configuration file in [.filename]#/usr/local/etc/pkg/" "repos/custom.conf# would look like:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1303 +#: documentation/content/en/books/handbook/ports/_index.adoc:1256 #, no-wrap msgid "" "custom: {\n" -"\turl: \"http://pkg.example.com/11amd64\",\n" +"\turl: \"http://pkg.example.com/13amd64\",\n" "\tenabled: yes,\n" "}\n" msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/ports/_index.adoc:1306 +#: documentation/content/en/books/handbook/ports/_index.adoc:1259 #, no-wrap msgid "Post-Installation Considerations" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1310 +#: documentation/content/en/books/handbook/ports/_index.adoc:1263 msgid "" "Regardless of whether the software was installed from a binary package or " "port, most third-party applications require some level of configuration " "after installation. The following commands and locations can be used to " "help determine what was installed with the application." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1312 +#: documentation/content/en/books/handbook/ports/_index.adoc:1265 msgid "" "Most applications install at least one default configuration file in [." "filename]#/usr/local/etc#. In cases where an application has a large number " "of configuration files, a subdirectory will be created to hold them. Often, " "sample configuration files are installed which end with a suffix such as [." "filename]#.sample#. The configuration files should be reviewed and possibly " "edited to meet the system's needs. To edit a sample file, first copy it " "without the [.filename]#.sample# extension." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1313 +#: documentation/content/en/books/handbook/ports/_index.adoc:1266 msgid "" "Applications which provide documentation will install it into [.filename]#/" "usr/local/share/doc# and many applications also install manual pages. This " "documentation should be consulted before continuing." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1314 +#: documentation/content/en/books/handbook/ports/_index.adoc:1267 msgid "" "Some applications run services which must be added to [.filename]#/etc/rc." "conf# before starting the application. These applications usually install a " "startup script in [.filename]#/usr/local/etc/rc.d#. See crossref:" "config[configtuning-starting-services,Starting Services] for more " "information." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1319 +#: documentation/content/en/books/handbook/ports/_index.adoc:1272 msgid "" "By design, applications do not run their startup script upon installation, " "nor do they run their stop script upon deinstallation or upgrade. This " "decision is left to the individual system administrator." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1322 +#: documentation/content/en/books/handbook/ports/_index.adoc:1275 msgid "" "Users of man:csh[1] should run `rehash` to rebuild the known binary list in " "the shells `PATH`." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1323 +#: documentation/content/en/books/handbook/ports/_index.adoc:1276 msgid "" "Use `pkg info` to determine which files, man pages, and binaries were " "installed with the application." msgstr "" #. type: Title == -#: documentation/content/en/books/handbook/ports/_index.adoc:1325 +#: documentation/content/en/books/handbook/ports/_index.adoc:1278 #, no-wrap msgid "Dealing with Broken Ports" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1328 +#: documentation/content/en/books/handbook/ports/_index.adoc:1281 msgid "When a port does not build or install, try the following:" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1330 +#: documentation/content/en/books/handbook/ports/_index.adoc:1283 msgid "" "Search to see if there is a fix pending for the port in the link:https://www." "FreeBSD.org/support/[Problem Report database]. If so, implementing the " "proposed fix may fix the issue." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1331 +#: documentation/content/en/books/handbook/ports/_index.adoc:1284 msgid "" "Ask the maintainer of the port for help. Type `make maintainer` in the ports " "skeleton or read the port's [.filename]#Makefile# to find the maintainer's " "email address. Remember to include the output leading up to the error in the " "email to the maintainer." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1337 +#: documentation/content/en/books/handbook/ports/_index.adoc:1290 msgid "" "Some ports are not maintained by an individual but instead by a group " "maintainer represented by a extref:{mailing-list-faq}[mailing list]. Many, " "but not all, of these addresses look like mailto:freebsd-listname@FreeBSD." "org[freebsd-listname@FreeBSD.org]. Please take this into account when " "sending an email." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/handbook/ports/_index.adoc:1340 +#: documentation/content/en/books/handbook/ports/_index.adoc:1293 msgid "" "In particular, ports maintained by mailto:ports@FreeBSD.org[ports@FreeBSD." "org] are not maintained by a specific individual. Instead, any fixes and " "support come from the general community who subscribe to that mailing list. " "More volunteers are always needed!" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1343 +#: documentation/content/en/books/handbook/ports/_index.adoc:1296 msgid "" "If there is no response to the email, use Bugzilla to submit a bug report " "using the instructions in extref:{problem-reports}[Writing FreeBSD Problem " "Reports]." msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1344 +#: documentation/content/en/books/handbook/ports/_index.adoc:1297 msgid "" "Fix it! The extref:{porters-handbook}[Porter's Handbook] includes detailed " "information on the ports infrastructure so that you can fix the occasional " "broken port or even submit your own!" msgstr "" #. type: Plain text -#: documentation/content/en/books/handbook/ports/_index.adoc:1344 +#: documentation/content/en/books/handbook/ports/_index.adoc:1297 msgid "" "Install the package instead of the port using the instructions in <>." msgstr "" diff --git a/documentation/content/en/books/porters-handbook/makefiles/_index.po b/documentation/content/en/books/porters-handbook/makefiles/_index.po index 51437d67fd..5c163d26bd 100644 --- a/documentation/content/en/books/porters-handbook/makefiles/_index.po +++ b/documentation/content/en/books/porters-handbook/makefiles/_index.po @@ -1,11624 +1,11624 @@ # 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: 2022-09-09 20:51-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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 <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:82 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 <>." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:85 #, no-wrap msgid "Versions, `DISTVERSION` _or_ `PORTVERSION`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:88 msgid "Set `DISTVERSION` to the version number of the software." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:92 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:96 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:99 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:104 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 " "<>." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:107 #, 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:111 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:117 #, 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:117 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:119 #, no-wrap msgid "<.>" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:119 msgid "% pkg version -t 1.2 1.2.0" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:126 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:129 msgid "`1.2` is before `1.3`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:130 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:131 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:132 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:133 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:134 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:139 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:143 #, no-wrap msgid "Examples of `DISTVERSION` and the Derived `PORTVERSION`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:147 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:490 #, no-wrap msgid "DISTVERSION" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:149 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:491 #, no-wrap msgid "PORTVERSION" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:150 #, no-wrap msgid "0.7.1d" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:152 #, no-wrap msgid "0.7.1.d" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:153 #, no-wrap msgid "10Alpha3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:155 #, no-wrap msgid "10.a3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:156 #, no-wrap msgid "3Beta7-pre2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:158 #, no-wrap msgid "3.b7.p2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:159 #, no-wrap msgid "8:f_17" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:160 #, no-wrap msgid "8f.17" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:163 #, no-wrap msgid "Using `DISTVERSION`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:167 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:172 #, no-wrap msgid "" "PORTNAME= nekoto\n" "DISTVERSION=\t1.2-4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:175 msgid "It will generate a `PORTVERSION` of `1.2.4`." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:178 #, 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:182 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:184 msgid "If the version is `v1.2-4`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:190 #, 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:194 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:200 #, 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:203 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:209 #, 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:212 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:219 #, 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:222 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:224 msgid "All will generate a `PORTVERSION` of `1.2.4`." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:227 #, 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:231 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:236 #, 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:242 #, no-wrap msgid "" "PORTNAME= nekoto\n" "DISTVERSION=\t1.2p4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:245 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:250 #, 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:255 #, 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:259 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:264 #, no-wrap msgid "" "PORTNAME= nekoto\n" "PORTVERSION=\t1.2p4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:268 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:275 #, 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:278 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:279 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:282 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 " "<>." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:284 #, no-wrap msgid "`PORTREVISION` and `PORTEPOCH`" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:287 #, no-wrap msgid "`PORTREVISION`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:291 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:294 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 <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:296 msgid "Examples of when `PORTREVISION` must be bumped:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:298 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:299 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:300 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:301 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:302 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:304 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:306 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:307 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:308 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:309 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:310 msgid "Changes to `MAINTAINER`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:315 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:320 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:323 #, no-wrap msgid "`PORTEPOCH`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:327 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:333 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:338 #, 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:341 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:348 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:351 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:355 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:358 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:360 #, no-wrap msgid "Example of `PORTREVISION` and `PORTEPOCH` Usage" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:363 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:368 #, no-wrap msgid "" "PORTNAME=\tgtkmumble\n" "DISTVERSION=\t0.10\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:371 msgid "`PKGNAME` becomes `gtkmumble-0.10`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:374 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:380 #, 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:383 msgid "`PKGNAME` becomes `gtkmumble-0.10_1`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:387 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:393 #, 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:396 msgid "`PKGNAME` becomes `gtkmumble-0.2,1`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:399 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:405 #, 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:408 msgid "`PKGNAME` becomes `gtkmumble-0.3,1`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:413 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:416 #, no-wrap msgid "`PKGNAMEPREFIX` and `PKGNAMESUFFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:423 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 <>. 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:425 #, no-wrap msgid "Package Naming Conventions" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:429 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:431 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:434 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:436 #, no-wrap msgid "[.filename]#language_region-#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:440 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:443 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:445 msgid "The _language-_ part is set in `PKGNAMEPREFIX`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:447 #, no-wrap msgid "[.filename]#name#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:452 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:455 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:456 #, no-wrap msgid "[.filename]#-compiled.specifics#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:460 msgid "" "If the port can be built with different <> (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:462 msgid "The _-compiled.specifics_ part is set in `PKGNAMESUFFIX`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:464 #, no-wrap msgid "[.filename]#-version.numbers#" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:470 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:474 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:478 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 " "<>." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:481 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:482 #, no-wrap msgid "Package Naming Examples" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:486 #, no-wrap msgid "Distribution Name" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:487 #, no-wrap msgid "PKGNAMEPREFIX" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:488 #, no-wrap msgid "PORTNAME" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:489 #, no-wrap msgid "PKGNAMESUFFIX" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:493 #, no-wrap msgid "Reason or comment" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:494 #, no-wrap msgid "mule-2.2.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:495 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:497 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:503 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:511 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:513 #: 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:577 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:583 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:591 #, no-wrap msgid "(empty)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:496 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:504 #, no-wrap msgid "mule" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:498 #, no-wrap msgid "2.2.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:501 #, no-wrap msgid "No changes required" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:502 #, no-wrap msgid "mule-1.0.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:505 #, no-wrap msgid "1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:506 #, no-wrap msgid "1.0.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:509 #, 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:510 #, no-wrap msgid "EmiClock-1.0.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:512 #, no-wrap msgid "emiclock" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:514 #, no-wrap msgid "1.0.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:517 #, no-wrap msgid "No uppercase names for single programs" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:518 #, no-wrap msgid "rdist-1.3alpha" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:520 #, no-wrap msgid "rdist" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:522 #, no-wrap msgid "1.3alpha" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:525 #, no-wrap msgid "Version will be `1.3.a`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:526 #, no-wrap msgid "es-0.9-beta1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:528 #, no-wrap msgid "es" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:530 #, no-wrap msgid "0.9-beta1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:533 #, no-wrap msgid "Version will be `0.9.b1`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:534 #, no-wrap msgid "mailman-2.0rc3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:536 #, no-wrap msgid "mailman" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:538 #, no-wrap msgid "2.0rc3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:541 #, no-wrap msgid "Version will be `2.0.r3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:542 #, no-wrap msgid "v3.3beta021.src" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:544 #, no-wrap msgid "tiff" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:547 #, no-wrap msgid "3.3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:549 #, no-wrap msgid "What the heck was that anyway?" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:550 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:552 #, no-wrap msgid "tvtwm" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:555 #, no-wrap msgid "p11" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:557 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:565 #, 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:558 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:560 #, no-wrap msgid "piewm" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:562 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:594 #, no-wrap msgid "1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:566 #, no-wrap msgid "xvgr-2.10pl1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:568 #, no-wrap msgid "xvgr" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:571 #, no-wrap msgid "2.10.pl1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:573 #, 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:574 #, no-wrap msgid "gawk-2.15.6" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:575 #, no-wrap msgid "ja-" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:576 #, no-wrap msgid "gawk" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:578 #, no-wrap msgid "2.15.6" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:581 #, no-wrap msgid "Japanese language version" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:582 #, no-wrap msgid "psutils-1.13" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:584 #, no-wrap msgid "psutils" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:585 #, no-wrap msgid "-letter" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:586 #, no-wrap msgid "1.13" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:589 #, no-wrap msgid "Paper size hardcoded at package build time" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:590 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:592 #, no-wrap msgid "pkfonts" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:593 #, no-wrap msgid "300" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:596 #, no-wrap msgid "Package for 300dpi fonts" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:600 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:605 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:608 #, no-wrap msgid "Categorization" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:611 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4785 #, no-wrap msgid "`CATEGORIES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:617 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 <> " "and pick the ones that are suitable for the port." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:621 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 <> for more discussion about how to pick the right categories." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:623 #, no-wrap msgid "Current List of Categories" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:628 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:632 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:638 #, no-wrap msgid "Category" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:639 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1451 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1852 #, no-wrap msgid "Description" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:641 #, no-wrap msgid "Notes" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:642 #, no-wrap msgid "[.filename]#accessibility#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:643 #, no-wrap msgid "Ports to help disabled users." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:646 #, no-wrap msgid "[.filename]#afterstep#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:647 #, 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:650 #, no-wrap msgid "[.filename]#arabic#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:651 #, no-wrap msgid "Arabic language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:654 #, no-wrap msgid "[.filename]#archivers#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:655 #, no-wrap msgid "Archiving tools." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:658 #, no-wrap msgid "[.filename]#astro#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:659 #, no-wrap msgid "Astronomical ports." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:662 #, no-wrap msgid "[.filename]#audio#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:663 #, no-wrap msgid "Sound support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:666 #, no-wrap msgid "[.filename]#benchmarks#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:667 #, no-wrap msgid "Benchmarking utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:670 #, no-wrap msgid "[.filename]#biology#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:671 #, no-wrap msgid "Biology-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:674 #, no-wrap msgid "[.filename]#cad#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:675 #, no-wrap msgid "Computer aided design tools." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:678 #, no-wrap msgid "[.filename]#chinese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:679 #, no-wrap msgid "Chinese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:682 #, no-wrap msgid "[.filename]#comms#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:683 #, no-wrap msgid "Communication software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:685 #, no-wrap msgid "Mostly software to talk to the serial port." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:686 #, no-wrap msgid "[.filename]#converters#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:687 #, no-wrap msgid "Character code converters." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:690 #, no-wrap msgid "[.filename]#databases#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:691 #, no-wrap msgid "Databases." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:694 #, no-wrap msgid "[.filename]#deskutils#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:695 #, 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:698 #, no-wrap msgid "[.filename]#devel#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:699 #, no-wrap msgid "Development utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:701 #, 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:702 #, no-wrap msgid "[.filename]#dns#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:703 #, no-wrap msgid "DNS-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:706 #, no-wrap msgid "[.filename]#docs#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:707 #, no-wrap msgid "Meta-ports for FreeBSD documentation." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:710 #, no-wrap msgid "[.filename]#editors#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:711 #, no-wrap msgid "General editors." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:713 #, 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:714 #, no-wrap msgid "[.filename]#education#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:715 #, no-wrap msgid "Education-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:717 #, 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:718 #, no-wrap msgid "[.filename]#elisp#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:719 #, no-wrap msgid "Emacs-lisp ports." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:722 #, no-wrap msgid "[.filename]#emulators#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:723 #, no-wrap msgid "Emulators for other operating systems." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:725 #, 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:726 #, no-wrap msgid "[.filename]#enlightenment#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:727 #, no-wrap msgid "Ports related to the Enlightenment window manager." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:730 #, no-wrap msgid "[.filename]#finance#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:731 #, no-wrap msgid "Monetary, financial and related applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:734 #, no-wrap msgid "[.filename]#french#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:735 #, no-wrap msgid "French language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:738 #, no-wrap msgid "[.filename]#ftp#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:739 #, no-wrap msgid "FTP client and server utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:741 #, 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:742 #, no-wrap msgid "[.filename]#games#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:743 #, no-wrap msgid "Games." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:746 #, no-wrap msgid "[.filename]#geography#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:747 #, no-wrap msgid "Geography-related software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:750 #, no-wrap msgid "[.filename]#german#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:751 #, no-wrap msgid "German language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:754 #, no-wrap msgid "[.filename]#gnome#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:755 #, no-wrap msgid "Ports from the https://www.gnome.org/[GNOME] Project." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:758 #, no-wrap msgid "[.filename]#gnustep#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:759 #, no-wrap msgid "Software related to the GNUstep desktop environment." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:762 #, no-wrap msgid "[.filename]#graphics#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:763 #, no-wrap msgid "Graphics utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:766 #, no-wrap msgid "[.filename]#hamradio#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:767 #, no-wrap msgid "Software for amateur radio." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:770 #, no-wrap msgid "[.filename]#haskell#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:771 #, no-wrap msgid "Software related to the Haskell language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:774 #, no-wrap msgid "[.filename]#hebrew#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:775 #, no-wrap msgid "Hebrew language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:778 #, no-wrap msgid "[.filename]#hungarian#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:779 #, no-wrap msgid "Hungarian language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:782 #, no-wrap msgid "[.filename]#irc#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:783 #, no-wrap msgid "Internet Relay Chat utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:786 #, no-wrap msgid "[.filename]#japanese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:787 #, no-wrap msgid "Japanese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:790 #, no-wrap msgid "[.filename]#java#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:791 #, no-wrap msgid "Software related to the Java(TM) language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:793 #, 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:794 #, no-wrap msgid "[.filename]#kde#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:795 #, 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:798 #, no-wrap msgid "[.filename]#kde-applications#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:799 #, no-wrap msgid "Applications from the https://www.kde.org/[KDE] Project." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:802 #, no-wrap msgid "[.filename]#kde-frameworks#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:803 #, 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:806 #, no-wrap msgid "[.filename]#kde-plasma#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:807 #, no-wrap msgid "Desktop 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]#kld#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:811 #, no-wrap msgid "Kernel loadable modules." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:814 #, no-wrap msgid "[.filename]#korean#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:815 #, no-wrap msgid "Korean language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:818 #, no-wrap msgid "[.filename]#lang#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:819 #, no-wrap msgid "Programming languages." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:822 #, no-wrap msgid "[.filename]#linux#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:823 #, no-wrap msgid "Linux applications and support utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:826 #, no-wrap msgid "[.filename]#lisp#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:827 #, no-wrap msgid "Software related to the Lisp language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:830 #, no-wrap msgid "[.filename]#mail#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:831 #, no-wrap msgid "Mail software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:834 #, no-wrap msgid "[.filename]#mate#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:835 #, 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:838 #, no-wrap msgid "[.filename]#math#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:839 #, no-wrap msgid "Numerical computation software and other utilities for mathematics." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:842 #, no-wrap msgid "[.filename]#mbone#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:843 #, no-wrap msgid "MBone applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:846 #, no-wrap msgid "[.filename]#misc#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:847 #, no-wrap msgid "Miscellaneous utilities" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:849 #, 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:850 #, no-wrap msgid "[.filename]#multimedia#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:851 #, no-wrap msgid "Multimedia software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:854 #, no-wrap msgid "[.filename]#net#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:855 #, no-wrap msgid "Miscellaneous networking software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:858 #, no-wrap msgid "[.filename]#net-im#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:859 #, no-wrap msgid "Instant messaging software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:862 #, no-wrap msgid "[.filename]#net-mgmt#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:863 #, no-wrap msgid "Networking management software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:866 #, no-wrap msgid "[.filename]#net-p2p#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:867 #, no-wrap msgid "Peer to peer network applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:870 #, no-wrap msgid "[.filename]#net-vpn#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:871 #, no-wrap msgid "Virtual Private Network applications." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:874 #, no-wrap msgid "[.filename]#news#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:875 #, no-wrap msgid "USENET news software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:878 #, no-wrap msgid "[.filename]#parallel#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:879 #, no-wrap msgid "Applications dealing with parallelism in computing." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:882 #, no-wrap msgid "[.filename]#pear#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:883 #, no-wrap msgid "Ports related to the Pear PHP framework." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:886 #, no-wrap msgid "[.filename]#perl5#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:887 #, no-wrap msgid "Ports that require Perl version 5 to run." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:890 #, no-wrap msgid "[.filename]#plan9#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:891 #, 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:894 #, no-wrap msgid "[.filename]#polish#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:895 #, no-wrap msgid "Polish language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:898 #, no-wrap msgid "[.filename]#ports-mgmt#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:899 #, 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:902 #, no-wrap msgid "[.filename]#portuguese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:903 #, no-wrap msgid "Portuguese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:906 #, no-wrap msgid "[.filename]#print#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:907 #, no-wrap msgid "Printing software." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:909 #, no-wrap msgid "Desktop publishing tools (previewers, etc.) belong here too." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:910 #, no-wrap msgid "[.filename]#python#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:911 #, 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:914 #, no-wrap msgid "[.filename]#ruby#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:915 #, 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:918 #, no-wrap msgid "[.filename]#rubygems#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:919 #, no-wrap msgid "Ports of https://www.rubygems.org/[RubyGems] packages." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:922 #, no-wrap msgid "[.filename]#russian#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:923 #, no-wrap msgid "Russian language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:926 #, no-wrap msgid "[.filename]#scheme#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:927 #, no-wrap msgid "Software related to the Scheme language." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:930 #, no-wrap msgid "[.filename]#science#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:931 #, 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:934 #, no-wrap msgid "[.filename]#security#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:935 #, no-wrap msgid "Security utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:938 #, no-wrap msgid "[.filename]#shells#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:939 #, no-wrap msgid "Command line shells." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:942 #, no-wrap msgid "[.filename]#spanish#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:943 #, no-wrap msgid "Spanish language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:946 #, no-wrap msgid "[.filename]#sysutils#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:947 #, no-wrap msgid "System utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:950 #, no-wrap msgid "[.filename]#tcl#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:951 #, no-wrap msgid "Ports that use Tcl to run." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:954 #, no-wrap msgid "[.filename]#textproc#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:955 #, no-wrap msgid "Text processing utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:957 #, 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:958 #, no-wrap msgid "[.filename]#tk#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:959 #, no-wrap msgid "Ports that use Tk to run." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:962 #, no-wrap msgid "[.filename]#ukrainian#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:963 #, no-wrap msgid "Ukrainian language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:966 #, no-wrap msgid "[.filename]#vietnamese#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:967 #, no-wrap msgid "Vietnamese language support." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:970 #, no-wrap msgid "[.filename]#wayland#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:971 #, no-wrap msgid "Ports to support the Wayland display server." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:974 #, no-wrap msgid "[.filename]#windowmaker#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:975 #, no-wrap msgid "Ports to support the Window Maker window manager." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:978 #, no-wrap msgid "[.filename]#www#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:979 #, no-wrap msgid "Software related to the World Wide Web." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:981 #, no-wrap msgid "HTML language support belongs here too." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:982 #, no-wrap msgid "[.filename]#x11#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:983 #, no-wrap msgid "The X Window System and friends." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:985 #, 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:986 #, no-wrap msgid "[.filename]#x11-clocks#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:987 #, no-wrap msgid "X11 clocks." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:990 #, no-wrap msgid "[.filename]#x11-drivers#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:991 #, no-wrap msgid "X11 drivers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:994 #, no-wrap msgid "[.filename]#x11-fm#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:995 #, no-wrap msgid "X11 file managers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:998 #, no-wrap msgid "[.filename]#x11-fonts#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:999 #, no-wrap msgid "X11 fonts and font utilities." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1002 #, no-wrap msgid "[.filename]#x11-servers#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1003 #, no-wrap msgid "X11 servers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1006 #, no-wrap msgid "[.filename]#x11-themes#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1007 #, no-wrap msgid "X11 themes." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1010 #, no-wrap msgid "[.filename]#x11-toolkits#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1011 #, no-wrap msgid "X11 toolkits." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1014 #, no-wrap msgid "[.filename]#x11-wm#" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1015 #, no-wrap msgid "X11 window managers." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1018 #, no-wrap msgid "[.filename]#xfce#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1019 #, 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:1022 #, no-wrap msgid "[.filename]#zope#`*`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1023 #, no-wrap msgid "https://www.zope.org/[Zope] support." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1027 #, no-wrap msgid "Choosing the Right Category" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1032 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:1034 msgid "" "The first category must be a physical category (see <>). 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:1035 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:1036 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:1037 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:1038 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:1039 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:1040 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:1041 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:1045 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:1047 #, no-wrap msgid "Proposing a New Category" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1052 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 thouroughly before " +"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:1054 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:1058 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:1060 msgid "Here is the procedure:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1063 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:1064 msgid "Participate in the discussion." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1065 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:1067 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:1068 msgid "[.filename]#Makefile# for the new category" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1069 msgid "[.filename]#Makefile# for the old ports' categories" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1070 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:1071 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:1073 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:1074 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:1077 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:1079 #, no-wrap msgid "Proposing Reorganizing All the Categories" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1085 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:1087 #, no-wrap msgid "The Distribution Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1090 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:1092 #, no-wrap msgid "`DISTNAME`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1099 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:1102 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:1107 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:1111 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:1113 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:1115 #, no-wrap msgid "Deriving `PORTVERSION` Manually" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1121 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:1123 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:1130 #, 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" +"% pkg version -t 9.9.9 9.9.9p1\n" "< <.>\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1133 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:1134 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:1136 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:1145 #, no-wrap msgid "" "PORTNAME=\tbind\n" -"PORTVERSION=\t${ISCVERSION:S/-P/P/:S/b/.b/:S/a/.a/:S/rc/.rc/} \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" +"MASTER_SITES=\tISC/bind9/${ISCVERSION}\n" "PKGNAMESUFFIX=\t99\n" -"DISTNAME=\t${PORTNAME}-${ISCVERSION} \n" +"DISTNAME=\t${PORTNAME}-${ISCVERSION}\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1149 #, 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:1151 #, no-wrap msgid "LICENSE=\tISCL\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1154 #, 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:1160 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:1163 #, no-wrap msgid "Derive `DISTNAME` from `PORTVERSION`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1167 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:1169 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:1177 #, 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:1181 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:1184 #, no-wrap msgid "Exotic Case 1" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1188 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:1190 msgid "From package:audio/libworkman[]:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1198 #, 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:1203 #, no-wrap msgid "Exotic Case 2" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1207 msgid "" "In package:comms/librs232[], the distribution file is not versioned, so " "using <> is needed:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1216 #, 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:1224 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:1227 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4815 #, no-wrap msgid "`MASTER_SITES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1231 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:1233 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:1236 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:1244 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:1247 #, no-wrap msgid "Using `MASTER_SITE_*` Variables" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1250 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:1254 #, no-wrap msgid "MASTER_SITES=\tGNU/make\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1258 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:1263 #, 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:1267 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:1272 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:1276 #, no-wrap msgid "MASTER_SITES=\tFOO\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1279 msgid "If `MASTER_SITE_SUBDIR` is needed, use this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1283 #, no-wrap msgid "MASTER_SITES=\tFOO/bar\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1290 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:1292 #, no-wrap msgid "Shortcuts for `MASTER_SITE_*` Macros" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1296 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1354 #, no-wrap msgid "Macro" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1298 #, no-wrap msgid "Shortcut" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1299 #, no-wrap msgid "`PERL_CPAN`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1301 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1372 #, no-wrap msgid "`CPAN`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1302 #, no-wrap msgid "`GITHUB`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1304 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1393 #, no-wrap msgid "`GH`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1305 #, no-wrap msgid "`GITHUB_CLOUD`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1307 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1396 #, no-wrap msgid "`GHC`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1308 #, no-wrap msgid "`LIBREOFFICE_DEV`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1310 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1414 #, no-wrap msgid "`LODEV`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1311 #, no-wrap msgid "`NETLIB`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1313 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1423 #, no-wrap msgid "`NL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1314 #, no-wrap msgid "`RUBYGEMS`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1316 #, no-wrap msgid "`RG`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1317 #, no-wrap msgid "`SOURCEFORGE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1318 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1435 #, no-wrap msgid "`SF`" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1322 #, no-wrap msgid "Magic MASTER_SITES Macros" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1327 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:1331 #, no-wrap msgid "MASTER_SITES=\tSF\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1335 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:1339 #, no-wrap msgid "MASTER_SITES=\tSF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1342 msgid "This can also be written as" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1347 #, 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:1350 #, no-wrap msgid "Magic `MASTER_SITES` Macros" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1356 #, no-wrap msgid "Assumed subdirectory" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1357 #, no-wrap msgid "`APACHE_COMMONS_BINARIES`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1359 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1362 #, no-wrap msgid "`${PORTNAME:S,commons-,,}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1360 #, no-wrap msgid "`APACHE_COMMONS_SOURCE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1363 #, no-wrap msgid "`APACHE_JAKARTA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1365 #, no-wrap msgid "`${PORTNAME:S,-,/,}/source`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1366 #, no-wrap msgid "`BERLIOS`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1368 #, no-wrap msgid "`${PORTNAME:tl}.berlios`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1369 #, no-wrap msgid "`CHEESESHOP`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1371 #, no-wrap msgid "`source/${DISTNAME:C/(.).\\*/\\1/}/${DISTNAME:C/(.*)-[0-9].*/\\1/}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1374 #, no-wrap msgid "`${PORTNAME:C/-.*//}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1375 #, no-wrap msgid "`DEBIAN`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1377 #, no-wrap msgid "`pool/main/${PORTNAME:C/^((lib)?.).*$/\\1/}/${PORTNAME}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1378 #, no-wrap msgid "`FARSIGHT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1380 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1404 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1407 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1410 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1413 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1416 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1425 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1431 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1457 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1461 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1862 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1866 #, no-wrap msgid "`${PORTNAME}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1381 #, no-wrap msgid "`FESTIVAL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1383 #, no-wrap msgid "`${PORTREVISION}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1384 #, no-wrap msgid "`GCC`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1386 #, no-wrap msgid "`releases/${DISTNAME}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1387 #, no-wrap msgid "`GENTOO`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1389 #, no-wrap msgid "`distfiles`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1390 #, no-wrap msgid "`GIMP`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1392 #, no-wrap msgid "`${PORTNAME}/${PORTVERSION:R}/`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1395 #, no-wrap msgid "`${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1398 #, no-wrap msgid "`${GH_ACCOUNT}/${GH_PROJECT}/`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1399 #, no-wrap msgid "`GNOME`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1401 #, no-wrap msgid "`sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1402 #, no-wrap msgid "`GNU`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1405 #, no-wrap msgid "`GNUPG`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1408 #, no-wrap msgid "`GNU_ALPHA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1411 #, no-wrap msgid "`HORDE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1417 #, no-wrap msgid "`MATE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1419 #, no-wrap msgid "`${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1420 #, no-wrap msgid "`MOZDEV`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1422 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1434 #, no-wrap msgid "`${PORTNAME:tl}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1426 #, no-wrap msgid "`QT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1428 #, no-wrap msgid "`archive/qt/${PORTVERSION:R}`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1429 #, no-wrap msgid "`SAMBA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1432 #, no-wrap msgid "`SAVANNAH`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1436 #, no-wrap msgid "`${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION}`" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1439 #, no-wrap msgid "`USE_GITHUB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1444 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. " "These variables are available:" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1446 #, no-wrap msgid "`USE_GITHUB` Description" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1450 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1851 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3607 #, no-wrap msgid "Variable" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1453 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1854 #, no-wrap msgid "Default" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1454 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4797 #, no-wrap msgid "`GH_ACCOUNT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1455 #, 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:1458 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4798 #, no-wrap msgid "`GH_PROJECT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1459 #, no-wrap msgid "Name of the project on GitHub" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1462 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4800 #, no-wrap msgid "`GH_TAGNAME`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1463 #, 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:1465 #, no-wrap msgid "`${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1466 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4799 #, no-wrap msgid "`GH_SUBDIR`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1467 #, no-wrap msgid "When the software needs an additional distribution file to be extracted within `${WRKSRC}`, this variable can be used. See the examples in <> for more information." msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1469 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1874 #, no-wrap msgid "(none)" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1470 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4801 #, no-wrap msgid "`GH_TUPLE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1471 #, 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:1476 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:1479 #, no-wrap msgid "Simple Use of `USE_GITHUB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1484 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:1489 #, 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:1492 #, no-wrap msgid "" "USE_GITHUB=\tyes\n" "GH_ACCOUNT=\tfreebsd\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1495 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:1498 #, no-wrap msgid "More Complete Use of `USE_GITHUB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1502 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:1507 #, 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:1512 #, 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:1515 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:1519 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:1524 #, no-wrap msgid "Use of `USE_GITHUB` with `DISTVERSIONPREFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1530 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:1536 #, 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:1538 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1601 #, no-wrap msgid "USE_GITHUB=\tyes\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1541 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:1544 #, 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:1549 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:1554 #, no-wrap msgid "" "PORTNAME=\tbar\n" "DISTVERSION=\tg20140411\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1557 #, no-wrap msgid "" "USE_GITHUB=\tyes\n" "GH_TAGNAME=\tc472d66b\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1560 msgid "" "This creates a versioning scheme that increases over time, and that is still " "before version `0` (see <> for details on " "man:pkg-version[8]):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1565 #, no-wrap msgid "" "% pkg version -t g20140411 0\n" "<\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1568 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:1571 #, 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:1575 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:1580 #, 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:1583 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:1584 #, no-wrap msgid "`v0.7.3`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1586 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:1587 #, no-wrap msgid "`-14`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1589 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:1590 #, no-wrap msgid "`-gf0038b1`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1592 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:1599 #, 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:1605 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 <> for details on man:pkg-version[8]):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1612 #, 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:1618 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:1623 #, 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:1626 #, 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:1633 #, no-wrap msgid "Fetching Multiple Files from GitHub" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1637 msgid "" "The `USE_GITHUB` framework also supports fetching multiple distribution " "files from different places in GitHub. It works in a way very similar to " "<>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1642 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 <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1645 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:1648 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1944 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:1653 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1949 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:1658 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1954 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 " "<>" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1662 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:1666 #, no-wrap msgid "USE_GITHUB=\tnodefault\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1671 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:1675 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1972 #, no-wrap msgid "DISTFILES= ${DISTNAME}${EXTRACT_SUFX}\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1680 #, no-wrap msgid "Use of `USE_GITHUB` with Multiple Distribution Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1686 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:1691 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1736 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1988 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2033 #, 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:1697 #, 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:1699 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1742 #, no-wrap msgid "CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1706 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:1712 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:1716 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:1721 #, 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:1726 #, 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:1731 msgid "" "This is functionally equivalent to <>, " "but using `GH_TUPLE`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1740 #, 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:1746 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:1749 #, no-wrap msgid "How to Use `USE_GITHUB` with Git Submodules?" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1754 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:1757 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:1762 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:1778 #, 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:1782 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:1811 #, 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:1815 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:1821 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:1824 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:1830 #, 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:1837 #, 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:1842 #, no-wrap msgid "`USE_GITLAB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1845 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:1847 #, no-wrap msgid "`USE_GITLAB` Description" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1855 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4805 #, no-wrap msgid "`GL_SITE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1856 #, no-wrap msgid "Site name hosting the GitLab project" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1858 #, no-wrap msgid "https://gitlab.com/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1859 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4802 #, no-wrap msgid "`GL_ACCOUNT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1860 #, 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:1863 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4804 #, no-wrap msgid "`GL_PROJECT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1864 #, no-wrap msgid "Name of the project on GitLab" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1867 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4803 #, no-wrap msgid "`GL_COMMIT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1868 #, 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:1870 #, no-wrap msgid "`(none)`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1871 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4806 #, no-wrap msgid "`GL_SUBDIR`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1872 #, no-wrap msgid "When the software needs an additional distribution file to be extracted within `${WRKSRC}`, this variable can be used. See the examples in <> for more information." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1875 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4807 #, no-wrap msgid "`GL_TUPLE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1876 #, 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:1879 #, no-wrap msgid "Simple Use of `USE_GITLAB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1883 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:1888 #, 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:1892 #, 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:1895 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:1898 #, no-wrap msgid "More Complete Use of `USE_GITLAB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1903 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:1908 #, no-wrap msgid "" "PORTNAME=\tfoobar\n" "DISTVERSION=\tg20170906\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1914 #, 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:1917 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:1921 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:1926 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:1931 #, no-wrap msgid "Fetching Multiple Files from GitLab" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1935 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 <> and <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1938 msgid "" "Multiple values are added to `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT` and " "`GL_COMMIT`. Each different value is assigned a group. <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1941 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:1958 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:1962 #, no-wrap msgid "USE_GITLAB=\tnodefault\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1968 msgid "" "When using `USE_GITLAB=nodefault`, the [.filename]#Makefile# must set " "`DISTFILES` in its <>. The definition " "should be:" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1977 #, no-wrap msgid "Use of `USE_GITLAB` with Multiple Distribution Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1983 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:1995 #, 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:1997 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2040 #, no-wrap msgid "CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2004 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:2010 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:2014 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:2019 #, 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:2024 #, 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:2028 msgid "" "This is functionally equivalent to <>, " "but using `GL_TUPLE`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2038 #, 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:2044 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:2047 #, no-wrap msgid "`EXTRACT_SUFX`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2050 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:2052 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:2057 #, 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:2061 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:2065 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:2068 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4794 #, no-wrap msgid "`DISTFILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2073 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:2075 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:2079 #, no-wrap msgid "DISTFILES=\tsource1.tar.gz source2.tar.gz\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2082 msgid "" "If not explicitly set, `DISTFILES` defaults to `${DISTNAME}${EXTRACT_SUFX}`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2084 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4795 #, no-wrap msgid "`EXTRACT_ONLY`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2087 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:2092 #, 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:2095 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:2099 #, no-wrap msgid "EXTRACT_ONLY=\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2102 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4816 #, no-wrap msgid "`PATCHFILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2105 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:2108 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:2110 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:2116 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:2120 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:2124 #, no-wrap msgid "PATCHFILES=\tpatch1 patch2:-p1\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2127 msgid "" "This does not conflict with <>, adding a group also works:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2131 #, no-wrap msgid "PATCHFILES=\tpatch2:-p1:source2\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2139 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:2142 #, 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:2145 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:2148 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:2153 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:2157 #, no-wrap msgid "DISTFILES=\talpha:0 beta:1\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2160 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:2162 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:2165 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:2168 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:2171 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:2176 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:2179 #, no-wrap msgid "Simplified Information" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2185 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 <>." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2189 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:2192 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:2195 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 <>." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2197 #, 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:2207 #, 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:2214 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 <>." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2216 #, 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:2227 #, 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:2232 #, no-wrap msgid "Detailed Information" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2235 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:2237 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:2239 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:2242 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 <>). " "Furthermore, `DEFAULT` is a special purpose word (check item <>)." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2243 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:2246 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 <>)." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2248 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:2252 #, no-wrap msgid "MASTER_SITES=\talpha\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2257 #, no-wrap msgid "MASTER_SITES=\talpha:DEFAULT\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2260 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:2263 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:2266 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:2268 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:2272 #, no-wrap msgid "MASTER_SITES=\talpha alpha:SOME_SITE\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2277 #, 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:2282 #, no-wrap msgid "MASTER_SITES=\talpha:SOME_SITE,DEFAULT\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2287 #, no-wrap msgid "MASTER_SITES=\talpha:DEFAULT,SOME_SITE\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2290 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:2293 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:2294 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 <> and <>." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2296 #, 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:2303 #, no-wrap msgid "MASTER_SITE_SUBDIR=\told:n new/:NEW\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2306 msgid "Directories within group `DEFAULT` -> old:n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2307 msgid "Directories within group `NEW` -> new" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2311 #, 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:2329 #, 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:2333 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:2335 msgid "[.filename]#file1# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2337 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2347 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2357 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2363 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2373 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2378 msgid "`MASTER_SITE_OVERRIDE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2338 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2348 msgid "http://site1/directory-trial:1/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2339 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2349 msgid "http://site1/directory-one/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2340 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2350 msgid "http://site1/directory/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2341 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2351 msgid "http://site2/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2342 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2352 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2367 msgid "http://site7/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2343 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2353 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2359 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2369 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2374 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2380 msgid "`MASTER_SITE_BACKUP`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2345 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:2355 msgid "[.filename]#file3# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2358 msgid "http://site3/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2361 msgid "[.filename]#file4# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2364 msgid "http://site4/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2365 msgid "http://site5/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2366 msgid "http://site6/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2368 msgid "http://site8/directory-one/" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2371 msgid "[.filename]#file5# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2376 msgid "[.filename]#file6# will be fetched from" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2379 msgid "http://site8/" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2384 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:2387 msgid "" "This has been simplified as much as possible. See <>." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2389 #, 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:2397 #, 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:2400 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:2402 msgid "How do I use this with `PATCH*`?" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2404 msgid "" "All examples were done with `MASTER*` but they work exactly the same for " "`PATCH*` ones as can be seen in <>." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2406 #, 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:2414 #, 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:2419 #, 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:2423 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 " "<>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2426 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:2428 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 <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2429 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:2430 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:2434 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 <> " "for more information on these new port targets." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2436 msgid "New port targets" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2437 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:2440 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:2442 #, no-wrap msgid "`DIST_SUBDIR`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2447 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:2449 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:2453 msgid "" "This does not affect `MASTER_SITES` defined in the [.filename]#Makefile#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2456 #, no-wrap msgid "`MAINTAINER`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2459 msgid "Set your mail-address here. Please. _:-)_" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2464 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:2467 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:2476 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:2479 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:2482 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:2489 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:2493 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:2495 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:2497 #, no-wrap msgid "`COMMENT`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2501 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:2503 msgid "The COMMENT string should be 70 characters or less." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2504 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:2505 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:2506 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:2507 msgid "Capitalize names such as Apache, JavaScript, or Perl." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2508 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:2509 msgid "Check for spelling errors." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2511 msgid "Here is an example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2515 #, 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:2518 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:2520 #, no-wrap msgid "Project website" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2523 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:2525 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:2529 #, no-wrap msgid "WWW=\t\thttps://ffmpeg.org/\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2532 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:2536 #, no-wrap msgid "WWW=\t\thttps://sourceforge.net/projects/mpd/\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2539 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:2542 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:2546 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:2548 #, no-wrap msgid "Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2552 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:2554 #, no-wrap msgid "`LICENSE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2557 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:2559 msgid "" "If it is one of the licenses listed in <>, only " "`LICENSE_FILE` and `LICENSE_DISTFILES` variables can be set." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2562 msgid "" "If this is a license that has not been defined in the ports framework (see " "<>), 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:2565 msgid "" "The predefined licenses are shown in <>. 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:2567 #, no-wrap msgid "Simplest Usage, Predefined Licenses" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2572 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:2576 #, no-wrap msgid "LICENSE=\tLGPL21+\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2579 msgid "When the software provides the license file, use this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2584 #, 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:2589 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:2591 #, no-wrap msgid "Predefined License List" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2595 #, no-wrap msgid "Short Name" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2596 #, no-wrap msgid "Name" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2597 #, no-wrap msgid "Group" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2599 #, no-wrap msgid "Permissions" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2600 #, no-wrap msgid "`AGPLv3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2601 #, no-wrap msgid "GNU Affero General Public License version 3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2602 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2607 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2632 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2832 #: 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: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:3032 #, no-wrap msgid "`FSF GPL OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2604 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2609 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2614 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2619 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2624 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2629 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2634 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2639 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2644 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2649 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2654 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2659 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2664 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2669 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2674 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2679 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2684 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2689 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2769 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2774 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2779 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2784 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2789 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2794 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2799 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2804 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2809 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2814 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2819 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2824 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2829 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2834 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2839 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2844 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2849 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2854 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2859 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2864 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2869 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2874 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2879 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2884 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2889 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2894 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2899 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2904 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2909 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2914 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2919 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2924 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2964 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2969 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2974 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2979 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2984 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2994 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2999 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3004 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3009 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3014 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3019 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3024 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3029 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3034 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3039 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3044 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3049 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3054 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3059 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3064 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3068 #, no-wrap msgid "(default)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2605 #, no-wrap msgid "`AGPLv3+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2606 #, no-wrap msgid "GNU Affero General Public License version 3 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2610 #, no-wrap msgid "`APACHE10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2611 #, no-wrap msgid "Apache License 1.0" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2612 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2657 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2842 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3007 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3042 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3191 #, no-wrap msgid "`FSF`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2615 #, no-wrap msgid "`APACHE11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2616 #, no-wrap msgid "Apache License 1.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2617 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2622 #: 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:2837 #: 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: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:3017 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3022 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3027 #, no-wrap msgid "`FSF OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2620 #, no-wrap msgid "`APACHE20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2621 #, no-wrap msgid "Apache License 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2625 #, no-wrap msgid "`ART10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2626 #, no-wrap msgid "Artistic License version 1.0" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2627 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2637 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3199 #, no-wrap msgid "`OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2630 #, no-wrap msgid "`ART20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2631 #, no-wrap msgid "Artistic License version 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2635 #, no-wrap msgid "`ARTPERL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2636 #, no-wrap msgid "Artistic License (perl) version 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2640 #, no-wrap msgid "`BSD`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2641 #, no-wrap msgid "BSD license Generic Version (deprecated)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2642 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2647 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2652 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2662 #, no-wrap msgid "`FSF OSI COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2645 #, no-wrap msgid "`BSD2CLAUSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2646 #, no-wrap msgid "BSD 2-clause \"Simplified\" License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2650 #, no-wrap msgid "`BSD3CLAUSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2651 #, no-wrap msgid "BSD 3-clause \"New\" or \"Revised\" License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2655 #, no-wrap msgid "`BSD4CLAUSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2656 #, no-wrap msgid "BSD 4-clause \"Original\" or \"Old\" License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2660 #, no-wrap msgid "`BSL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2661 #, no-wrap msgid "Boost Software License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2665 #, no-wrap msgid "`CC-BY-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2666 #, no-wrap msgid "Creative Commons Attribution 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2670 #, no-wrap msgid "`CC-BY-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2671 #, no-wrap msgid "Creative Commons Attribution 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2675 #, no-wrap msgid "`CC-BY-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2676 #, no-wrap msgid "Creative Commons Attribution 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2680 #, no-wrap msgid "`CC-BY-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2681 #, no-wrap msgid "Creative Commons Attribution 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2685 #, no-wrap msgid "`CC-BY-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2686 #, no-wrap msgid "Creative Commons Attribution 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2690 #, no-wrap msgid "`CC-BY-NC-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2691 #, no-wrap msgid "Creative Commons Attribution Non Commercial 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2694 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2699 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2704 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2709 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2714 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2719 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2724 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2729 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2734 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2739 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2744 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2749 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2754 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2759 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2764 #, no-wrap msgid "`dist-mirror``pkg-mirror``auto-accept`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2695 #, no-wrap msgid "`CC-BY-NC-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2696 #, no-wrap msgid "Creative Commons Attribution Non Commercial 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2700 #, no-wrap msgid "`CC-BY-NC-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2701 #, no-wrap msgid "Creative Commons Attribution Non Commercial 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2705 #, no-wrap msgid "`CC-BY-NC-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2706 #, no-wrap msgid "Creative Commons Attribution Non Commercial 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2710 #, no-wrap msgid "`CC-BY-NC-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2711 #, no-wrap msgid "Creative Commons Attribution Non Commercial 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2715 #, no-wrap msgid "`CC-BY-NC-ND-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2716 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2720 #, no-wrap msgid "`CC-BY-NC-ND-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2721 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2725 #, no-wrap msgid "`CC-BY-NC-ND-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2726 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2730 #, no-wrap msgid "`CC-BY-NC-ND-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2731 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2735 #, no-wrap msgid "`CC-BY-NC-ND-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2736 #, no-wrap msgid "Creative Commons Attribution Non Commercial No Derivatives 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2740 #, no-wrap msgid "`CC-BY-NC-SA-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2741 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2745 #, no-wrap msgid "`CC-BY-NC-SA-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2746 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2750 #, no-wrap msgid "`CC-BY-NC-SA-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2751 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2755 #, no-wrap msgid "`CC-BY-NC-SA-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2756 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2760 #, no-wrap msgid "`CC-BY-NC-SA-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2761 #, no-wrap msgid "Creative Commons Attribution Non Commercial Share Alike 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2765 #, no-wrap msgid "`CC-BY-ND-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2766 #, no-wrap msgid "Creative Commons Attribution No Derivatives 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2770 #, no-wrap msgid "`CC-BY-ND-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2771 #, no-wrap msgid "Creative Commons Attribution No Derivatives 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2775 #, no-wrap msgid "`CC-BY-ND-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2776 #, no-wrap msgid "Creative Commons Attribution No Derivatives 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2780 #, no-wrap msgid "`CC-BY-ND-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2781 #, no-wrap msgid "Creative Commons Attribution No Derivatives 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2785 #, no-wrap msgid "`CC-BY-ND-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2786 #, no-wrap msgid "Creative Commons Attribution No Derivatives 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2790 #, no-wrap msgid "`CC-BY-SA-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2791 #, no-wrap msgid "Creative Commons Attribution Share Alike 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2795 #, no-wrap msgid "`CC-BY-SA-2.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2796 #, no-wrap msgid "Creative Commons Attribution Share Alike 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2800 #, no-wrap msgid "`CC-BY-SA-2.5`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2801 #, no-wrap msgid "Creative Commons Attribution Share Alike 2.5" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2805 #, no-wrap msgid "`CC-BY-SA-3.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2806 #, no-wrap msgid "Creative Commons Attribution Share Alike 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2810 #, no-wrap msgid "`CC-BY-SA-4.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2811 #, no-wrap msgid "Creative Commons Attribution Share Alike 4.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2815 #, no-wrap msgid "`CC0-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2816 #, no-wrap msgid "Creative Commons Zero v1.0 Universal" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2817 #, no-wrap msgid "`FSF GPL COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2820 #, no-wrap msgid "`CDDL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2821 #, no-wrap msgid "Common Development and Distribution License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2825 #, no-wrap msgid "`CPAL-1.0`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2826 #, no-wrap msgid "Common Public Attribution License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2830 #, no-wrap msgid "`ClArtistic`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2831 #, no-wrap msgid "Clarified Artistic License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2835 #, no-wrap msgid "`EPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2836 #, no-wrap msgid "Eclipse Public License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2840 #, no-wrap msgid "`GFDL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2841 #, no-wrap msgid "GNU Free Documentation License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2845 #, no-wrap msgid "`GMGPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2846 #, no-wrap msgid "GNAT Modified General Public License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2850 #, no-wrap msgid "`GPLv1`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2851 #, no-wrap msgid "GNU General Public License version 1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2855 #, no-wrap msgid "`GPLv1+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2856 #, no-wrap msgid "GNU General Public License version 1 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2860 #, no-wrap msgid "`GPLv2`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2861 #, no-wrap msgid "GNU General Public License version 2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2865 #, no-wrap msgid "`GPLv2+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2866 #, no-wrap msgid "GNU General Public License version 2 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2870 #, no-wrap msgid "`GPLv3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2871 #, no-wrap msgid "GNU General Public License version 3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2875 #, no-wrap msgid "`GPLv3+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2876 #, no-wrap msgid "GNU General Public License version 3 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2880 #, no-wrap msgid "`GPLv3RLE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2881 #, no-wrap msgid "GNU GPL version 3 Runtime Library Exception" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2885 #, no-wrap msgid "`GPLv3RLE+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2886 #, no-wrap msgid "GNU GPL version 3 Runtime Library Exception (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2890 #, no-wrap msgid "`ISCL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2891 #, no-wrap msgid "Internet Systems Consortium License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2892 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3037 #, no-wrap msgid "`FSF GPL OSI COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2895 #, no-wrap msgid "`LGPL20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2896 #, no-wrap msgid "GNU Library General Public License version 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2900 #, no-wrap msgid "`LGPL20+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2901 #, 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:2905 #, no-wrap msgid "`LGPL21`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2906 #, no-wrap msgid "GNU Lesser General Public License version 2.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2910 #, no-wrap msgid "`LGPL21+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2911 #, 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:2915 #, no-wrap msgid "`LGPL3`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2916 #, no-wrap msgid "GNU Lesser General Public License version 3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2920 #, no-wrap msgid "`LGPL3+`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2921 #, no-wrap msgid "GNU Lesser General Public License version 3 (or later)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2925 #, no-wrap msgid "`LPPL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2926 #, no-wrap msgid "LaTeX Project Public License version 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2929 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2934 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2939 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2944 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2949 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2954 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2959 #, no-wrap msgid "`dist-mirror dist-sell`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2930 #, no-wrap msgid "`LPPL11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2931 #, no-wrap msgid "LaTeX Project Public License version 1.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2935 #, no-wrap msgid "`LPPL12`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2936 #, no-wrap msgid "LaTeX Project Public License version 1.2" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2940 #, no-wrap msgid "`LPPL13`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2941 #, no-wrap msgid "LaTeX Project Public License version 1.3" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2945 #, no-wrap msgid "`LPPL13a`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2946 #, no-wrap msgid "LaTeX Project Public License version 1.3a" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2950 #, no-wrap msgid "`LPPL13b`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2951 #, no-wrap msgid "LaTeX Project Public License version 1.3b" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2955 #, no-wrap msgid "`LPPL13c`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2956 #, no-wrap msgid "LaTeX Project Public License version 1.3c" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2960 #, no-wrap msgid "`MIT`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2961 #, no-wrap msgid "MIT license / X11 license" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2962 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2982 #, no-wrap msgid "`COPYFREE FSF GPL OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2965 #, no-wrap msgid "`MPL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2966 #, no-wrap msgid "Mozilla Public License version 1.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2970 #, no-wrap msgid "`MPL11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2971 #, no-wrap msgid "Mozilla Public License version 1.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2975 #, no-wrap msgid "`MPL20`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2976 #, no-wrap msgid "Mozilla Public License version 2.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2980 #, no-wrap msgid "`NCSA`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2981 #, no-wrap msgid "University of Illinois/NCSA Open Source License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2985 #, no-wrap msgid "`NONE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2986 #, no-wrap msgid "No license specified" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2989 #, no-wrap msgid "`none`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2990 #, no-wrap msgid "`OFL10`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2991 #, 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:2992 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2997 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3207 #, no-wrap msgid "`FONTS`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2995 #, no-wrap msgid "`OFL11`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2996 #, 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:3000 #, no-wrap msgid "`OWL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3001 #, no-wrap msgid "Open Works License (owl.apotheon.org)" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3002 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3203 #, no-wrap msgid "`COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3005 #, no-wrap msgid "`OpenSSL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3006 #, no-wrap msgid "OpenSSL License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3010 #, no-wrap msgid "`PD`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3011 #, no-wrap msgid "Public Domain" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3012 #, no-wrap msgid "`GPL COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3015 #, no-wrap msgid "`PHP202`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3016 #, no-wrap msgid "PHP License version 2.02" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3020 #, no-wrap msgid "`PHP30`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3021 #, no-wrap msgid "PHP License version 3.0" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3025 #, no-wrap msgid "`PHP301`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3026 #, no-wrap msgid "PHP License version 3.01" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3030 #, no-wrap msgid "`PSFL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3031 #, no-wrap msgid "Python Software Foundation License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3035 #, no-wrap msgid "`PostgreSQL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3036 #, no-wrap msgid "PostgreSQL License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3040 #, no-wrap msgid "`RUBY`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3041 #, no-wrap msgid "Ruby License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3045 #, no-wrap msgid "`UNLICENSE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3046 #, no-wrap msgid "The Unlicense" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3047 #, no-wrap msgid "`COPYFREE FSF GPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3050 #, no-wrap msgid "`WTFPL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3051 #, 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:3052 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3057 #, no-wrap msgid "`GPL FSF COPYFREE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3055 #, no-wrap msgid "`WTFPL1`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3056 #, 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:3060 #, no-wrap msgid "`ZLIB`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3061 #, no-wrap msgid "zlib License" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3062 #, no-wrap msgid "`GPL FSF OSI`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3065 #, no-wrap msgid "`ZPL21`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3066 #, no-wrap msgid "Zope Public License version 2.1" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3067 #, no-wrap msgid "`GPL OSI`" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3071 #, no-wrap msgid "`LICENSE_PERMS` and `LICENSE_PERMS_NAME_`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3074 msgid "Permissions. use `none` if empty." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3075 #, no-wrap msgid "License Permissions List" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3077 #, no-wrap msgid "`dist-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3080 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:3082 #, no-wrap msgid "`no-dist-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3086 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:3088 #, no-wrap msgid "`dist-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3091 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:3093 #, no-wrap msgid "`no-dist-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3096 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:3098 #, no-wrap msgid "`pkg-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3101 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:3103 #, no-wrap msgid "`no-pkg-mirror`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3107 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:3109 #, no-wrap msgid "`pkg-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3112 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:3114 #, no-wrap msgid "`no-pkg-sell`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3118 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:3120 #, no-wrap msgid "`auto-accept`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3124 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:3126 #, no-wrap msgid "`no-auto-accept`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3130 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:3132 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:3134 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:3138 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:3140 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:3142 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:3145 #, no-wrap msgid "Nonstandard License" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3149 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:3157 #, 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:3162 #, no-wrap msgid "Standard and Nonstandard Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3168 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:3176 #, 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:3182 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:3185 #, no-wrap msgid "`LICENSE_GROUPS` and `LICENSE_GROUPS_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3188 msgid "Groups the license belongs." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3189 #, no-wrap msgid "Predefined License Groups List" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3193 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:3195 #, no-wrap msgid "`GPL`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3197 msgid "GPL Compatible" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3201 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:3205 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:3209 msgid "Font licenses" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3211 #, no-wrap msgid "`LICENSE_NAME` and `LICENSE_NAME_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3214 msgid "Full name of the license." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3216 #, no-wrap msgid "`LICENSE_NAME`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3226 #, 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:3231 #, no-wrap msgid "`LICENSE_FILE` and `LICENSE_FILE_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3235 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 <>, put it in " "a new file in [.filename]#${FILESDIR}#." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3237 #, no-wrap msgid "`LICENSE_FILE`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3245 #, no-wrap msgid "" "LICENSE=\tGPLv3+\n" "LICENSE_FILE=\t${WRKSRC}/COPYING\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3250 #, no-wrap msgid "`LICENSE_TEXT` and `LICENSE_TEXT_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3254 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:3256 #, no-wrap msgid "`LICENSE_TEXT`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3267 #, 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:3272 #, no-wrap msgid "`LICENSE_DISTFILES` and `LICENSE_DISTFILES_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3276 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:3278 #, no-wrap msgid "`LICENSE_DISTFILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3283 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:3288 #, 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:3296 #, 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:3301 #, no-wrap msgid "`LICENSE_COMB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3306 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:3308 #, no-wrap msgid "Dual Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3315 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:3320 #, no-wrap msgid "" "LICENSE=\tART10 GPLv1\n" "LICENSE_COMB= dual\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3323 msgid "If license files are provided, use this:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3330 #, 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:3335 #, no-wrap msgid "Multiple Licenses" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3340 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:3345 #, no-wrap msgid "" "LICENSE=\tGPLv2 LGPL21+\n" "LICENSE_COMB=\tmulti\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3350 #, no-wrap msgid "`PORTSCOUT`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3353 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:3355 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:3357 msgid "Situations where `PORTSCOUT` is set include:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3359 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:3363 #, no-wrap msgid "PORTSCOUT=\tskipv:8.2,8.3\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3366 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:3370 #, no-wrap msgid "PORTSCOUT=\tignore:1\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3373 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:3377 #, no-wrap msgid "PORTSCOUT=\tlimit:^0\\.6\\.4\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3380 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:3384 #, no-wrap msgid "PORTSCOUT=\tsite:http://www.renpy.org/dl/release/\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3387 #, no-wrap msgid "Dependencies" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3394 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:3400 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:3403 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4748 #, no-wrap msgid "`LIB_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3408 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:3412 #, no-wrap msgid "LIB_DEPENDS= libjpeg.so:graphics/jpeg\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3415 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:3418 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:3420 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4749 #, no-wrap msgid "`RUN_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3425 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:3427 msgid "For example," msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3432 #, 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:3436 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:3441 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:3446 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:3450 #, 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:3457 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:3460 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:3464 #, no-wrap msgid "RUN_DEPENDS=\t${BUILD_DEPENDS}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3471 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:3478 #, 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:3484 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:3487 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4747 #, no-wrap msgid "`BUILD_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3492 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:3496 #, no-wrap msgid "BUILD_DEPENDS=\tunzip:archivers/unzip\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3499 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3537 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:3505 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:3508 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4746 #, no-wrap msgid "`FETCH_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3513 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:3517 #, no-wrap msgid "FETCH_DEPENDS=\tncftp2:net/ncftp2\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3520 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:3523 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:3525 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4744 #, no-wrap msgid "`EXTRACT_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3530 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:3534 #, no-wrap msgid "EXTRACT_DEPENDS=\tunzip:archivers/unzip\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3540 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:3544 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:3547 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4745 #, no-wrap msgid "`PATCH_DEPENDS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3551 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:3555 #, no-wrap msgid "PATCH_DEPENDS=\t${NONEXISTENT}:java/jfc:extract\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3558 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:3561 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:3563 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4826 #, no-wrap msgid "`USES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3567 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:3571 #, no-wrap msgid "USES= feature[:arguments]\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3574 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:3578 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:3581 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3603 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4129 #, no-wrap msgid "`USE_*`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3588 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:3593 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:3597 #, no-wrap msgid "USE_GCC=X.Y\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3600 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:3609 #, no-wrap msgid "Means" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3610 #, no-wrap msgid "`USE_GCC`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3636 #, 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" "The minimal required version can be specified 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 or later 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:3645 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:3647 #, no-wrap msgid "Minimal Version of a Dependency" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3650 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:3654 #, no-wrap msgid "p5-Spiffy>=0.26:devel/p5-Spiffy\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3658 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:3660 #, no-wrap msgid "Notes on Dependencies" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3666 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:3670 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:3675 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:3679 #, no-wrap msgid "BUILD_DEPENDS=\t${NONEXISTENT}:graphics/jpeg:extract\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3682 msgid "will always descend to the `jpeg` port and extract it." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3684 #, no-wrap msgid "Circular Dependencies Are Fatal" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3689 msgid "Do not introduce any circular dependencies into the ports tree!" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3696 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:3698 #, no-wrap msgid "Problems Caused by Automatic Dependencies" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3702 msgid "" "Dependencies must be declared either explicitly or by using the <>. 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:3704 #, no-wrap msgid "Wrong Declaration of an Optional Dependency" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3711 #, no-wrap msgid ".include \n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3715 #, 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:3724 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:3726 #, no-wrap msgid "Correct Declaration of an Optional Dependency" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3734 #, 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:3736 #, 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:3743 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:3745 #, no-wrap msgid "Slave Ports and `MASTERDIR`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3751 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 <> so the packages will have different names." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3754 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:3760 #, 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:3762 #, 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:3775 #, 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:3779 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:3781 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:3786 #, 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:3788 #, no-wrap msgid ".include\t\"${MASTERDIR}/Makefile\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3793 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:3795 #, no-wrap msgid "Man Pages" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3800 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:3802 #, no-wrap msgid "Info Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3809 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:3813 #, no-wrap msgid "INFO=\tgcc34/cpp gcc34/cppinternals gcc34/g77 ...\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3816 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:3818 #, no-wrap msgid "Makefile Options" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3823 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:3825 #, no-wrap msgid "`OPTIONS`" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3828 #, no-wrap msgid "Background" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3834 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:3838 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:3840 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:3843 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:3845 #, no-wrap msgid "Syntax" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3849 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:3853 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4277 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4573 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4630 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4693 #, no-wrap msgid "OPTIONS_DEFINE=\tOPT1 OPT2\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3856 msgid "" "Once defined, `OPTIONS` are described (optional, but strongly recommended):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3865 #, 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:3869 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:3875 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:3881 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:3884 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:3889 #, 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:3895 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:3898 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:3903 #, 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:3906 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:3911 #, 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:3914 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:3919 #, 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:3922 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:3926 #, no-wrap msgid "OPTIONS_DEFAULT=\tOPT1 OPT3 OPT6\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3932 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:3934 #, no-wrap msgid "Simple Use of `OPTIONS`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3942 #, 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:3945 #, 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:3949 #, 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:3951 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4015 #, no-wrap msgid ".include \n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3956 #, no-wrap msgid "Check for Unset Port `OPTIONS`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3965 #, 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:3969 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:3974 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4011 #, 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:3979 #, no-wrap msgid "Practical Use of `OPTIONS`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3987 #, 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:3990 #, 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:3993 #, 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:4001 #, 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:4006 #, 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:4008 #, 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:4013 #, no-wrap msgid "# Check other OPTIONS\n" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4020 #, no-wrap msgid "Default Options" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4023 msgid "These options are always on by default." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4025 msgid "`DOCS` - build and install documentation." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4026 msgid "`NLS` - Native Language Support." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4027 msgid "`EXAMPLES` - build and install examples." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4028 msgid "`IPV6` - IPv6 protocol support." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4033 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:4036 #, no-wrap msgid "Feature Auto-Activation" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4040 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:4042 #, no-wrap msgid "Wrong Handling of an Option" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4052 #, 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:4060 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:4062 #, no-wrap msgid "Correct Handling of an Option" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4071 #, 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:4079 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:4083 #, no-wrap msgid ".if !empty(VARIABLE:MVALUE)\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4086 msgid "as an alternative to" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4090 #, no-wrap msgid ".if ${VARIABLE:MVALUE}\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4095 #, no-wrap msgid "Options Helpers" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4099 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:4100 #, no-wrap msgid "`PLIST_SUB`, `SUB_LIST`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4102 msgid "" "For automatic `%%_OPT_%%` and `%%NO__OPT__%%` generation, see " "<>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4104 msgid "For more complex usage, see <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4105 #, no-wrap msgid "`CONFIGURE_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4107 msgid "" "For `--enable-_x_` and `--disable-_x_`, see <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4109 msgid "For `--with-_x_` and `--without-_x_`, see <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4111 msgid "For all other cases, see <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4112 #, no-wrap msgid "`CMAKE_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4114 msgid "" "For arguments that are booleans (`on`, `off`, `true`, `false`, `0`, `1`) see " "<>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4116 msgid "For all other cases, see <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4117 #, no-wrap msgid "`MESON_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4119 msgid "For arguments that take `true` or `false`, see <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4121 msgid "For arguments that take `yes` or `no`, use <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4123 msgid "" "For arguments that take `enabled` or `disabled`, see <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4125 msgid "For all other cases, use <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4126 #, no-wrap msgid "`QMAKE_ARGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4128 msgid "See <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4131 msgid "See <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4132 #, no-wrap msgid "`*_DEPENDS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4134 msgid "See <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4135 #, no-wrap msgid "`*` (Any variable)" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4137 msgid "The most used variables have direct helpers, see <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4139 msgid "For any variable without a specific helper, see <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4140 #, no-wrap msgid "Options dependencies" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4142 msgid "When an option need another option to work, see <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4143 #, no-wrap msgid "Options conflicts" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4145 msgid "" "When an option cannot work if another is also enabled, see <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4146 #, no-wrap msgid "Build targets" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4148 msgid "When an option need some extra processing, see <>." msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4150 #, no-wrap msgid "`OPTIONS_SUB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4153 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:4158 #, no-wrap msgid "" "OPTIONS_DEFINE=\tOPT1\n" "OPTIONS_SUB=\tyes\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4161 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4200 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4236 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4273 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4308 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4344 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4380 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4414 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4444 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4476 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4508 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4537 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4689 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4762 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4839 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4929 msgid "is equivalent to:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4165 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4204 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4240 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4312 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4348 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4384 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4418 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4448 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4480 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4512 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4541 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4766 #: 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:4933 #, no-wrap msgid "OPTIONS_DEFINE=\tOPT1\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4167 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4206 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4242 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4279 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4314 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4350 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4386 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4420 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4450 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4482 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4514 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4543 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4575 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4632 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4697 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4768 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4845 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4935 #, no-wrap msgid ".include \n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4175 #, 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:4181 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:4184 #, no-wrap msgid "`OPT_USE` and `OPT_USE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4190 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:4197 #, 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:4214 #, 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:4217 #, no-wrap msgid "`CONFIGURE_ARGS` Helpers" msgstr "" #. type: Title ===== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4220 #, no-wrap msgid "`OPT_CONFIGURE_ENABLE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4227 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:4233 #, 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:4248 #, 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:4254 #, 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:4257 #, no-wrap msgid "`OPT_CONFIGURE_WITH`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4264 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:4270 #, 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:4285 #, 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:4291 #, 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:4294 #, no-wrap msgid "`OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4299 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:4305 #, 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:4320 #, 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:4325 msgid "" "Most of the time, the helpers in <> and <> provide a shorter and more comprehensive functionality." msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4328 #, no-wrap msgid "`CMAKE_ARGS` Helpers" msgstr "" #. type: Title ===== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4331 #, no-wrap msgid "`OPT_CMAKE_ON` and `OPT_CMAKE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4335 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:4341 #, 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:4356 #, 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:4362 msgid "" "See <> for a shorter helper when the value is boolean." msgstr "" #. type: Title ===== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4365 #, no-wrap msgid "`OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4371 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:4377 #, 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:4394 #, 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:4397 #, no-wrap msgid "`MESON_ARGS` Helpers" msgstr "" #. type: Title ===== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4400 #, no-wrap msgid "`OPT_MESON_ON` and `OPT_MESON_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4405 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:4411 #, 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:4426 #, 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:4429 #, no-wrap msgid "`OPT_MESON_TRUE` and `OPT_MESON_FALSE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4435 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:4441 #, 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:4458 #, 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:4461 #, no-wrap msgid "`OPT_MESON_YES` and `OPT_MESON_NO`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4467 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:4473 #, 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:4490 #, 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:4493 #, no-wrap msgid "`OPT_MESON_ENABLED` and `OPT_MESON_DISABLED`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4499 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:4505 #, 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:4520 #, 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:4523 #, no-wrap msgid "`OPT_QMAKE_ON` and `OPT_QMAKE_OFF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4528 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:4534 #, 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:4549 #, 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:4552 #, no-wrap msgid "`OPT_IMPLIES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4555 msgid "Provides a way to add dependencies between options." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4558 msgid "" "When _OPT_ is selected, all the options listed in this variable will be " "selected too. Using the <> " "described earlier to illustrate:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4563 #, 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:4566 #, 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:4569 msgid "Is equivalent to:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4581 #, 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:4587 #, 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:4590 #, no-wrap msgid "Simple Use of `OPT_IMPLIES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4595 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:4600 #, 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:4605 #, 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:4610 #, no-wrap msgid "`OPT_PREVENTS` and `OPT_PREVENTS_MSG`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4613 msgid "Provides a way to add conflicts between options." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4617 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:4623 #, 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:4626 msgid "Is roughly equivalent to:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4636 #, 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:4639 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:4641 #, no-wrap msgid "Simple Use of `OPT_PREVENTS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4647 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:4651 #, no-wrap msgid "OPTIONS_DEFINE=\tX509 SCTP\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4654 #, 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:4659 #, 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:4664 #, no-wrap msgid "`OPT_VARS` and `OPT_VARS_OFF`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4667 msgid "Provides a generic way to set and append to variables." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4671 msgid "" "Before using `OPT_VARS` and `OPT_VARS_OFF`, see if there is already a more " "specific helper available in <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4676 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:4684 #, 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:4686 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4695 #, 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:4701 #, 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:4705 #, 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:4711 #, 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:4716 msgid "Values containing whitespace must be enclosed in quotes:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4720 #, no-wrap msgid "OPT_VARS=\tfoo=\"bar baz\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4726 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:4729 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:4733 #, no-wrap msgid "OPT_VARS=\tfoo=\tbar\n" msgstr "" #. type: Title ==== #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4738 #, no-wrap msgid "Dependencies, `OPT_DEPTYPE` and `OPT_DEPTYPE_OFF`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4741 msgid "For any of these dependency types:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4743 msgid "`PKG_DEPENDS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4753 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:4759 #, 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:4774 #, 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:4777 #, 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:4780 msgid "For any of these variables:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4782 msgid "`ALL_TARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4783 msgid "`BINARY_ALIAS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4784 msgid "`BROKEN`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4786 msgid "`CFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4787 msgid "`CONFIGURE_ENV`" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4788 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5027 #, no-wrap msgid "`CONFLICTS`" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4789 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5022 #, no-wrap msgid "`CONFLICTS_BUILD`" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4790 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5017 #, no-wrap msgid "`CONFLICTS_INSTALL`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4791 msgid "`CPPFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4792 msgid "`CXXFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4793 msgid "`DESKTOP_ENTRIES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4796 msgid "`EXTRA_PATCHES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4808 msgid "`IGNORE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4809 msgid "`INFO`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4810 msgid "`INSTALL_TARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4811 msgid "`LDFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4812 msgid "`LIBS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4813 msgid "`MAKE_ARGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4814 msgid "`MAKE_ENV`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4817 msgid "`PATCH_SITES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4818 msgid "`PLIST_DIRS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4819 msgid "`PLIST_FILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4820 msgid "`PLIST_SUB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4821 msgid "`PORTDOCS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4822 msgid "`PORTEXAMPLES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4823 msgid "`SUB_FILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4824 msgid "`SUB_LIST`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4825 msgid "`TEST_TARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4830 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:4836 #, 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:4851 #, 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:4858 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:4863 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:4865 msgid "With these lines in the [.filename]#Makefile#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4869 #, no-wrap msgid "ALL_TARGET=\tall\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4871 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4880 #, no-wrap msgid "DOCS_ALL_TARGET=\tdoc\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4874 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:4876 msgid "With only the options helper line in the [.filename]#Makefile#:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4883 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:4886 #, 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:4889 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:4891 msgid "`pre-fetch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4892 msgid "`do-fetch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4893 msgid "`post-fetch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4894 msgid "`pre-extract`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4895 msgid "`do-extract`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4896 msgid "`post-extract`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4897 msgid "`pre-patch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4898 msgid "`do-patch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4899 msgid "`post-patch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4900 msgid "`pre-configure`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4901 msgid "`do-configure`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4902 msgid "`post-configure`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4903 msgid "`pre-build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4904 msgid "`do-build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4905 msgid "`post-build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4906 msgid "`pre-install`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4907 msgid "`do-install`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4908 msgid "`post-install`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4909 msgid "`post-stage`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4910 msgid "`pre-package`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4911 msgid "`do-package`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4912 msgid "`post-package`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4916 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:4923 #, 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:4926 #, 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:4942 #, 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:4945 #, no-wrap msgid "Specifying the Working Directory" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4950 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:4955 #, no-wrap msgid "" "PORTNAME=\tfoo\n" "DISTVERSION=\t1.0\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4958 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:4960 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:4962 #, no-wrap msgid "`WRKSRC`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4966 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:4970 #, no-wrap msgid "WRKSRC=\t${WRKDIR}/foo\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4973 msgid "or possibly" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4977 #, no-wrap msgid "WRKSRC=\t${WRKDIR}/${PORTNAME}\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4980 #, no-wrap msgid "`WRKSRC_SUBDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4983 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:4987 #, no-wrap msgid "WRKSRC_SUBDIR=\tsrc\n" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4990 #, no-wrap msgid "`NO_WRKSUBDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4993 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:4997 #, no-wrap msgid "NO_WRKSUBDIR=\tyes\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5002 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:5005 #, no-wrap msgid "Conflict Handling" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5008 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:5012 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:5015 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:5020 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:5025 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:5030 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:5034 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:5037 #, 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:5040 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:5043 #, 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:5046 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:5049 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:5051 #, no-wrap msgid "Basic usage of `CONFLICTS*`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5057 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:5064 #, 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:5067 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:5071 #, no-wrap msgid "CONFLICTS_INSTALL=\tbind910\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5074 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:5078 #, no-wrap msgid "CONFLICTS_INSTALL=\tbind99\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5085 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:5087 #, no-wrap msgid "Using `CONFLICTS*` With Globs." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5092 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:5094 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:5100 #, 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:5103 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:5105 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:5109 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:5113 #, no-wrap msgid "% make -DDISABLE_CONFLICTS patch\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5116 #, no-wrap msgid "Installing Files" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5123 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:5126 #, no-wrap msgid "`INSTALL_*` Macros" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5133 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:5135 msgid "`INSTALL_PROGRAM` is a command to install binary executables." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5136 msgid "`INSTALL_SCRIPT` is a command to install executable scripts." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5137 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:5138 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:5139 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:5140 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:5142 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:5146 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:5149 #, no-wrap msgid "Stripping Binaries and Shared Libraries" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5154 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:5157 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:5162 #, 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:5165 msgid "When multiple files need to be stripped:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5172 #, 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:5177 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:5181 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:5183 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:5185 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:5188 #, no-wrap msgid "Installing a Whole Tree of Files" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5193 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:5198 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:5204 #, 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:5207 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:5213 #, 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:5216 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:5219 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:5226 #, 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:5231 msgid "" "These macros do not add the installed files to [.filename]#pkg-plist#. They " "must be added manually. For optional documentation (`PORTDOCS`, see " "<>) 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:5233 #, no-wrap msgid "Install Additional Documentation" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5237 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:5242 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:5245 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:5251 #, no-wrap msgid "" "post-install:\n" "\t${MKDIR} ${STAGEDIR}${DOCSDIR}\n" "\t${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5255 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 <>." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5257 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:5259 msgid "`DATADIR` gets expanded to [.filename]#PREFIX/share/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5260 msgid "`DATADIR_REL` gets expanded to [.filename]#share/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5261 msgid "`DOCSDIR` gets expanded to [.filename]#PREFIX/share/doc/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5262 msgid "`DOCSDIR_REL` gets expanded to [.filename]#share/doc/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5263 msgid "" "`EXAMPLESDIR` gets expanded to [.filename]#PREFIX/share/examples/PORTNAME#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5264 msgid "" "`EXAMPLESDIR_REL` gets expanded to [.filename]#share/examples/PORTNAME#." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5270 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:5276 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:5278 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:5283 #, no-wrap msgid "" "%%PORTDOCS%%%%DOCSDIR%%/AUTHORS\n" "%%PORTDOCS%%%%DOCSDIR%%/CONTACT\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5292 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:5296 #, no-wrap msgid "PORTDOCS=\tREADME.* ChangeLog docs/*\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5301 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:5305 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:5308 #, no-wrap msgid "Subdirectories Under `PREFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5317 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:5319 #, 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:5322 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:5324 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:5326 #, 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:5331 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:5333 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:5339 #, 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:5344 #, 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:5349 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:5355 #, 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:5358 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:5365 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 "" diff --git a/documentation/content/en/books/porters-handbook/pkg-files/_index.po b/documentation/content/en/books/porters-handbook/pkg-files/_index.po index 1aa982f5f4..df7db65520 100644 --- a/documentation/content/en/books/porters-handbook/pkg-files/_index.po +++ b/documentation/content/en/books/porters-handbook/pkg-files/_index.po @@ -1,583 +1,583 @@ # 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: 2022-02-01 10:28-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/pkg-files/_index.adoc:1 #, no-wrap msgid "Tricks about the pkg-* files" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:1 #, no-wrap msgid "Chapter 9. pkg-*" msgstr "" #. type: Title = #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:13 #, no-wrap msgid "pkg-*" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:51 msgid "" "There are some tricks we have not mentioned yet about the [.filename]#pkg-*# " "files that come in handy sometimes." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:53 #, no-wrap msgid "pkg-message" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:57 msgid "" "To display a message when the package is installed, place the message in [." "filename]#pkg-message#. This capability is often useful to display " "additional installation steps to be taken after a `pkg install` or `pkg " "upgrade`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:61 msgid "" "[.filename]#pkg-message# must contain only information that is _vital_ to " "setup and operation on FreeBSD, and that is unique to the port in question." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:62 msgid "" "Setup information should only be shown on initial install. Upgrade " "instructions should be shown only when upgrading from the relevant version." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:63 msgid "" "Do not surround the messages with either whitespace or lines of symbols " "(like `----------`, `**********`, or `==========`). Leave the formatting to " "man:pkg[8]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:64 msgid "" "Committers have blanket approval to constrain existing messages to install " "or upgrade ranges using the UCL format specifications." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:68 msgid "pkg-message supports two formats:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:69 #, no-wrap msgid "raw" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:72 msgid "A regular plain text file. Its message is only displayed on install." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:73 #, no-wrap msgid "UCL" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:76 msgid "" "If the file starts with \"`[`\" then it is considered to be a UCL file. The " "UCL format is described on https://github.com/vstakhov/libucl[libucl's " "GitHub page]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:80 msgid "" "Do not add an entry for [.filename]#pkg-message# in [.filename]#pkg-plist#." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:83 #, no-wrap msgid "UCL in pkg-message" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:88 msgid "" "The format is the following. It should be an array of objects. The objects " "themselves can have these keywords:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:89 #, no-wrap msgid "`message`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:92 msgid "The actual message to be displayed. This keyword is mandatory." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:93 #, no-wrap msgid "`type`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:95 msgid "When the message should be displayed." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:96 #, no-wrap msgid "`maximum_version`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:99 msgid "" "Only if `type` is `upgrade`. Display if upgrading from a version strictly " "lower than the version specified." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:100 #, no-wrap msgid "`minimum_version`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:103 msgid "" -"Only if `type` is `upgrade`. Display if upgrading from a version stictly " +"Only if `type` is `upgrade`. Display if upgrading from a version strictly " "greater than the version specified." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:105 msgid "The `maximum_version` and `minimum_version` keywords can be combined." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:107 msgid "The `type` keyword can have three values:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:108 #, no-wrap msgid "`install`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:110 msgid "The message should only be displayed when the package is installed." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:111 #, no-wrap msgid "`remove`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:113 msgid "The message should only be displayed when the package is removed." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:114 #, no-wrap msgid "`upgrade`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:116 msgid "the message should only be displayed during an upgrade of the package.." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:121 msgid "" "To preserve the compatibility with non UCL [.filename]#pkg-message# files, " "the first line of a UCL [.filename]#pkg-message# _MUST be_ a single \"`[`\", " "and the last line _MUST be_ a single \"`]`\"." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:124 #, no-wrap msgid "UCL Short Strings" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:129 msgid "" "The message is delimited by double quotes `\"`, this is used for simple " "single line strings:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:137 #, no-wrap msgid "" "[\n" "{ type: install\n" " message: \"Simple message\"\n" "}\n" "]\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:142 #, no-wrap msgid "UCL Multiline Strings" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:150 msgid "" "Multiline strings use the standard here document notation. The multiline " "delimiter _must_ start just after `<<` symbols without any whitespace and it " "_must_ consist of capital letters only. To finish a multiline string, add " "the delimiter string on a line of its own without any whitespace. The " "message from <> can be written as:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:160 #, no-wrap msgid "" "[\n" "{ type: install\n" " message: < 1.0 and < 3.0 remove that file.\"\n" "}\n" "]\n" msgstr "" #. type: delimited block * 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:221 msgid "" "When displaying a message on upgrade, it is important to limit when it is " "being shown to the user. Most of the time it is by using `maximum_version` " "to limit its usage to upgrades from before a certain version when something " "specific needs to be done." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:226 #, no-wrap msgid "pkg-install" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:233 msgid "" "If the port needs to execute commands when the binary package is installed " "with `pkg add` or `pkg install`, use [.filename]#pkg-install#. This script " "will automatically be added to the package. It will be run twice by `pkg`, " "the first time as `${SH} pkg-install ${PKGNAME} PRE-INSTALL` before the " "package is installed, and the second time as `${SH} pkg-install ${PKGNAME} " "POST-INSTALL` after it has been installed. `$2` can be tested to determine " "which mode the script is being run in. The `PKG_PREFIX` environmental " "variable will be set to the package installation directory." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:238 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:254 msgid "" "This script is here to help you set up the package so that it is as ready to " "use as possible. It _must not_ be abused to start services, stop services, " "or run any other commands that will modify the currently running system." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:241 #, no-wrap msgid "pkg-deinstall" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:244 msgid "This script executes when a package is removed." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:249 msgid "" "This script will be run twice by `pkg delete`. The first time as `${SH} pkg-" "deinstall ${PKGNAME} DEINSTALL` before the port is de-installed and the " "second time as `${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL` after the " "port has been de-installed. `$2` can be tested to determine which mode the " "script is being run in. The `PKG_PREFIX` environmental variable will be set " "to the package installation directory" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:257 #, no-wrap msgid "Changing the Names of pkg-*" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:262 msgid "" "All the names of [.filename]#pkg-\\*# are defined using variables that can " "be changed in the [.filename]#Makefile# if needed. This is especially " "useful when sharing the same [.filename]#pkg-*# files among several ports or " "when it is necessary to write to one of these files. See crossref:porting-" "dads[porting-wrkdir,writing to places other than `WRKDIR`] for why it is a " "bad idea to write directly into the directory containing the [.filename]#pkg-" "*# files." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:265 msgid "" "Here is a list of variable names and their default values. (`PKGDIR` " "defaults to `${MASTERDIR}`.)" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:270 #, no-wrap msgid "Variable" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:272 #, no-wrap msgid "Default value" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:273 #, no-wrap msgid "`DESCR`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:275 #, no-wrap msgid "`${PKGDIR}/pkg-descr`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:276 #, no-wrap msgid "`PLIST`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:278 #, no-wrap msgid "`${PKGDIR}/pkg-plist`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:279 #, no-wrap msgid "`PKGINSTALL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:281 #, no-wrap msgid "`${PKGDIR}/pkg-install`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:282 #, no-wrap msgid "`PKGDEINSTALL`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:284 #, no-wrap msgid "`${PKGDIR}/pkg-deinstall`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:285 #, no-wrap msgid "`PKGMESSAGE`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:286 #, no-wrap msgid "`${PKGDIR}/pkg-message`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:289 #, no-wrap msgid "Making Use of `SUB_FILES` and `SUB_LIST`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:292 msgid "" "`SUB_FILES` and `SUB_LIST` are useful for dynamic values in port files, such " "as the installation `PREFIX` in [.filename]#pkg-message#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:298 msgid "" "`SUB_FILES` specifies a list of files to be automatically modified. Each [." "filename]#file# in the `SUB_FILES` list must have a corresponding [." "filename]#file.in# present in `FILESDIR`. A modified version will be " "created as [.filename]#${WRKDIR}/file#. Files defined as a value of " "`USE_RC_SUBR` are automatically added to `SUB_FILES`. For the files [." "filename]#pkg-message#, [.filename]#pkg-install#, and [.filename]#pkg-" "deinstall#, the corresponding Makefile variable is automatically set to " "point to the processed version." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:303 msgid "" "`SUB_LIST` is a list of `VAR=VALUE` pairs. For each pair, `%%VAR%%` will be " "replaced with `VALUE` in each file listed in `SUB_FILES`. Several common " "pairs are automatically defined: `PREFIX`, `LOCALBASE`, `DATADIR`, " "`DOCSDIR`, `EXAMPLESDIR`, `WWWDIR`, and `ETCDIR`. Any line beginning with " "`@comment` followed by a space, will be deleted from resulting files after a " "variable substitution." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:305 msgid "" "This example replaces `%%ARCH%%` with the system architecture in a [." "filename]#pkg-message#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:310 #, no-wrap msgid "" "SUB_FILES=\tpkg-message\n" "SUB_LIST=\tARCH=${ARCH}\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:313 msgid "" "Note that for this example, [.filename]#pkg-message.in# must exist in " "`FILESDIR`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:315 msgid "Example of a good [.filename]#pkg-message.in#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:321 #, no-wrap msgid "" "Now it is time to configure this package.\n" "Copy %%PREFIX%%/shared/examples/putsy/%%ARCH%%.conf into your home directory\n" "as .putsy.conf and edit it.\n" msgstr "" diff --git a/documentation/content/en/books/porters-handbook/testing/_index.po b/documentation/content/en/books/porters-handbook/testing/_index.po index 8da5fca2c9..f5adf6d6f6 100644 --- a/documentation/content/en/books/porters-handbook/testing/_index.po +++ b/documentation/content/en/books/porters-handbook/testing/_index.po @@ -1,1262 +1,1251 @@ # 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: 2022-02-01 09:20-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/testing/_index.adoc:1 #, no-wrap msgid "Testing a FreeBSD Port" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/porters-handbook/testing/_index.adoc:1 #, no-wrap msgid "Chapter 10. Testing the Port" msgstr "" #. type: Title = #: documentation/content/en/books/porters-handbook/testing/_index.adoc:13 #, no-wrap msgid "Testing the Port" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/testing/_index.adoc:51 #, no-wrap msgid "Running `make describe`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:56 msgid "" "Several of the FreeBSD port maintenance tools, such as man:portupgrade[1], " "rely on a database called [.filename]#/usr/ports/INDEX# which keeps track of " "such items as port dependencies. [.filename]#INDEX# is created by the top-" "level [.filename]#ports/Makefile# via `make index`, which descends into each " "port subdirectory and executes `make describe` there. Thus, if `make " "describe` fails in any port, no one can generate [.filename]#INDEX#, and " "many people will quickly become unhappy." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:61 msgid "" "It is important to be able to generate this file no matter what options are " "present in [.filename]#make.conf#, so please avoid doing things such as " "using `.error` statements when (for instance) a dependency is not " "satisfied. (See crossref:porting-dads[dads-dot-error,Avoid Use of the `." "error` Construct].)" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:65 msgid "" "If `make describe` produces a string rather than an error message, " "everything is probably safe. See [.filename]#bsd.port.mk# for the meaning " "of the string produced." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:67 msgid "" "Also note that running a recent version of `portlint` (as specified in the " "next section) will cause `make describe` to be run automatically." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/testing/_index.adoc:69 #, no-wrap msgid "Portclippy / Portfmt" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:72 msgid "Those tools come from package:ports-mgmt/portfmt[]." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:74 msgid "" "Portclippy is a linter that checks if variables in the [.filename]#Makefile# " "are in the correct order according to crossref:order[porting-order,Order of " "Variables in Port Makefiles]." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:76 msgid "Portfmt is a tool for automatically formatting [.filename]#Makefile#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/testing/_index.adoc:78 #, no-wrap msgid "Portlint" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:83 msgid "" "Do check the port with crossref:quick-porting[porting-portlint,`portlint`] " "before submitting or committing it. `portlint` warns about many common " "errors, both functional and stylistic. For a new (or repocopied) port, " "`portlint -A` is the most thorough; for an existing port, `portlint -C` is " "sufficient." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:87 msgid "" "Since `portlint` uses heuristics to try to figure out errors, it can produce " "false positive warnings. In addition, occasionally something that is " "flagged as a problem really cannot be done in any other way due to " "limitations in the ports framework. When in doubt, the best thing to do is " "ask on {freebsd-ports}." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/testing/_index.adoc:89 #, no-wrap msgid "Port Tools" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:92 msgid "" "The package:ports-mgmt/porttools[] program is part of the Ports Collection." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:96 msgid "" "`port` is the front-end script, which can help simplify the testing job. " "Whenever a new port or an update to an existing one needs testing, use `port " "test` to test the port, including the <> " "checking. This command also detects and lists any files that are not listed " "in [.filename]#pkg-plist#. For example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:100 #, no-wrap msgid "# port test /usr/ports/net/csup\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/testing/_index.adoc:103 #, no-wrap msgid "`PREFIX` and `DESTDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:108 msgid "" "`PREFIX` determines where the port will be installed. It defaults to [." "filename]#/usr/local#, but can be set by the user to a custom path like [." "filename]#/opt#. The port must respect the value of this variable." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:113 msgid "" "`DESTDIR`, if set by the user, determines the complete alternative " "environment, usually a jail or an installed system mounted somewhere other " "than [.filename]#/#. A port will actually install into [.filename]#DESTDIR/" "PREFIX#, and register with the package database in [.filename]#DESTDIR/var/" "db/pkg#. `DESTDIR` is handled automatically by the ports infrastructure " "with man:chroot[8]. There is no need for modifications or any extra care to " "write `DESTDIR`-compliant ports." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:116 msgid "" "The value of `PREFIX` will be set to `LOCALBASE` (defaulting to [.filename]#/" "usr/local#). If `USE_LINUX_PREFIX` is set, `PREFIX` will be `LINUXBASE` " "(defaulting to [.filename]#/compat/linux#)." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:120 msgid "" "Avoiding hard-coded [.filename]#/usr/local# paths in the source makes the " "port much more flexible and able to cater to the needs of other sites. " "Often, this can be accomplished by replacing occurrences of [.filename]#/usr/" "local# in the port's various [.filename]##Makefile##s with `${PREFIX}`. " "This variable is automatically passed down to every stage of the build and " "install processes." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:123 msgid "" "Make sure the application is not installing things in [.filename]#/usr/" "local# instead of `PREFIX`. A quick test for such hard-coded paths is:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:127 #, no-wrap msgid "% make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:130 msgid "" "If anything is installed outside of `PREFIX`, the package creation process " "will complain that it cannot find the files." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:132 msgid "" "In addition, it is worth checking the same with the stage directory support " "(see crossref:special[staging,Staging]):" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:136 #, no-wrap msgid "% make stage && make check-plist && make stage-qa && make package\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:139 msgid "" "`check-plist` checks for files missing from the plist, and files in the " "plist that are not installed by the port." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:140 msgid "" "`stage-qa` checks for common problems like bad shebang, symlinks pointing " "outside the stage directory, setuid files, and non-stripped libraries..." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:143 msgid "" "These tests will not find hard-coded paths inside the port's files, nor will " "it verify that `LOCALBASE` is being used to correctly refer to files from " "other ports. The temporarily-installed port in [.filename]#/var/tmp/`make -" "V PORTNAME`# must be tested for proper operation to make sure there are no " "problems with paths." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:146 msgid "" "`PREFIX` must not be set explicitly in a port's [.filename]#Makefile#. " "Users installing the port may have set `PREFIX` to a custom location, and " "the port must respect that setting." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:150 msgid "" "Refer to programs and files from other ports with the variables mentioned " "above, not explicit pathnames. For instance, if the port requires a macro " "`PAGER` to have the full pathname of `less`, do not use a literal path of [." "filename]#/usr/local/bin/less#. Instead, use `${LOCALBASE}`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:154 #, no-wrap msgid "-DPAGER=\\\"${LOCALBASE}/bin/less\\\"\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:157 msgid "" "The path with `LOCALBASE` is more likely to still work if the system " "administrator has moved the whole [.filename]#/usr/local# tree somewhere " "else." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:163 msgid "" "All these tests are done automatically when running `poudriere testport` or " "`poudriere bulk -t`. It is highly recommended that every ports contributor " "install and test their ports with it. See <> for more " "information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/testing/_index.adoc:166 #, no-wrap msgid "Poudriere" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:170 msgid "" "For a ports contributor, Poudriere is one of the most important and helpful " "testing and build tools. Its main features include:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:172 msgid "" "Bulk building of the entire ports tree, specific subsets of the ports tree, " "or a single port including its dependencies" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:173 msgid "Automatic packaging of build results" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:174 msgid "Generation of build log files per port" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:175 msgid "Providing a signed man:pkg[8] repository" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:176 msgid "" "Testing of port builds before submitting a patch to the FreeBSD bug tracker " "or committing to the ports tree" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:177 msgid "Testing for successful ports builds using different options" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:180 msgid "" "Because Poudriere performs its building in a clean man:jail[8] environment " "and uses man:zfs[8] features, it has several advantages over traditional " "testing on the host system:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:182 msgid "" "No pollution of the host environment: No leftover files, no accidental " "removals, no changes of existing configuration files." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:183 msgid "Verify [.filename]#pkg-plist# for missing or superfluous entries" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:184 msgid "" "Ports committers sometimes ask for a Poudriere log alongside a patch " "submission to assess whether the patch is ready for integration into the " "ports tree" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:187 msgid "" "It is also quite straightforward to set up and use, has no dependencies, and " "will run on any supported FreeBSD release. This section shows how to " "install, configure, and run Poudriere as part of the normal workflow of a " "ports contributor." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:192 msgid "" "The examples in this section show a default file layout, as standard in " "FreeBSD. Substitute any local changes accordingly. The ports tree, " "represented by `${PORTSDIR}`, is located in [.filename]#/usr/ports#. Both `" "${LOCALBASE}` and `${PREFIX}` are [.filename]#/usr/local# by default." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/testing/_index.adoc:194 #, no-wrap msgid "Installing Poudriere" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:198 msgid "" "Poudriere is available in the ports tree in package:ports-mgmt/poudriere[]. " "It can be installed using man:pkg[8] or from ports:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:202 #, no-wrap msgid "# pkg install poudriere\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:205 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:386 msgid "or" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:209 #, no-wrap msgid "# make -C /usr/ports/ports-mgmt/poudriere install clean\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:220 msgid "" "There is also a work-in-progress version of Poudriere which will eventually " "become the next release. It is available in package:ports-mgmt/poudriere-" "devel[]. This development version is used for the official FreeBSD package " "builds, so it is well tested. It often has newer interesting features. A " "ports committer will want to use the development version because it is what " "is used in production, and has all the new features that will make sure " "everything is exactly right. A contributor will not necessarily need those " "as the most important fixes are backported to released version. The main " "reason for the use of the development version to build the official package " "is because it is faster, in a way that will shorten a full build from 18 " "hours to 17 hours when using a high end 32 CPU server with 128GB of RAM. " "Those optimizations will not matter a lot when building ports on a desktop " "machine." msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/testing/_index.adoc:222 #, no-wrap msgid "Setting Up Poudriere" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:227 msgid "" "The port installs a default configuration file, [.filename]#/usr/local/etc/" "poudriere.conf#. Each parameter is documented in the configuration file and " "in man:poudriere[8]. Here is a minimal example config file:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/testing/_index.adoc:237 #, no-wrap msgid "" "ZPOOL=tank\n" "ZROOTFS=/poudriere\n" "BASEFS=/poudriere\n" "DISTFILES_CACHE=/usr/ports/distfiles\n" "RESOLV_CONF=/etc/resolv.conf\n" "FREEBSD_HOST=ftp://ftp.freebsd.org\n" "SVN_HOST=svn.FreeBSD.org\n" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/testing/_index.adoc:239 #, no-wrap msgid "`ZPOOL`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:242 msgid "" "The name of the ZFS storage pool which Poudriere shall use. Must be listed " "in the output of `zpool status`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/testing/_index.adoc:243 #, no-wrap msgid "`ZROOTFS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:246 msgid "" "The root of Poudriere-managed file systems. This entry will cause Poudriere " "to create man:zfs[8] file systems under `tank/poudriere`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/testing/_index.adoc:247 #, no-wrap msgid "`BASEFS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:250 msgid "" "The root mount point for Poudriere file systems. This entry will cause " "Poudriere to mount `tank/poudriere` to `/poudriere`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/testing/_index.adoc:251 #, no-wrap msgid "`DISTFILES_CACHE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:256 msgid "" "Defines where distfiles are stored. In this example, Poudriere and the host " "share the distfiles storage directory. This avoids downloading tarballs " "which are already present on the system. Please create this directory if it " "does not already exist so that Poudriere can find it." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/testing/_index.adoc:257 #, no-wrap msgid "`RESOLV_CONF`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:262 msgid "" "Use the host [.filename]#/etc/resolv.conf# inside jails for DNS. This is " "needed so jails can resolve the URLs of distfiles when downloading. It is " "not needed when using a proxy. Refer to the default configuration file for " "proxy configuration." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/testing/_index.adoc:263 #, no-wrap msgid "`FREEBSD_HOST`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/testing/_index.adoc:266 msgid "" "The FTP/HTTP server to use when the jails are installed from FreeBSD " "releases and updated with man:freebsd-update[8]. Choose a server location " "which is close, for example if the machine is located in Australia, use `ftp." "au.freebsd.org`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/testing/_index.adoc:267 #, no-wrap msgid "`SVN_HOST`" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:272 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:271 msgid "" "The server from where jails are installed and updated when using " -"Subversion. Also used for ports tree when not using man:portsnap[8]. " -"Again, choose a nearby location. A list of official Subversion mirrors can " -"be found in the extref:{handbook}[FreeBSD Handbook Subversion section, svn-" -"mirrors]." +"Subversion. Again, choose a nearby location. A list of official Subversion " +"mirrors can be found in the extref:{handbook}[FreeBSD Handbook Subversion " +"section, svn-mirrors]." msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:274 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:273 #, no-wrap msgid "Creating Poudriere Jails" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:277 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:276 msgid "Create the base jails which Poudriere will use for building:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:281 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:280 #, no-wrap -msgid "# poudriere jail -c -j 114Ramd64 -v 11.4-RELEASE -a amd64\n" +msgid "# poudriere jail -c -j 131Ramd64 -v 13.1-RELEASE -a amd64\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:286 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:285 msgid "" -"Fetch a `11.4-RELEASE` for `amd64` from the FTP server given by " +"Fetch a `13.1-RELEASE` for `amd64` from the FTP server given by " "`FREEBSD_HOST` in [.filename]#poudriere.conf#, create the zfs file system " -"`tank/poudriere/jails/114Ramd64`, mount it on [.filename]#/poudriere/" -"jails/114Ramd64# and extract the `11.4-RELEASE` tarballs into this file " +"`tank/poudriere/jails/131Ramd64`, mount it on [.filename]#/poudriere/" +"jails/131Ramd64# and extract the `13.1-RELEASE` tarballs into this file " "system." msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:290 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:289 #, no-wrap -msgid "# poudriere jail -c -j 11i386 -v stable/11 -a i386 -m git+https\n" +msgid "# poudriere jail -c -j 12i386 -v stable/12 -a i386 -m git+https\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:295 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:294 msgid "" -"Create `tank/poudriere/jails/11i386`, mount it on [.filename]#/poudriere/" -"jails/11i386#, then check out the tip of the Subversion branch of " -"`FreeBSD-11-STABLE` from `SVN_HOST` in [.filename]#poudriere.conf# into [." -"filename]#/poudriere/jails/11i386/usr/src#, then complete a `buildworld` and " -"install it into [.filename]#/poudriere/jails/11i386#." +"Create `tank/poudriere/jails/12i386`, mount it on [.filename]#/poudriere/" +"jails/12i386#, then check out the tip of the Subversion branch of " +"`FreeBSD-12-STABLE` from `SVN_HOST` in [.filename]#poudriere.conf# into [." +"filename]#/poudriere/jails/12i386/usr/src#, then complete a `buildworld` and " +"install it into [.filename]#/poudriere/jails/12i386#." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:300 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:299 msgid "" "If a specific Subversion revision is needed, append it to the version " "string. For example:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:304 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:303 #, no-wrap -msgid "# poudriere jail -c -j 11i386 -v stable/11@123456 -a i386 -m git+https\n" +msgid "# poudriere jail -c -j 12i386 -v stable/12@123456 -a i386 -m git+https\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:313 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:312 msgid "" "While it is possible to build a newer version of FreeBSD on an older " -"version, most of the time it will not run. For example, if a `stable/11` " -"jail is needed, the host will have to run `stable/11` too. Running `11.4-" +"version, most of the time it will not run. For example, if a `stable/13` " +"jail is needed, the host will have to run `stable/13` too. Running `13.1-" "RELEASE` is not enough." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:318 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:317 msgid "To create a Poudriere jail for `14.0-CURRENT`:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:322 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:321 #, no-wrap msgid "# poudriere jail -c -j 14amd64 -v main -a amd64 -m git+https\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:328 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:327 msgid "" "In order to run a `14.0-CURRENT` Poudriere jail you must be running `14.0-" "CURRENT`. In general, newer kernels can build and run older jails. For " -"instance, a `14.0-CURRENT` kernel can build and run a `11.4-STABLE`. " -"Poudriere jail if the `COMPAT_FREEBSD11` kernel option was compiled in (on " +"instance, a `14.0-CURRENT` kernel can build and run a `12.3-STABLE`. " +"Poudriere jail if the `COMPAT_FREEBSD12` kernel option was compiled in (on " "by default in `14.0-CURRENT`[.filename]#GENERIC# kernel config)." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:335 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:334 msgid "" "The default `svn` protocol works but is not very secure. Using `svn+https` " "along with verifying the remote server's SSL fingerprint is advised. It " "will ensure that the files used for building the jail are from a trusted " "source." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:338 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:337 msgid "" "A list of jails currently known to Poudriere can be shown with `poudriere " "jail -l`:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:345 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:344 #, no-wrap msgid "" "# poudriere jail -l\n" "JAILNAME VERSION ARCH METHOD\n" -"114Ramd64 11.4-RELEASE amd64 ftp\n" -"11i386 11.4-STABLE i386 svn+https\n" +"131Ramd64 13.1-RELEASE amd64 ftp\n" +"12i386 12.3-STABLE i386 git+https\n" msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:348 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:347 #, no-wrap msgid "Keeping Poudriere Jails Updated" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:352 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:351 msgid "Managing updates is very straightforward. The command:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:356 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:355 #, no-wrap msgid "# poudriere jail -u -j JAILNAME\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:361 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:360 msgid "" "updates the specified jail to the latest version available. For FreeBSD " "releases, update to the latest patchlevel with man:freebsd-update[8]. For " "FreeBSD versions built from source, update to the latest Subversion revision " "in the branch." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:366 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:365 msgid "" "For jails employing a `git+*` method, it is helpful to add `-J " "_NumberOfParallelBuildJobs_` to speed up the build by increasing the number " "of parallel compile jobs used. For example, if the building machine has 6 " "CPUs, use:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:370 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:369 #, no-wrap msgid "# poudriere jail -u -J 6 -j JAILNAME\n" msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:375 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:374 #, no-wrap msgid "Setting Up Ports Trees for Use with Poudriere" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:379 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:378 msgid "" "There are multiple ways to use ports trees in Poudriere. The most " "straightforward way is to have Poudriere create a default ports tree for " -"itself, using either man:portsnap[8] (if running FreeBSD {rel121-current} or " -"{rel114-current}) or Git (if running FreeBSD-CURRENT):" -msgstr "" - -#. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:383 -#, no-wrap -msgid "# poudriere ports -c -m portsnap\n" +"itself, using link:{handbook}mirrors/#git[Git]:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:390 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:382 #, no-wrap msgid "# poudriere ports -c -m git+https -B main\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:394 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:386 msgid "" "These commands create `tank/poudriere/ports/default`, mount it on [." -"filename]#/poudriere/ports/default#, and populate it using Git, man:" -"portsnap[8], or Subversion. Afterward it is included in the list of known " -"ports trees:" +"filename]#/poudriere/ports/default#, and populate it using Git. Afterward " +"it is included in the list of known ports trees:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:400 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:392 #, no-wrap msgid "" "# poudriere ports -l\n" "PORTSTREE METHOD TIMESTAMP PATH\n" "default git+https 2020-07-20 04:23:56 /poudriere/ports/default\n" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:407 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:399 msgid "" "Note that the \"default\" ports tree is special. Each of the build commands " "explained later will implicitly use this ports tree unless specifically " "specified otherwise. To use another tree, add `-p _treename_` to the " "commands." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:413 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:405 msgid "" -"While useful for regular bulk builds, having this default ports tree with " -"the man:portsnap[8] method may not be the best way to deal with local " -"modifications for a ports contributor. As with the creation of jails, it is " +"The best way to deal with local modifications for a ports contributor is to " +"use link:{handbook}mirrors/#git[Git]. As with the creation of jails, it is " "possible to use a different method for creating the ports tree. To add an " "additional ports tree for testing local modifications and ports development, " "checking out the tree via Subversion (as described above) is preferable." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:418 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:410 msgid "" "The http and https methods need package:devel/subversion[] built with the " "`SERF` option enabled. It is enabled by default." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:425 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:417 msgid "" "The `svn` method allows extra qualifiers to tell Subversion exactly how to " "fetch data. This is explained in man:poudriere[8]. For instance, " "`poudriere ports -c -m svn+ssh -p subversive` uses SSH for the checkout." msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:428 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:420 #, no-wrap msgid "Using Manually Managed Ports Trees with Poudriere" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:432 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:424 msgid "" "Depending on the workflow, it can be extremely helpful to use ports trees " "which are maintained manually. For instance, if there is a local copy of " "the ports tree in [.filename]#/work/ports#, point Poudriere to the location:" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:434 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:426 msgid "For Poudriere older than version 3.1.20:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:438 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:430 #, no-wrap msgid "# poudriere ports -c -F -f none -M /work/ports -p development\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:441 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:433 msgid "For Poudriere version 3.1.20 and later:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:445 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:437 #, no-wrap msgid "# poudriere ports -c -m null -M /work/ports -p development\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:448 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:440 msgid "This will be listed in the table of known trees:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:454 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:446 #, no-wrap msgid "" "# poudriere ports -l\n" "PORTSTREE METHOD TIMESTAMP PATH\n" "development null 2020-07-20 05:06:33 /work/ports\n" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:460 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:452 msgid "" "The dash or `null` in the `METHOD` column means that Poudriere will not " "update or change this ports tree, ever. It is completely up to the user to " "maintain this tree, including all local modifications that may be used for " "testing new ports and submitting patches." msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:463 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:455 #, no-wrap msgid "Keeping Poudriere Ports Trees Updated" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:466 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:458 msgid "As straightforward as with jails described earlier:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:470 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:462 #, no-wrap msgid "# poudriere ports -u -p PORTSTREE\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:473 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:465 msgid "" "Will update the given _PORTSTREE_, one tree given by the output of " "`poudriere -l`, to the latest revision available on the official servers." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:478 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:470 msgid "" "Ports trees without a method, see <>, " "cannot be updated like this. They must be updated manually by the porter." msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:481 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:473 #, no-wrap msgid "Testing Ports" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:484 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:476 msgid "" "After jails and ports trees have been set up, the result of a contributor's " "modifications to the ports tree can be tested." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:486 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:478 msgid "" "For example, local modifications to the package:www/firefox[] port located " "in [.filename]#/work/ports/www/firefox# can be tested in the previously " -"created 11.4-RELEASE jail:" +"created 13.1-RELEASE jail:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:490 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:482 #, no-wrap -msgid "# poudriere testport -j 114Ramd64 -p development -o www/firefox\n" +msgid "# poudriere testport -j 131Ramd64 -p development -o www/firefox\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:496 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:488 msgid "" "This will build all dependencies of Firefox. If a dependency has been built " "previously and is still up-to-date, the pre-built package is installed. If " "a dependency has no up-to-date package, one will be built with default " "options in a jail. Then Firefox itself is built." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:498 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:490 msgid "" "The complete build of every port is logged to [.filename]#/poudriere/data/" -"logs/bulk/114Ri386-development/build-time/logs#." +"logs/bulk/131Ri386-development/build-time/logs#." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:503 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:495 msgid "" -"The directory name `114Ri386-development` is derived from the arguments to `-" +"The directory name `131Ri386-development` is derived from the arguments to `-" "j` and `-p`, respectively. For convenience, a symbolic link [.filename]#/" -"poudriere/data/logs/bulk/114Ri386-development/latest# is also maintained. " +"poudriere/data/logs/bulk/131Ri386-development/latest# is also maintained. " "The link points to the latest _build-time_ directory. Also in this " "directory is an [.filename]#index.html# for observing the build process with " "a web browser." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:506 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:498 msgid "" "By default, Poudriere cleans up the jails and leaves log files in the " "directories mentioned above. To ease investigation, jails can be kept " "running after the build by adding `-i` to `testport`:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:510 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:502 #, no-wrap -msgid "# poudriere testport -j 114Ramd64 -p development -i -o www/firefox\n" +msgid "# poudriere testport -j 131Ramd64 -p development -i -o www/firefox\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:517 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:509 msgid "" "After the build completes, and regardless of whether it was successful, a " "shell is provided within the jail. The shell is used to investigate " "further. Poudriere can be told to leave the jail running after the build " "finishes with `-I`. Poudriere will show the command to run when the jail is " "no longer needed. It is then possible to man:jexec[8] into it:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:531 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:523 #, no-wrap msgid "" -"# poudriere testport -j 114Ramd64 -p development -I -o www/firefox\n" +"# poudriere testport -j 131Ramd64 -p development -I -o www/firefox\n" "[...]\n" "====>> Installing local Pkg repository to /usr/local/etc/pkg/repos\n" -"====>> Leaving jail 114Ramd64-development-n running, mounted at /poudriere/data/.m/114Ramd64-development/ref for interactive run testing\n" -"====>> To enter jail: jexec 114Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root\n" -"====>> To stop jail: poudriere jail -k -j 114Ramd64 -p development\n" -"# jexec 114Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root\n" +"====>> Leaving jail 131Ramd64-development-n running, mounted at /poudriere/data/.m/131Ramd64-development/ref for interactive run testing\n" +"====>> To enter jail: jexec 131Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root\n" +"====>> To stop jail: poudriere jail -k -j 131Ramd64 -p development\n" +"# jexec 131Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root\n" "# [do some stuff in the jail]\n" "# exit\n" -"# poudriere jail -k -j 114Ramd64 -p development\n" +"# poudriere jail -k -j 131Ramd64 -p development\n" "====>> Umounting file systems\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:535 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:527 msgid "" "An integral part of the FreeBSD ports build infrastructure is the ability to " "tweak ports to personal preferences with options. These can be tested with " "Poudriere as well. Adding the `-c`:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:539 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:531 #, no-wrap msgid "# poudriere testport -c -o www/firefox\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:544 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:536 msgid "" "Presents the port configuration dialog before the port is built. The ports " "given after `-o` in the format `_category_/_portname_` will use the " "specified options, all dependencies will use the default options. Testing " "dependent ports with non-default options can be accomplished using sets, see " "<>." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:549 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:541 msgid "" "When testing ports where [.filename]#pkg-plist# is altered during build " "depending on the selected options, it is recommended to perform a test run " "with all options selected _and_ one with all options deselected." msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:552 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:544 #, no-wrap msgid "Using Sets" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:557 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:549 msgid "" "For all actions involving builds, a so-called _set_ can be specified using `-" "z _setname_`. A set refers to a fully independent build. This allows, for " "instance, usage of `testport` with non-standard options for the dependent " "ports." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:563 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:555 msgid "" "To use sets, Poudriere expects an existing directory structure similar to " "`PORT_DBDIR`, defaults to [.filename]#/var/db/ports# in its configuration " "directory. This directory is then man:nullfs[5]-mounted into the jails " "where the ports and their dependencies are built. Usually a suitable " "starting point can be obtained by recursively copying the existing " "`PORT_DBDIR` to [.filename]#/usr/local/etc/poudriere.d/jailname-portname-" "setname-options#. This is described in detail in man:poudriere[8]. For " "instance, testing package:www/firefox[] in a specific set named `devset`, " "add the `-z devset` parameter to the testport command:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:567 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:610 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:559 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:602 #, no-wrap -msgid "# poudriere testport -j 114Ramd64 -p development -z devset -o www/firefox\n" +msgid "# poudriere testport -j 131Ramd64 -p development -z devset -o www/firefox\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:570 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:562 msgid "This will look for the existence of these directories in this order:" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:572 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:564 msgid "" -"[.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-devset-options#" +"[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-options#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:573 -msgid "[.filename]#/usr/local/etc/poudriere.d/114Ramd64-devset-options#" +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:565 +msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-options#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:574 -msgid "[.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-options#" +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:566 +msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-options#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:575 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:567 msgid "[.filename]#/usr/local/etc/poudriere.d/devset-options#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:576 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:568 msgid "[.filename]#/usr/local/etc/poudriere.d/development-options#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:577 -msgid "[.filename]#/usr/local/etc/poudriere.d/114Ramd64-options#" +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:569 +msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-options#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:578 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:570 msgid "[.filename]#/usr/local/etc/poudriere.d/options#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:581 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:573 msgid "" "From this list, Poudriere man:nullfs[5]-mounts the _first existing_ " "directory tree into the [.filename]#/var/db/ports# directory of the build " "jails. Hence, all custom options are used for all the ports during this run " "of `testport`." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:584 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:576 msgid "" "After the directory structure for a set is provided, the options for a " "particular port can be altered. For example:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:588 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:580 #, no-wrap msgid "# poudriere options -c www/firefox -z devset\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:592 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:584 msgid "" "The configuration dialog for package:www/firefox[] is shown, and options can " "be edited. The selected options are saved to the `devset` set." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:598 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:590 msgid "" "Poudriere is very flexible in the option configuration. They can be set for " "particular jails, ports trees, and for multiple ports by one command. Refer " "to man:poudriere[8] for details." msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:601 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:593 #, no-wrap msgid "Providing a Custom [.filename]#make.conf# File" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:606 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:598 msgid "" "Similar to using sets, Poudriere will also use a custom [.filename]#make." "conf# if it is provided. No special command line argument is necessary. " "Instead, Poudriere looks for existing files matching a name scheme derived " "from the command line. For instance:" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:613 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:605 msgid "" "causes Poudriere to check for the existence of these files in this order:" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:615 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:607 msgid "[.filename]#/usr/local/etc/poudriere.d/make.conf#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:616 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:608 msgid "[.filename]#/usr/local/etc/poudriere.d/devset-make.conf#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:617 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:609 msgid "[.filename]#/usr/local/etc/poudriere.d/development-make.conf#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:618 -msgid "[.filename]#/usr/local/etc/poudriere.d/114Ramd64-make.conf#" +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:610 +msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-make.conf#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:619 -msgid "[.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-make.conf#" +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:611 +msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-make.conf#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:620 -msgid "[.filename]#/usr/local/etc/poudriere.d/114Ramd64-devset-make.conf#" +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:612 +msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-make.conf#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:621 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:613 msgid "" -"[.filename]#/usr/local/etc/poudriere.d/114Ramd64-development-devset-make." +"[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-make." "conf#" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:625 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:617 msgid "" "Unlike with sets, all of the found files will be appended, _in that order_, " "into one [.filename]#make.conf# inside the build jails. It is hence " "possible to have general make variables, intended to affect all builds in [." "filename]#/usr/local/etc/poudriere.d/make.conf#. Special variables, " "intended to affect only certain jails or sets can be set in specialised [." "filename]#make.conf# files, such as [.filename]#/usr/local/etc/poudriere." -"d/114Ramd64-development-devset-make.conf#." +"d/131Ramd64-development-devset-make.conf#." msgstr "" #. type: Block title -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:627 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:619 #, no-wrap msgid "Using [.filename]#make.conf# to Change Default Perl" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:632 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:624 msgid "" "To build a set with a non default Perl version, for example, `5.20`, using a " "set named `perl5-20`, create a [.filename]#perl5-20-make.conf# with this " "line:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:636 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:628 #, no-wrap msgid "DEFAULT_VERSIONS+= perl=5.20\n" msgstr "" #. type: delimited block * 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:640 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:632 msgid "" "Note the use of `+=` so that if the variable is already set in the default [." "filename]#make.conf# its content will not be overwritten." msgstr "" #. type: Title === -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:645 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:637 #, no-wrap msgid "Pruning no Longer Needed Distfiles" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:649 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:641 msgid "" "Poudriere comes with a built-in mechanism to remove outdated distfiles that " "are no longer used by any port of a given tree. The command" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:653 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:645 #, no-wrap msgid "# poudriere distclean -p portstree\n" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:658 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:650 msgid "" "will scan the distfiles folder, `DISTFILES_CACHE` in [.filename]#poudriere." "conf#, versus the ports tree given by the `-p _portstree_` argument and " "prompt for removal of those distfiles. To skip the prompt and remove all " "unused files unconditionally, the `-y` argument can be added:" msgstr "" #. type: delimited block . 4 -#: documentation/content/en/books/porters-handbook/testing/_index.adoc:662 +#: documentation/content/en/books/porters-handbook/testing/_index.adoc:654 #, no-wrap msgid "# poudriere distclean -p portstree -y\n" msgstr "" diff --git a/documentation/content/en/books/porters-handbook/uses/_index.po b/documentation/content/en/books/porters-handbook/uses/_index.po index 0c46f2c09a..b907576ee5 100644 --- a/documentation/content/en/books/porters-handbook/uses/_index.po +++ b/documentation/content/en/books/porters-handbook/uses/_index.po @@ -1,5845 +1,5863 @@ # 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: 2022-10-01 10:13-0300\n" +"POT-Creation-Date: 2022-10-16 17:06-0300\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/uses/_index.adoc:1 #, no-wrap msgid "USES macros make it easy to declare requirements and settings for a FreeBSD Port" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1 #, no-wrap msgid "Chapter 17. Using USES Macros" msgstr "" #. type: Title = #: documentation/content/en/books/porters-handbook/uses/_index.adoc:13 #, no-wrap msgid "Using `USES` Macros" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:51 #, no-wrap msgid "An Introduction to `USES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:55 msgid "" "`USES` macros make it easy to declare requirements and settings for a port. " "They can add dependencies, change building behavior, add metadata to " "packages, and so on, all by selecting simple, preset values." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:59 msgid "" "Each section in this chapter describes a possible value for `USES`, along " "with its possible arguments. Arguments are appended to the value after a " "colon (`:`). Multiple arguments are separated by commas (`,`)." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:61 #, no-wrap msgid "Using Multiple Values" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:67 #, no-wrap msgid "USES=\tbison perl\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:71 #, no-wrap msgid "Adding an Argument" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:77 #, no-wrap msgid "USES=\ttar:xz\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:81 #, no-wrap msgid "Adding Multiple Arguments" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:87 #, no-wrap msgid "USES=\tdrupal:7,theme\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:91 #, no-wrap msgid "Mixing it All Together" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:97 #, no-wrap msgid "USES=\tpgsql:9.3+ cpe python:2.7,build\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:101 #, no-wrap msgid "`7z`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:104 msgid "Possible arguments: (none), `p7zip`, `partial`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:108 msgid "" "Extract using man:7z[1] instead of man:bsdtar[1] and sets " "`EXTRACT_SUFX=.7z`. The `p7zip` option forces a dependency on the `7z` from " "package:archivers/p7zip[] if the one from the base system is not able to " "extract the files. `EXTRACT_SUFX` is not changed if the `partial` option is " "used, this can be used if the main distribution file does not have a [." "filename]#.7z# extension." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:110 #, no-wrap msgid "`ada`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:113 msgid "Possible arguments: (none), `5`, `6`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:117 msgid "" "Depends on an Ada-capable compiler, and sets `CC` accordingly. Defaults to " "use gcc 5 from ports. Use the `:_X_` version option to force building with " "a different version." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:119 #, no-wrap msgid "`autoreconf`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:122 msgid "Possible arguments: (none), `build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:129 msgid "" "Runs `autoreconf`. It encapsulates the `aclocal`, `autoconf`, `autoheader`, " "`automake`, `autopoint`, and `libtoolize` commands. Each command applies to " "[.filename]#${AUTORECONF_WRKSRC}/configure.ac# or its old name, [.filename]#" "${AUTORECONF_WRKSRC}/configure.in#. If [.filename]#configure.ac# defines " "subdirectories with their own [.filename]#configure.ac# using " "`AC_CONFIG_SUBDIRS`, `autoreconf` will recursively update those as well. " "The `:build` argument only adds build time dependencies on those tools but " "does not run `autoreconf`. A port can set `AUTORECONF_WRKSRC` if `WRKSRC` " "does not contain the path to [.filename]#configure.ac#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:131 #, no-wrap msgid "`blaslapack`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:134 msgid "" "Possible arguments: (none), `atlas`, `netlib` (default), `gotoblas`, " "`openblas`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:136 msgid "Adds dependencies on Blas / Lapack libraries." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:138 #, no-wrap msgid "`bdb`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:141 msgid "Possible arguments: (none), `48`, `5` (default), `6`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:148 msgid "" "Add dependency on the Berkeley DB library. Default to package:databases/" "db5[]. It can also depend on package:databases/db48[] when using the `:48` " "argument or package:databases/db6[] with `:6`. It is possible to declare a " "range of acceptable values, `:48+` finds the highest installed version, and " "falls back to 4.8 if nothing else is installed. `INVALID_BDB_VER` can be " "used to specify versions which do not work with this port. The framework " "exposes the following variables to the port:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:149 #, no-wrap msgid "`BDB_LIB_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:152 msgid "" "The name of the Berkeley DB library. For example, when using package:" "databases/db5[], it contains `db-5.3`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:153 #, no-wrap msgid "`BDB_LIB_CXX_NAME`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:156 msgid "" "The name of the Berkeley DBC++ library. For example, when using package:" "databases/db5[], it contains `db_cxx-5.3`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:157 #, no-wrap msgid "`BDB_INCLUDE_DIR`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:160 msgid "" "The location of the Berkeley DB include directory. For example, when using " "package:databases/db5[], it will contain `${LOCALBASE}/include/db5`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:161 #, no-wrap msgid "`BDB_LIB_DIR`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:164 msgid "" "The location of the Berkeley DB library directory. For example, when using " "package:databases/db5[], it contains `${LOCALBASE}/lib`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:165 #, no-wrap msgid "`BDB_VER`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:168 msgid "" "The detected Berkeley DB version. For example, if using `USES=bdb:48+` and " "Berkeley DB 5 is installed, it contains `5`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:173 msgid "" "package:databases/db48[] is deprecated and unsupported. It must not be used " "by any port." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:176 #, no-wrap msgid "`bison`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:179 msgid "Possible arguments: (none), `build`, `run`, `both`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:181 msgid "" "Uses package:devel/bison[] By default, with no arguments or with the `build` " "argument, it implies `bison` is a build-time dependency, `run` implies a run-" "time dependency, and `both` implies both run-time and build-time " "dependencies." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:183 #, no-wrap msgid "`cabal`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:188 msgid "" "Ports should not be created for Haskell libraries, see crossref:" "special[haskell-libs,Haskell Libraries] for more information." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:191 msgid "Possible arguments: (none), `hpack`, `nodefault`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:199 msgid "" "Sets default values and targets used to build Haskell software using Cabal. " "A build dependency on the Haskell compiler port (package:lang/ghc[]) is " "added. If there is some other version of GHC already listed in the " "`BUILD_DEPENDS` variable (for example, package:lang/ghc810[]), it would be " "used instead. If the `hpack` argument is given, a build dependency on " "package:devel/hs-hpack[] is added and `hpack` is invoked at configuration " "step to generate .cabal file. If the `nodefault` argument is given, the " "framework will not try to pull the main distribution file from the Hackage. " "This argument is implicitly added if `USE_GITHUB` or `USE_GITLAB` is present." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:201 msgid "The framework provides the following variables:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:202 #, no-wrap msgid "`USE_CABAL`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:207 msgid "" "If the software uses Haskell dependencies, list them in this variable. Each " "item should be present on Hackage and be listed in form `packagename-" "_0.1.2_`. Dependencies can have revisions, which are specified after the " "`_` symbol. Automatic generation of the dependency list is supported, see " "crossref:special[using-cabal,Building Haskell Applications with `cabal`]." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:208 #, no-wrap msgid "`CABAL_FLAGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:213 msgid "" "List of flags to be passed to `cabal-install` during the configuring and " "building stage. The flags are passed verbatim. This variable is usually " "used to enable or disable flags that are declared in the .cabal file. Pass " "`foo` to enable the `foo` flag and `-foo` to disable it." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:214 #, no-wrap msgid "`CABAL_EXECUTABLES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:220 msgid "" "List of executable files installed by the port. Default value: `${PORTNAME}" "`. Consult the .cabal file of the project being ported to get a list of " "possible values for this variable. Each value corresponds to an `executable` " "stanza in the .cabal file. Items from this list are automatically added to " "pkg-plist." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:221 #, no-wrap msgid "`SKIP_CABAL_PLIST`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:223 msgid "If defined, do not add items from `${CABAL_EXECUTABLES}` to pkg-plist." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:224 #, no-wrap msgid "`opt_USE_CABAL`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:226 msgid "Adds items to `${USE_CABAL}` depending on `opt` option." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:227 #, no-wrap msgid "`opt_CABAL_EXECUTABLES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:229 msgid "Adds items to `${CABAL_EXECUTABLES}` depending on `opt` option." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:230 #, no-wrap msgid "`opt_CABAL_FLAGS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:234 msgid "" "If `opt` is enabled, append the value to `${CABAL_FLAGS}`. Otherwise, " "append `-value` to disable the flag. Note that this behavior is slightly " "different from the plain `CABAL_FLAGS` as it does not accept values starting " "with `-`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:235 #, no-wrap msgid "`CABAL_WRAPPER_SCRIPTS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:240 msgid "" "A subset of `${CABAL_EXECUTABLES}` containing Haskell programs to be wrapped " "into a shell script that sets `*_datadir` environment variables before " "running the program. This also causes the actual Haskell binary to be " "installed under `libexec/cabal/` directory. This knob is needed for Haskell " "programs that install their data files under `share/` directory." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:241 #, no-wrap msgid "`FOO_DATADIR_VARS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:245 msgid "" "List of extra Haskell packages, whose data files should be accessible by the " "executable named `FOO`. The executable should be a part of `" "${CABAL_WRAPPER_SCRIPTS}`. Haskell packages listed there should not have a " "version suffix." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:246 #, no-wrap msgid "`CABAL_PROJECT`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:251 msgid "" "Some Haskell projects may already have a `cabal.project` file, which is also " "generated by the ports framework. If that is the case, use this variable to " "specify what to do with the original `cabal.project`. Setting this variable " "to `remove` will cause the original file to be removed. Setting this " "variable to `append` will:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:252 msgid "" "Move the original file to `cabal.project.${PORTNAME}` during the `extract` " "stage." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:254 msgid "" "Concatenate the original `cabal.project.${PORTNAME}` and the generated " "`cabal.project` into a single file after the `patch` stage. Using `append` " "makes it possible to perform patching on the original file before it gets " "merged." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:256 #, no-wrap msgid "`cargo`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:259 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:268 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:319 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:348 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:357 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:373 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:405 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:428 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:483 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:519 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:552 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:559 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:713 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:784 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:889 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:941 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:948 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:956 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1081 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1100 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1107 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1114 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1153 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1161 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1204 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1222 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1238 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1255 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1277 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1659 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1667 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1676 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1905 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1921 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1982 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1990 msgid "Possible arguments: (none)" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:263 msgid "" "Uses Cargo for configuring, building, and testing. It can be used to port " "Rust applications that use the Cargo build system. For more information see " "crossref:special[using-cargo,Building Rust Applications with `cargo`]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:265 #, no-wrap msgid "`charsetfix`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:272 msgid "" "Prevents the port from installing [.filename]#charset.alias#. This must be " "installed only by package:converters/libiconv[]. `CHARSETFIX_MAKEFILEIN` " "can be set to a path relative to `WRKSRC` if [.filename]#charset.alias# is " "not installed by [.filename]#${WRKSRC}/Makefile.in#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:274 #, no-wrap msgid "`cmake`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:277 msgid "Possible arguments: (none), `insource`, `noninja`, `run`, `testing`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:279 msgid "Use CMake for configuring the port and generating a build system." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:283 msgid "" "By default an out-of-source build is performed, leaving the sources in " "`WRKSRC` free from build artifacts. With the `insource` argument, an in-" "source build will be performed instead. This argument should be an " "exception, used only when a regular out-of-source build does not work." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:288 msgid "" "By default Ninja (package:devel/ninja[]) is used for the build. In some " "cases this does not work correctly. With the `noninja` argument, the build " "will use regular `make` for builds. This argument should only be used if a " "Ninja-based build does not work." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:290 msgid "" "With the `run` argument, a run dependency is registered in addition to a " "build dependency." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:293 msgid "" "With the `testing` argument, a test-target is added that uses CTest. When " "running tests the port will be re-configured for testing and re-built." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:295 msgid "For more information see crossref:special[using-cmake,Using `cmake`]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:297 #, no-wrap msgid "`compiler`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:300 msgid "" "Possible arguments: (none), `env` (default, implicit), `{cpp}17-lang`, `{cpp}" "14-lang`, `{cpp}11-lang`, `gcc-{cpp}11-lib`, `{cpp}11-lib`, `{cpp}0x`, " "`c11`, `nestedfct`, `features`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:304 msgid "" "Determines which compiler to use based on any given wishes. Use `{cpp}17-" "lang` if the port needs a {cpp}17-capable compiler, `{cpp}14-lang` if the " "port needs a {cpp}14-capable compiler, `{cpp}11-lang` if the port needs a " "{cpp}11-capable compiler, `gcc-{cpp}11-lib` if the port needs the `g++` " "compiler with a {cpp}11 library, or `{cpp}11-lib` if the port needs a {cpp}" "11-ready standard library. If the port needs a compiler understanding {cpp}" "0X, C11 or nested functions, the corresponding parameters should be used." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:307 msgid "" "Use `features` to request a list of features supported by the default " "compiler. After including [.filename]#bsd.port.pre.mk# the port can inspect " "the results using these variables:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:309 msgid "" "`COMPILER_TYPE`: the default compiler on the system, either gcc or clang" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:310 msgid "" "`ALT_COMPILER_TYPE`: the alternative compiler on the system, either gcc or " "clang. Only set if two compilers are present in the base system." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:311 msgid "" "`COMPILER_VERSION`: the first two digits of the version of the default " "compiler." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:312 msgid "" "`ALT_COMPILER_VERSION`: the first two digits of the version of the " "alternative compiler, if present." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:313 msgid "`CHOSEN_COMPILER_TYPE`: the chosen compiler, either gcc or clang" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:314 msgid "" "`COMPILER_FEATURES`: the features supported by the default compiler. It " "currently lists the {cpp} library." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:316 #, no-wrap msgid "`cpe`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:323 msgid "" "Include Common Platform Enumeration (CPE) information in package manifest as " "a CPE 2.3 formatted string. See the https://scap.nist.gov/specifications/" "cpe/[CPE specification] for details. To add CPE information to a port, " "follow these steps:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:326 msgid "" "Search for the official CPE entry for the software product either by using " "the NVD's https://web.nvd.nist.gov/view/cpe/search[CPE search engine] or in " "the https://nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-" "dictionary_v2.3.xml.gz[official CPE dictionary] (warning, very large XML " "file). _Do not ever make up CPE data._" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:327 msgid "" "Add `cpe` to `USES` and compare the result of `make -V CPE_STR` to the CPE " "dictionary entry. Continue one step at a time until `make -V CPE_STR` is " "correct." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:328 msgid "" "If the product name (second field, defaults to `PORTNAME`) is incorrect, " "define `CPE_PRODUCT`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:329 msgid "" "If the vendor name (first field, defaults to `CPE_PRODUCT`) is incorrect, " "define `CPE_VENDOR`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:330 msgid "" "If the version field (third field, defaults to `PORTVERSION`) is incorrect, " "define `CPE_VERSION`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:331 msgid "" "If the update field (fourth field, defaults to empty) is incorrect, define " "`CPE_UPDATE`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:332 msgid "" "If it is still not correct, check [.filename]#Mk/Uses/cpe.mk# for additional " "details, or contact the {ports-secteam}." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:333 msgid "" "Derive as much as possible of the CPE name from existing variables such as " "`PORTNAME` and `PORTVERSION`. Use variable modifiers to extract the relevant " "portions from these variables rather than hardcoding the name." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:334 msgid "" "_Always_ run `make -V CPE_STR` and check the output before committing " "anything that changes `PORTNAME` or `PORTVERSION` or any other variable " "which is used to derive `CPE_STR`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:336 #, no-wrap msgid "`cran`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:339 msgid "Possible arguments: (none), `auto-plist`, `compiles`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:343 msgid "" "Uses the Comprehensive R Archive Network. Specify `auto-plist` to " "automatically generate [.filename]#pkg-plist#. Specify `compiles` if the " "port has code that need to be compiled." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:345 #, no-wrap msgid "`desktop-file-utils`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:352 msgid "" "Uses update-desktop-database from package:devel/desktop-file-utils[]. An " "extra post-install step will be run without interfering with any post-" "install steps already in the port [.filename]#Makefile#. A line with " "<> will be added to " "the plist." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:354 #, no-wrap msgid "`desthack`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:359 msgid "" "Changes the behavior of GNU configure to properly support `DESTDIR` in case " "the original software does not." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:361 #, no-wrap msgid "`display`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:364 msgid "Possible arguments: (none), _ARGS_" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:368 msgid "" "Set up a virtual display environment. If the environment variable `DISPLAY` " "is not set, then Xvfb is added as a build dependency, and `CONFIGURE_ENV` is " "extended with the port number of the currently running instance of Xvfb. " "The _ARGS_ parameter defaults to `install` and controls the phase around " "which to start and stop the virtual display." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:370 #, no-wrap msgid "`dos2unix`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:378 msgid "" "The port has files with line endings in DOS format which need to be " "converted. Several variables can be set to control which files will be " "converted. The default is to convert _all_ files, including binaries. See " "crossref:slow-porting[slow-patch-automatic-replacements,Simple Automatic " "Replacements] for examples." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:380 msgid "`DOS2UNIX_REGEX`: match file names based on a regular expression." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:381 msgid "`DOS2UNIX_FILES`: match literal file names." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:382 msgid "`DOS2UNIX_GLOB`: match file names based on a glob pattern." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:383 msgid "" "`DOS2UNIX_WRKSRC`: the directory from which to start the conversions. " "Defaults to `${WRKSRC}`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:385 #, no-wrap msgid "`drupal`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:388 msgid "Possible arguments: `7`, `module`, `theme`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:393 msgid "" "Automate installation of a port that is a Drupal theme or module. Use with " "the version of Drupal that the port is expecting. For example, " "`USES=drupal:7,module` says that this port creates a Drupal 6 module. A " "Drupal 7 theme can be specified with `USES=drupal:7,theme`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:395 #, no-wrap msgid "`eigen`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:398 msgid "Possible arguments: 2, 3, build (default), run" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:400 msgid "Add dependency on package:math/eigen[]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:402 #, no-wrap msgid "`elfctl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:407 msgid "Change an ELF binary's feature control note by setting ELF_FEATURES." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:409 #, no-wrap msgid "Uses=elfctl" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:418 #, no-wrap msgid "" "USES= elfctl\n" "ELF_FEATURES=\tfeaturelist:path/to/file1 \\\n" "\t\tfeaturelist:path/to/file1 \\\n" "\t\tfeaturelist:path/to/file2\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:423 msgid "" "The format of `featurelist` is described in man:elfctl[1]. The file paths " "are relative to ${BUILD_WRKSRC}." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:425 #, no-wrap msgid "`fakeroot`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:431 msgid "" "Changes some default behavior of build systems to allow installing as a " "user. See https://wiki.debian.org/FakeRoot[] for more information on " "`fakeroot`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:433 #, no-wrap msgid "`fam`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:436 msgid "Possible arguments: (none), `fam`, `gamin`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:439 msgid "" "Uses a File Alteration Monitor as a library dependency, either package:devel/" "fam[] or package:devel/gamin[]. End users can set WITH_FAM_SYSTEM to " "specify their preference." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:441 #, no-wrap msgid "`firebird`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:444 msgid "Possible arguments: (none), `25`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:446 msgid "Add a dependency to the client library of the Firebird database." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:448 #, no-wrap msgid "`fonts`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:451 msgid "Possible arguments: (none), `fc`, `fontsdir` (default), `none`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:456 msgid "" "Adds a runtime dependency on tools needed to register fonts. Depending on " "the argument, add a `crossref:plist[plist-keywords-fc,@fc] ${FONTSDIR}` " "line, `crossref:plist[plist-keywords-fontsdir,@fontsdir] ${FONTSDIR}` line, " "or no line if the argument is `none`, to the plist. `FONTSDIR` defaults to " "[.filename]#${PREFIX}/share/fonts/${FONTNAME}# and `FONTNAME` to `${PORTNAME}" "`. Add `FONTSDIR` to `PLIST_SUB` and `SUB_LIST`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:458 #, no-wrap msgid "`fortran`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:461 msgid "Possible arguments: `gcc` (default)" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:463 msgid "Uses the GNU Fortran compiler." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:465 #, no-wrap msgid "`fuse`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:468 msgid "Possible arguments: `2` (default), `3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:470 msgid "" "The port will depend on the FUSE library and handle the dependency on the " "kernel module depending on the version of FreeBSD." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:472 #, no-wrap msgid "`gem`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:475 msgid "Possible arguments: (none), `noautoplist`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:478 msgid "" "Handle building with RubyGems. If `noautoplist` is used, the packing list " "is not generated automatically." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:480 #, no-wrap msgid "`gettext`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:486 msgid "" "Deprecated. Will include both <> " "and <>." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:488 #, no-wrap msgid "`gettext-runtime`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:491 msgid "Possible arguments: (none), `lib` (default), `build`, `run`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:495 msgid "" "Uses package:devel/gettext-runtime[]. By default, with no arguments or with " "the `lib` argument, implies a library dependency on [.filename]#libintl." "so#. `build` and `run` implies, respectively a build-time and a run-time " "dependency on [.filename]#gettext#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:497 #, no-wrap msgid "`gettext-tools`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:500 msgid "Possible arguments: (none), `build` (default), `run`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:504 msgid "" "Uses package:devel/gettext-tools[]. By default, with no argument, or with " "the `build` argument, a build time dependency on [.filename]#msgfmt# is " "registered. With the `run` argument, a run-time dependency is registered." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:506 #, no-wrap msgid "`ghostscript`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:509 msgid "Possible arguments: _X_, `build`, `run`, `nox11`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:514 msgid "" "A specific version _X_ can be used. Possible versions are `7`, `8`, `9`, and " "`agpl` (default). `nox11` indicates that the `-nox11` version of the port " "is required. `build` and `run` add build- and run-time dependencies on " "Ghostscript. The default is both build- and run-time dependencies." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:516 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:530 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:815 #, no-wrap msgid "`gl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:523 msgid "" "Provides an easy way to depend on GL components. The components should be " "listed in `USE_GL`. The available components are:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:524 #, no-wrap msgid "`egl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:526 msgid "" "add a library dependency on [.filename]#libEGL.so# from package:graphics/" "libglvnd[]" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:527 #, no-wrap msgid "`gbm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:529 msgid "" "Add a library dependency on [.filename]#libgbm.so# from package:graphics/" "mesa-libs[]" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:532 msgid "" "Add a library dependency on [.filename]#libGL.so# from package:graphics/" "libglvnd[]" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:533 #, no-wrap msgid "`glesv2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:535 msgid "" "Add a library dependency on [.filename]#libGLESv2.so# from package:graphics/" "libglvnd[]" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:536 #, no-wrap msgid "`glew`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:538 msgid "" "Add a library dependency on [.filename]#libGLEW.so# from package:graphics/" "glew[]" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:539 #, no-wrap msgid "`glu`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:541 msgid "" "Add a library dependency on [.filename]#libGLU.so# from package:graphics/" "libGLU[]" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:542 #, no-wrap msgid "`glut`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:544 msgid "" "Add a library dependency on [.filename]#libglut.so# from package:graphics/" "freeglut[]" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:545 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1459 #, no-wrap msgid "`opengl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:547 msgid "" "Add a library dependency on [.filename]#libOpenGL.so# from package:graphics/" "libglvnd[]" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:549 #, no-wrap msgid "`gmake`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:554 msgid "" "Uses package:devel/gmake[] as a build-time dependency and sets up the " "environment to use `gmake` as the default `make` for the build." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:556 #, no-wrap msgid "`gnome`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:563 msgid "" "Provides an easy way to depend on GNOME components. The components should " "be listed in `USE_GNOME`. The available components are:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:565 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:983 msgid "`atk`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:566 msgid "`atkmm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:567 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:798 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:986 msgid "`cairo`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:568 msgid "`cairomm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:569 msgid "`dconf`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:570 msgid "`esound`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:571 msgid "`evolutiondataserver3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:572 msgid "`gconf2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:573 msgid "`gconfmm26`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:574 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:814 msgid "`gdkpixbuf`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:575 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:997 msgid "`gdkpixbuf2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:576 msgid "`glib12`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:577 msgid "`glib20`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:578 msgid "`glibmm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:579 msgid "`gnomecontrolcenter3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:580 msgid "`gnomedesktop3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:581 msgid "`gnomedocutils`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:582 msgid "`gnomemenus3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:583 msgid "`gnomemimedata`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:584 msgid "`gnomeprefix`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:585 msgid "`gnomesharp20`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:586 msgid "`gnomevfs2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:587 msgid "`gsound`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:588 msgid "`gtk-update-icon-cache`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:589 msgid "`gtk12`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:590 msgid "`gtk20`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:591 msgid "`gtk30`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:592 msgid "`gtkhtml3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:593 msgid "`gtkhtml4`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:594 msgid "`gtkmm20`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:595 msgid "`gtkmm24`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:596 msgid "`gtkmm30`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:597 msgid "`gtksharp20`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:598 msgid "`gtksourceview`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:599 msgid "`gtksourceview2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:600 msgid "`gtksourceview3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:601 msgid "`gtksourceviewmm3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:602 msgid "`gvfs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:603 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1128 msgid "`intlhack`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:604 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1129 msgid "`intltool`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:605 msgid "`introspection`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:606 msgid "`libartlgpl2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:607 msgid "`libbonobo`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:608 msgid "`libbonoboui`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:609 msgid "`libgda5`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:610 msgid "`libgda5-ui`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:611 msgid "`libgdamm5`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:612 msgid "`libglade2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:613 msgid "`libgnome`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:614 msgid "`libgnomecanvas`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:615 msgid "`libgnomekbd`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:616 msgid "`libgnomeprint`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:617 msgid "`libgnomeprintui`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:618 msgid "`libgnomeui`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:619 msgid "`libgsf`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:620 msgid "`libgtkhtml`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:621 msgid "`libgtksourceviewmm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:622 msgid "`libidl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:623 msgid "`librsvg2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:624 msgid "`libsigc++12`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:625 msgid "`libsigc++20`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:626 msgid "`libwnck`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:627 msgid "`libwnck3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:628 msgid "`libxml++26`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:629 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1022 msgid "`libxml2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:630 msgid "`libxslt`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:631 msgid "`metacity`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:632 msgid "`nautilus3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:633 msgid "`orbit2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:634 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:851 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1033 msgid "`pango`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:635 msgid "`pangomm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:636 msgid "`pangox-compat`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:637 msgid "`py3gobject3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:638 msgid "`pygnome2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:639 msgid "`pygobject`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:640 msgid "`pygobject3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:641 msgid "`pygtk2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:642 msgid "`pygtksourceview`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:643 msgid "`referencehack`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:644 msgid "`vte`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:645 msgid "`vte3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:648 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1142 msgid "" "The default dependency is build- and run-time, it can be changed with `:" "build` or `:run`. For example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:653 #, no-wrap msgid "" "USES=\t\tgnome\n" "USE_GNOME=\tgnomemenus3:build intlhack\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:656 msgid "See crossref:special[using-gnome,Using GNOME] for more information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:658 #, no-wrap msgid "`go`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:663 msgid "" "Ports should not be created for Go libs, see crossref:special[go-libs,Go " "Libraries] for more information." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:666 msgid "" "Possible arguments: (none), `N.NN`, `N.NN-devel`, `modules`, `no_targets`, " "`run`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:673 msgid "" "Sets default values and targets used to build Go software. A build " "dependency on the Go compiler port is added, port maintainers can set " "version required. By default the build is performed in GOPATH mode. If Go " "software uses modules, the modules-aware mode can be switched on with " "`modules` argument. `no_targets` will setup build environment like " "`GO_ENV`, `GO_BUILDFLAGS` but skip creating extract and build targets. " "`run` will also add a run dependency on the Go compiler port." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:675 msgid "The build process is controlled by several variables:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:676 #, no-wrap msgid "`GO_MODULE`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:679 msgid "" "The name of the application module as specified by the `module` directive in " "`go.mod`. In most cases, this is the only required variable for ports that " "use Go modules." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:680 #, no-wrap msgid "`GO_PKGNAME`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:685 msgid "" "The name of the Go package when building in GOPATH mode. This is the " "directory that will be created in `${GOPATH}/src`. If not set explicitly " "and `GH_SUBDIR` or `GL_SUBDIR` is present, `GO_PKGNAME` will be inferred " "from it. It is not needed when building in modules-aware mode." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:686 #, no-wrap msgid "`GO_TARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:690 msgid "" "The packages to build. The default value is `${GO_PKGNAME}`. `GO_TARGET` " "can also be a tuple in the form `package:path` where path can be either a " "simple filename or a full path starting with `${PREFIX}`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:691 #, no-wrap msgid "`GO_TESTTARGET`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:694 msgid "" "The packages to test. The default value is `./...` (the current package and " "all subpackages)." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:695 #, no-wrap msgid "`CGO_CFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:697 msgid "Additional `CFLAGS` values to be passed to the C compiler by `go`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:698 #, no-wrap msgid "`CGO_LDFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:700 msgid "Additional `LDFLAGS` values to be passed to the C compiler by `go`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:701 #, no-wrap msgid "`GO_BUILDFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:703 msgid "Additional build arguments to be passed to `go build`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:704 #, no-wrap msgid "`GO_TESTFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:706 msgid "Additional build arguments to be passed to `go test`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:708 msgid "" "See crossref:special[using-go,Building Go Applications] for usage examples." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:710 #, no-wrap msgid "`gperf`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:715 msgid "" "Add a buildtime dependency on package:devel/gperf[] if `gperf` is not " "present in the base system." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:717 #, no-wrap msgid "`grantlee`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:720 msgid "Possible arguments: `5`, `selfbuild`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:724 msgid "" "Handle dependency on Grantlee. Specify `5` to depend on the Qt5 based " "version, package:devel/grantlee5[]. `selfbuild` is used internally by " "package:devel/grantlee5[] to get their versions numbers." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:726 #, no-wrap msgid "`groff`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:729 msgid "Possible arguments: `build`, `run`, `both`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:731 msgid "" "Registers a dependency on package:textproc/groff[] if not present in the " "base system." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:733 #, no-wrap msgid "`gssapi`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:736 msgid "" "Possible arguments: (none), `base` (default), `heimdal`, `mit`, `flags`, " "`bootstrap`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:741 msgid "" "Handle dependencies needed by consumers of the GSS-API. Only libraries that " "provide the Kerberos mechanism are available. By default, or set to `base`, " "the GSS-API library from the base system is used. Can also be set to " "`heimdal` to use package:security/heimdal[], or `mit` to use package:" "security/krb5[]." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:743 msgid "" "When the local Kerberos installation is not in `LOCALBASE`, set " "`HEIMDAL_HOME` (for `heimdal`) or `KRB5_HOME` (for `krb5`) to the location " "of the Kerberos installation." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:745 msgid "These variables are exported for the ports to use:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:747 msgid "`GSSAPIBASEDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:748 msgid "`GSSAPICPPFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:749 msgid "`GSSAPIINCDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:750 msgid "`GSSAPILDFLAGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:751 msgid "`GSSAPILIBDIR`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:752 msgid "`GSSAPILIBS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:753 msgid "`GSSAPI_CONFIGURE_ARGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:756 msgid "" "The `flags` option can be given alongside `base`, `heimdal`, or `mit` to " "automatically add `GSSAPICPPFLAGS`, `GSSAPILDFLAGS`, and `GSSAPILIBS` to " "`CFLAGS`, `LDFLAGS`, and `LDADD`, respectively. For example, use `base," "flags`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:759 msgid "" "The `bootstrap` option is a special prefix only for use by package:security/" "krb5[] and package:security/heimdal[]. For example, use `bootstrap,mit`." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:761 #, no-wrap msgid "Typical Use" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:768 #, no-wrap msgid "" "OPTIONS_SINGLE=\tGSSAPI\n" "OPTIONS_SINGLE_GSSAPI=\tGSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:776 #, no-wrap msgid "" "GSSAPI_BASE_USES=\tgssapi\n" "GSSAPI_BASE_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}\n" "GSSAPI_HEIMDAL_USES=\tgssapi:heimdal\n" "GSSAPI_HEIMDAL_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}\n" "GSSAPI_MIT_USES=\tgssapi:mit\n" "GSSAPI_MIT_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}\n" "GSSAPI_NONE_CONFIGURE_ON=\t--without-gssapi\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:781 #, no-wrap msgid "`gstreamer`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:788 msgid "" "Provides an easy way to depend on GStreamer components. The components " "should be listed in `USE_GSTREAMER`. The available components are:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:790 msgid "`a52dec`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:791 msgid "`aalib`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:792 msgid "`amrnb`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:793 msgid "`amrwbdec`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:794 msgid "`aom`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:795 msgid "`assrender`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:796 msgid "`bad`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:797 msgid "`bs2b`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:799 msgid "`cdio`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:800 msgid "`cdparanoia`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:801 msgid "`chromaprint`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:802 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:988 msgid "`curl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:803 msgid "`dash`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:804 msgid "`dtls`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:805 msgid "`dts`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:806 msgid "`dv`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:807 msgid "`dvd`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:808 msgid "`dvdread`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:809 msgid "`editing-services`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:810 msgid "`faac`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:811 msgid "`faad`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:812 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:995 msgid "`flac`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:813 msgid "`flite`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:816 msgid "`gme`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:817 msgid "`gnonlin`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:818 msgid "`good`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:819 msgid "`gsm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:820 msgid "`gtk4`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:821 msgid "`gtk`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:822 msgid "`hal`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:823 msgid "`hls`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:824 msgid "`jack`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:825 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1004 msgid "`jpeg`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:826 msgid "`kate`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:827 msgid "`kms`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:828 msgid "`ladspa`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:829 msgid "`lame`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:830 msgid "`libav`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:831 msgid "`libcaca`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:832 msgid "`libde265`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:833 msgid "`libmms`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:834 msgid "`libvisual`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:835 msgid "`lv2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:836 msgid "`mm`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:837 msgid "`modplug`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:838 msgid "`mpeg2dec`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:839 msgid "`mpeg2enc`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:840 msgid "`mpg123`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:841 msgid "`mplex`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:842 msgid "`musepack`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:843 msgid "`neon`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:844 msgid "`ogg`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:845 msgid "`opencv`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:846 msgid "`openexr`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:847 msgid "`openh264`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:848 msgid "`openjpeg`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:849 msgid "`openmpt`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:850 msgid "`opus`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:852 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1035 msgid "`png`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:853 msgid "`pulse`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:854 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1037 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1561 #, no-wrap msgid "`qt`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:855 msgid "`resindvd`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:856 msgid "`rsvg`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:857 msgid "`rtmp`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:858 msgid "`shout2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:859 msgid "`sidplay`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:860 msgid "`smoothstreaming`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:861 msgid "`sndfile`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:862 msgid "`sndio`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:863 msgid "`soundtouch`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:864 msgid "`soup`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:865 msgid "`spandsp`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:866 msgid "`speex`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:867 msgid "`srtp`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:868 msgid "`taglib`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:869 msgid "`theora`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:870 msgid "`ttml`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:871 msgid "`twolame`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:872 msgid "`ugly`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:873 msgid "`v4l2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:874 msgid "`vorbis`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:875 msgid "`vpx`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:876 msgid "`vulkan`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:877 msgid "`wavpack`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:878 msgid "`webp`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:879 msgid "`webrtcdsp`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:880 msgid "`x264`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:881 msgid "`x265`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:882 msgid "`x`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:883 msgid "`ximagesrc`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:884 msgid "`zbar`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:886 #, no-wrap msgid "`horde`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:893 msgid "" "Add buildtime and runtime dependencies on package:devel/pear-channel-" "horde[]. Other Horde dependencies can be added with `USE_HORDE_BUILD` and " "`USE_HORDE_RUN`. See crossref:special[php-horde,Horde Modules] for more " "information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:895 #, no-wrap msgid "`iconv`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:898 msgid "" "Possible arguments: (none), `lib`, `build`, `patch`, `translit`, `wchar_t`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:904 msgid "" "Uses `iconv` functions, either from the port package:converters/libiconv[] " "as a build-time and run-time dependency, or from the base system. By " "default, with no arguments or with the `lib` argument, implies `iconv` with " "build-time and run-time dependencies. `build` implies a build-time " "dependency, and `patch` implies a patch-time dependency. If the port uses " "the `WCHAR_T` or `//TRANSLIT` iconv extensions, add the relevant arguments " "so that the correct iconv is used. For more information see crossref:" "special[using-iconv,Using `iconv`]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:906 #, no-wrap msgid "`imake`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:909 msgid "Possible arguments: (none), `env`, `notall`, `noman`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:914 msgid "" "Add package:devel/imake[] as a build-time dependency and run `xmkmf -a` " "during the `configure` stage. If the `env` argument is given, the " "`configure` target is not set. If the `-a` flag is a problem for the port, " "add the `notall` argument. If `xmkmf` does not generate a `install.man` " "target, add the `noman` argument." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:916 #, no-wrap msgid "`kde`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:919 msgid "Possible arguments: `5`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:922 msgid "" "Add dependency on KDE components. See crossref:special[using-kde,Using KDE] " "for more information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:924 #, no-wrap msgid "`kmod`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:927 msgid "Possible arguments: (none), `debug`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:929 msgid "Fills in the boilerplate for kernel module ports, currently:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:931 msgid "Add `kld` to `CATEGORIES`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:932 msgid "Set `SSP_UNSAFE`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:933 msgid "Set `IGNORE` if the kernel sources are not found in `SRC_BASE`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:934 msgid "" "Define `KMODDIR` to [.filename]#/boot/modules# by default, add it to " "`PLIST_SUB` and `MAKE_ENV`, and create it upon installation. If `KMODDIR` is " "set to [.filename]#/boot/kernel#, it will be rewritten to [.filename]#/boot/" "modules#. This prevents breaking packages when upgrading the kernel due to [." "filename]#/boot/kernel# being renamed to [.filename]#/boot/kernel.old# in " "the process." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:935 msgid "" "Handle cross-referencing kernel modules upon installation and " "deinstallation, using crossref:plist[plist-keywords-kld,`@kld`]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:936 msgid "" "If the `debug` argument is given, the port can install a debug version of " "the module into [.filename]#KERN_DEBUGDIR#/[.filename]#KMODDIR#. By default, " "`KERN_DEBUGDIR` is copied from `DEBUGDIR` and set to [.filename]#/usr/lib/" "debug#. The framework will take care of creating and removing any required " "directories." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:938 #, no-wrap msgid "`lha`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:943 msgid "Set `EXTRACT_SUFX` to `.lzh`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:945 #, no-wrap msgid "`libarchive`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:951 msgid "" "Registers a dependency on package:archivers/libarchive[]. Any ports " "depending on libarchive must include `USES=libarchive`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:953 #, no-wrap msgid "`libedit`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:959 msgid "" "Registers a dependency on package:devel/libedit[]. Any ports depending on " "libedit must include `USES=libedit`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:961 #, no-wrap msgid "`libtool`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:964 msgid "Possible arguments: (none), `keepla`, `build`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:968 msgid "" "Patches `libtool` scripts. This must be added to all ports that use " "`libtool`. The `keepla` argument can be used to keep [.filename]#.la# " "files. Some ports do not ship with their own copy of libtool and need a " "build time dependency on package:devel/libtool[], use the `:build` argument " "to add such dependency." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:970 #, no-wrap msgid "`linux`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:973 msgid "Possible arguments: `c6`, `c7`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:977 msgid "" "Ports Linux compatibility framework. Specify `c6` to depend on CentOS 6 " "packags. Specify `c7` to depend on CentOS 7 packages. The available " "packages are:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:979 msgid "`allegro`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:980 msgid "`alsa-plugins-oss`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:981 msgid "`alsa-plugins-pulseaudio`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:982 msgid "`alsalib`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:984 msgid "`avahi-libs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:985 msgid "`base`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:987 msgid "`cups-libs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:989 msgid "`cyrus-sasl2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:990 msgid "`dbusglib`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:991 msgid "`dbuslibs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:992 msgid "`devtools`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:993 msgid "`dri`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:994 msgid "`expat`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:996 msgid "`fontconfig`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:998 msgid "`gnutls`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:999 msgid "`graphite2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1000 msgid "`gtk2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1001 msgid "`harfbuzz`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1002 msgid "`jasper`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1003 msgid "`jbigkit`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1005 msgid "`libasyncns`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1006 msgid "`libaudiofile`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1007 msgid "`libelf`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1008 msgid "`libgcrypt`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1009 msgid "`libgfortran`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1010 msgid "`libgpg-error`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1011 msgid "`libmng`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1012 msgid "`libogg`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1013 msgid "`libpciaccess`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1014 msgid "`libsndfile`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1015 msgid "`libsoup`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1016 msgid "`libssh2`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1017 msgid "`libtasn1`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1018 msgid "`libthai`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1019 msgid "`libtheora`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1020 msgid "`libv4l`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1021 msgid "`libvorbis`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1023 msgid "`mikmod`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1024 msgid "`naslibs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1025 msgid "`ncurses-base`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1026 msgid "`nspr`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1027 msgid "`nss`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1028 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1242 #, no-wrap msgid "`openal`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1029 msgid "`openal-soft`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1030 msgid "`openldap`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1031 msgid "`openmotif`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1032 msgid "`openssl`" msgstr "" #. type: Table #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1034 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2013 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2021 #, no-wrap msgid "`pixman`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1036 msgid "`pulseaudio-libs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1038 msgid "`qt-x11`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1039 msgid "`qtwebkit`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1040 msgid "`scimlibs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1041 msgid "`sdl12`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1042 msgid "`sdlimage`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1043 msgid "`sdlmixer`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1044 msgid "`sqlite3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1045 msgid "`tcl85`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1046 msgid "`tcp_wrappers-libs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1047 msgid "`tiff`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1048 msgid "`tk85`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1049 msgid "`ucl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1050 msgid "`xorglibs`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1052 #, no-wrap msgid "`localbase`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1055 msgid "Possible arguments: (none), `ldflags`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1060 msgid "" "Ensures that libraries from dependencies in `LOCALBASE` are used instead of " "the ones from the base system. Specify `ldflags` to add `-L${LOCALBASE}/" "lib` to `LDFLAGS` instead of `LIBS`. Ports that depend on libraries that " "are also present in the base system should use this. It is also used " "internally by a few other `USES`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1062 #, no-wrap msgid "`lua`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1065 msgid "" "Possible arguments: (none), `_XY_`, `_XY_+`, `-_XY_`, `_XY_-_ZA_`, `module`, " "`flavors`, `build`, `run`, `env`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1069 msgid "" "Adds a dependency on Lua. By default this is a library dependency, unless " "overridden by the `build` and/or `run` option. The `env` option prevents " "the addition of any dependency, while still defining all the usual variables." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1071 msgid "" "The default version is set by the usual `DEFAULT_VERSIONS` mechanism, unless " "a version or range of versions is specified as an argument, for example, " "`51` or `51-53`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1074 msgid "" "Applications using Lua are normally built for only a single Lua version. " "However, library modules intended to be loaded by Lua code should use the " "`module` option to build with multiple flavors." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1076 msgid "For more information see crossref:special[using-lua,Using Lua]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1078 #, no-wrap msgid "`lxqt`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1085 msgid "" "Handle dependencies for the LXQt Desktop Environment. Use `USE_LXQT` to " "select the components needed for the port. See crossref:special[using-lxqt," "Using LXQt] for more information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1087 #, no-wrap msgid "`magick`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1090 msgid "Possible arguments: (none), `_X_`, `build`, `nox11`, `run`, `test`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1095 msgid "" "Add a library dependency on `ImageMagick`. A specific version _X_ can be " "used. Possible versions are `6` and `7` (default). `nox11` indicates that " "the `-nox11` version of the port is required. `build`, `run` and `test` add " "build-, run-time and test dependencies on ImageMagick." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1097 #, no-wrap msgid "`makeinfo`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1102 msgid "" "Add a build-time dependency on `makeinfo` if it is not present in the base " "system." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1104 #, no-wrap msgid "`makeself`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1109 msgid "" "Indicates that the distribution files are makeself archives and sets the " "appropriate dependencies." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1111 #, no-wrap msgid "`mate`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1118 msgid "" "Provides an easy way to depend on MATE components. The components should be " "listed in `USE_MATE`. The available components are:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1120 msgid "`autogen`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1121 msgid "`caja`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1122 msgid "`common`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1123 msgid "`controlcenter`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1124 msgid "`desktop`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1125 msgid "`dialogs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1126 msgid "`docutils`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1127 msgid "`icontheme`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1130 msgid "`libmatekbd`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1131 msgid "`libmateweather`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1132 msgid "`marco`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1133 msgid "`menus`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1134 msgid "`notificationdaemon`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1135 msgid "`panel`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1136 msgid "`pluma`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1137 msgid "`polkit`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1138 msgid "`session`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1139 msgid "`settingsdaemon`" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1147 #, no-wrap msgid "" "USES=\t\tmate\n" "USE_MATE=\tmenus:build intlhack\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1150 #, no-wrap msgid "`meson`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1156 msgid "" "Provide support for Meson based projects. For more information see crossref:" "special[using-meson,Using `meson`]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1158 #, no-wrap msgid "`metaport`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1163 msgid "" "Sets the following variables to make it easier to create a metaport: " "`MASTER_SITES`, `DISTFILES`, `EXTRACT_ONLY`, `NO_BUILD`, `NO_INSTALL`, " "`NO_MTREE`, `NO_ARCH`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1165 #, no-wrap msgid "`minizip`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1168 msgid "Possible arguments: (none), `ng`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1170 msgid "" "Adds a library dependency on package:archivers/minizip[] or package:" "archivers/minizip-ng[] respectively." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1172 #, no-wrap msgid "`mysql`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1175 msgid "" "Possible arguments: (none), `_version_`, `client` (default), `server`, " "`embedded`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1184 msgid "" "Provide support for MySQL If no version is given, try to find the current " "installed version. Fall back to the default version, MySQL-5.6. The " "possible versions are `55`, `55m`, `55p`, `56`, `56p`, `56w`, `57`, `57p`, " "`80`, `100m`, `101m`, and `102m`. The `m` and `p` suffixes are for the " "MariaDB and Percona variants of MySQL. `server` and `embedded` add a build- " "and run-time dependency on the MySQL server. When using `server` or " "`embedded`, add `client` to also add a dependency on [." "filename]#libmysqlclient.so#. A port can set `IGNORE_WITH_MYSQL` if some " "versions are not supported." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1186 msgid "The framework sets `MYSQL_VER` to the detected MySQL version." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1188 #, no-wrap msgid "`mono`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1191 msgid "Possible arguments: (none), `nuget`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1193 msgid "" "Adds a dependency on the Mono (currently only C#) framework by setting the " "appropriate dependencies." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1197 msgid "" "Specify `nuget` when the port uses nuget packages. `NUGET_DEPENDS` needs to " "be set with the names and versions of the nuget packages in the format " "`_name_=_version_`. An optional package origin can be added using " "`_name_=_version_:_origin_`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1199 msgid "" "The helper target, `buildnuget`, will output the content of the " "`NUGET_DEPENDS` based on the provided [.filename]#packages.config#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1201 #, no-wrap msgid "`motif`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1210 msgid "" "Uses package:x11-toolkits/open-motif[] as a library dependency. End users " "can set `WANT_LESSTIF` in [.filename]#make.conf# to use package:x11-toolkits/" "lesstif[] as dependency instead of package:x11-toolkits/open-motif[]. " "Similarly setting `WANT_OPEN_MOTIF_DEVEL` in [.filename]#make.conf# will add " "a dependency on package:x11-toolkits/open-motif-devel[]" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1212 #, no-wrap msgid "`ncurses`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1215 msgid "Possible arguments: (none), `base`, `port`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1217 msgid "Uses ncurses, and causes some useful variables to be set." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1219 #, no-wrap msgid "`ninja`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1224 msgid "Uses ninja to build the port." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1226 #, no-wrap msgid "`nodejs`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1230 #, no-wrap msgid "" "Possible arguments: (none), `build`, `run`, `current`, `lts`, `10`, `14`, `16`,\n" " `17`.\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1233 msgid "" "Uses nodejs. Adds a dependency on package:www/node*[]. If a supported " "version is specified then `run` and/or `build` must be specified too." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1235 #, no-wrap msgid "`objc`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1240 msgid "" "Add objective C dependencies (compiler, runtime library) if the base system " "does not support it." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1245 msgid "Possible arguments: `al`, `soft` (default), `si`, `alut`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1250 msgid "" "Uses OpenAL. The backend can be specified, with the software implementation " "as the default. The user can specify a preferred backend with " "`WANT_OPENAL`. Valid values for this knob are `soft` (default) and `si`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1252 #, no-wrap msgid "`pathfix`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1259 msgid "" "Look for [.filename]#Makefile.in# and [.filename]#configure# in " "`PATHFIX_WRKSRC` (defaults to `WRKSRC`) and fix common paths to make sure " "they respect the FreeBSD hierarchy. For example, it fixes the installation " "directory of `pkgconfig`'s [.filename]#.pc# files to [.filename]#${PREFIX}/" "libdata/pkgconfig#. If the port uses `USES=autoreconf`, [." "filename]#Makefile.am# will be added to `PATHFIX_MAKEFILEIN` automatically." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1262 msgid "" "If the port <> it will look for [." "filename]#CMakeLists.txt# in `PATHFIX_WRKSRC`. If needed, that default " "filename can be changed with `PATHFIX_CMAKELISTSTXT`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1264 #, no-wrap msgid "`pear`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1267 msgid "Possible arguments: `env`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1272 msgid "" "Adds a dependency on package:devel/pear[]. It will setup default behavior " "for software using the PHP Extension and Application Repository. Using the " "`env` arguments only sets up the PEAR environment variables. See crossref:" "special[php-pear,PEAR Modules] for more information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1274 #, no-wrap msgid "`perl5`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1279 msgid "Depends on Perl. The configuration is done using `USE_PERL5`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1281 msgid "" "`USE_PERL5` can contain the phases in which to use Perl, can be `extract`, " "`patch`, `build`, `run`, or `test`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1284 msgid "" "`USE_PERL5` can also contain `configure`, `modbuild`, or `modbuildtiny` when " "[.filename]#Makefile.PL#, [.filename]#Build.PL#, or Module::Build::Tiny's " "flavor of [.filename]#Build.PL# is required." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1287 msgid "" "`USE_PERL5` defaults to `build run`. When using `configure`, `modbuild`, or " "`modbuildtiny`, `build` and `run` are implied." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1289 msgid "See crossref:special[using-perl,Using Perl] for more information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1291 #, no-wrap msgid "`pgsql`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1294 msgid "Possible arguments: (none), `_X.Y_`, `_X.Y_+`, `_X.Y_-`, `_X.Y_-_Z.A_`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1298 msgid "" "Provide support for PostgreSQL. Port maintainer can set version required. " "Minimum and maximum versions or a range can be specified; for example, `9.0-" "`, `8.4+`, `8.4-9.2.`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1303 msgid "" "By default, the added dependency will be the client, but if the port " "requires additional components, this can be done using " "`WANT_PGSQL=_component[:target]_`; for example, `WANT_PGSQL=server:configure " "pltcl plperl`. The available components are:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1305 msgid "`client`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1306 msgid "`contrib`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1307 msgid "`docs`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1308 msgid "`pgtcl`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1309 msgid "`plperl`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1310 msgid "`plpython`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1311 msgid "`pltcl`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1312 msgid "`server`" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1314 #, no-wrap msgid "`php`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1317 msgid "" "Possible arguments: (none), `phpize`, `ext`, `zend`, `build`, `cli`, `cgi`, " "`mod`, `web`, `embed`, `pecl`, `flavors`, `noflavors`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1320 msgid "" "Provide support for PHP. Add a runtime dependency on the default PHP " "version, package:lang/php56[]." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1321 #, no-wrap msgid "`phpize`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1324 msgid "Use to build a PHP extension. Enables flavors." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1325 #, no-wrap msgid "`ext`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1328 msgid "Use to build, install and register a PHP extension. Enables flavors." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1329 #, no-wrap msgid "`zend`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1332 msgid "Use to build, install and register a Zend extension. Enables flavors." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1333 #, no-wrap msgid "`build`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1335 msgid "Set PHP also as a build-time dependency." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1336 #, no-wrap msgid "`cli`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1338 msgid "Needs the CLI version of PHP." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1339 #, no-wrap msgid "`cgi`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1341 msgid "Needs the CGI version of PHP." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1342 #, no-wrap msgid "`mod`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1344 msgid "Needs the Apache module for PHP." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1345 #, no-wrap msgid "`web`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1347 msgid "Needs the Apache module or the CGI version of PHP." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1348 #, no-wrap msgid "`embed`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1350 msgid "Needs the embedded library version of PHP." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1351 #, no-wrap msgid "`pecl`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1354 msgid "" "Provide defaults for fetching PHP extensions from the PECL repository. " "Enables flavors." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1355 #, no-wrap msgid "`flavors`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1358 msgid "" "Enable automatic crossref:flavors[flavors-auto-php,PHP flavors] generation. " "Flavors will be generated for all PHP versions, except the ones present in " "<>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1359 #, no-wrap msgid "`noflavors`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1362 msgid "" "Disable automatic PHP flavors generation. _Must only_ be used with " "extensions provided by PHP itself." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1364 msgid "" "Variables are used to specify which PHP modules are required, as well as " "which version of PHP are supported." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1365 #, no-wrap msgid "`USE_PHP`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1369 msgid "" "The list of required PHP extensions at run-time. Add `:build` to the " "extension name to add a build-time dependency. Example: `pcre xml:build " "gettext`" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1371 #, no-wrap msgid "`IGNORE_WITH_PHP`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1374 msgid "" "The port does not work with PHP of the given version. For possible values " "look at the content of `_ALL_PHP_VERSIONS` in [.filename]#Mk/Uses/php.mk#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1376 msgid "" "When building a PHP or Zend extension with `:ext` or `:zend`, these " "variables can be set:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1377 #, no-wrap msgid "`PHP_MODNAME`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1380 msgid "The name of the PHP or Zend extension. Default value is `${PORTNAME}`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1381 #, no-wrap msgid "`PHP_HEADER_DIRS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1384 msgid "" "A list of subdirectories from which to install header files. The framework " "will always install the header files that are present in the same directory " "as the extension." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1385 #, no-wrap msgid "`PHP_MOD_PRIO`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1388 msgid "" "The priority at which to load the extension. It is a number between `00` " "and `99`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1393 msgid "" "For extensions that do not depend on any extension, the priority is " "automatically set to `20`, for extensions that depend on another extension, " "the priority is automatically set to `30`. Some extensions may need to be " "loaded before every other extension, for example package:www/php56-" "opcache[]. Some may need to be loaded after an extension with a priority of " "`30`. In that case, add `PHP_MOD_PRIO=_XX_` in the port's Makefile. For " "example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1399 #, no-wrap msgid "" "USES=\t\tphp:ext\n" "USE_PHP=\twddx\n" "PHP_MOD_PRIO=\t40\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1402 msgid "" "These variables are available to use in `PKGNAMEPREFIX` or `PKGNAMESUFFIX`:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1403 #, no-wrap msgid "`PHP_PKGNAMEPREFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1406 msgid "" "Contains `php_XY_-` where _XY_ is the current flavor's PHP version. Use " "with PHP extensions and modules." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1407 #, no-wrap msgid "`PHP_PKGNAMESUFFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1410 msgid "" "Contains `-php_XY_` where _XY_ is the current flavor's PHP version. Use " "with PHP applications." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1411 #, no-wrap msgid "`PECL_PKGNAMEPREFIX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1414 msgid "" "Contains `php_XY_-pecl-` where _XY_ is the current flavor's PHP version. " "Use with PECL modules." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1419 msgid "" "With flavors, all PHP extensions, PECL extensions, PEAR modules _must have_ " "a different package name, so they must all use one of these three variables " "in their `PKGNAMEPREFIX` or `PKGNAMESUFFIX`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1422 #, no-wrap msgid "`pkgconfig`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1425 msgid "Possible arguments: (none), `build` (default), `run`, `both`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1429 msgid "" "Uses package:devel/pkgconf[]. With no arguments or with the `build` " "argument, it implies `pkg-config` as a build-time dependency. `run` implies " "a run-time dependency and `both` implies both run-time and build-time " "dependencies." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1431 #, no-wrap msgid "`pure`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1434 msgid "Possible arguments: (none), `ffi`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1438 msgid "" "Uses package:lang/pure[]. Largely used for building related pure ports. " "With the `ffi` argument, it implies package:devel/pure-ffi[] as a run-time " "dependency." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1440 #, no-wrap msgid "`pyqt`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1443 msgid "Possible arguments: (none), `4`, `5`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1447 msgid "" "Uses PyQt. If the port is part of PyQT itself, set `PYQT_DIST`. Use " "`USE_PYQT` to select the components the port needs. The available " "components are:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1449 msgid "`core`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1450 msgid "`dbus`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1451 msgid "`dbussupport`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1452 msgid "`demo`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1453 msgid "`designer`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1454 msgid "`designerplugin`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1455 msgid "`doc`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1456 msgid "`gui`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1457 msgid "`multimedia`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1458 msgid "`network`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1460 msgid "`qscintilla2`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1461 msgid "`sip`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1462 msgid "`sql`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1463 msgid "`svg`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1464 msgid "`test`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1465 msgid "`webkit`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1466 msgid "`xml`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1467 msgid "`xmlpatterns`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1469 msgid "These components are only available with PyQT4:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1471 msgid "`assistant`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1472 msgid "`declarative`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1473 msgid "`help`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1474 msgid "`phonon`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1475 msgid "`script`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1476 msgid "`scripttools`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1478 msgid "These components are only available with PyQT5:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1480 msgid "`multimediawidgets`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1481 msgid "`printsupport`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1482 msgid "`qml`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1483 msgid "`serialport`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1484 msgid "`webkitwidgets`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1485 msgid "`widgets`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1487 msgid "" "The default dependency for each component is build- and run-time, to select " "only build or run, add `_build` or `_run` to the component name. For example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1492 #, no-wrap msgid "" "USES=\t\tpyqt\n" "USE_PYQT=\tcore doc_build designer_run\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1495 #, no-wrap msgid "`pytest`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1498 msgid "Possible arguments: (none), 4" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1505 msgid "" "Introduces a new dependency on package:devel/pytest[]. It defines a `do-" "test` target which will run the tests properly. Use the argument to depend " "on a specific package:devel/pytest[] version. For ports using package:devel/" "pytest[] consider using this instead of a specific `do-test` target. The " "framework exposes the following variables to the port:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1506 #, no-wrap msgid "`PYTEST_ARGS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1508 msgid "Additional arguments to pytest (defaults to empty)." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1509 #, no-wrap msgid "`PYTEST_IGNORED_TESTS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1512 msgid "" "lists of `pytest -k` patterns of tests to ignore (defaults to empty). For " "tests which are not expected to pass, such as ones requiring a database " "access." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1513 #, no-wrap msgid "`PYTEST_BROKEN_TESTS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1516 msgid "" "lists of `pytest -k` patterns of tests to ignore (defaults to empty). For " "broken tests which require fixing." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1518 msgid "In addition the following variables may be set by the user:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1519 #, no-wrap msgid "`PYTEST_ENABLE_IGNORED_TESTS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1521 msgid "Enable tests which are otherwise ignored by `PYTEST_IGNORED_TESTS`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1522 #, no-wrap msgid "`PYTEST_ENABLE_BROKEN_TESTS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1524 msgid "Enable tests which are otherwise ignored by `PYTEST_BROKEN_TESTS`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1525 #, no-wrap msgid "`PYTEST_ENABLE_ALL_TESTS`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1528 msgid "" "Enable tests which are otherwise ignored by `PYTEST_IGNORED_TESTS` and " "`PYTEST_BROKEN_TESTS`." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1531 #, no-wrap msgid "`python`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1534 msgid "" "Possible arguments: (none), `_X.Y_`, `_X.Y+_`, `_-X.Y_`, `_X.Y-Z.A_`, " "`patch`, `build`, `run`, `test`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1539 msgid "" "Uses Python. A supported version or version range can be specified. If " "Python is only needed at build time, run time or for the tests, it can be " "set as a build, run or test dependency with `build`, `run`, or `test`. If " "Python is also needed during the patch phase, use `patch`. See crossref:" "special[using-python, Using Python] for more information." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1542 msgid "" "`PYTHON_NO_DEPENDS=yes` can be used when the variables exported by the " "framework are needed but a dependency on Python is not. It can happen when " "using with <>, and the goal is only to " "fix the shebangs but not add a dependency on Python." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1544 #, no-wrap msgid "`qmail`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1547 msgid "Possible arguments: (none), `build`, `run`, `both`, `vars`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1552 msgid "" "Uses package:mail/qmail[]. With the `build` argument, it implies `qmail` as " "a build-time dependency. `run` implies a run-time dependency. Using no " "argument or the `both` argument implies both run-time and build-time " "dependencies. `vars` will only set QMAIL variables for the port to use." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1554 #, no-wrap msgid "`qmake`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1557 msgid "" "Possible arguments: (none), `norecursive`, `outsource`, `no_env`, " "`no_configure`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1559 msgid "" "Uses QMake for configuring. For more information see crossref:special[using-" "qmake,Using `qmake`]." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1564 msgid "Possible arguments: `5`, `6`, `no_env`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1568 msgid "" "Add dependency on Qt components. `no_env` is passed directly to `USES= " "qmake`. See crossref:special[using-qt,Using Qt] for more information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1570 #, no-wrap msgid "`qt-dist`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1573 #, no-wrap msgid "Possible arguments: (none) or `5` and (none) or `6` and (none) or one of `3d`, `5compat`, `base`, `charts`, `connectivity`, `datavis3d`, `declarative`, `doc` `languageserver`, `gamepad`, `graphicaleffects`, `imageformats`, `locat ion`, `lottie`, `multimedia`, `networkauth`, `positioning`, `quick3d`, `quickcontrols2`, `quickcontrols`, `quicktimeline`, `remoteobjects`, `script`, `scxml `, `sensors`, `serialbus`, `serialport`, `shadertools`, `speech`, `svg`, `tools`, `translations`, `virtualkeyboard`, `wayland`, `webchannel`, `webengine`, `webglplugin`, `websockets`, `webview`, `x11extras`, `xmlpatterns`.\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1576 msgid "" "Provides support for building Qt 5 and Qt 6 components. It takes care of " "setting up the appropriate configuration environment for the port to build." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1578 #, no-wrap msgid "Building Qt 5 Components" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1582 msgid "" "The port is Qt 5's `networkauth` component, which is part of the " "`networkauth` distribution file." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1587 #, no-wrap msgid "" "PORTNAME=\tnetworkauth\n" "DISTVERSION=\t${QT5_VERSION}\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1589 #, no-wrap msgid "USES=\t\tqt-dist:5\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1595 #, no-wrap msgid "Building Qt 6 Components" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1599 msgid "" "The port is Qt 6's `websockets` component, which is part of the `websockets` " "distribution file." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1604 #, no-wrap msgid "" "PORTNAME= websockets\n" "PORTVERSION= ${QT6_VERSION}\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1606 #, no-wrap msgid "USES= qt-dist:6\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1611 msgid "" "If `PORTNAME` does not match the component name, it can be passed as an " "argument to `qt-dist`." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1613 #, no-wrap msgid "Building Qt 5 Components with Different Names" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1617 msgid "" "The port is Qt 5's `gui` component, which is part of the `base` distribution " "file." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1622 #, no-wrap msgid "" "PORTNAME=\tgui\n" "DISTVERSION=\t${QT5_VERSION}\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1624 #, no-wrap msgid "USES=\t\tqt-dist:5,base\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1629 #, no-wrap msgid "`readline`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1632 msgid "Possible arguments: (none), `port`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1635 msgid "" "Uses readline as a library dependency, and sets `CPPFLAGS` and `LDFLAGS` as " "necessary. If the `port` argument is used or if readline is not present in " "the base system, add a dependency on package:devel/readline[]" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1637 #, no-wrap msgid "`samba`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1640 msgid "Possible arguments: `build`, `env`, `lib`, `run`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1645 msgid "" "Handle dependency on Samba. `env` will not add any dependency and only set " "up the variables. `build` and `run` will add build-time and run-time " "dependency on [.filename]#smbd#. `lib` will add a dependency on [." "filename]#libsmbclient.so#. The variables that are exported are:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1646 #, no-wrap msgid "`SAMBAPORT`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1648 msgid "The origin of the default Samba port." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1649 #, no-wrap msgid "`SAMBAINCLUDES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1651 msgid "The location of the Samba header files." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1652 #, no-wrap msgid "`SAMBALIBS`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1654 msgid "The directory where the Samba shared libraries are available." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1656 #, no-wrap msgid "`scons`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1662 msgid "" "Provide support for the use of package:devel/scons[]. See crossref:" "special[using-scons,Using `scons`] for more information." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1664 #, no-wrap msgid "`shared-mime-info`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1671 msgid "" "Uses update-mime-database from package:misc/shared-mime-info[]. This uses " "will automatically add a post-install step in such a way that the port " "itself still can specify there own post-install step if needed. It also add " "an crossref:plist[plist-keywords-shared-mime-info,`@shared-mime-info`] entry " "to the plist." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1673 #, no-wrap msgid "`shebangfix`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1679 msgid "" "A lot of software uses incorrect locations for script interpreters, most " "notably [.filename]#/usr/bin/perl# and [.filename]#/bin/bash#. The " "shebangfix macro fixes shebang lines in scripts listed in `SHEBANG_REGEX`, " "`SHEBANG_GLOB`, or `SHEBANG_FILES`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1680 #, no-wrap msgid "`SHEBANG_REGEX`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1683 msgid "" "Contains _one_ extended regular expressions, and is used with the `-iregex` " "argument of man:find[1]. See <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1684 #, no-wrap msgid "`SHEBANG_GLOB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1687 msgid "" "Contains a list of patterns used with the `-name` argument of man:find[1]. " "See <>." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1688 #, no-wrap msgid "`SHEBANG_FILES`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1693 msgid "" "Contains a list of files or man:sh[1] globs. The shebangfix macro is run " "from `${WRKSRC}`, so `SHEBANG_FILES` can contain paths that are relative to `" "${WRKSRC}`. It can also deal with absolute paths if files outside of `" "${WRKSRC}` require patching. See <>." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1695 msgid "" "Currently Bash, Java, Ksh, Lua, Perl, PHP, Python, Ruby, Tcl, and Tk are " "supported by default." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1697 msgid "There are three configuration variables:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1698 #, no-wrap msgid "`SHEBANG_LANG`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1700 msgid "The list of supported interpreters." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1701 #, no-wrap msgid "`_interp__CMD`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1704 msgid "" "The path to the command interpreter on FreeBSD. The default value is `" "${LOCALBASE}/bin/_interp_`." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1705 #, no-wrap msgid "`_interp__OLD_CMD`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1709 msgid "" "The list of wrong invocations of interpreters. These are typically obsolete " "paths, or paths used on other operating systems that are incorrect on " "FreeBSD. They will be replaced by the correct path in `_interp__CMD`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1713 msgid "" "These will _always_ be part of `_interp__OLD_CMD`: `\"/usr/bin/env _interp_" "\" /bin/_interp_ /usr/bin/_interp_ /usr/local/bin/_interp_`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1720 msgid "" "`_interp__OLD_CMD` contain multiple values. Any entry with spaces must be " "quoted. See <>." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1726 msgid "" "The fixing of shebangs is done during the `patch` phase. If scripts are " "created with incorrect shebangs during the `build` phase, the build process " "(for example, the [.filename]#configure# script, or the [." "filename]#Makefiles#) must be patched or given the right path (for example, " "with `CONFIGURE_ENV`, `CONFIGURE_ARGS`, `MAKE_ENV`, or `MAKE_ARGS`) to " "generate the right shebangs." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1728 msgid "" "Correct paths for supported interpreters are available in `_interp__CMD`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1733 msgid "" "When used with <>, and the aim is only to fix the " "shebangs but a dependency on Python itself is not wanted, use " "`PYTHON_NO_DEPENDS=yes`." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1736 #, no-wrap msgid "Adding Another Interpreter to `USES=shebangfix`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1741 msgid "To add another interpreter, set `SHEBANG_LANG`. For example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1745 #, no-wrap msgid "SHEBANG_LANG=\tlua\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1750 #, no-wrap msgid "Specifying all the Paths When Adding an Interpreter to `USES=shebangfix`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1754 msgid "" "If it was not already defined, and there were no default values for " "`_interp__OLD_CMD` and `_interp__CMD` the Ksh entry could be defined as:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1760 #, no-wrap msgid "" "SHEBANG_LANG=\tksh\n" "ksh_OLD_CMD=\t\"/usr/bin/env ksh\" /bin/ksh /usr/bin/ksh\n" "ksh_CMD=\t${LOCALBASE}/bin/ksh\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1765 #, no-wrap msgid "Adding a Strange Location for an Interpreter" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1771 msgid "" "Some software uses strange locations for an interpreter. For example, an " "application might expect Python to be located in [.filename]#/opt/bin/" "python2.7#. The strange path to be replaced can be declared in the port [." "filename]#Makefile#:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1775 #, no-wrap msgid "python_OLD_CMD=\t/opt/bin/python2.7\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1780 #, no-wrap msgid "`USES=shebangfix` with `SHEBANG_REGEX`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1784 msgid "" "To fix all the files in `${WRKSRC}/scripts` ending in [.filename]#.pl#, [." "filename]#.sh#, or [.filename]#.cgi# do:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1789 #, no-wrap msgid "" "USES=\tshebangfix\n" "SHEBANG_REGEX=\t./scripts/.*\\.(sh|pl|cgi)\n" msgstr "" #. type: delimited block = 6 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1795 msgid "" "`SHEBANG_REGEX` is used by running `find -E`, which uses modern regular " "expressions also known as extended regular expressions. See man:" "re_format[7] for more information." msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1800 #, no-wrap msgid "`USES=shebangfix` with `SHEBANG_GLOB`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1804 msgid "" "To fix all the files in `${WRKSRC}` ending in [.filename]#.pl# or [." "filename]#.sh#, do:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1809 #, no-wrap msgid "" "USES=\tshebangfix\n" "SHEBANG_GLOB=\t*.sh *.pl\n" msgstr "" #. type: Block title #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1814 #, no-wrap msgid "`USES=shebangfix` with `SHEBANG_FILES`" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1818 msgid "" "To fix the files [.filename]#script/foobar.pl# and [.filename]#script/*.sh# " "in `${WRKSRC}`, do:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1823 #, no-wrap msgid "" "USES=\tshebangfix\n" "SHEBANG_FILES=\tscripts/foobar.pl scripts/*.sh\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1828 #, no-wrap msgid "`sqlite`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1831 msgid "Possible arguments: (none), `2`, `3`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1834 msgid "" "Add a dependency on SQLite. The default version used is 3, but version 2 is " "also possible using the `:2` modifier." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1836 #, no-wrap msgid "`ssl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1839 msgid "Possible arguments: (none), `build`, `run`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1843 msgid "" "Provide support for OpenSSL. A build- or run-time only dependency can be " "specified using `build` or `run`. These variables are available for the " "port's use, they are also added to `MAKE_ENV`:" msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1844 #, no-wrap msgid "`OPENSSLBASE`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1846 msgid "Path to the OpenSSL installation base." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1847 #, no-wrap msgid "`OPENSSLDIR`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1849 msgid "Path to OpenSSL's configuration files." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1850 #, no-wrap msgid "`OPENSSLLIB`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1852 msgid "Path to the OpenSSL libraries." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1853 #, no-wrap msgid "`OPENSSLINC`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1855 msgid "Path to the OpenSSL includes." msgstr "" #. type: Labeled list #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1856 #, no-wrap msgid "`OPENSSLRPATH`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1858 msgid "" "If defined, the path the linker needs to use to find the OpenSSL libraries." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1862 msgid "" "If a port does not build with an OpenSSL flavor, set the `BROKEN_SSL` " "variable, and possibly the `BROKEN_SSL_REASON__flavor_`:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1867 #, no-wrap msgid "" "BROKEN_SSL=\tlibressl\n" "BROKEN_SSL_REASON_libressl=\tneeds features only available in OpenSSL\n" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1872 #, no-wrap msgid "`tar`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1876 msgid "" "Possible arguments: (none), `Z`, `bz2`, `bzip2`, `lzma`, `tbz`, `tbz2`, " "`tgz`, `txz`, `xz`, `zst`, `zstd`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1879 msgid "" "Set `EXTRACT_SUFX` to `.tar`, `.tar.Z`, `.tar.bz2`, `.tar.bz2`, `.tar.lzma`, " "`.tbz`, `.tbz2`, `.tgz`, `.txz`, `.tar.xz`, `.tar.zst` or `.tar.zstd` " "respectively." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1881 #, no-wrap msgid "`tcl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1884 msgid "Possible arguments: _version_, `wrapper`, `build`, `run`, `tea`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1891 msgid "" "Add a dependency on Tcl. A specific version can be requested using " "_version_. The version can be empty, one or more exact version numbers " "(currently `84`, `85`, or `86`), or a minimal version number (currently " "`84+`, `85+` or `86+`). To only request a non version specific wrapper, use " "`wrapper`. A build- or run-time only dependency can be specified using " "`build` or `run`. To build the port using the Tcl Extension Architecture, " "use `tea`. After including [.filename]#bsd.port.pre.mk# the port can " "inspect the results using these variables:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1893 msgid "`TCL_VER`: chosen major.minor version of Tcl" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1894 msgid "`TCLSH`: full path of the Tcl interpreter" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1895 msgid "`TCL_LIBDIR`: path of the Tcl libraries" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1896 msgid "`TCL_INCLUDEDIR`: path of the Tcl C header files" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1897 msgid "`TK_VER`: chosen major.minor version of Tk" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1898 msgid "`WISH`: full path of the Tk interpreter" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1899 msgid "`TK_LIBDIR`: path of the Tk libraries" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1900 msgid "`TK_INCLUDEDIR`: path of the Tk C header files" msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1902 #, no-wrap msgid "`terminfo`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1908 msgid "" "Adds crossref:plist[plist-keywords-terminfo,`@terminfo`] to the [." "filename]#plist#. Use when the port installs [.filename]#*.terminfo# files " "in [.filename]#${PREFIX}/share/misc#." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1910 #, no-wrap msgid "`tk`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1913 msgid "Same as arguments for `tcl`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1916 msgid "" "Small wrapper when using both Tcl and Tk. The same variables are returned " "as when using Tcl." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1918 #, no-wrap msgid "`uidfix`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1924 msgid "" "Changes some default behavior (mostly variables) of the build system to " "allow installing this port as a normal user. Try this in the port before " "using <> or patching." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1926 #, no-wrap msgid "`uniquefiles`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1929 msgid "Possible arguments: (none), `dirs`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1933 msgid "" "Make files or directories 'unique', by adding a prefix or suffix. If the " "`dirs` argument is used, the port needs a prefix (and only a prefix) based " "on `UNIQUE_PREFIX` for standard directories `DOCSDIR`, `EXAMPLESDIR`, " "`DATADIR`, `WWWDIR`, `ETCDIR`. These variables are available for ports:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1935 msgid "" "`UNIQUE_PREFIX`: The prefix to be used for directories and files. Default: `" "${PKGNAMEPREFIX}`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1936 msgid "" "`UNIQUE_PREFIX_FILES`: A list of files that need to be prefixed. Default: " "empty." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1937 msgid "" "`UNIQUE_SUFFIX`: The suffix to be used for files. Default: `${PKGNAMESUFFIX}" "`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1938 msgid "" "`UNIQUE_SUFFIX_FILES`: A list of files that need to be suffixed. Default: " "empty." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1940 #, no-wrap -msgid "`varnish`" +msgid "`vala`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1943 -msgid "Possible arguments: `4` (default), `6`, `7`" +msgid "Possible arguments: `build`, `lib`, `no_depend`" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/uses/_index.adoc:1946 msgid "" +"Adds build or library dependencies on package:lang/vala[]. The `no_depend` " +"argument is reserved for package:lang/vala[] itself." +msgstr "" + +#. type: Title == +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1948 +#, no-wrap +msgid "`varnish`" +msgstr "" + +#. type: delimited block = 4 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1951 +msgid "Possible arguments: `4` (default), `6`, `7`" +msgstr "" + +#. type: delimited block = 4 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1954 +msgid "" "Handle dependencies on Varnish Cache. Adds a dependency on package:www/" "varnish*[]." msgstr "" #. type: Title == -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1948 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1956 #, no-wrap msgid "`webplugin`" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1951 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1959 msgid "Possible arguments: (none), `ARGS`" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1954 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1962 msgid "" "Automatically create and remove symbolic links for each application that " "supports the webplugin framework. `ARGS` can be one of:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1956 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1964 msgid "`gecko`: support plug-ins based on Gecko" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1957 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1965 msgid "`native`: support plug-ins for Gecko, Opera, and WebKit-GTK" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1958 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1966 msgid "`linux`: support Linux plug-ins" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1959 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1967 msgid "`all` (default, implicit): support all plug-in types" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1960 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1968 msgid "(individual entries): support only the browsers listed" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1962 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1970 msgid "These variables can be adjusted:" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1964 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1972 msgid "" "`WEBPLUGIN_FILES`: No default, must be set manually. The plug-in files to " "install." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1965 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1973 msgid "" "`WEBPLUGIN_DIR`: The directory to install the plug-in files to, default [." "filename]#PREFIX/lib/browser_plugins/WEBPLUGIN_NAME#. Set this if the port " "installs plug-in files outside of the default directory to prevent broken " "symbolic links." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1966 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1974 msgid "" "`WEBPLUGIN_NAME`: The final directory to install the plug-in files into, " "default `PKGBASE`." msgstr "" #. type: Title == -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1968 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1976 #, no-wrap msgid "`xfce`" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1971 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1979 msgid "Possible arguments: (none), `gtk2`" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1974 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1982 msgid "" "Provide support for Xfce related ports. See crossref:special[using-xfce," "Using Xfce] for details." msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1977 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1985 msgid "" "The `gtk2` argument specifies that the port requires GTK2 support. It adds " "additional features provided by some core components, for example, package:" "x11/libxfce4menu[] and package:x11-wm/xfce4-panel[]." msgstr "" #. type: Title == -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1979 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1987 #, no-wrap msgid "`xorg`" msgstr "" #. type: delimited block = 4 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1986 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1994 msgid "" "Provides an easy way to depend on X.org components. The components should " "be listed in `USE_XORG`. The available components are:" msgstr "" #. type: Block title -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1988 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1996 #, no-wrap msgid "Available X.Org Components" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1992 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2000 #, no-wrap msgid "Name" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1994 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2002 #, no-wrap msgid "Description" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1995 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2003 #, no-wrap msgid "`dmx`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1997 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2005 #, no-wrap msgid "DMX extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1998 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2006 #, no-wrap msgid "`fontenc`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2000 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2008 #, no-wrap msgid "The fontenc Library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2001 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2009 #, no-wrap msgid "`fontutil`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2003 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2011 #, no-wrap msgid "Create an index of X font files in a directory" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2004 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2012 #, no-wrap msgid "`ice`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2006 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2014 #, no-wrap msgid "Inter Client Exchange library for X11" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2007 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2015 #, no-wrap msgid "`libfs`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2009 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2017 #, no-wrap msgid "The FS library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2010 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2018 #, no-wrap msgid "`pciaccess`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2012 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2020 #, no-wrap msgid "Generic PCI access library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2015 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2023 #, no-wrap msgid "Low-level pixel manipulation library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2016 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2024 #, no-wrap msgid "`sm`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2018 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2026 #, no-wrap msgid "Session Management library for X11" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2019 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2027 #, no-wrap msgid "`x11`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2021 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2029 #, no-wrap msgid "X11 library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2022 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2030 #, no-wrap msgid "`xau`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2024 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2032 #, no-wrap msgid "Authentication Protocol library for X11" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2025 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2033 #, no-wrap msgid "`xaw`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2027 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2030 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2033 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2035 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2038 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2041 #, no-wrap msgid "X Athena Widgets library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2028 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2036 #, no-wrap msgid "`xaw6`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2031 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2039 #, no-wrap msgid "`xaw7`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2034 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2042 #, no-wrap msgid "`xbitmaps`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2036 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2044 #, no-wrap msgid "X.Org bitmaps data" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2037 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2045 #, no-wrap msgid "`xcb`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2039 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2047 #, no-wrap msgid "The X protocol C-language Binding (XCB) library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2040 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2048 #, no-wrap msgid "`xcomposite`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2042 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2050 #, no-wrap msgid "X Composite extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2043 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2051 #, no-wrap msgid "`xcursor`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2045 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2053 #, no-wrap msgid "X client-side cursor loading library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2046 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2054 #, no-wrap msgid "`xdamage`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2048 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2056 #, no-wrap msgid "X Damage extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2049 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2057 #, no-wrap msgid "`xdmcp`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2051 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2059 #, no-wrap msgid "X Display Manager Control Protocol library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2052 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2060 #, no-wrap msgid "`xext`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2054 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2062 #, no-wrap msgid "X11 Extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2055 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2063 #, no-wrap msgid "`xfixes`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2057 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2065 #, no-wrap msgid "X Fixes extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2058 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2066 #, no-wrap msgid "`xfont`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2060 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2063 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2068 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2071 #, no-wrap msgid "X font library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2061 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2069 #, no-wrap msgid "`xfont2`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2064 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2072 #, no-wrap msgid "`xft`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2066 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2074 #, no-wrap msgid "Client-sided font API for X applications" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2067 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2075 #, no-wrap msgid "`xi`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2069 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2077 #, no-wrap msgid "X Input extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2070 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2078 #, no-wrap msgid "`xinerama`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2072 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2080 #, no-wrap msgid "X11 Xinerama library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2073 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2081 #, no-wrap msgid "`xkbfile`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2075 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2083 #, no-wrap msgid "XKB file library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2076 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2084 #, no-wrap msgid "`xmu`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2078 -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2081 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2086 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2089 #, no-wrap msgid "X Miscellaneous Utilities libraries" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2079 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2087 #, no-wrap msgid "`xmuu`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2082 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2090 #, no-wrap msgid "`xorg-macros`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2084 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2092 #, no-wrap msgid "X.Org development aclocal macros" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2085 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2093 #, no-wrap msgid "`xorg-server`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2087 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2095 #, no-wrap msgid "X.Org X server and related programs" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2088 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2096 #, no-wrap msgid "`xorgproto`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2090 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2098 #, no-wrap msgid "xorg protocol headers" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2091 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2099 #, no-wrap msgid "`xpm`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2093 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2101 #, no-wrap msgid "X Pixmap library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2094 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2102 #, no-wrap msgid "`xpresent`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2096 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2104 #, no-wrap msgid "X Present Extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2097 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2105 #, no-wrap msgid "`xrandr`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2099 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2107 #, no-wrap msgid "X Resize and Rotate extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2100 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2108 #, no-wrap msgid "`xrender`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2102 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2110 #, no-wrap msgid "X Render extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2103 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2111 #, no-wrap msgid "`xres`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2105 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2113 #, no-wrap msgid "X Resource usage library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2106 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2114 #, no-wrap msgid "`xscrnsaver`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2108 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2116 #, no-wrap msgid "The XScrnSaver library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2109 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2117 #, no-wrap msgid "`xshmfence`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2111 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2119 #, no-wrap msgid "Shared memory 'SyncFence' synchronization primitive" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2112 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2120 #, no-wrap msgid "`xt`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2114 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2122 #, no-wrap msgid "X Toolkit library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2115 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2123 #, no-wrap msgid "`xtrans`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2117 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2125 #, no-wrap msgid "Abstract network code for X" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2118 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2126 #, no-wrap msgid "`xtst`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2120 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2128 #, no-wrap msgid "X Test extension" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2121 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2129 #, no-wrap msgid "`xv`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2123 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2131 #, no-wrap msgid "X Video Extension library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2124 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2132 #, no-wrap msgid "`xvmc`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2126 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2134 #, no-wrap msgid "X Video Extension Motion Compensation library" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2127 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2135 #, no-wrap msgid "`xxf86dga`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2129 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2137 #, no-wrap msgid "X DGA Extension" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2130 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2138 #, no-wrap msgid "`xxf86vm`" msgstr "" #. type: Table -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2131 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2139 #, no-wrap msgid "X Vidmode Extension" msgstr "" #. type: Title == -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2134 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2142 #, no-wrap msgid "`xorg-cat`" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2137 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2145 msgid "" "Possible arguments: `app`, `data`, `doc`, `driver`, `font`, `lib`, `proto`, " "`util`, `xserver` and (none) or one off `autotools` (default), `meson`" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2141 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2149 msgid "" "Provide support for building Xorg components. It takes care of setting up " "common dependencies and an appropriate configuration environment needed. " "This is intended only for Xorg components." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2143 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2151 msgid "The category has to match upstream categories." msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2146 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2154 msgid "" "The second argument is the build system to use. autotools is the default, " "but meson is also supported." msgstr "" #. type: Title == -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2148 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2156 #, no-wrap msgid "`zip`" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2151 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2159 msgid "Possible arguments: (none), `infozip`" msgstr "" #. type: Plain text -#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2153 +#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2161 msgid "" "Indicates that the distribution files use the ZIP compression algorithm. " "For files using the InfoZip algorithm the `infozip` argument must be passed " "to set the appropriate dependencies." msgstr ""