Page MenuHomeFreeBSD

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/documentation/content/en/articles/committers-guide/_index.po b/documentation/content/en/articles/committers-guide/_index.po
index b0c44503ce..e1d331ec20 100644
--- a/documentation/content/en/articles/committers-guide/_index.po
+++ b/documentation/content/en/articles/committers-guide/_index.po
@@ -1,8472 +1,8413 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 <<non-committers>> "
"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 <<smtp-setup>>)."
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`"
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`"
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`"
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 `freefall.FreeBSD.org`.)"
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/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 <<ssh.guide>>."
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"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <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 <notreal@example.com>\"\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 (2022-10)."
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: https://"
"world.std.com/~reinhold/diceware.html[], https://www.iusmentis.com/security/"
"passphrasefaq/[], https://xkcd.com/936/[], https://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 <<commit-steps, Steps for New "
"Committers>>."
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 manual 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:342
#, no-wrap
msgid "Daily use"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:345
msgid "Clone the repository:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:349
#, 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:352
msgid "Then you should have the official mirrors as your remote:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:358
#, 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:361
msgid "Configure the FreeBSD committer data:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:364
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:371
#, 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:374
msgid "Set the push URL:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:378
#, 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:381
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:387
#, 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:390
msgid ""
"Again, note that `gitrepo.freebsd.org` has been canonicalized to `repo."
"freebsd.org`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:392
msgid "Install commit message template hook:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:397
#, 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:400
#, no-wrap
msgid "\"admin\" branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:403
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:405
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:411
#, 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:413
msgid "Alternatively, you can add a worktree for the `admin` branch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:417
#, 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:421
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:423
msgid "For pushing, either specify the full refspec:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:427
#, no-wrap
msgid "git push freebsd HEAD:refs/internal/admin\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:429
#, no-wrap
msgid "Keeping Current With The FreeBSD src Tree"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:436
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:437
#, no-wrap
-msgid "Branch names"
+msgid "Branch Names"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:444
+#: documentation/content/en/articles/committers-guide/_index.adoc:439
+msgid "FreeBSD-CURRENT uses the `main` branch."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:441
+msgid "`main` is the default branch."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:443
+msgid "For FreeBSD-STABLE, branch names include `stable/12` and `stable/13`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:445
+msgid ""
+"For FreeBSD-RELEASE, release engineering branch names include `releng/12.4` "
+"and `releng/13.2`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:447
+msgid "https://www.freebsd.org/releng/[] shows:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:449
+msgid "`main` and `stable/⋯` branches open"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:450
+msgid "`releng/⋯` branches, each of which is frozen when a release is tagged."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:452
+msgid "Examples:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:454
+msgid ""
+"tag https://cgit.freebsd.org/src/tag/?h=release/13.1.0[release/13.1.0] on "
+"the https://cgit.freebsd.org/src/log/?h=releng/13.1[releng/13.1] branch"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:455
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."
+"tag https://cgit.freebsd.org/src/tag/?h=release/13.2.0[release/13.2.0] on "
+"the https://cgit.freebsd.org/src/log/?h=releng/13.2[releng/13.2] branch."
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:445
+#: documentation/content/en/articles/committers-guide/_index.adoc:456
#, no-wrap
msgid "Repositories"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:448
+#: documentation/content/en/articles/committers-guide/_index.adoc:459
msgid ""
"Please see the <<admin,Administrative Details>> 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:451
+#: documentation/content/en/articles/committers-guide/_index.adoc:462
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:452
+#: documentation/content/en/articles/committers-guide/_index.adoc:463
#, no-wrap
msgid "Deep Clone"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:456
+#: documentation/content/en/articles/committers-guide/_index.adoc:467
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:459
+#: documentation/content/en/articles/committers-guide/_index.adoc:470
#, no-wrap
-msgid "% git clone -o freebsd $URL -b branch [dir]\n"
+msgid "% git clone -o freebsd $URL -b branch [<directory>]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:464
+#: documentation/content/en/articles/committers-guide/_index.adoc:475
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))."
+"will create a deep clone. `branch` should be one of the branches listed in "
+"the previous section. If no `branch` is given: the default (`main`) will be "
+"used. If no `<directory>` is given: the name of the new directory will "
+"match the name of the repo ([.filename]#doc#, [.filename]#ports# or [."
+"filename]#src#)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:469
+#: documentation/content/en/articles/committers-guide/_index.adoc:480
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:470
+#: documentation/content/en/articles/committers-guide/_index.adoc:481
#, no-wrap
msgid "Shallow Clone"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:476
+#: documentation/content/en/articles/committers-guide/_index.adoc:487
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:480
+#: documentation/content/en/articles/committers-guide/_index.adoc:491
#, 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:485
+#: documentation/content/en/articles/committers-guide/_index.adoc:496
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."
+"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:490
+#: documentation/content/en/articles/committers-guide/_index.adoc:501
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:492
+#: documentation/content/en/articles/committers-guide/_index.adoc:503
#, no-wrap
msgid "Building"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:496
+#: documentation/content/en/articles/committers-guide/_index.adoc:507
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:503
+#: documentation/content/en/articles/committers-guide/_index.adoc:514
#, 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:505
+#: documentation/content/en/articles/committers-guide/_index.adoc:516
msgid "so that won't be covered in depth here."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:508
+#: documentation/content/en/articles/committers-guide/_index.adoc:519
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:509
+#: documentation/content/en/articles/committers-guide/_index.adoc:520
#, no-wrap
msgid "Updating"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:513
+#: documentation/content/en/articles/committers-guide/_index.adoc:524
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:516
+#: documentation/content/en/articles/committers-guide/_index.adoc:527
#, no-wrap
msgid "% git pull --ff-only\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:521
+#: documentation/content/en/articles/committers-guide/_index.adoc:532
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."
+"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:524
+#: documentation/content/en/articles/committers-guide/_index.adoc:535
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 "
+"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:525
+#: documentation/content/en/articles/committers-guide/_index.adoc:536
#, no-wrap
msgid "Selecting a Specific Version"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:529
+#: documentation/content/en/articles/committers-guide/_index.adoc:540
msgid ""
-"In Git, the 'git checkout' checks out both branches and specific versions. "
+"In Git, `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:531
+#: documentation/content/en/articles/committers-guide/_index.adoc:542
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:534
+#: documentation/content/en/articles/committers-guide/_index.adoc:545
#, no-wrap
msgid "% git checkout 08b8197a74\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:537
+#: documentation/content/en/articles/committers-guide/_index.adoc:548
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:540
+#: documentation/content/en/articles/committers-guide/_index.adoc:551
#, no-wrap
msgid "Note: checking out '08b8197a742a96964d2924391bf9fdfeb788865d'.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:544
+#: documentation/content/en/articles/committers-guide/_index.adoc:555
#, 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:547
+#: documentation/content/en/articles/committers-guide/_index.adoc:558
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:549
-#: documentation/content/en/articles/committers-guide/_index.adoc:1697
+#: documentation/content/en/articles/committers-guide/_index.adoc:560
+#: documentation/content/en/articles/committers-guide/_index.adoc:1668
#, no-wrap
msgid " git checkout -b <new-branch-name>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:551
+#: documentation/content/en/articles/committers-guide/_index.adoc:562
#, 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:555
+#: documentation/content/en/articles/committers-guide/_index.adoc:566
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:556
+#: documentation/content/en/articles/committers-guide/_index.adoc:567
#, no-wrap
msgid "Bisecting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:560
+#: documentation/content/en/articles/committers-guide/_index.adoc:571
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:565
+#: documentation/content/en/articles/committers-guide/_index.adoc:576
msgid ""
-"Git makes bisecting changes easy with a powerful 'git bisect' command. "
+"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:572
+#: documentation/content/en/articles/committers-guide/_index.adoc:583
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 "
+"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:576
+#: documentation/content/en/articles/committers-guide/_index.adoc:587
msgid ""
-"If you want to know the last version you checked out, you should use 'git "
-"reflog':"
+"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:581
+#: documentation/content/en/articles/committers-guide/_index.adoc:592
#, 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:585
+#: documentation/content/en/articles/committers-guide/_index.adoc:596
msgid ""
-"shows me moving the working tree to the main branch (a816...) and then "
+"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:589
+#: documentation/content/en/articles/committers-guide/_index.adoc:600
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:596
+#: documentation/content/en/articles/committers-guide/_index.adoc:607
#, 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:605
+#: documentation/content/en/articles/committers-guide/_index.adoc:616
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 "
+"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). "
+"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:607
+#: documentation/content/en/articles/committers-guide/_index.adoc:618
#, no-wrap
msgid "Signing the commits, tags, and pushes, with GnuPG"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:612
+#: documentation/content/en/articles/committers-guide/_index.adoc:623
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:614
+#: documentation/content/en/articles/committers-guide/_index.adoc:625
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:616
+#: documentation/content/en/articles/committers-guide/_index.adoc:627
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:619
+#: documentation/content/en/articles/committers-guide/_index.adoc:630
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:626
+#: documentation/content/en/articles/committers-guide/_index.adoc:637
#, 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:634
+#: documentation/content/en/articles/committers-guide/_index.adoc:645
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:640
+#: documentation/content/en/articles/committers-guide/_index.adoc:651
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:642
+#: documentation/content/en/articles/committers-guide/_index.adoc:653
#, no-wrap
msgid "Verifying signatures"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:645
+#: documentation/content/en/articles/committers-guide/_index.adoc:656
msgid ""
"Commit signatures can be verified by running either `git verify-commit "
"<commit hash>`, or `git log --show-signature`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:647
+#: documentation/content/en/articles/committers-guide/_index.adoc:658
msgid ""
"Tag signatures can be verified with `git verity-tag <tag name>`, or `git tag "
"-v <tag name>`."
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:656
+#: documentation/content/en/articles/committers-guide/_index.adoc:667
#, no-wrap
msgid "Ports Considerations"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:659
+#: documentation/content/en/articles/committers-guide/_index.adoc:670
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:662
+#: documentation/content/en/articles/committers-guide/_index.adoc:673
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:666
+#: documentation/content/en/articles/committers-guide/_index.adoc:677
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'."
+"mirrors, mirrors] for an overview. The _latest_ 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:668
+#: documentation/content/en/articles/committers-guide/_index.adoc:679
#, no-wrap
msgid "Commit message formats"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:672
+#: documentation/content/en/articles/committers-guide/_index.adoc:683
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:674
+#: documentation/content/en/articles/committers-guide/_index.adoc:685
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:677
+#: documentation/content/en/articles/committers-guide/_index.adoc:688
#, no-wrap
msgid "category/port: Summary.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:679
+#: documentation/content/en/articles/committers-guide/_index.adoc:690
#, no-wrap
msgid "Description of why the changes where made.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:681
+#: documentation/content/en/articles/committers-guide/_index.adoc:692
#, no-wrap
msgid "PR:\t 12345\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:687
+#: documentation/content/en/articles/committers-guide/_index.adoc:698
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:689
+#: documentation/content/en/articles/committers-guide/_index.adoc:700
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:691
+#: documentation/content/en/articles/committers-guide/_index.adoc:702
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:693
+#: documentation/content/en/articles/committers-guide/_index.adoc:704
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:695
+#: documentation/content/en/articles/committers-guide/_index.adoc:706
#, no-wrap
msgid "Managing Local Changes"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:698
+#: documentation/content/en/articles/committers-guide/_index.adoc:709
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:704
+#: documentation/content/en/articles/committers-guide/_index.adoc:715
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:705
+#: documentation/content/en/articles/committers-guide/_index.adoc:716
#, no-wrap
msgid "Keeping local changes"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:712
+#: documentation/content/en/articles/committers-guide/_index.adoc:723
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 "
+"`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 "
+"`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:716
+#: documentation/content/en/articles/committers-guide/_index.adoc:727
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."
+"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:717
+#: documentation/content/en/articles/committers-guide/_index.adoc:728
#, no-wrap
msgid "Keeping a local branch"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:724
+#: documentation/content/en/articles/committers-guide/_index.adoc:735
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:728
+#: documentation/content/en/articles/committers-guide/_index.adoc:739
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 "
+"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:730
+#: documentation/content/en/articles/committers-guide/_index.adoc:741
msgid "====== Create a branch"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:735
+#: documentation/content/en/articles/committers-guide/_index.adoc:746
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:757
+#: documentation/content/en/articles/committers-guide/_index.adoc:768
#, 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 <stdlib.h>\n"
" #include <string.h>\n"
" #include <unistd.h>\n"
"+#undef COLORLS\n"
" #ifdef COLORLS\n"
" #include <termcap.h>\n"
" #include <signal.h>\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:764
+#: documentation/content/en/articles/committers-guide/_index.adoc:775
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 "
+"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:766
+#: documentation/content/en/articles/committers-guide/_index.adoc:777
msgid "====== Time to update"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:771
+#: documentation/content/en/articles/committers-guide/_index.adoc:782
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:777
+#: documentation/content/en/articles/committers-guide/_index.adoc:788
#, 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:782
+#: documentation/content/en/articles/committers-guide/_index.adoc:793
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:784
+#: documentation/content/en/articles/committers-guide/_index.adoc:795
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:791
+#: documentation/content/en/articles/committers-guide/_index.adoc:802
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:794
+#: documentation/content/en/articles/committers-guide/_index.adoc:805
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:804
+#: documentation/content/en/articles/committers-guide/_index.adoc:815
#, 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 <conflicted_files>\", 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:807
+#: documentation/content/en/articles/committers-guide/_index.adoc:818
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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:816
+#: documentation/content/en/articles/committers-guide/_index.adoc:827
#, no-wrap
msgid ""
" <<<<<<< HEAD\n"
" #ifdef COLORLS_NEW\n"
" #include <terminfo.h>\n"
" =======\n"
" #undef COLORLS\n"
" #ifdef COLORLS\n"
" #include <termcap.h>\n"
" >>>>>>> 646e0f9cda11... no color ls\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:820
+#: documentation/content/en/articles/committers-guide/_index.adoc:831
#, no-wrap
msgid ""
"The new code is first, and your code is second.\n"
"The right fix here is to just add a #undef COLORLS_NEW before #ifdef and then delete the old changes:\n"
"[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:824
+#: documentation/content/en/articles/committers-guide/_index.adoc:835
msgid "#undef COLORLS_NEW #ifdef COLORLS_NEW #include <terminfo.h>"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:828
+#: documentation/content/en/articles/committers-guide/_index.adoc:839
#, no-wrap
msgid ""
"save the file.\n"
"The rebase was interrupted, so you have to complete it:\n"
"[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:831
+#: documentation/content/en/articles/committers-guide/_index.adoc:842
msgid "% git add ls.c % git rebase --continue"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:836
+#: documentation/content/en/articles/committers-guide/_index.adoc:847
#, no-wrap
msgid ""
"which tells Git that ls.c has been fixed and to continue the rebase operation.\n"
"Since there was a conflict, you will get kicked into the editor to update the commit message if necessary.\n"
"If the commit message is still accurate, just exit the editor.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:841
+#: documentation/content/en/articles/committers-guide/_index.adoc:852
#, no-wrap
msgid ""
"If you get stuck during the rebase, do not panic.\n"
"git rebase --abort will take you back to a clean slate.\n"
"It is important, though, to start with an unmodified tree.\n"
-"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.\n"
+"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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:844
+#: documentation/content/en/articles/committers-guide/_index.adoc:855
#, no-wrap
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.\n"
"It is a good resource for issues that arise occasionally but are too obscure for this guide.\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:845
+#: documentation/content/en/articles/committers-guide/_index.adoc:856
#, no-wrap
msgid "Switching to a Different FreeBSD Branch"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:849
+#: documentation/content/en/articles/committers-guide/_index.adoc:860
msgid ""
"If you wish to shift from stable/12 to the current branch. If you have a "
"deep clone, the following will suffice: [source,shell]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:852
+#: documentation/content/en/articles/committers-guide/_index.adoc:863
msgid "% git checkout main % # build and install here..."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:858
+#: documentation/content/en/articles/committers-guide/_index.adoc:869
#, no-wrap
msgid ""
"If you have a local branch, though, there are one or two caveats.\n"
"First, rebase will rewrite history, so you will likely want to do something to save it.\n"
"Second, jumping branches tends to cause more conflicts.\n"
-"If we pretend the example above was relative to stable/12, then to move to main, I'd suggest the following:\n"
+"If we pretend the example above was relative to stable/12, then to move to `main`, I'd suggest the following:\n"
"[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:862
+#: documentation/content/en/articles/committers-guide/_index.adoc:873
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:869
+#: documentation/content/en/articles/committers-guide/_index.adoc:880
#, no-wrap
msgid ""
"What the above does is checkout no-color-ls.\n"
"Then create a new name for it (no-color-ls-stable-12) in case you need to get back to it.\n"
-"Then you rebase onto the main branch.\n"
+"Then you rebase onto the `main` branch.\n"
"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\n"
-"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).\n"
-msgstr ""
-
-#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:870
-#, no-wrap
-msgid "Migrating from an existing Git clone"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:872
-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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:875
-msgid ""
-"When you have only a few local changes, the easiest way would be to cherry-"
-"pick those changes to the new base: [source,shell]"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:878
-msgid "% git checkout main % git cherry-pick old_branch..your_branch"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:881
-#, no-wrap
-msgid ""
-"Or alternatively, do the same thing with rebase:\n"
-"[source,shell]\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:883
-msgid "% git rebase --onto main master your_branch"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:887
-#, no-wrap
-msgid ""
-"If you do have a lot of changes, you would probably want to perform a merge instead.\n"
-"The idea is to create a merge point that consolidates the history of the old_branch, and the new FreeBSD repository (main).\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:890
-#, no-wrap
-msgid ""
-"You can find out by looking up the same commit that are found on both parents:\n"
-"[source,shell]\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:892
-msgid "% git show old_branch"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:895
-#, no-wrap
-msgid ""
-"You will see a commit message, now search for that in the new branch:\n"
-"[source,shell]\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:897
-msgid "% git log --grep=\"commit message on old_branch\" freebsd/main"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:900
-#, no-wrap
-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:\n"
-"[source,shell]\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:902
-msgid "% git checkout -b stage _hash_found_from_git_log_"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:905
-#, no-wrap
-msgid ""
-"Then perform a merge of the old branch:\n"
-"[source,shell]\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:907
-msgid "% git merge -s ours -m \"Mark old branch as merged\" old_branch"
+"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).\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:910
-#, no-wrap
-msgid ""
-"With that, it's possible to merge your work branch or the main branch in any order without problem.\n"
-"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.\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:912
+#: documentation/content/en/articles/committers-guide/_index.adoc:882
#, no-wrap
msgid "[[mfc-with-git]]\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:912
+#: documentation/content/en/articles/committers-guide/_index.adoc:882
#, no-wrap
msgid "MFC (Merge From Current) Procedures"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:913
+#: documentation/content/en/articles/committers-guide/_index.adoc:883
#, no-wrap
msgid "Summary"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:917
+#: documentation/content/en/articles/committers-guide/_index.adoc:887
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:918
+#: documentation/content/en/articles/committers-guide/_index.adoc:888
#, no-wrap
msgid "Single commit MFC"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:921
-#: documentation/content/en/articles/committers-guide/_index.adoc:961
-#: documentation/content/en/articles/committers-guide/_index.adoc:997
-#: documentation/content/en/articles/committers-guide/_index.adoc:1113
-#: documentation/content/en/articles/committers-guide/_index.adoc:1126
-#: documentation/content/en/articles/committers-guide/_index.adoc:1153
-#: documentation/content/en/articles/committers-guide/_index.adoc:1165
-#: documentation/content/en/articles/committers-guide/_index.adoc:1202
-#: documentation/content/en/articles/committers-guide/_index.adoc:1230
-#: documentation/content/en/articles/committers-guide/_index.adoc:1248
-#: documentation/content/en/articles/committers-guide/_index.adoc:1270
-#: documentation/content/en/articles/committers-guide/_index.adoc:1288
-#: documentation/content/en/articles/committers-guide/_index.adoc:1308
-#: documentation/content/en/articles/committers-guide/_index.adoc:1323
-#: documentation/content/en/articles/committers-guide/_index.adoc:1342
-#: documentation/content/en/articles/committers-guide/_index.adoc:1374
-#: documentation/content/en/articles/committers-guide/_index.adoc:1421
-#: documentation/content/en/articles/committers-guide/_index.adoc:1485
+#: documentation/content/en/articles/committers-guide/_index.adoc:891
+#: documentation/content/en/articles/committers-guide/_index.adoc:931
+#: documentation/content/en/articles/committers-guide/_index.adoc:967
+#: documentation/content/en/articles/committers-guide/_index.adoc:1083
+#: documentation/content/en/articles/committers-guide/_index.adoc:1096
+#: documentation/content/en/articles/committers-guide/_index.adoc:1123
+#: documentation/content/en/articles/committers-guide/_index.adoc:1135
+#: documentation/content/en/articles/committers-guide/_index.adoc:1201
+#: documentation/content/en/articles/committers-guide/_index.adoc:1219
+#: documentation/content/en/articles/committers-guide/_index.adoc:1241
+#: documentation/content/en/articles/committers-guide/_index.adoc:1259
+#: documentation/content/en/articles/committers-guide/_index.adoc:1279
+#: documentation/content/en/articles/committers-guide/_index.adoc:1294
+#: documentation/content/en/articles/committers-guide/_index.adoc:1313
+#: documentation/content/en/articles/committers-guide/_index.adoc:1345
+#: documentation/content/en/articles/committers-guide/_index.adoc:1392
+#: documentation/content/en/articles/committers-guide/_index.adoc:1456
msgid "[source,shell]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:924
+#: documentation/content/en/articles/committers-guide/_index.adoc:894
msgid "% git checkout stable/X % git cherry-pick -x $HASH --edit"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:928
+#: documentation/content/en/articles/committers-guide/_index.adoc:898
#, no-wrap
msgid ""
"For MFC commits, for example a vendor import, you would need to specify one parent for cherry-pick purposes.\n"
"Normally, that would be the \"first parent\" of the branch you are cherry-picking from, so:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:930
-#: documentation/content/en/articles/committers-guide/_index.adoc:951
-#: documentation/content/en/articles/committers-guide/_index.adoc:974
-#: documentation/content/en/articles/committers-guide/_index.adoc:985
-#: documentation/content/en/articles/committers-guide/_index.adoc:1296
-#: documentation/content/en/articles/committers-guide/_index.adoc:1381
-#: documentation/content/en/articles/committers-guide/_index.adoc:1393
-#: documentation/content/en/articles/committers-guide/_index.adoc:1405
-#: documentation/content/en/articles/committers-guide/_index.adoc:1431
-#: documentation/content/en/articles/committers-guide/_index.adoc:1443
-#: documentation/content/en/articles/committers-guide/_index.adoc:1450
-#: documentation/content/en/articles/committers-guide/_index.adoc:1492
-#: documentation/content/en/articles/committers-guide/_index.adoc:1526
-#: documentation/content/en/articles/committers-guide/_index.adoc:1533
+#: documentation/content/en/articles/committers-guide/_index.adoc:900
+#: documentation/content/en/articles/committers-guide/_index.adoc:921
+#: documentation/content/en/articles/committers-guide/_index.adoc:944
+#: documentation/content/en/articles/committers-guide/_index.adoc:955
+#: documentation/content/en/articles/committers-guide/_index.adoc:1173
+#: documentation/content/en/articles/committers-guide/_index.adoc:1267
+#: documentation/content/en/articles/committers-guide/_index.adoc:1352
+#: documentation/content/en/articles/committers-guide/_index.adoc:1364
+#: documentation/content/en/articles/committers-guide/_index.adoc:1376
+#: documentation/content/en/articles/committers-guide/_index.adoc:1402
+#: documentation/content/en/articles/committers-guide/_index.adoc:1414
+#: documentation/content/en/articles/committers-guide/_index.adoc:1421
+#: documentation/content/en/articles/committers-guide/_index.adoc:1463
+#: documentation/content/en/articles/committers-guide/_index.adoc:1497
+#: documentation/content/en/articles/committers-guide/_index.adoc:1504
+#: documentation/content/en/articles/committers-guide/_index.adoc:1513
#: documentation/content/en/articles/committers-guide/_index.adoc:1542
-#: documentation/content/en/articles/committers-guide/_index.adoc:1571
-#: documentation/content/en/articles/committers-guide/_index.adoc:1587
-#: documentation/content/en/articles/committers-guide/_index.adoc:1620
-#: documentation/content/en/articles/committers-guide/_index.adoc:1641
-#: documentation/content/en/articles/committers-guide/_index.adoc:1672
-#: documentation/content/en/articles/committers-guide/_index.adoc:1684
-#: documentation/content/en/articles/committers-guide/_index.adoc:1715
-#: documentation/content/en/articles/committers-guide/_index.adoc:1724
-#: documentation/content/en/articles/committers-guide/_index.adoc:1734
-#: documentation/content/en/articles/committers-guide/_index.adoc:1750
-#: documentation/content/en/articles/committers-guide/_index.adoc:1766
-#: documentation/content/en/articles/committers-guide/_index.adoc:1777
-#: documentation/content/en/articles/committers-guide/_index.adoc:1784
-#: documentation/content/en/articles/committers-guide/_index.adoc:1797
-#: documentation/content/en/articles/committers-guide/_index.adoc:1817
-#: documentation/content/en/articles/committers-guide/_index.adoc:1831
-#: documentation/content/en/articles/committers-guide/_index.adoc:1847
-#: documentation/content/en/articles/committers-guide/_index.adoc:1859
-#: documentation/content/en/articles/committers-guide/_index.adoc:1878
-#: documentation/content/en/articles/committers-guide/_index.adoc:1889
-#: documentation/content/en/articles/committers-guide/_index.adoc:1899
-#: documentation/content/en/articles/committers-guide/_index.adoc:1937
-#: documentation/content/en/articles/committers-guide/_index.adoc:1945
-#: documentation/content/en/articles/committers-guide/_index.adoc:1956
-#: documentation/content/en/articles/committers-guide/_index.adoc:1977
-#: documentation/content/en/articles/committers-guide/_index.adoc:2037
+#: documentation/content/en/articles/committers-guide/_index.adoc:1558
+#: documentation/content/en/articles/committers-guide/_index.adoc:1591
+#: documentation/content/en/articles/committers-guide/_index.adoc:1612
+#: documentation/content/en/articles/committers-guide/_index.adoc:1643
+#: documentation/content/en/articles/committers-guide/_index.adoc:1655
+#: documentation/content/en/articles/committers-guide/_index.adoc:1686
+#: documentation/content/en/articles/committers-guide/_index.adoc:1695
+#: documentation/content/en/articles/committers-guide/_index.adoc:1705
+#: documentation/content/en/articles/committers-guide/_index.adoc:1721
+#: documentation/content/en/articles/committers-guide/_index.adoc:1737
+#: documentation/content/en/articles/committers-guide/_index.adoc:1748
+#: documentation/content/en/articles/committers-guide/_index.adoc:1755
+#: documentation/content/en/articles/committers-guide/_index.adoc:1768
+#: documentation/content/en/articles/committers-guide/_index.adoc:1788
+#: documentation/content/en/articles/committers-guide/_index.adoc:1802
+#: documentation/content/en/articles/committers-guide/_index.adoc:1818
+#: documentation/content/en/articles/committers-guide/_index.adoc:1830
+#: documentation/content/en/articles/committers-guide/_index.adoc:1849
+#: documentation/content/en/articles/committers-guide/_index.adoc:1860
+#: documentation/content/en/articles/committers-guide/_index.adoc:1870
+#: documentation/content/en/articles/committers-guide/_index.adoc:1908
+#: documentation/content/en/articles/committers-guide/_index.adoc:1916
+#: documentation/content/en/articles/committers-guide/_index.adoc:1927
+#: documentation/content/en/articles/committers-guide/_index.adoc:1948
+#: documentation/content/en/articles/committers-guide/_index.adoc:2008
#, no-wrap
msgid "[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:933
+#: documentation/content/en/articles/committers-guide/_index.adoc:903
msgid "% git checkout stable/X % git cherry-pick -x $HASH -m 1 --edit"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:936
+#: documentation/content/en/articles/committers-guide/_index.adoc:906
#, no-wrap
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`.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:939
+#: documentation/content/en/articles/committers-guide/_index.adoc:909
#, no-wrap
msgid ""
"Once the cherry-pick is finished, push with `git push`.\n"
"If you get an error due to losing the commit race, use `git pull --rebase` and try to push again.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:940
+#: documentation/content/en/articles/committers-guide/_index.adoc:910
#, no-wrap
msgid "MFC to RELENG branch"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:944
+#: documentation/content/en/articles/committers-guide/_index.adoc:914
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:949
+#: documentation/content/en/articles/committers-guide/_index.adoc:919
#, no-wrap
msgid ""
"* Merge or direct commit to the appropriate `stable/X` branch first before merging to the `releng/X.Y` branch.\n"
"* Use the hash that's in the `stable/X` branch for the MFC to `releng/X.Y` branch.\n"
"* Leave both \"cherry picked from\" lines in the commit message.\n"
"* Be sure to add the `Approved by:` line when you are in the editor.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:954
+#: documentation/content/en/articles/committers-guide/_index.adoc:924
msgid "% git checkout releng/13.0 % git cherry-pick -x $HASH --edit"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:957
+#: documentation/content/en/articles/committers-guide/_index.adoc:927
#, no-wrap
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.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:958
+#: documentation/content/en/articles/committers-guide/_index.adoc:928
#, no-wrap
msgid "Multiple commit MFC"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:969
+#: documentation/content/en/articles/committers-guide/_index.adoc:939
msgid ""
"% git checkout -b tmp-branch stable/X % for h in $HASH_LIST; do git cherry-"
"pick -x $h; done % git rebase -i stable/X # mark each of the commits after "
"the first as 'squash' # Update the commit message to reflect all elements of "
"commit, if necessary. # Be sure to retain the \"cherry picked from\" "
"lines. % git push freebsd HEAD:stable/X"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:972
+#: documentation/content/en/articles/committers-guide/_index.adoc:942
#, no-wrap
msgid "If the push fails due to losing the commit race, rebase and try again:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:980
+#: documentation/content/en/articles/committers-guide/_index.adoc:950
msgid ""
"% git checkout stable/X % git pull % git checkout tmp-branch % git rebase "
"stable/X % git push freebsd HEAD:stable/X"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:983
+#: documentation/content/en/articles/committers-guide/_index.adoc:953
#, no-wrap
msgid "Once the MFC is complete, you can delete the temporary branch:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:988
+#: documentation/content/en/articles/committers-guide/_index.adoc:958
msgid "% git checkout stable/X % git branch -d tmp-branch"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:990
+#: documentation/content/en/articles/committers-guide/_index.adoc:960
#, no-wrap
msgid "MFC a vendor import"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:995
+#: documentation/content/en/articles/committers-guide/_index.adoc:965
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 "
+"the `main` branch. 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)."
+"`main` (though there may be some exceptions)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:999
+#: documentation/content/en/articles/committers-guide/_index.adoc:969
msgid "% git cherry-pick -x -m 1 $HASH"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1002
+#: documentation/content/en/articles/committers-guide/_index.adoc:972
#, no-wrap
msgid ""
"is typically what you want.\n"
"This will tell cherry-pick to apply the correct diff.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1007
+#: documentation/content/en/articles/committers-guide/_index.adoc:977
#, no-wrap
msgid ""
-"There are some, hopefully, rare cases where it's possible that the mainline was merged backwards by the conversion script.\n"
-"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.\n"
-"Just do\n"
+"There are some, hopefully, rare cases where it's possible that the `main` branch was merged backwards by the conversion script.\n"
+"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.\n"
+"Just do:\n"
"[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1010
+#: documentation/content/en/articles/committers-guide/_index.adoc:980
msgid "% git cherry-pick --abort % git cherry-pick -x -m 2 $HASH"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1012
+#: documentation/content/en/articles/committers-guide/_index.adoc:982
#, no-wrap
msgid "to do that. The `--abort` will cleanup the failed first attempt.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1013
+#: documentation/content/en/articles/committers-guide/_index.adoc:983
#, no-wrap
msgid "Redoing a MFC"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1018
+#: documentation/content/en/articles/committers-guide/_index.adoc:988
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: [source,shell]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1020
+#: documentation/content/en/articles/committers-guide/_index.adoc:990
msgid "% git reset --hard freebsd/stable/12"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1023
+#: documentation/content/en/articles/committers-guide/_index.adoc:993
#, no-wrap
msgid ""
"though if you have some revs you want to keep, and others you don't,\n"
-"using 'git rebase -i' is better.\n"
+"using `git rebase -i` is better.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1024
+#: documentation/content/en/articles/committers-guide/_index.adoc:994
#, no-wrap
msgid "Considerations when MFCing"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1027
+#: documentation/content/en/articles/committers-guide/_index.adoc:997
msgid ""
"When committing source commits to stable and releng branches, we have the "
"following goals:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1031
+#: documentation/content/en/articles/committers-guide/_index.adoc:1001
#, no-wrap
msgid ""
"* Clearly mark direct commits distinct from commits that land a change from another branch.\n"
"* Avoid introducing known breakage into stable and releng branches.\n"
"* Allow developers to determine which changes have or have not been landed from one branch to another.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1033
+#: documentation/content/en/articles/committers-guide/_index.adoc:1003
#, no-wrap
msgid "With Subversion, we used the following practices to achieve these goals:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1037
+#: documentation/content/en/articles/committers-guide/_index.adoc:1007
#, no-wrap
msgid ""
-"* Using 'MFC' and 'MFS' tags to mark commits that merged changes from another branch.\n"
+"* Using `MFC` and `MFS` tags to mark commits that merged changes from another branch.\n"
"* Squashing fixup commits into the main commit when merging a change.\n"
"* Recording mergeinfo so that `svn mergeinfo --show-revs` worked.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1041
+#: documentation/content/en/articles/committers-guide/_index.adoc:1011
#, no-wrap
msgid ""
"With Git, we will need to use different strategies to achieve the same goals.\n"
"This document aims to define best practices when merging source commits using Git that achieve these goals.\n"
"In general, we aim to use Git's native support to achieve these goals rather than enforcing practices built on Subversion's model.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1044
+#: documentation/content/en/articles/committers-guide/_index.adoc:1014
#, no-wrap
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.\n"
"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`.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1045
+#: documentation/content/en/articles/committers-guide/_index.adoc:1015
#, no-wrap
msgid "Finding Eligible Hashes to MFC"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1051
+#: documentation/content/en/articles/committers-guide/_index.adoc:1021
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 "
+"are identical. This works well when each commit from `main` 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. The "
+"`main` are squashed together as a single commit to a stable branch. The "
"project makes extensive use of `git cherry-pick -x` with all lines preserved "
"to work around these difficulties and is working on automated tooling to "
"take advantage of this."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1052
+#: documentation/content/en/articles/committers-guide/_index.adoc:1022
#, no-wrap
msgid "Commit message standards"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1053
+#: documentation/content/en/articles/committers-guide/_index.adoc:1023
#, no-wrap
msgid "Marking MFCs"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1056
+#: documentation/content/en/articles/committers-guide/_index.adoc:1026
msgid "The project has adopted the following practice for marking MFCs:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1058
+#: documentation/content/en/articles/committers-guide/_index.adoc:1028
#, no-wrap
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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1060
+#: documentation/content/en/articles/committers-guide/_index.adoc:1030
#, no-wrap
msgid "When merging multiple commits, keep all the \"cherry picked from\" lines.\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1061
+#: documentation/content/en/articles/committers-guide/_index.adoc:1031
#, no-wrap
msgid "Trim Metadata?"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1065
+#: documentation/content/en/articles/committers-guide/_index.adoc:1035
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1074
+#: documentation/content/en/articles/committers-guide/_index.adoc:1044
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 "
+"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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1078
+#: documentation/content/en/articles/committers-guide/_index.adoc:1048
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1081
+#: documentation/content/en/articles/committers-guide/_index.adoc:1051
msgid ""
"Preserving existing metadata provides a very simple workflow. Developers "
"use `git cherry-pick -x` without having to edit the log message."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1084
+#: documentation/content/en/articles/committers-guide/_index.adoc:1054
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1086
+#: documentation/content/en/articles/committers-guide/_index.adoc:1056
msgid ""
"The bottom line is that developers will likely need to curate their commit "
"message for MFCs that are non-trivial."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1088
+#: documentation/content/en/articles/committers-guide/_index.adoc:1058
msgid "[[vendor-import-git]]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:1088
+#: documentation/content/en/articles/committers-guide/_index.adoc:1058
#, no-wrap
msgid "Vendor Imports with Git"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1091
+#: documentation/content/en/articles/committers-guide/_index.adoc:1061
msgid "This section describes the vendor import procedure with Git in detail."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1092
+#: documentation/content/en/articles/committers-guide/_index.adoc:1062
#, no-wrap
msgid "Branch naming convention"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1095
+#: documentation/content/en/articles/committers-guide/_index.adoc:1065
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:1101
+#: documentation/content/en/articles/committers-guide/_index.adoc:1071
msgid ""
"[NOTE] ==== 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1104
+#: documentation/content/en/articles/committers-guide/_index.adoc:1074
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:1105
+#: documentation/content/en/articles/committers-guide/_index.adoc:1075
#, no-wrap
msgid "Updating an old vendor import"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1111
+#: documentation/content/en/articles/committers-guide/_index.adoc:1081
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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1115
+#: documentation/content/en/articles/committers-guide/_index.adoc:1085
msgid "% git worktree add ../mtree vendor/NetBSD/mtree"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1117
+#: documentation/content/en/articles/committers-guide/_index.adoc:1087
#, no-wrap
msgid "Update the Sources in the Vendor Branch"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1120
+#: documentation/content/en/articles/committers-guide/_index.adoc:1090
msgid ""
"Prepare a full, clean tree of the vendor sources. Import everything but "
"merge only what is needed."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1124
+#: documentation/content/en/articles/committers-guide/_index.adoc:1094
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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1138
+#: documentation/content/en/articles/committers-guide/_index.adoc:1108
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1142
+#: documentation/content/en/articles/committers-guide/_index.adoc:1112
#, no-wrap
msgid ""
"Note: I run the `git diff` and `git status` commands to make sure nothing weird was present.\n"
"Also I used `-m` to illustrate, but you should compose a proper message in an editor (using a commit message template).\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1147
+#: documentation/content/en/articles/committers-guide/_index.adoc:1117
#, no-wrap
msgid ""
"It is also important to create an annotated tag using `git tag -a`, otherwise the push will be rejected.\n"
"Only annotated tags are allowed to be pushed.\n"
"The annotated tag gives you a chance to enter a commit message.\n"
"Enter the version you are importing, along with any salient new features or fixes in that version.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1148
+#: documentation/content/en/articles/committers-guide/_index.adoc:1118
#, no-wrap
msgid "Updating the FreeBSD Copy"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1151
+#: documentation/content/en/articles/committers-guide/_index.adoc:1121
msgid "At this point you can push the import to `vendor` into our repo."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1155
+#: documentation/content/en/articles/committers-guide/_index.adoc:1125
msgid "% git push --follow-tags freebsd vendor/NetBSD/mtree"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1158
+#: documentation/content/en/articles/committers-guide/_index.adoc:1128
#, no-wrap
msgid "`--follow-tags` tells `git push` to also push tags associated with the locally committed revision.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1159
+#: documentation/content/en/articles/committers-guide/_index.adoc:1129
#, no-wrap
msgid "Updating the FreeBSD source tree"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1163
+#: documentation/content/en/articles/committers-guide/_index.adoc:1133
msgid ""
"Now you need to update the mtree in FreeBSD. The sources live in `contrib/"
"mtree` since it is upstream software."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1168
+#: documentation/content/en/articles/committers-guide/_index.adoc:1138
msgid "% cd ../src % git subtree merge -P contrib/mtree vendor/NetBSD/mtree"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1173
+#: documentation/content/en/articles/committers-guide/_index.adoc:1143
#, no-wrap
msgid ""
"This would generate a subtree merge commit of `contrib/mtree` against the local `vendor/NetBSD/mtree` branch.\n"
"If there were conflicts, you would need to fix them before committing.\n"
"Include details about the changes being merged in the merge commit message.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1174
+#: documentation/content/en/articles/committers-guide/_index.adoc:1144
#, no-wrap
msgid "Rebasing your change against latest FreeBSD source tree"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1177
+#: documentation/content/en/articles/committers-guide/_index.adoc:1147
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1180
+#: documentation/content/en/articles/committers-guide/_index.adoc:1150
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1198
+#: documentation/content/en/articles/committers-guide/_index.adoc:1152
msgid ""
"The following steps should be taken to easily recreate the merge commit as "
-"if `git rebase --merge-commits` worked properly: * cd to the top of the repo "
-"* Create a side branch `XXX` with the **contents** of the merged tree. * "
-"Update this side branch `XXX` to be merged and up-to-date with FreeBSD's "
-"`main` branch. ** In the worst case scenario, you would still have to "
-"resolve merge conflicts, if there was any, but this should be really rare. "
-"** Resolve conflicts, and collapse multiple commits down to 1 if need be "
-"(without conflicts, there's no collapse needed) * checkout main * create a "
-"branch `YYY` (allows for easier unwinding if things go wrong) * Re-do the "
-"subtree merge * Instead of resolving any conflicts from the subtree merge, "
-"checkout the contents of XXX on top of it. ** The trailing '.' is "
-"important, as is being at the top level of the repo. ** Rather than "
-"switching branches to XXX, it splats the contents of XXX on top of the repo "
-"* Commit the results with the prior commit message (the example assumes "
-"there's only one merge on the XXX branch). * Make sure the branches are the "
-"same. * Do whatever review you need, including having others check it out "
-"if you think that's needed. * Push the commit, if you 'lost the race' "
-"again, just redo these steps again (see below for a recipe) * Delete the "
-"branches once the commit is upstream. They are throw-a-way."
+"if `git rebase --merge-commits` worked properly:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1200
+#: documentation/content/en/articles/committers-guide/_index.adoc:1169
+#, no-wrap
msgid ""
-"The commands one would use, following the above example of mtree, would be "
-"like so (the `#` starts a comment to help link commands to descriptions "
-"above):"
+"* cd to the top of the repo\n"
+"* Create a side branch `XXX` with the **contents** of the merged tree.\n"
+"* Update this side branch `XXX` to be merged and up-to-date with FreeBSD's `main` branch.\n"
+"** In the worst case scenario, you would still have to resolve merge conflicts, if there was any, but this should be really rare.\n"
+"** Resolve conflicts, and collapse multiple commits down to 1 if need be (without conflicts, there's no collapse needed)\n"
+"* checkout `main`\n"
+"* create a branch `YYY` (allows for easier unwinding if things go wrong)\n"
+"* Re-do the subtree merge\n"
+"* Instead of resolving any conflicts from the subtree merge, checkout the contents of XXX on top of it.\n"
+"** The trailing `.` is important, as is being at the top level of the repo.\n"
+"** Rather than switching branches to XXX, it splats the contents of XXX on top of the repo\n"
+"* Commit the results with the prior commit message (the example assumes there's only one merge on the XXX branch).\n"
+"* Make sure the branches are the same.\n"
+"* Do whatever review you need, including having others check it out if you think that's needed.\n"
+"* Push the commit, if you 'lost the race' again, just redo these steps again (see below for a recipe)\n"
+"* Delete the branches once the commit is upstream. They are throw-a-way.\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/committers-guide/_index.adoc:1171
+#, no-wrap
+msgid "The commands one would use, following the above example of mtree, would be like so (the `#` starts a comment to help link commands to descriptions above):\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1213
+#: documentation/content/en/articles/committers-guide/_index.adoc:1184
#, no-wrap
msgid ""
"% cd ../src\t\t\t# CD to top of tree\n"
"% git checkout -b XXX\t\t# create new throw-away XXX branch for merge\n"
"% git fetch freebsd\t\t# Get changes from upstream from upstream\n"
"% git merge freebsd/main\t# Merge the changes and resolve conflicts\n"
"% git checkout -b YYY freebsd/main # Create new throw-away YYY branch for redo\n"
"% git subtree merge -P contrib/mtree vendor/NetBSD/mtree # Redo subtree merge\n"
"% git checkout XXX .\t\t# XXX branch has the conflict resolution\n"
"% git commit -c XXX~1\t\t# -c reuses the commit message from commit before rebase\n"
"% git diff XXX YYY\t\t# Should be empty\n"
"% git show YYY\t\t\t# Should only have changes you want, and be a merge commit from vendor branch\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1217
+#: documentation/content/en/articles/committers-guide/_index.adoc:1188
#, no-wrap
msgid ""
"Note: if things go wrong with the commit, you can reset the `YYY` branch by reissuing the checkout command that created it with -B to start over:\n"
"[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1219
+#: documentation/content/en/articles/committers-guide/_index.adoc:1190
msgid ""
"% git checkout -B YYY freebsd/main # Create new throw-away YYY branch if "
"starting over is just going to be easier"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1221
+#: documentation/content/en/articles/committers-guide/_index.adoc:1192
#, no-wrap
msgid "Pushing the changes"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1226
+#: documentation/content/en/articles/committers-guide/_index.adoc:1197
msgid ""
"Once you think you have a set of changes that are 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1228
+#: documentation/content/en/articles/committers-guide/_index.adoc:1199
msgid ""
"After review, when you are sure it is a good change, you can push it to the "
"FreeBSD repo:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1234
+#: documentation/content/en/articles/committers-guide/_index.adoc:1205
msgid ""
-"% git push freebsd YYY:main\t# put the commit on upstream's main branch % "
+"% git push freebsd YYY:main\t# put the commit on upstream's 'main' branch % "
"git branch -D XXX\t\t# Throw away the throw-a-way branches. % git branch -D "
"YYY"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1241
+#: documentation/content/en/articles/committers-guide/_index.adoc:1212
#, no-wrap
msgid ""
"Note: I used `XXX` and `YYY` to make it obvious they are terrible names and should not leave your machine.\n"
"If you use such names for other work, then you'll need to pick different names, or risk losing the other work.\n"
"There is nothing magic about these names.\n"
"Upstream will not allow you to push them, but never the less, please pay attention to the exact commands above.\n"
"Some commands use syntax that differs only slightly from typical uses and that different behavior is critical to this recipe working.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1242
+#: documentation/content/en/articles/committers-guide/_index.adoc:1213
#, no-wrap
msgid "How to redo things if need be"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1246
+#: documentation/content/en/articles/committers-guide/_index.adoc:1217
msgid ""
"If you've tried to do the push in the previous section and it fails, then "
"you should do the following to 'redo' things. This sequence keeps the "
"commit with the commit message always at XXX~1 to make committing easier."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1255
+#: documentation/content/en/articles/committers-guide/_index.adoc:1226
msgid ""
"% git checkout -B XXX YYY\t# recreate that throw-away-branch XXX and switch "
"to it % git merge freebsd/main\t# Merge the changes and resolve conflicts % "
"git checkout -B YYY freebsd/main # Recreate new throw-away YYY branch for "
"redo % git subtree merge -P contrib/mtree vendor/NetBSD/mtree # Redo subtree "
"merge % git checkout XXX .\t\t# XXX branch has the conflict resolution % git "
"commit -c XXX~1\t\t# -c reuses the commit message from commit before rebase"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1258
+#: documentation/content/en/articles/committers-guide/_index.adoc:1229
#, no-wrap
msgid "Then go check it out as above and push as above when ready.\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:1259
+#: documentation/content/en/articles/committers-guide/_index.adoc:1230
#, no-wrap
msgid "Creating a new vendor branch"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1266
+#: documentation/content/en/articles/committers-guide/_index.adoc:1237
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:1267
+#: documentation/content/en/articles/committers-guide/_index.adoc:1238
#, no-wrap
msgid "Create the repo"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1276
+#: documentation/content/en/articles/committers-guide/_index.adoc:1247
msgid ""
"% cd /some/where % mkdir glorbnitz % cd glorbnitz % git init % git checkout -"
"b vendor/glorbnitz"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1279
+#: documentation/content/en/articles/committers-guide/_index.adoc:1250
#, no-wrap
msgid "At this point, you have a new repo, where all new commits will go on the `vendor/glorbnitz` branch.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1281
+#: documentation/content/en/articles/committers-guide/_index.adoc:1252
#, no-wrap
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.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1282
+#: documentation/content/en/articles/committers-guide/_index.adoc:1253
#, no-wrap
msgid "Copy the sources in"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1286
+#: documentation/content/en/articles/committers-guide/_index.adoc:1257
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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1291
+#: documentation/content/en/articles/committers-guide/_index.adoc:1262
msgid "% cp -r ~/glorbnitz/* . % git add *"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1294
+#: documentation/content/en/articles/committers-guide/_index.adoc:1265
#, no-wrap
msgid "At this point, you should have a pristine copy of glorbnitz ready to commit.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1298
+#: documentation/content/en/articles/committers-guide/_index.adoc:1269
msgid "% git commit -m \"Import GlorbNitz frobnosticator revision 3.1415\""
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1302
+#: documentation/content/en/articles/committers-guide/_index.adoc:1273
#, no-wrap
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.\n"
"Not everybody will know so, for your actual commit, you should follow the <<commit-log-message,commit log message>> section instead of emulating the brief style used here.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1303
+#: documentation/content/en/articles/committers-guide/_index.adoc:1274
#, no-wrap
msgid "Now import it into our repository"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1306
+#: documentation/content/en/articles/committers-guide/_index.adoc:1277
msgid "Now you need to import the branch into our repository."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1312
+#: documentation/content/en/articles/committers-guide/_index.adoc:1283
msgid ""
"% cd /path/to/freebsd/repo/src % git remote add glorbnitz /some/where/"
"glorbnitz % git fetch glorbnitz vendor/glorbnitz"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1317
+#: documentation/content/en/articles/committers-guide/_index.adoc:1288
#, no-wrap
msgid ""
"Note the vendor/glorbnitz branch is in the repo. At this point the `/some/where/glorbnitz` can be deleted, if you like.\n"
"It was only a means to an end.\n"
"// perhaps the real treasure was the friends it made along the way...\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1318
+#: documentation/content/en/articles/committers-guide/_index.adoc:1289
#, no-wrap
msgid "Tag and push"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1321
+#: documentation/content/en/articles/committers-guide/_index.adoc:1292
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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1329
+#: documentation/content/en/articles/committers-guide/_index.adoc:1300
msgid ""
"% git worktree add ../glorbnitz vendor/glorbnitz % cd ../glorbnitz % git tag "
"--annotate vendor/glorbnitz/3.1415 # Make sure the commit is good with \"git "
"show\" % git push --follow-tags freebsd vendor/glorbnitz"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1332
+#: documentation/content/en/articles/committers-guide/_index.adoc:1303
#, no-wrap
msgid "By 'good' we mean:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1338
+#: documentation/content/en/articles/committers-guide/_index.adoc:1309
#, no-wrap
msgid ""
". All the right files are present\n"
". None of the wrong files are present\n"
". The vendor branch points at something sensible\n"
". The tag looks good, and is annotated\n"
". The commit message for the tag has a quick summary of what's new since the last tag\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1339
+#: documentation/content/en/articles/committers-guide/_index.adoc:1310
#, no-wrap
msgid "Time to finally merge it into the base tree"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1348
+#: documentation/content/en/articles/committers-guide/_index.adoc:1319
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1351
+#: documentation/content/en/articles/committers-guide/_index.adoc:1322
#, no-wrap
msgid "Here 'good' means:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1356
+#: documentation/content/en/articles/committers-guide/_index.adoc:1327
#, no-wrap
msgid ""
". All the right files, and none of the wrong ones, were merged into contrib/glorbnitz.\n"
". No other changes are in the tree.\n"
-". The commit messages look <<commit-log-message,good>>. It should contain a summary of what's changed since the last merge to the FreeBSD main line and any caveats.\n"
+". The commit messages look <<commit-log-message,good>>. It should contain a summary of what's changed since the last merge to the FreeBSD `main` branch and any caveats.\n"
". UPDATING should be updated if there is anything of note, such as user visible changes, important upgrade concerns, etc.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1362
+#: documentation/content/en/articles/committers-guide/_index.adoc:1333
#, no-wrap
msgid ""
"[NOTE]\n"
"====\n"
"This hasn't connected `glorbnitz` to the build yet.\n"
"How so do that is specific to the software being imported and is beyond the scope of this tutorial.\n"
"====\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1363
+#: documentation/content/en/articles/committers-guide/_index.adoc:1334
#, no-wrap
msgid "Keeping current"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1369
+#: documentation/content/en/articles/committers-guide/_index.adoc:1340
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1372
+#: documentation/content/en/articles/committers-guide/_index.adoc:1343
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."
+"pull --rebase` is useful if you have changes staged in the `main` branch."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1376
+#: documentation/content/en/articles/committers-guide/_index.adoc:1347
msgid "% git config --global pull.ff only"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1379
+#: documentation/content/en/articles/committers-guide/_index.adoc:1350
#, no-wrap
msgid "You may need to omit the --global if you want this setting to apply to only this repository.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1385
+#: documentation/content/en/articles/committers-guide/_index.adoc:1356
msgid "% cd freebsd-src % git checkout main % git pull (--ff-only|--rebase)"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1389
+#: documentation/content/en/articles/committers-guide/_index.adoc:1360
#, no-wrap
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.\n"
"This can be harder to recover from.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1391
+#: documentation/content/en/articles/committers-guide/_index.adoc:1362
#, no-wrap
msgid "The longer form is also recommended.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1398
+#: documentation/content/en/articles/committers-guide/_index.adoc:1369
msgid ""
"% cd freebsd-src % git checkout main % git fetch freebsd % git merge --ff-"
"only freebsd/main"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1403
+#: documentation/content/en/articles/committers-guide/_index.adoc:1374
#, no-wrap
msgid ""
-"These commands reset your tree to the main branch, and then update it from where you pulled the tree from originally.\n"
+"These commands reset your tree to the `main` branch, and then update it from where you pulled the tree from originally.\n"
"It's important to switch to `main` before doing this so it moves forward.\n"
"Now, it's time to move the changes forward:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1407
+#: documentation/content/en/articles/committers-guide/_index.adoc:1378
msgid "% git rebase -i main working"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1414
+#: documentation/content/en/articles/committers-guide/_index.adoc:1385
#, no-wrap
msgid ""
"This will bring up an interactive screen to change the defaults.\n"
"For now, just exit the editor.\n"
"Everything should just apply.\n"
"If not, then you'll need to resolve the diffs.\n"
"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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1416
+#: documentation/content/en/articles/committers-guide/_index.adoc:1387
#, no-wrap
msgid "[[git-push-upstream]]\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1416
+#: documentation/content/en/articles/committers-guide/_index.adoc:1387
#, no-wrap
msgid "Time to push changes upstream"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1419
+#: documentation/content/en/articles/committers-guide/_index.adoc:1390
msgid ""
"First, ensure that the push URL is properly configured for the upstream "
"repository."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1423
+#: documentation/content/en/articles/committers-guide/_index.adoc:1394
msgid ""
"% git remote set-url --push freebsd ssh://git@gitrepo.freebsd.org/src.git"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1427
+#: documentation/content/en/articles/committers-guide/_index.adoc:1398
#, no-wrap
msgid ""
"Then, verify that user name and email are configured right.\n"
"We require that they exactly match the passwd entry in FreeBSD cluster.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1429
+#: documentation/content/en/articles/committers-guide/_index.adoc:1400
#, no-wrap
msgid "Use\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1433
+#: documentation/content/en/articles/committers-guide/_index.adoc:1404
msgid "freefall% gen-gitconfig.sh"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1436
+#: documentation/content/en/articles/committers-guide/_index.adoc:1407
#, no-wrap
msgid "on freefall.freebsd.org to get a recipe that you can use directly, assuming /usr/local/bin is in the PATH.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1441
+#: documentation/content/en/articles/committers-guide/_index.adoc:1412
#, no-wrap
msgid ""
-"The below command merges the `working` branch into the upstream main line.\n"
+"The below command merges the `working` branch into the upstream `main` branch.\n"
"It's important that you curate your changes to be just like you want them in the FreeBSD source repo before doing this.\n"
-"This syntax pushes the `working` branch to main, moving the `main` branch forward.\n"
+"This syntax pushes the `working` branch to `main`, moving the `main` branch forward.\n"
"You will only be able to do this if this results in a linear change to `main` (e.g. no merges).\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1445
+#: documentation/content/en/articles/committers-guide/_index.adoc:1416
msgid "% git push freebsd working:main"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1448
+#: documentation/content/en/articles/committers-guide/_index.adoc:1419
#, no-wrap
msgid "If your push is rejected due to losing a commit race, rebase your branch before trying again:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1455
+#: documentation/content/en/articles/committers-guide/_index.adoc:1426
msgid ""
"% git checkout working % git fetch freebsd % git rebase freebsd/main % git "
"push freebsd working:main"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1458
+#: documentation/content/en/articles/committers-guide/_index.adoc:1429
#, no-wrap
msgid "[[git-push-upstream-alt]]\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1458
+#: documentation/content/en/articles/committers-guide/_index.adoc:1429
#, no-wrap
msgid "Time to push changes upstream (alternative)"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1464
+#: documentation/content/en/articles/committers-guide/_index.adoc:1435
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: [source,shell]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1468
+#: documentation/content/en/articles/committers-guide/_index.adoc:1439
msgid "% git checkout main % git merge --ff-only `working` % git push freebsd"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1472
+#: documentation/content/en/articles/committers-guide/_index.adoc:1443
#, no-wrap
msgid ""
"If you lose the race, then try again with\n"
"[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1475
+#: documentation/content/en/articles/committers-guide/_index.adoc:1446
msgid "% git pull --rebase % git push freebsd"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1478
+#: documentation/content/en/articles/committers-guide/_index.adoc:1449
#, no-wrap
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.\n"
"Note: merging vendor branch commits will not work with this technique.\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1479
+#: documentation/content/en/articles/committers-guide/_index.adoc:1450
#, no-wrap
msgid "Finding the Subversion Revision"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1483
+#: documentation/content/en/articles/committers-guide/_index.adoc:1454
msgid ""
"You'll need to make sure that you've fetched the notes (see the <<git-mini-"
"daily-use>> for details). Once you have these, notes will show up in the "
"git log command like so:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1487
+#: documentation/content/en/articles/committers-guide/_index.adoc:1458
msgid "% git log"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1490
+#: documentation/content/en/articles/committers-guide/_index.adoc:1461
#, no-wrap
msgid "If you have a specific version in mind, you can use this construct:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1494
+#: documentation/content/en/articles/committers-guide/_index.adoc:1465
msgid "% git log --grep revision=XXXX"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1498
+#: documentation/content/en/articles/committers-guide/_index.adoc:1469
#, no-wrap
msgid ""
"to find the specific revision.\n"
"The hex number after 'commit' is the hash you can use to refer to this commit.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1500
+#: documentation/content/en/articles/committers-guide/_index.adoc:1471
#, no-wrap
msgid "[[git-faq]]\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:1500
+#: documentation/content/en/articles/committers-guide/_index.adoc:1471
#, no-wrap
msgid "Git FAQ"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1503
+#: documentation/content/en/articles/committers-guide/_index.adoc:1474
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:1509
+#: documentation/content/en/articles/committers-guide/_index.adoc:1480
msgid ""
"[NOTE] ==== 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:1510
+#: documentation/content/en/articles/committers-guide/_index.adoc:1481
#, no-wrap
msgid "Users"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1512
+#: documentation/content/en/articles/committers-guide/_index.adoc:1483
#, no-wrap
msgid "How do I track -current and -stable with only one copy of the repository?"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1517
+#: documentation/content/en/articles/committers-guide/_index.adoc:1488
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1521
+#: documentation/content/en/articles/committers-guide/_index.adoc:1492
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1524
+#: documentation/content/en/articles/committers-guide/_index.adoc:1495
#, no-wrap
msgid ""
"First, you need to clone the FreeBSD repository, shown here cloning into `freebsd-current` to reduce confusion.\n"
"$URL is whatever mirror works best for you:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1528
+#: documentation/content/en/articles/committers-guide/_index.adoc:1499
msgid ""
"% git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/"
"notes/*' $URL freebsd-current"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1531
+#: documentation/content/en/articles/committers-guide/_index.adoc:1502
#, no-wrap
msgid "then once that's cloned, you can simply create a worktree from it:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1536
+#: documentation/content/en/articles/committers-guide/_index.adoc:1507
msgid "% cd freebsd-current % git worktree add ../freebsd-stable-12 stable/12"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1540
+#: documentation/content/en/articles/committers-guide/_index.adoc:1511
#, no-wrap
msgid ""
"this will checkout `stable/12` into a directory named `freebsd-stable-12` that's a peer to the `freebsd-current` directory.\n"
"Once created, it's updated very similarly to how you might expect:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1550
+#: documentation/content/en/articles/committers-guide/_index.adoc:1521
msgid ""
"% cd freebsd-current % git checkout main % git pull --ff-only # changes from "
"upstream now local and current tree updated % cd ../freebsd-stable-12 % git "
"merge --ff-only freebsd/stable/12 # now your stable/12 is up to date too"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1553
+#: documentation/content/en/articles/committers-guide/_index.adoc:1524
#, no-wrap
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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1555
+#: documentation/content/en/articles/committers-guide/_index.adoc:1526
#, no-wrap
msgid "Here's https://adventurist.me/posts/00296[a good writeup] that goes into more detail.\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1556
+#: documentation/content/en/articles/committers-guide/_index.adoc:1527
#, no-wrap
msgid "Developers"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1558
+#: documentation/content/en/articles/committers-guide/_index.adoc:1529
#, no-wrap
-msgid "Ooops! I committed to `main` instead of a branch."
+msgid "Ooops! I committed to `main`, instead of another branch."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1561
+#: documentation/content/en/articles/committers-guide/_index.adoc:1532
#, 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"
+msgid "**Q:** From time to time, I goof up and mistakenly commit to the `main` branch. What do I do?\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1563
+#: documentation/content/en/articles/committers-guide/_index.adoc:1534
#, no-wrap
msgid "**A:** First, don't panic.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1567
+#: documentation/content/en/articles/committers-guide/_index.adoc:1538
#, no-wrap
msgid ""
"Second, don't push.\n"
"In fact, you can fix almost anything if you haven't pushed.\n"
"All the answers in this section assume no push has happened.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1569
+#: documentation/content/en/articles/committers-guide/_index.adoc:1540
#, no-wrap
msgid "The following answer assumes you committed to `main` and want to create a branch called `issue`:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1575
+#: documentation/content/en/articles/committers-guide/_index.adoc:1546
#, 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:1577
+#: documentation/content/en/articles/committers-guide/_index.adoc:1548
#, no-wrap
msgid "Ooops! I committed something to the wrong branch!"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1581
+#: documentation/content/en/articles/committers-guide/_index.adoc:1552
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1585
+#: documentation/content/en/articles/committers-guide/_index.adoc:1556
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1593
+#: documentation/content/en/articles/committers-guide/_index.adoc:1564
msgid ""
"# We're on branch wilma % git checkout fred\t\t# move to fred branch % git "
"cherry-pick wilma\t\t# copy the misplaced commit % git checkout wilma\t\t# "
"go back to wilma branch % git reset --hard HEAD^\t# move what wilma refers "
"to back 1 commit"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1597
+#: documentation/content/en/articles/committers-guide/_index.adoc:1568
#, no-wrap
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\n"
"cherry-pick it over.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1599
+#: documentation/content/en/articles/committers-guide/_index.adoc:1570
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1605
+#: documentation/content/en/articles/committers-guide/_index.adoc:1576
#, 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"
+"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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1607
+#: documentation/content/en/articles/committers-guide/_index.adoc:1578
#, no-wrap
msgid "**Q:** I want to split off some changes from branch `wilma` into branch `fred`\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1613
+#: documentation/content/en/articles/committers-guide/_index.adoc:1584
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1618
+#: documentation/content/en/articles/committers-guide/_index.adoc:1589
#, no-wrap
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.\n"
"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.\n"
"Some people would create a tag/branch called `pre-split` before starting in case something goes wrong in the split.\n"
"You can undo it with the following sequence:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1625
+#: documentation/content/en/articles/committers-guide/_index.adoc:1596
msgid ""
"% git checkout pre-split\t# Go back % git branch -D fred\t\t# delete the "
"fred branch % git checkout -B wilma\t\t# reset the wilma branch % git branch "
"-d pre-split\t# Pretend it didn't happen"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1629
+#: documentation/content/en/articles/committers-guide/_index.adoc:1600
#, no-wrap
msgid ""
"The last step is optional.\n"
"If you are going to try again to split, you'd omit it.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1633
+#: documentation/content/en/articles/committers-guide/_index.adoc:1604
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1635
+#: documentation/content/en/articles/committers-guide/_index.adoc:1606
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1639
+#: documentation/content/en/articles/committers-guide/_index.adoc:1610
#, no-wrap
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.\n"
"Nothing weird happened when I did that, but let's say it did.\n"
"The way to look at what you've done is with the `git reflog`:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1654
+#: documentation/content/en/articles/committers-guide/_index.adoc:1625
msgid ""
"% git reflog 6ff9c25 (HEAD -> wilma) HEAD@{0}: rebase -i (finish): returning "
"to refs/heads/wilma 6ff9c25 (HEAD -> wilma) HEAD@{1}: rebase -i (start): "
"checkout main 869cbd3 HEAD@{2}: rebase -i (start): checkout wilma a6a5094 "
"(fred) HEAD@{3}: rebase -i (finish): returning to refs/heads/fred a6a5094 "
"(fred) HEAD@{4}: rebase -i (pick): Encourage contributions 1ccd109 (freebsd/"
"main, main) HEAD@{5}: rebase -i (start): checkout main 869cbd3 HEAD@{6}: "
"rebase -i (start): checkout fred 869cbd3 HEAD@{7}: checkout: moving from "
"wilma to fred 869cbd3 HEAD@{8}: commit: Encourage contributions ... %"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1662
+#: documentation/content/en/articles/committers-guide/_index.adoc:1633
#, no-wrap
msgid ""
"Here we see the changes I've made.\n"
"You can use it to figure out where things went wrong.\n"
"I'll just point out a few things here.\n"
"The first one is that HEAD@{X} is a 'commitish' thing, so you can use that as an argument to a command.\n"
"Although if that command commits anything to the repository, the X numbers change.\n"
"You can also use the hash (first column).\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1670
+#: documentation/content/en/articles/committers-guide/_index.adoc:1641
#, no-wrap
msgid ""
"Next, 'Encourage contributions' was the last commit I made to `wilma` before I decided to split things up.\n"
"You can also see the same hash is there when I created the `fred` branch to do that.\n"
"I started by rebasing `fred` and you see the 'start', each step, and the 'finish' for that process.\n"
"While we don't need it here, you can figure out exactly what happened.\n"
"Fortunately, to fix this, you can follow the prior answer's steps, but with the hash `869cbd3` instead of `pre-split`.\n"
"While that seems a bit verbose, it's easy to remember since you're doing one thing at a time.\n"
"You can also stack:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1675
+#: documentation/content/en/articles/committers-guide/_index.adoc:1646
msgid "% git checkout -B wilma 869cbd3 % git branch -D fred"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1682
+#: documentation/content/en/articles/committers-guide/_index.adoc:1653
#, no-wrap
msgid ""
"and you are ready to try again.\n"
-"The 'checkout -B' with the hash combines checking out and creating a branch for it.\n"
-"The -B instead of -b forces the movement of a pre-existing branch.\n"
+"The `checkout -B` with the hash combines checking out and creating a branch for it.\n"
+"The `-B` instead of `-b` forces the movement of a pre-existing branch.\n"
"Either way works, which is what's great (and awful) about Git.\n"
"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:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1688
+#: documentation/content/en/articles/committers-guide/_index.adoc:1659
msgid "% git checkout 869cbd3 M\tfaq.md Note: checking out '869cbd3'."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1692
+#: documentation/content/en/articles/committers-guide/_index.adoc:1663
msgid ""
"You are in 'detached HEAD' state. You can look around, make experimental "
"changes and commit them, and you can discard any commits you make in this "
"state without impacting any branches by performing another checkout."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1695
+#: documentation/content/en/articles/committers-guide/_index.adoc:1666
msgid ""
"If you want to create a new branch to retain commits you create, you may do "
"so (now or later) by using -b with the checkout command again. Example:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1700
+#: documentation/content/en/articles/committers-guide/_index.adoc:1671
msgid "HEAD is now at 869cbd3 Encourage contributions % git checkout -B wilma"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1703
+#: documentation/content/en/articles/committers-guide/_index.adoc:1674
#, no-wrap
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.\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1704
+#: documentation/content/en/articles/committers-guide/_index.adoc:1675
#, no-wrap
msgid "Ooops! I did a `git pull` and it created a merge commit, what do I do?"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1708
+#: documentation/content/en/articles/committers-guide/_index.adoc:1679
#, 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"
+"**Q:** I was on autopilot and did a `git pull` for my development tree and that created a merge commit on `main`.\n"
"How do I recover?\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1710
+#: documentation/content/en/articles/committers-guide/_index.adoc:1681
#, no-wrap
msgid "**A:** This can happen when you invoke the pull with your development branch checked out.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1713
+#: documentation/content/en/articles/committers-guide/_index.adoc:1684
#, no-wrap
msgid ""
"Right after the pull, you will have the new merge commit checked out.\n"
"Git supports a `HEAD^#` syntax to examine the parents of a merge commit:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1718
+#: documentation/content/en/articles/committers-guide/_index.adoc:1689
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1722
+#: documentation/content/en/articles/committers-guide/_index.adoc:1693
#, no-wrap
msgid ""
"From those logs, you can easily identify which commit is your development work.\n"
"Then you simply reset your branch to the corresponding `HEAD^#`:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1726
+#: documentation/content/en/articles/committers-guide/_index.adoc:1697
msgid "git reset --hard HEAD^2"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1729
+#: documentation/content/en/articles/committers-guide/_index.adoc:1700
#, no-wrap
msgid "**Q:** But I also need to fix my `main` branch. How do I do that?\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1732
+#: documentation/content/en/articles/committers-guide/_index.adoc:1703
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1736
+#: documentation/content/en/articles/committers-guide/_index.adoc:1707
msgid "git branch -f main freebsd/main"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1741
+#: documentation/content/en/articles/committers-guide/_index.adoc:1712
#, no-wrap
msgid ""
"There's nothing magical about branches in Git: they are just labels on a graph that are automatically moved forward by making commits.\n"
"So the above works because you're just moving a label.\n"
"There's no metadata about the branch that needs to be preserved due to this.\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1742
+#: documentation/content/en/articles/committers-guide/_index.adoc:1713
#, no-wrap
msgid "Mixing and matching branches"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1746
+#: documentation/content/en/articles/committers-guide/_index.adoc:1717
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1748
+#: documentation/content/en/articles/committers-guide/_index.adoc:1719
#, no-wrap
msgid "**A:** This is a job for cherry pick.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1754
+#: documentation/content/en/articles/committers-guide/_index.adoc:1725
msgid ""
"% git checkout worker % git checkout -b feature\t# create a new branch % git "
"cherry-pick main..async\t# bring in the changes"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1759
+#: documentation/content/en/articles/committers-guide/_index.adoc:1730
#, no-wrap
msgid ""
"You now have a new branch called `feature`.\n"
"This branch combines commits from both branches.\n"
"You can further curate it with `git rebase`.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1761
+#: documentation/content/en/articles/committers-guide/_index.adoc:1732
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1764
+#: documentation/content/en/articles/committers-guide/_index.adoc:1735
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1770
+#: documentation/content/en/articles/committers-guide/_index.adoc:1741
msgid ""
"% git checkout driver\t\t# Checkout the driver % git checkout -b kernel\t# "
"Create kernel branch % git checkout -b userland\t# Create userland branch"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1775
+#: documentation/content/en/articles/committers-guide/_index.adoc:1746
#, no-wrap
msgid ""
"Now you have two identical branches.\n"
"So, it's time to separate out the commits.\n"
"We'll assume first that all the commits in `driver` go into either the `kernel` or the `userland` branch, but not both.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1779
+#: documentation/content/en/articles/committers-guide/_index.adoc:1750
msgid "% git rebase -i main kernel"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1782
+#: documentation/content/en/articles/committers-guide/_index.adoc:1753
#, no-wrap
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).\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1786
+#: documentation/content/en/articles/committers-guide/_index.adoc:1757
msgid "% git rebase -i main userland"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1789
+#: documentation/content/en/articles/committers-guide/_index.adoc:1760
#, no-wrap
msgid "and do the same thing you did with the `kernel` branch.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1792
+#: documentation/content/en/articles/committers-guide/_index.adoc:1763
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1795
+#: documentation/content/en/articles/committers-guide/_index.adoc:1766
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1801
+#: documentation/content/en/articles/committers-guide/_index.adoc:1772
msgid "% git checkout kernel % git log driver % git cherry-pick $HASH"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1807
+#: documentation/content/en/articles/committers-guide/_index.adoc:1778
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1810
+#: documentation/content/en/articles/committers-guide/_index.adoc:1781
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1815
+#: documentation/content/en/articles/committers-guide/_index.adoc:1786
#, no-wrap
msgid ""
"So let's assume that there's just one commit with a clean tree.\n"
"You can either use `git rebase` with an `edit` line, or you can use this with the commit on the tip.\n"
"The steps are the same either way.\n"
"The first thing we need to do is to back up one commit while leaving the changes uncommitted in the tree:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1819
+#: documentation/content/en/articles/committers-guide/_index.adoc:1790
msgid "% git reset HEAD^"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1822
+#: documentation/content/en/articles/committers-guide/_index.adoc:1793
#, no-wrap
msgid "Note: Do not, repeat do not, add `--hard` here since that also removes the changes from your tree.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1826
+#: documentation/content/en/articles/committers-guide/_index.adoc:1797
#, no-wrap
msgid ""
"Now, if you are lucky, the change needing to be split up falls entirely along file lines.\n"
"In that case you can just do the usual `git add` for the files in each group than do a `git commit`.\n"
"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).\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1829
+#: documentation/content/en/articles/committers-guide/_index.adoc:1800
#, no-wrap
msgid ""
"If you are not lucky, you'll need to split apart files.\n"
"There's another tool to do that which you can apply one file at a time.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1833
+#: documentation/content/en/articles/committers-guide/_index.adoc:1804
msgid "git add -i foo/bar.c"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1839
+#: documentation/content/en/articles/committers-guide/_index.adoc:1810
#, no-wrap
msgid ""
"will step through the diffs, prompting you, one at time, whether to include or exclude the hunk.\n"
"Once you're done, `git commit` and you'll have the remainder in your tree.\n"
"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\n"
"and use the `git rebase -i` to fold the related commits together).\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:1840
+#: documentation/content/en/articles/committers-guide/_index.adoc:1811
#, no-wrap
msgid "Cloning and Mirroring"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1843
+#: documentation/content/en/articles/committers-guide/_index.adoc:1814
#, no-wrap
msgid "**Q:** I'd like to mirror the entire Git repository, how do I do that?\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1845
+#: documentation/content/en/articles/committers-guide/_index.adoc:1816
#, no-wrap
msgid "**A:** If all you want to do is mirror, then\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1849
+#: documentation/content/en/articles/committers-guide/_index.adoc:1820
msgid "% git clone --mirror $URL"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1853
+#: documentation/content/en/articles/committers-guide/_index.adoc:1824
#, no-wrap
msgid ""
"will do the trick.\n"
"However, there are two disadvantages to this if you want to use it for anything other than a mirror you'll reclone.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1857
+#: documentation/content/en/articles/committers-guide/_index.adoc:1828
#, no-wrap
msgid ""
"First, this is a 'bare repository' which has the repository database, but no checked out worktree.\n"
"This is great for mirroring, but terrible for day to day work.\n"
-"There's a number of ways around this with 'git worktree':\n"
+"There's a number of ways around this with `git worktree`:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1865
+#: documentation/content/en/articles/committers-guide/_index.adoc:1836
msgid ""
"% git clone --mirror https://git.freebsd.org/ports.git ports.git % cd ports."
"git % git worktree add ../ports main % git worktree add ../quarterly "
"branches/2020Q4 % cd ../ports"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1868
+#: documentation/content/en/articles/committers-guide/_index.adoc:1839
#, no-wrap
msgid "But if you aren't using your mirror for further local clones, then it's a poor match.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1871
+#: documentation/content/en/articles/committers-guide/_index.adoc:1842
#, no-wrap
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.\n"
"This means that you'll lose changes if you are committing to this repository on anything other than private project branches.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1873
+#: documentation/content/en/articles/committers-guide/_index.adoc:1844
#, no-wrap
msgid "**Q:** So what can I do instead?\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1876
+#: documentation/content/en/articles/committers-guide/_index.adoc:1847
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1880
+#: documentation/content/en/articles/committers-guide/_index.adoc:1851
#, no-wrap
msgid " fetch = +refs/heads/*:refs/remotes/freebsd/*\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1883
+#: documentation/content/en/articles/committers-guide/_index.adoc:1854
#, no-wrap
msgid "which says just fetch the branch refs.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1887
+#: documentation/content/en/articles/committers-guide/_index.adoc:1858
#, no-wrap
msgid ""
"However, the FreeBSD repository has a number of other things in it.\n"
"To see those, you can add explicit refspecs for each ref namespace, or you can fetch everything.\n"
"To setup your repository to do that:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1891
+#: documentation/content/en/articles/committers-guide/_index.adoc:1862
msgid "git config --add remote.freebsd.fetch '+refs/*:refs/freebsd/*'"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1895
+#: documentation/content/en/articles/committers-guide/_index.adoc:1866
#, no-wrap
msgid ""
-"which will put everything in the upstream repository into your local repository's 'refs/freebsd/' namespace.\n"
+"which will put everything in the upstream repository into your local repository's `refs/freebsd/` namespace.\n"
"Please note, that this also grabs all the unconverted vendor branches and the number of refs associated with them is quite large.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1897
+#: documentation/content/en/articles/committers-guide/_index.adoc:1868
#, no-wrap
msgid "You'll need to refer to these 'refs' with their full name because they aren't in and of Git's regular namespaces.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1901
+#: documentation/content/en/articles/committers-guide/_index.adoc:1872
msgid "git log refs/freebsd/vendor/zlib/1.2.10"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1904
+#: documentation/content/en/articles/committers-guide/_index.adoc:1875
#, no-wrap
msgid "would look at the log for the vendor branch for zlib starting at 1.2.10.\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:1905
+#: documentation/content/en/articles/committers-guide/_index.adoc:1876
#, no-wrap
msgid "Collaborating with others"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1909
+#: documentation/content/en/articles/committers-guide/_index.adoc:1880
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."
+"such as a hosted GitLab or GitHub, to share changes in a user-generated "
+"branch."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1911
+#: documentation/content/en/articles/committers-guide/_index.adoc:1882
msgid ""
"The following instructions show how to set up a user-generated branch, based "
-"on the FreeBSD main branch, and push it to GitHub."
+"on the FreeBSD `main` branch, and push it to GitHub."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1913
+#: documentation/content/en/articles/committers-guide/_index.adoc:1884
msgid ""
"Before you begin, make sure that your local Git repo is up to date and has "
"the correct origins set <<keeping_current,as shown above.>>"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1920
+#: documentation/content/en/articles/committers-guide/_index.adoc:1891
msgid ""
"[source,shell] ```` % git remote -v freebsd https://git.freebsd.org/src.git "
"(fetch) freebsd ssh://git@gitrepo.freebsd.org/src.git (push) ````"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1923
+#: documentation/content/en/articles/committers-guide/_index.adoc:1894
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1926
+#: documentation/content/en/articles/committers-guide/_index.adoc:1897
msgid ""
"Now add a remote on your local system that points to your fork: [source,"
"shell]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1933
+#: documentation/content/en/articles/committers-guide/_index.adoc:1904
msgid ""
"% git remote add github git@github.com:gvnn3/freebsd-src.git % git remote -v "
"github\tgit@github.com:gvnn3/freebsd-src.git (fetch) github\tgit@github.com:"
"gvnn3/freebsd-src.git (push) freebsd\thttps://git.freebsd.org/src.git "
"(fetch) freebsd\tssh://git@gitrepo.freebsd.org/src.git (push)"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1935
+#: documentation/content/en/articles/committers-guide/_index.adoc:1906
#, no-wrap
msgid "With this in place you can create a branch <<keeping_a_local_branch,as shown above.>>\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1939
+#: documentation/content/en/articles/committers-guide/_index.adoc:1910
msgid "% git checkout -b gnn-pr2001-fix"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1943
+#: documentation/content/en/articles/committers-guide/_index.adoc:1914
#, no-wrap
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.\n"
"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:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1949
+#: documentation/content/en/articles/committers-guide/_index.adoc:1920
msgid ""
"% git push github fatal: The current branch gnn-pr2001-fix has no upstream "
"branch. To push the current branch and set the remote as upstream, use"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1951
+#: documentation/content/en/articles/committers-guide/_index.adoc:1922
#, no-wrap
msgid " git push --set-upstream github gnn-pr2001-fix\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1954
+#: documentation/content/en/articles/committers-guide/_index.adoc:1925
#, no-wrap
msgid "Setting the push as +git+ advises allows it to succeed:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1970
+#: documentation/content/en/articles/committers-guide/_index.adoc:1941
#, 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"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1972
+#: documentation/content/en/articles/committers-guide/_index.adoc:1943
#, no-wrap
msgid ""
"[new branch] gnn-feature -> gnn-feature\n"
"Branch 'gnn-feature' set up to track remote branch 'gnn-feature' from 'github'.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1975
+#: documentation/content/en/articles/committers-guide/_index.adoc:1946
#, no-wrap
msgid "Subsequent changes to the same branch will push correctly by default:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:1988
+#: documentation/content/en/articles/committers-guide/_index.adoc:1959
#, 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1992
+#: documentation/content/en/articles/committers-guide/_index.adoc:1963
#, no-wrap
msgid ""
"At this point your work is now in your branch on +GitHub+ and you can\n"
"share the link with other collaborators.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1994
+#: documentation/content/en/articles/committers-guide/_index.adoc:1965
#, no-wrap
msgid "[[github-pull-land]]\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:1994
+#: documentation/content/en/articles/committers-guide/_index.adoc:1965
#, no-wrap
msgid "Landing a github pull request"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:1999
+#: documentation/content/en/articles/committers-guide/_index.adoc:1970
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2003
+#: documentation/content/en/articles/committers-guide/_index.adoc:1974
msgid ""
"Before beginning, make sure that the local Git repo is up to date and has "
"the correct origins set <<keeping_current,as shown above.>> In addition, "
"make sure to have the following origins: [source,shell]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2009
+#: documentation/content/en/articles/committers-guide/_index.adoc:1980
msgid ""
"% git remote -v freebsd https://git.freebsd.org/src.git (fetch) freebsd "
"ssh://git@gitrepo.freebsd.org/src.git (push) github https://github.com/"
"freebsd/freebsd-src (fetch) github https://github.com/freebsd/freebsd-src "
"(fetch)"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2029
+#: documentation/content/en/articles/committers-guide/_index.adoc:2000
#, no-wrap
msgid ""
"Often pull requests are simple: requests that contain only a single commit.\n"
"In this case, a streamlined approach may be used, though the approach in the prior section will also work.\n"
"Here, a branch is created, the change is cherry picked, the commit message adjusted, and sanity-checked before being pushed.\n"
"The branch `staging` is used in this example but it can be any name.\n"
"This technique works for any number of commits in the pull request, especially when the changes apply cleanly to the FreeBSD tree.\n"
"However, when there's multiple commits, especially when minor adjustments are needed, `git rebase -i` works better than `git cherry-pick`.\n"
"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`.\n"
"The PR number is `$PR` below.\n"
"When adjusting the message, add `Pull Request: https://github.com/freebsd-src/pull/$PR`.\n"
"All pull requests committed to the FreeBSD repository should be reviewed by at least one person.\n"
"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.\n"
"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.\n"
"Add anybody that reviews and approves the commit on github to `Reviewed by:` as well.\n"
"As always, care should be taken to ensure the change does what it is supposed to, and that no malicious code is present.\n"
"[NOTE]\n"
"======\n"
"In addition, please check to make sure that the pull request author name is not anonymous.\n"
"Github's web editing interface generates names like:\n"
"[source,shell]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2031
+#: documentation/content/en/articles/committers-guide/_index.adoc:2002
#, no-wrap
msgid "Author: github-user <38923459+github-user@users.noreply.github.com>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2035
+#: documentation/content/en/articles/committers-guide/_index.adoc:2006
#, no-wrap
msgid ""
"A polite request to the author for a better name and/or email should be made.\n"
"Extra care should be taken to ensure no style issue or malicious code is introduced.\n"
"======\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2047
+#: documentation/content/en/articles/committers-guide/_index.adoc:2018
msgid ""
"% git fetch github pull/$PR/head:staging % git rebase -i main staging\t# to "
"move the staging branch forward, adjust commit message here <do testing "
"here, as needed> % git checkout main % git pull --ff-only\t\t# to get the "
"latest if time has passed % git checkout main % git merge --ff-only staging "
"<test again if needed> % git push freebsd --push-option=confirm-author"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2052
+#: documentation/content/en/articles/committers-guide/_index.adoc:2023
#, no-wrap
msgid ""
"[.procedure]\n"
"====\n"
"For complicated pull requests that have multiple commits with conflicts, follow the following outline.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2060
+#: documentation/content/en/articles/committers-guide/_index.adoc:2031
#, no-wrap
msgid ""
". checkout the pull request `git checkout github/pull/XXX`\n"
". create a branch to rebase `git checkout -b staging`\n"
". rebase the `staging` branch to the latest `main` with `git rebase -i main staging`\n"
". resolve conflicts and do whatever testing is needed\n"
". fast forward the `staging` branch into `main` as above\n"
". final sanity check of changes to make sure all is well\n"
". push to FreeBSD's Git repository.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2065
+#: documentation/content/en/articles/committers-guide/_index.adoc:2036
#, no-wrap
msgid ""
"This will also work when bringing branches developed elsewhere into the local tree for committing.\n"
"====\n"
"Once finished with the pull request, close it using GitHub's web interface.\n"
"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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2067
+#: documentation/content/en/articles/committers-guide/_index.adoc:2038
#, no-wrap
msgid "[[vcs-history]]\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2067
+#: documentation/content/en/articles/committers-guide/_index.adoc:2038
#, no-wrap
msgid "Version Control History"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2070
+#: documentation/content/en/articles/committers-guide/_index.adoc:2041
msgid "The project has moved to <<git-primer,git>>."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2076
+#: documentation/content/en/articles/committers-guide/_index.adoc:2047
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2082
+#: documentation/content/en/articles/committers-guide/_index.adoc:2053
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2088
+#: documentation/content/en/articles/committers-guide/_index.adoc:2059
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2090
+#: documentation/content/en/articles/committers-guide/_index.adoc:2061
msgid "[[conventions]]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2090
+#: documentation/content/en/articles/committers-guide/_index.adoc:2061
#, no-wrap
msgid "Setup, Conventions, and Traditions"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2095
+#: documentation/content/en/articles/committers-guide/_index.adoc:2066
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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2097
+#: documentation/content/en/articles/committers-guide/_index.adoc:2068
msgid "[[conventions-committers]]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2097
+#: documentation/content/en/articles/committers-guide/_index.adoc:2068
#, no-wrap
msgid "For New Committers"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2100
+#: documentation/content/en/articles/committers-guide/_index.adoc:2071
msgid ""
"Those who have been given commit rights to the FreeBSD repositories must "
"follow these steps."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2103
+#: documentation/content/en/articles/committers-guide/_index.adoc:2074
#, no-wrap
msgid ""
"* Get mentor approval before committing each of these changes!\n"
"* 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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2108
+#: documentation/content/en/articles/committers-guide/_index.adoc:2079
#, no-wrap
msgid ""
"[[commit-steps]]\n"
"[.procedure]\n"
"====\n"
"*Steps for New Committers*\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2155
+#: documentation/content/en/articles/committers-guide/_index.adoc:2126
#, no-wrap
msgid ""
". Add an Author Entity\n"
"+\n"
"[.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.\n"
". Update the List of Developers and Contributors\n"
"+\n"
"[.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.\n"
"+\n"
"[.filename]#doc/shared/contrib-additional.adoc# - _Remove_ the entry. Entries are sorted by first name.\n"
". Add a News Item\n"
"+\n"
"[.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.\n"
". Add a PGP Key\n"
"+\n"
"`{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.\n"
"+\n"
"Use [.filename]#doc/documentation/tools/checkkey.sh# to verify that keys meet minimal best-practices standards.\n"
"+\n"
"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.\n"
"+\n"
"[NOTE]\n"
"======\n"
"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].\n"
"======\n"
". Update Mentor and Mentee Information\n"
"+\n"
"[.filename]#src/share/misc/committers-<repository>.dot# - Add an entry to the current committers section, where _repository_ is `doc`, `ports`, or `src`, depending on the commit privileges granted.\n"
"+\n"
"Add an entry for each additional mentor/mentee relationship in the bottom section.\n"
". Generate a Kerberos Password\n"
"+\n"
"See <<kerberos-ldap>> to generate or set a Kerberos account for use with other FreeBSD services like the link:https://bugs.freebsd.org/bugzilla/[bug-tracking database] (you get a bug-tracking account as part of that step).\n"
". Optional: Enable Wiki Account\n"
"+\n"
"link:https://wiki.freebsd.org[FreeBSD Wiki] Account - A wiki account allows sharing projects and ideas.\n"
"Those who do not yet have an account can follow instructions on the link:https://wiki.freebsd.org/Wiki/About[Wiki/About page] to obtain one.\n"
"Contact mailto:wiki-admin@FreeBSD.org[wiki-admin@FreeBSD.org] if you need help with your Wiki account.\n"
". Optional: Update Wiki Information\n"
"+\n"
"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], https://wiki.freebsd.org/Community/Dogs[Dogs of FreeBSD], and or https://wiki.freebsd.org/Community/Cats[Cats of FreeBSD] pages.\n"
". Optional: Update Ports with Personal Information\n"
"+\n"
"[.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.\n"
". Optional: Prevent Duplicate Mailings\n"
"+\n"
"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.\n"
"====\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2157
+#: documentation/content/en/articles/committers-guide/_index.adoc:2128
#, no-wrap
msgid "[[conventions-everyone]]\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2157
+#: documentation/content/en/articles/committers-guide/_index.adoc:2128
#, no-wrap
msgid "For Everyone"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2177
+#: documentation/content/en/articles/committers-guide/_index.adoc:2148
msgid ""
"[[conventions-everyone-steps]] [.procedure] ==== . 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! . 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. + [NOTE] ====== If "
"your e-mail system uses SPF with strict rules, you should exclude `mx2."
"FreeBSD.org` from SPF checks. ====== + 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`. + [NOTE] ====== 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: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2179
+#: documentation/content/en/articles/committers-guide/_index.adoc:2150
msgid "[[smtp-setup]]"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:2179
+#: documentation/content/en/articles/committers-guide/_index.adoc:2150
#, no-wrap
msgid "SMTP Access Setup"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2182
+#: documentation/content/en/articles/committers-guide/_index.adoc:2153
msgid ""
"For those willing to send e-mail messages through the FreeBSD.org "
"infrastructure, follow the instructions below:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2203
+#: documentation/content/en/articles/committers-guide/_index.adoc:2174
msgid ""
"[.procedure] ==== . Point your mail client at `smtp.FreeBSD.org:587`. . "
"Enable STARTTLS. . Ensure your `From:` address is set to "
"`_yourusername_@FreeBSD.org`. . For authentication, you can use your "
"FreeBSD Kerberos username and password (see <<kerberos-ldap>>). The "
"`_yourusername_/mail` principal is preferred, as it is only valid for "
"authenticating to mail resources. + [NOTE] ====== Do not include `@FreeBSD."
"org` when entering in your username. ====== + .Additional Notes [NOTE] "
"====== * Will only accept mail from `_yourusername_@FreeBSD.org`. If you are "
"authenticated as one user, you are not permitted to send mail from another. "
"* A header will be appended with the SASL username: (`Authenticated sender: "
"_username_`). * Host has various rate limits in place to cut down on brute "
"force attempts. ====== ===="
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2205
+#: documentation/content/en/articles/committers-guide/_index.adoc:2176
msgid "[[smtp-setup-local-mta]]"
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:2205
+#: documentation/content/en/articles/committers-guide/_index.adoc:2176
#, 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:2208
+#: documentation/content/en/articles/committers-guide/_index.adoc:2179
msgid ""
"It is also possible to use a local MTA to forward locally sent emails to the "
"FreeBSD.org SMTP servers."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2213
+#: documentation/content/en/articles/committers-guide/_index.adoc:2184
msgid "[[smtp-setup-local-postfix]] .Using Postfix [example] ===="
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2215
+#: documentation/content/en/articles/committers-guide/_index.adoc:2186
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:2217
+#: documentation/content/en/articles/committers-guide/_index.adoc:2188
msgid "[.programlisting]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2223
+#: documentation/content/en/articles/committers-guide/_index.adoc:2194
msgid ""
"sender_dependent_relayhost_maps = hash:/usr/local/etc/postfix/relayhost_maps "
"smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous "
"smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd "
"smtp_use_tls = yes"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2226
+#: documentation/content/en/articles/committers-guide/_index.adoc:2197
#, no-wrap
msgid "Create [.filename]#/usr/local/etc/postfix/relayhost_maps# with the following content:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2228
-#: documentation/content/en/articles/committers-guide/_index.adoc:2235
-#: documentation/content/en/articles/committers-guide/_index.adoc:2242
-#: documentation/content/en/articles/committers-guide/_index.adoc:2250
-#: documentation/content/en/articles/committers-guide/_index.adoc:2265
-#: documentation/content/en/articles/committers-guide/_index.adoc:2275
-#: documentation/content/en/articles/committers-guide/_index.adoc:2289
-#: documentation/content/en/articles/committers-guide/_index.adoc:2319
+#: documentation/content/en/articles/committers-guide/_index.adoc:2199
+#: documentation/content/en/articles/committers-guide/_index.adoc:2206
+#: documentation/content/en/articles/committers-guide/_index.adoc:2213
+#: documentation/content/en/articles/committers-guide/_index.adoc:2221
+#: documentation/content/en/articles/committers-guide/_index.adoc:2236
+#: documentation/content/en/articles/committers-guide/_index.adoc:2246
+#: documentation/content/en/articles/committers-guide/_index.adoc:2260
+#: documentation/content/en/articles/committers-guide/_index.adoc:2290
#, no-wrap
msgid "[.programlisting]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2230
+#: documentation/content/en/articles/committers-guide/_index.adoc:2201
msgid "yourusername@FreeBSD.org [smtp.freebsd.org]:587"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2233
+#: documentation/content/en/articles/committers-guide/_index.adoc:2204
#, no-wrap
msgid "Create [.filename]#/usr/local/etc/postfix/sasl_passwd# with the following content:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2237
+#: documentation/content/en/articles/committers-guide/_index.adoc:2208
#, no-wrap
msgid "[smtp.freebsd.org]:587 yourusername:yourpassword\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2240
+#: documentation/content/en/articles/committers-guide/_index.adoc:2211
#, no-wrap
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#:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2245
+#: documentation/content/en/articles/committers-guide/_index.adoc:2216
msgid ""
"smtpd_sender_login_maps = hash:/usr/local/etc/postfix/sender_login_maps "
"smtpd_sender_restrictions = reject_known_sender_login_mismatch"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2248
+#: documentation/content/en/articles/committers-guide/_index.adoc:2219
#, no-wrap
msgid "Create [.filename]#/usr/local/etc/postfix/sender_login_maps# with the following content:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2252
+#: documentation/content/en/articles/committers-guide/_index.adoc:2223
msgid "yourusername@FreeBSD.org yourlocalusername"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2256
+#: documentation/content/en/articles/committers-guide/_index.adoc:2227
#, no-wrap
msgid ""
"Where _yourlocalusername_ is the SASL username used to connect to the local instance of Postfix.\n"
"====\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2261
+#: documentation/content/en/articles/committers-guide/_index.adoc:2232
#, no-wrap
msgid ""
"[[smtp-setup-local-opensmtpd]]\n"
".Using OpenSMTPD\n"
"[example]\n"
"====\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2263
+#: documentation/content/en/articles/committers-guide/_index.adoc:2234
#, no-wrap
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#:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2268
+#: documentation/content/en/articles/committers-guide/_index.adoc:2239
msgid ""
"action \"freebsd\" relay host smtp+tls://freebsd@smtp.freebsd.org:587 auth "
"<secrets> match from any auth yourlocalusername mail-from "
"\"_yourusername_@freebsd.org\" for any action \"freebsd\""
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2271
+#: documentation/content/en/articles/committers-guide/_index.adoc:2242
#, no-wrap
msgid "Where _yourlocalusername_ is the SASL username used to connect to the local instance of OpenSMTPD.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2273
+#: documentation/content/en/articles/committers-guide/_index.adoc:2244
#, no-wrap
msgid "Create [.filename]#/usr/local/etc/mail/secrets# with the following content:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2277
+#: documentation/content/en/articles/committers-guide/_index.adoc:2248
msgid "freebsd\tyourusername:yourpassword"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2284
+#: documentation/content/en/articles/committers-guide/_index.adoc:2255
#, no-wrap
msgid ""
"====\n"
"[[smtp-setup-local-exim]]\n"
".Using Exim\n"
"[example]\n"
"====\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2287
+#: documentation/content/en/articles/committers-guide/_index.adoc:2258
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2296
+#: documentation/content/en/articles/committers-guide/_index.adoc:2267
#, 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: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2308
+#: documentation/content/en/articles/committers-guide/_index.adoc:2279
#, no-wrap
msgid ""
"Transport Section:\n"
"freebsd_smtp:\n"
" driver = smtp\n"
" tls_certificate=<local certificate>\n"
" tls_privatekey=<local certificate private key>\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 = <local DKIM domain>\n"
" dkim_selector = <local DKIM selector>\n"
" dkim_private_key= <local DKIM private key>\n"
" dnssec_request_domains = *\n"
" hosts_require_auth = smtp.freebsd.org\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2314
+#: documentation/content/en/articles/committers-guide/_index.adoc:2285
#, no-wrap
msgid ""
"Authenticators:\n"
"fixed_plain:\n"
" driver = plaintext\n"
" public_name = PLAIN\n"
" client_send = ^example/mail^examplePassword\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2317
+#: documentation/content/en/articles/committers-guide/_index.adoc:2288
#, no-wrap
msgid "Create [.filename]#/usr/local/etc/exim/freebsd_send# with the following content:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2321
+#: documentation/content/en/articles/committers-guide/_index.adoc:2292
msgid "example@freebsd.org:smtp.freebsd.org::587"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2324
+#: documentation/content/en/articles/committers-guide/_index.adoc:2295
#, no-wrap
msgid "====\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2326
+#: documentation/content/en/articles/committers-guide/_index.adoc:2297
#, no-wrap
msgid "[[mentors]]\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2326
+#: documentation/content/en/articles/committers-guide/_index.adoc:2297
#, no-wrap
msgid "Mentors"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2331
+#: documentation/content/en/articles/committers-guide/_index.adoc:2302
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:2334
+#: documentation/content/en/articles/committers-guide/_index.adoc:2305
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:2338
+#: documentation/content/en/articles/committers-guide/_index.adoc:2309
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 <<admin-branch>>."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2340
+#: documentation/content/en/articles/committers-guide/_index.adoc:2311
msgid "[[pre-commit-review]]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2340
+#: documentation/content/en/articles/committers-guide/_index.adoc:2311
#, no-wrap
msgid "Pre-Commit Review"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2345
+#: documentation/content/en/articles/committers-guide/_index.adoc:2316
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` "
+"guidelines apply to commits to the `main` (-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:2351
+#: documentation/content/en/articles/committers-guide/_index.adoc:2322
#, no-wrap
msgid ""
"* All non-trivial changes should be reviewed before they are committed to the repository.\n"
"* Reviews may be conducted by email, in Bugzilla, in Phabricator, or by another mechanism. Where possible, reviews should be public.\n"
"* The developer responsible for a code change is also responsible for making all necessary review-related changes.\n"
"* 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.\n"
"* Timeouts are not a substitute for review.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2353
+#: documentation/content/en/articles/committers-guide/_index.adoc:2324
#, no-wrap
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:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2360
+#: documentation/content/en/articles/committers-guide/_index.adoc:2331
#, no-wrap
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.\n"
"* 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.\n"
"* Ask for help on mailing lists, IRC, etc. Others may be able to either help you directly, or suggest a reviewer.\n"
"* 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.\n"
"+\n"
"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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2365
+#: documentation/content/en/articles/committers-guide/_index.adoc:2336
#, no-wrap
msgid ""
"Developers should participate in code reviews as both reviewers and reviewees.\n"
"If someone is kind enough to review your code, you should return the favor for someone else.\n"
"Note that while anyone is welcome to review and give feedback on a patch, only an appropriate subject-matter expert can approve a change.\n"
"This will usually be a committer who works with the code in question on a regular basis.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2368
+#: documentation/content/en/articles/committers-guide/_index.adoc:2339
#, no-wrap
msgid ""
"In some cases, no subject-matter expert may be available.\n"
"In those cases, a review by an experienced developer is sufficient when coupled with appropriate testing.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2370
+#: documentation/content/en/articles/committers-guide/_index.adoc:2341
#, no-wrap
msgid "[[commit-log-message]]\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2370
+#: documentation/content/en/articles/committers-guide/_index.adoc:2341
#, no-wrap
msgid "Commit Log Messages"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2373
+#: documentation/content/en/articles/committers-guide/_index.adoc:2344
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:2374
+#: documentation/content/en/articles/committers-guide/_index.adoc:2345
#, no-wrap
msgid "Why are commit messages important?"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2378
+#: documentation/content/en/articles/committers-guide/_index.adoc:2349
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:2381
+#: documentation/content/en/articles/committers-guide/_index.adoc:2352
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:2384
+#: documentation/content/en/articles/committers-guide/_index.adoc:2355
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:2386
+#: documentation/content/en/articles/committers-guide/_index.adoc:2357
msgid "Commit messages serve at least three purposes:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2393
+#: documentation/content/en/articles/committers-guide/_index.adoc:2364
#, no-wrap
msgid ""
"* Communicating with other developers\n"
"+\n"
"FreeBSD commits generate email to various mailing lists.\n"
"These include the commit message along with a copy of the patch itself.\n"
"Commit messages are also viewed through commands like git log.\n"
"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.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2399
+#: documentation/content/en/articles/committers-guide/_index.adoc:2370
#, no-wrap
msgid ""
"* Making Changes Discoverable\n"
"+\n"
"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.\n"
"Verbose, detailed commit messages allow searches for changes that might be relevant.\n"
"For example, `git log --since 1year --grep 'USB timeout'`.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2405
+#: documentation/content/en/articles/committers-guide/_index.adoc:2376
#, no-wrap
msgid ""
"* Providing historical documentation\n"
"+\n"
"Commit messages serve to document changes for future developers, perhaps years or decades later.\n"
"This future developer may even be you, the original author.\n"
"A change that seems obvious today may be decidedly not so much later on.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2407
+#: documentation/content/en/articles/committers-guide/_index.adoc:2378
#, no-wrap
msgid "The `git blame` command annotates each line of a source file with the change (hash and subject line) that brought it in.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2409
+#: documentation/content/en/articles/committers-guide/_index.adoc:2380
#, no-wrap
msgid "Having established the importance, here are elements of a good FreeBSD commit message:\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2410
+#: documentation/content/en/articles/committers-guide/_index.adoc:2381
#, no-wrap
msgid "Start with a subject line"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2414
+#: documentation/content/en/articles/committers-guide/_index.adoc:2385
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:2415
+#: documentation/content/en/articles/committers-guide/_index.adoc:2386
#, no-wrap
msgid "Keep subject lines short"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2420
+#: documentation/content/en/articles/committers-guide/_index.adoc:2391
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:2421
+#: documentation/content/en/articles/committers-guide/_index.adoc:2392
#, 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:2424
+#: documentation/content/en/articles/committers-guide/_index.adoc:2395
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:2426
+#: documentation/content/en/articles/committers-guide/_index.adoc:2397
msgid "✓ `foo: Add -k option to keep temporary data`"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2428
+#: documentation/content/en/articles/committers-guide/_index.adoc:2399
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:2429
+#: documentation/content/en/articles/committers-guide/_index.adoc:2400
#, no-wrap
msgid "Capitalize the first letter of the subject"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2433
+#: documentation/content/en/articles/committers-guide/_index.adoc:2404
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:2434
+#: documentation/content/en/articles/committers-guide/_index.adoc:2405
#, no-wrap
msgid "Do not end the subject line with punctuation"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2438
+#: documentation/content/en/articles/committers-guide/_index.adoc:2409
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:2439
+#: documentation/content/en/articles/committers-guide/_index.adoc:2410
#, 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:2442
+#: documentation/content/en/articles/committers-guide/_index.adoc:2413
msgid "Separate the body from the subject with a blank line."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2444
+#: documentation/content/en/articles/committers-guide/_index.adoc:2415
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:2446
+#: documentation/content/en/articles/committers-guide/_index.adoc:2417
msgid "✓ `ls: Fix typo in usage text`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2447
+#: documentation/content/en/articles/committers-guide/_index.adoc:2418
#, no-wrap
msgid "Limit messages to 72 columns"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2453
+#: documentation/content/en/articles/committers-guide/_index.adoc:2424
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:2454
+#: documentation/content/en/articles/committers-guide/_index.adoc:2425
#, no-wrap
msgid "Use the present tense, imperative mood"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2459
+#: documentation/content/en/articles/committers-guide/_index.adoc:2430
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:2464
+#: documentation/content/en/articles/committers-guide/_index.adoc:2435
#, 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:2465
+#: documentation/content/en/articles/committers-guide/_index.adoc:2436
#, no-wrap
msgid "Focus on what and why, not how"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2468
+#: documentation/content/en/articles/committers-guide/_index.adoc:2439
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:2472
+#: documentation/content/en/articles/committers-guide/_index.adoc:2443
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:2474
+#: documentation/content/en/articles/committers-guide/_index.adoc:2445
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:2475
+#: documentation/content/en/articles/committers-guide/_index.adoc:2446
#, 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:2478
+#: documentation/content/en/articles/committers-guide/_index.adoc:2449
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:2479
+#: documentation/content/en/articles/committers-guide/_index.adoc:2450
#, no-wrap
msgid "Write commit messages for your future self"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2483
+#: documentation/content/en/articles/committers-guide/_index.adoc:2454
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:2484
+#: documentation/content/en/articles/committers-guide/_index.adoc:2455
#, no-wrap
msgid "Commit messages should stand alone"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2488
+#: documentation/content/en/articles/committers-guide/_index.adoc:2459
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:2492
+#: documentation/content/en/articles/committers-guide/_index.adoc:2463
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:2493
+#: documentation/content/en/articles/committers-guide/_index.adoc:2464
#, no-wrap
msgid "Include appropriate metadata in a footer"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2496
+#: documentation/content/en/articles/committers-guide/_index.adoc:2467
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:2498
+#: documentation/content/en/articles/committers-guide/_index.adoc:2469
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:2500
+#: documentation/content/en/articles/committers-guide/_index.adoc:2471
msgid "The key words or phrases are:"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2505
+#: documentation/content/en/articles/committers-guide/_index.adoc:2476
#, no-wrap
msgid ""
"[.informaltable]\n"
"[cols=\"20%,80%\", frame=\"none\"]"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2506
+#: documentation/content/en/articles/committers-guide/_index.adoc:2477
#, no-wrap
msgid "`PR:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2508
+#: documentation/content/en/articles/committers-guide/_index.adoc:2479
#, 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:2509
+#: documentation/content/en/articles/committers-guide/_index.adoc:2480
#, no-wrap
msgid "`Reported by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2513
+#: documentation/content/en/articles/committers-guide/_index.adoc:2484
#, 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:2514
+#: documentation/content/en/articles/committers-guide/_index.adoc:2485
#, no-wrap
msgid "`Submitted by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2516
+#: documentation/content/en/articles/committers-guide/_index.adoc:2487
#, 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:2517
+#: documentation/content/en/articles/committers-guide/_index.adoc:2488
#, no-wrap
msgid "`Reviewed by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2532
+#: documentation/content/en/articles/committers-guide/_index.adoc:2503
#, 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 <valid@email> (maintainer)\n"
"...."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2533
+#: documentation/content/en/articles/committers-guide/_index.adoc:2504
#, no-wrap
msgid "`Tested by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2535
+#: documentation/content/en/articles/committers-guide/_index.adoc:2506
#, 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:2536
+#: documentation/content/en/articles/committers-guide/_index.adoc:2507
#, no-wrap
msgid "`Approved by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2561
+#: documentation/content/en/articles/committers-guide/_index.adoc:2532
#, 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:2562
+#: documentation/content/en/articles/committers-guide/_index.adoc:2533
#, no-wrap
msgid "`Obtained from:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2564
+#: documentation/content/en/articles/committers-guide/_index.adoc:2535
#, 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:2565
+#: documentation/content/en/articles/committers-guide/_index.adoc:2536
#, no-wrap
msgid "`Fixes:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2567
+#: documentation/content/en/articles/committers-guide/_index.adoc:2538
#, 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:2568
+#: documentation/content/en/articles/committers-guide/_index.adoc:2539
#, no-wrap
msgid "`MFC after:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2570
+#: documentation/content/en/articles/committers-guide/_index.adoc:2541
#, 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:2571
+#: documentation/content/en/articles/committers-guide/_index.adoc:2542
#, no-wrap
msgid "`MFC to:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2573
+#: documentation/content/en/articles/committers-guide/_index.adoc:2544
#, 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:2574
+#: documentation/content/en/articles/committers-guide/_index.adoc:2545
#, no-wrap
msgid "`MFH:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2576
+#: documentation/content/en/articles/committers-guide/_index.adoc:2547
#, 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:2577
+#: documentation/content/en/articles/committers-guide/_index.adoc:2548
#, no-wrap
msgid "`Relnotes:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2579
+#: documentation/content/en/articles/committers-guide/_index.adoc:2550
#, 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:2580
+#: documentation/content/en/articles/committers-guide/_index.adoc:2551
#, no-wrap
msgid "`Security:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2582
+#: documentation/content/en/articles/committers-guide/_index.adoc:2553
#, 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:2583
+#: documentation/content/en/articles/committers-guide/_index.adoc:2554
#, no-wrap
msgid "`Event:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2585
+#: documentation/content/en/articles/committers-guide/_index.adoc:2556
#, 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:2586
+#: documentation/content/en/articles/committers-guide/_index.adoc:2557
#, no-wrap
msgid "`Sponsored by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2588
+#: documentation/content/en/articles/committers-guide/_index.adoc:2559
#, 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:2589
+#: documentation/content/en/articles/committers-guide/_index.adoc:2560
#, no-wrap
msgid "`Pull Request:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2593
+#: documentation/content/en/articles/committers-guide/_index.adoc:2564
#, 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:2594
+#: documentation/content/en/articles/committers-guide/_index.adoc:2565
#, no-wrap
msgid "`Signed-off-by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2596
+#: documentation/content/en/articles/committers-guide/_index.adoc:2567
#, no-wrap
msgid "ID certifies compliance with https://developercertificate.org/"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2597
+#: documentation/content/en/articles/committers-guide/_index.adoc:2568
#, no-wrap
msgid "`Differential Revision:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2599
+#: documentation/content/en/articles/committers-guide/_index.adoc:2570
#, 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:2601
+#: documentation/content/en/articles/committers-guide/_index.adoc:2572
#, 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:2607
+#: documentation/content/en/articles/committers-guide/_index.adoc:2578
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:2611
-#: documentation/content/en/articles/committers-guide/_index.adoc:2629
-#: documentation/content/en/articles/committers-guide/_index.adoc:2644
-#: documentation/content/en/articles/committers-guide/_index.adoc:2660
-#: documentation/content/en/articles/committers-guide/_index.adoc:2675
+#: documentation/content/en/articles/committers-guide/_index.adoc:2582
+#: documentation/content/en/articles/committers-guide/_index.adoc:2600
+#: documentation/content/en/articles/committers-guide/_index.adoc:2615
+#: documentation/content/en/articles/committers-guide/_index.adoc:2631
+#: documentation/content/en/articles/committers-guide/_index.adoc:2646
#, no-wrap
msgid "...\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2613
+#: documentation/content/en/articles/committers-guide/_index.adoc:2584
#, no-wrap
msgid "PR:\t\t12345\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2616
+#: documentation/content/en/articles/committers-guide/_index.adoc:2587
msgid ""
"The committer sets the author of the patch with `git commit --author \"John "
"Smith <John.Smith@example.com>\"`."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2619
+#: documentation/content/en/articles/committers-guide/_index.adoc:2590
#, no-wrap
msgid "Commit Log for a Commit Needing Review"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2625
+#: documentation/content/en/articles/committers-guide/_index.adoc:2596
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:2631
+#: documentation/content/en/articles/committers-guide/_index.adoc:2602
#, no-wrap
msgid "Reviewed by:\t-arch\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2635
+#: documentation/content/en/articles/committers-guide/_index.adoc:2606
#, no-wrap
msgid "Commit Log for a Commit Needing Approval"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2640
+#: documentation/content/en/articles/committers-guide/_index.adoc:2611
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:2646
+#: documentation/content/en/articles/committers-guide/_index.adoc:2617
#, no-wrap
msgid "Approved by:\tabc (maintainer)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2649
+#: documentation/content/en/articles/committers-guide/_index.adoc:2620
msgid "Where _abc_ is the account name of the person who approved."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2651
+#: documentation/content/en/articles/committers-guide/_index.adoc:2622
#, 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:2656
+#: documentation/content/en/articles/committers-guide/_index.adoc:2627
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:2662
+#: documentation/content/en/articles/committers-guide/_index.adoc:2633
#, no-wrap
msgid "Obtained from:\tOpenBSD\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2666
+#: documentation/content/en/articles/committers-guide/_index.adoc:2637
#, 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:2671
+#: documentation/content/en/articles/committers-guide/_index.adoc:2642
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:2677
+#: documentation/content/en/articles/committers-guide/_index.adoc:2648
#, no-wrap
msgid "MFC after:\t2 weeks\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2680
+#: documentation/content/en/articles/committers-guide/_index.adoc:2651
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:2683
+#: documentation/content/en/articles/committers-guide/_index.adoc:2654
msgid "It is often necessary to combine these."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2687
+#: documentation/content/en/articles/committers-guide/_index.adoc:2658
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:2689
+#: documentation/content/en/articles/committers-guide/_index.adoc:2660
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:2690
+#: documentation/content/en/articles/committers-guide/_index.adoc:2661
#, no-wrap
msgid "Example Combined Commit Log"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2701
+#: documentation/content/en/articles/committers-guide/_index.adoc:2672
#, 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:2706
+#: documentation/content/en/articles/committers-guide/_index.adoc:2677
#, no-wrap
msgid "Preferred License for New Files"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2712
+#: documentation/content/en/articles/committers-guide/_index.adoc:2683
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:2714
+#: documentation/content/en/articles/committers-guide/_index.adoc:2685
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:2745
+#: documentation/content/en/articles/committers-guide/_index.adoc:2716
#, no-wrap
msgid ""
"/*-\n"
" * SPDX-License-Identifier: BSD-2-Clause\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:2751
+#: documentation/content/en/articles/committers-guide/_index.adoc:2722
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:2755
+#: documentation/content/en/articles/committers-guide/_index.adoc:2726
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."
+"the standard licenses. New licenses require the approval of {core-email} to "
+"reside in the `src` 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:2759
+#: documentation/content/en/articles/committers-guide/_index.adoc:2730
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:2762
+#: documentation/content/en/articles/committers-guide/_index.adoc:2733
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:2764
+#: documentation/content/en/articles/committers-guide/_index.adoc:2735
#, no-wrap
msgid "Keeping Track of Licenses Granted to the FreeBSD Project"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2769
+#: documentation/content/en/articles/committers-guide/_index.adoc:2740
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:2774
+#: documentation/content/en/articles/committers-guide/_index.adoc:2745
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:2776
+#: documentation/content/en/articles/committers-guide/_index.adoc:2747
msgid ""
"Contact details for people or organizations granting the special license."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2777
+#: documentation/content/en/articles/committers-guide/_index.adoc:2748
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:2778
+#: documentation/content/en/articles/committers-guide/_index.adoc:2749
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:2779
+#: documentation/content/en/articles/committers-guide/_index.adoc:2750
msgid "The license text."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2780
+#: documentation/content/en/articles/committers-guide/_index.adoc:2751
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:2781
+#: documentation/content/en/articles/committers-guide/_index.adoc:2752
msgid "Any other relevant information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2784
+#: documentation/content/en/articles/committers-guide/_index.adoc:2755
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:2787
+#: documentation/content/en/articles/committers-guide/_index.adoc:2758
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:2789
+#: documentation/content/en/articles/committers-guide/_index.adoc:2760
#, no-wrap
msgid "SPDX Tags in the tree"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2800
+#: documentation/content/en/articles/committers-guide/_index.adoc:2771
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:2802
+#: documentation/content/en/articles/committers-guide/_index.adoc:2773
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:2803
+#: documentation/content/en/articles/committers-guide/_index.adoc:2774
#, no-wrap
msgid "Developer Relations"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2809
+#: documentation/content/en/articles/committers-guide/_index.adoc:2780
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. When 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 "
"a 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:2813
+#: documentation/content/en/articles/committers-guide/_index.adoc:2784
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. To list the names and "
"email addresses of all commit authors for a given file in the last 2 years "
"and the number of commits each has authored, ordered by descending number of "
"commits, use:"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2817
+#: documentation/content/en/articles/committers-guide/_index.adoc:2788
#, no-wrap
msgid "% git -C /path/to/repo shortlog -sne --since=\"2 years\" -- relative/path/to/file\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2820
+#: documentation/content/en/articles/committers-guide/_index.adoc:2791
msgid ""
"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:2825
+#: documentation/content/en/articles/committers-guide/_index.adoc:2796
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:2831
+#: documentation/content/en/articles/committers-guide/_index.adoc:2802
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:2835
+#: documentation/content/en/articles/committers-guide/_index.adoc:2806
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:2838
+#: documentation/content/en/articles/committers-guide/_index.adoc:2809
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:2844
+#: documentation/content/en/articles/committers-guide/_index.adoc:2815
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:2848
+#: documentation/content/en/articles/committers-guide/_index.adoc:2819
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:2850
+#: documentation/content/en/articles/committers-guide/_index.adoc:2821
#, no-wrap
msgid "If in Doubt..."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2854
+#: documentation/content/en/articles/committers-guide/_index.adoc:2825
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:2858
+#: documentation/content/en/articles/committers-guide/_index.adoc:2829
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:2860
+#: documentation/content/en/articles/committers-guide/_index.adoc:2831
msgid "For project specific or administrative questions ask, in order:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2862
+#: documentation/content/en/articles/committers-guide/_index.adoc:2833
msgid "Your mentor or former mentor."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2863
+#: documentation/content/en/articles/committers-guide/_index.adoc:2834
msgid "An experienced committer on IRC, email, etc."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2864
+#: documentation/content/en/articles/committers-guide/_index.adoc:2835
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:2865
+#: documentation/content/en/articles/committers-guide/_index.adoc:2836
msgid "If still not sure, ask on {developers-name}."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2867
+#: documentation/content/en/articles/committers-guide/_index.adoc:2838
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:2869
+#: documentation/content/en/articles/committers-guide/_index.adoc:2840
#, no-wrap
msgid "Bugzilla"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2874
+#: documentation/content/en/articles/committers-guide/_index.adoc:2845
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:2876
+#: documentation/content/en/articles/committers-guide/_index.adoc:2847
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:2880
+#: documentation/content/en/articles/committers-guide/_index.adoc:2851
msgid "Log in using your old account."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2881
+#: documentation/content/en/articles/committers-guide/_index.adoc:2852
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:2882
+#: documentation/content/en/articles/committers-guide/_index.adoc:2853
msgid ""
"Log in using `FreeBSD.org` account and post comment to newly opened bug to "
"confirm ownership. See <<kerberos-ldap>> 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:2883
+#: documentation/content/en/articles/committers-guide/_index.adoc:2854
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:2886
+#: documentation/content/en/articles/committers-guide/_index.adoc:2857
msgid "You can find out more about Bugzilla at:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2888
+#: documentation/content/en/articles/committers-guide/_index.adoc:2859
msgid "extref:{pr-guidelines}[FreeBSD Problem Report Handling Guidelines]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2889
+#: documentation/content/en/articles/committers-guide/_index.adoc:2860
msgid "link:https://www.FreeBSD.org/support/[https://www.FreeBSD.org/support]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2891
+#: documentation/content/en/articles/committers-guide/_index.adoc:2862
#, no-wrap
msgid "Phabricator"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2895
+#: documentation/content/en/articles/committers-guide/_index.adoc:2866
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:2897
+#: documentation/content/en/articles/committers-guide/_index.adoc:2868
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:2901
+#: documentation/content/en/articles/committers-guide/_index.adoc:2872
msgid "Change your Phabricator account email to your `FreeBSD.org` email."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2902
+#: documentation/content/en/articles/committers-guide/_index.adoc:2873
msgid ""
"Open new bug on our bug tracker using your `FreeBSD.org` account, see "
"<<bugzilla>> 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:2907
+#: documentation/content/en/articles/committers-guide/_index.adoc:2878
msgid ""
"Phabricator accounts cannot be merged, please do not open a new account."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2910
+#: documentation/content/en/articles/committers-guide/_index.adoc:2881
#, no-wrap
msgid "Who's Who"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2913
+#: documentation/content/en/articles/committers-guide/_index.adoc:2884
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:2914
+#: documentation/content/en/articles/committers-guide/_index.adoc:2885
#, no-wrap
msgid "`{doceng}`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2920
+#: documentation/content/en/articles/committers-guide/_index.adoc:2891
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:2921
+#: documentation/content/en/articles/committers-guide/_index.adoc:2892
#, no-wrap
msgid "`{re-members}`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2926
+#: documentation/content/en/articles/committers-guide/_index.adoc:2897
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:2927
+#: documentation/content/en/articles/committers-guide/_index.adoc:2898
#, no-wrap
msgid "`{so}`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2929
+#: documentation/content/en/articles/committers-guide/_index.adoc:2900
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:2934
+#: documentation/content/en/articles/committers-guide/_index.adoc:2905
msgid ""
"{committers-name}:: {dev-src-all}, {dev-ports-all} and {dev-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:2939
+#: documentation/content/en/articles/committers-guide/_index.adoc:2910
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:2943
+#: documentation/content/en/articles/committers-guide/_index.adoc:2914
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:2947
+#: documentation/content/en/articles/committers-guide/_index.adoc:2918
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:2953
+#: documentation/content/en/articles/committers-guide/_index.adoc:2924
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:2954
+#: documentation/content/en/articles/committers-guide/_index.adoc:2925
#, no-wrap
msgid "SSH Quick-Start Guide"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2959
+#: documentation/content/en/articles/committers-guide/_index.adoc:2930
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:2960
+#: documentation/content/en/articles/committers-guide/_index.adoc:2931
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:2964
+#: documentation/content/en/articles/committers-guide/_index.adoc:2935
msgid "Only ECDSA, Ed25519 or RSA keys are supported."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2966
+#: documentation/content/en/articles/committers-guide/_index.adoc:2937
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:2971
+#: documentation/content/en/articles/committers-guide/_index.adoc:2942
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:2973
+#: documentation/content/en/articles/committers-guide/_index.adoc:2944
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:2975
+#: documentation/content/en/articles/committers-guide/_index.adoc:2946
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:2977
+#: documentation/content/en/articles/committers-guide/_index.adoc:2948
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:2979
+#: documentation/content/en/articles/committers-guide/_index.adoc:2950
#, no-wrap
msgid "Coverity(R) Availability for FreeBSD Committers"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2983
+#: documentation/content/en/articles/committers-guide/_index.adoc:2954
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:2986
+#: documentation/content/en/articles/committers-guide/_index.adoc:2957
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:2988
+#: documentation/content/en/articles/committers-guide/_index.adoc:2959
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:2990
+#: documentation/content/en/articles/committers-guide/_index.adoc:2961
#, no-wrap
msgid "The FreeBSD Committers' Big List of Rules"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2995
+#: documentation/content/en/articles/committers-guide/_index.adoc:2966
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:2997
-#: documentation/content/en/articles/committers-guide/_index.adoc:3027
+#: documentation/content/en/articles/committers-guide/_index.adoc:2968
+#: documentation/content/en/articles/committers-guide/_index.adoc:2998
msgid "Respect other committers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2998
-#: documentation/content/en/articles/committers-guide/_index.adoc:3043
+#: documentation/content/en/articles/committers-guide/_index.adoc:2969
+#: documentation/content/en/articles/committers-guide/_index.adoc:3014
msgid "Respect other contributors."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2999
-#: documentation/content/en/articles/committers-guide/_index.adoc:3058
+#: documentation/content/en/articles/committers-guide/_index.adoc:2970
+#: documentation/content/en/articles/committers-guide/_index.adoc:3029
msgid "Discuss any significant change _before_ committing."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3000
+#: documentation/content/en/articles/committers-guide/_index.adoc:2971
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:3001
-#: documentation/content/en/articles/committers-guide/_index.adoc:3073
+#: documentation/content/en/articles/committers-guide/_index.adoc:2972
+#: documentation/content/en/articles/committers-guide/_index.adoc:3044
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:3002
+#: documentation/content/en/articles/committers-guide/_index.adoc:2973
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:3003
-#: documentation/content/en/articles/committers-guide/_index.adoc:3088
+#: documentation/content/en/articles/committers-guide/_index.adoc:2974
+#: documentation/content/en/articles/committers-guide/_index.adoc:3059
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:3004
+#: documentation/content/en/articles/committers-guide/_index.adoc:2975
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:3005
-#: documentation/content/en/articles/committers-guide/_index.adoc:3103
+#: documentation/content/en/articles/committers-guide/_index.adoc:2976
+#: documentation/content/en/articles/committers-guide/_index.adoc:3074
msgid "When in doubt on any procedure, ask first!"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3006
-#: documentation/content/en/articles/committers-guide/_index.adoc:3108
+#: documentation/content/en/articles/committers-guide/_index.adoc:2977
+#: documentation/content/en/articles/committers-guide/_index.adoc:3079
msgid "Test your changes before committing them."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3007
-#: documentation/content/en/articles/committers-guide/_index.adoc:3117
+#: documentation/content/en/articles/committers-guide/_index.adoc:2978
+#: documentation/content/en/articles/committers-guide/_index.adoc:3088
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:3018
+#: documentation/content/en/articles/committers-guide/_index.adoc:2989
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:3022
+#: documentation/content/en/articles/committers-guide/_index.adoc:2993
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:3023
+#: documentation/content/en/articles/committers-guide/_index.adoc:2994
#, no-wrap
msgid "Details"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3031
+#: documentation/content/en/articles/committers-guide/_index.adoc:3002
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:3033
+#: documentation/content/en/articles/committers-guide/_index.adoc:3004
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:3039
+#: documentation/content/en/articles/committers-guide/_index.adoc:3010
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:3042
+#: documentation/content/en/articles/committers-guide/_index.adoc:3013
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:3055
+#: documentation/content/en/articles/committers-guide/_index.adoc:3026
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:3057
+#: documentation/content/en/articles/committers-guide/_index.adoc:3028
msgid ""
"Consider the points raised under <<respect,Respect other committers>> and "
"apply them also to contributors."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3064
+#: documentation/content/en/articles/committers-guide/_index.adoc:3035
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:3066
+#: documentation/content/en/articles/committers-guide/_index.adoc:3037
msgid "When in doubt, ask for review!"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3067
+#: documentation/content/en/articles/committers-guide/_index.adoc:3038
msgid "Respect existing maintainers if listed."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3072
+#: documentation/content/en/articles/committers-guide/_index.adoc:3043
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:3078
+#: documentation/content/en/articles/committers-guide/_index.adoc:3049
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:3079
+#: documentation/content/en/articles/committers-guide/_index.adoc:3050
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:3085
+#: documentation/content/en/articles/committers-guide/_index.adoc:3056
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:3087
+#: documentation/content/en/articles/committers-guide/_index.adoc:3058
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:3098
+#: documentation/content/en/articles/committers-guide/_index.adoc:3069
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:3099
+#: documentation/content/en/articles/committers-guide/_index.adoc:3070
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:3102
+#: documentation/content/en/articles/committers-guide/_index.adoc:3073
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:3107
+#: documentation/content/en/articles/committers-guide/_index.adoc:3078
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:3116
+#: documentation/content/en/articles/committers-guide/_index.adoc:3087
msgid ""
"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 ensure your change works for <<compilers,supported "
"toolchains>>. 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:3119
+#: documentation/content/en/articles/committers-guide/_index.adoc:3090
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:3124
+#: documentation/content/en/articles/committers-guide/_index.adoc:3095
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:3128
+#: documentation/content/en/articles/committers-guide/_index.adoc:3099
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:3131
+#: documentation/content/en/articles/committers-guide/_index.adoc:3102
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:3132
+#: documentation/content/en/articles/committers-guide/_index.adoc:3103
#, no-wrap
msgid "Policy on Multiple Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3136
+#: documentation/content/en/articles/committers-guide/_index.adoc:3107
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:3140
+#: documentation/content/en/articles/committers-guide/_index.adoc:3111
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:3144
+#: documentation/content/en/articles/committers-guide/_index.adoc:3115
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:3146
+#: documentation/content/en/articles/committers-guide/_index.adoc:3117
#, no-wrap
msgid "Policy on Multiple Compilers"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3160
+#: documentation/content/en/articles/committers-guide/_index.adoc:3131
msgid ""
"FreeBSD builds with both Clang and GCC. The project does this in a careful "
"and controlled way to maximize benefits from this extra work, while keeping "
"the extra work to a minimum. Supporting both Clang and GCC improves the "
"flexibility our users have. These compilers have different strengths and "
"weaknesses, and supporting both allows users to pick the best one for their "
"needs. Clang and GCC support similar dialects of C and C++, necessitating a "
"relatively small amount of conditional code. The project gains increased "
"code coverage and improves the code quality by using features from both "
"compilers. The project is able to build in more user environments and "
"leverage more CI environments by supporting this range, increasing "
"convenience for users and giving them more tools to test with. By carefully "
"constraining the range of versions supported to modern versions of these "
"compilers, the project avoids unduely increasing the testing matrix. Older "
"and obscure compilers, as well as older dialects of the langauges, have "
"extremely limited support that allow user programs to build with them, but "
"without constraining the base system to being built with them. The exact "
"balance continues to evolve to ensure the benefits of extra work remain "
"greater than the burdens it imposes. The project used to support really old "
"Intel compilers or old GCC versions, but we traded supporting those obsolete "
"compilers for a carefully selected range of modern compilers. This section "
"documents where we use different compilers, and the expectations around that."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3165
+#: documentation/content/en/articles/committers-guide/_index.adoc:3136
msgid ""
"The FreeBSD project provides an in-tree Clang compiler. Due to being in the "
"tree, this compiler is the most supported compiler. All changes must "
"compile with it, prior to commit. Complete testing, as appropriate for the "
"change, should be done with this compiler."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3173
+#: documentation/content/en/articles/committers-guide/_index.adoc:3144
msgid ""
"At any moment in time, the FreeBSD project also supports one or more out-of-"
"tree compilers. At present, this is GCC 12.x. Ideally, committers should "
"test compile with this compiler, especially for large or risky changes. "
"This compiler is available as the `${TARGET_ARCH}-gcc${VERSION}` package, "
"such as package:devel/freebsd-gcc12@aarch64[aarch64-gcc12] or package:devel/"
"freebsd-gcc12@riscv64[riscv64-gcc12]. The project runs automated CI jobs to "
"build everything with these compilers. Committers are expected to fix the "
"jobs they break with their changes. Committers may test build with, for "
"example `CROSS_TOOLCHAIN=aarch64-gcc12` or `CROSS_TOOLCHAIN=llvm15` where "
"necessary."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3177
+#: documentation/content/en/articles/committers-guide/_index.adoc:3148
msgid ""
"The FreeBSD project also has some CI pipelines on github. For pull requests "
"on github and some branches pushed to the github forks, a number of cross "
"compilation jobs run. These test FreeBSD building using a version of Clang "
"that sometimes lags the in-tree compiler by a major version for a time."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3183
+#: documentation/content/en/articles/committers-guide/_index.adoc:3154
msgid ""
"The FreeBSD project is also upgrading compilers. Both Clang and GCC are "
"fast moving targets. Some work to change things in the tree, for example "
"removing the old-style K&R function declarations and definitions, will land "
"in the tree prior to the compiler landing. Committers should try to be "
"mindful about this and be receptive to looking into problems with their code "
"or changes with these new compilers. Also, just after a new compiler "
"version hits the tree, people may need to compile things with the old "
"version if there was an undetected regression suspected."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3187
+#: documentation/content/en/articles/committers-guide/_index.adoc:3158
msgid ""
"In addition to the compiler, LLVM's LLD and GNU's binutils are used "
"indirectly by the compiler. Committers should be mindful of variations in "
"assembler syntax and features of the linkers and ensure both variants work. "
"These components will be tested as part of FreeBSD's CI jobs for Clang or "
"GCC."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3193
+#: documentation/content/en/articles/committers-guide/_index.adoc:3164
msgid ""
"The FreeBSD project provides headers and libraries that allow other "
"compilers to be used to build software not in the base system. These "
"headers have support for making the environment as strict as the standard, "
"supporting prior dialects of ANSI-C back to C89, and other edge cases our "
"large ports collection has uncovered. This support constrains retirement of "
"older standards in places like header files, but does not constrain updating "
"the base system to newer dialects. Nor does it require the base system to "
"compile with these older standards as a whole. Breaking this support will "
"cause packages in the ports collection to fail, so should be avoided where "
"possible, and promptly fixed when it is easy to do so."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3198
+#: documentation/content/en/articles/committers-guide/_index.adoc:3169
msgid ""
"The FreeBSD build system currently accommodates these different "
"environments. As new warnings are added to compilers, the project tries to "
"fix them. However, sometimes these warnings require extensive rework, so "
"are suppressed in some way by using make variables that evaluate to the "
"proper thing depending on the compiler version. Developers should be "
"mindful of this, and ensure any compiler specific flags are properly "
"conditionalized."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3199
+#: documentation/content/en/articles/committers-guide/_index.adoc:3170
#, no-wrap
msgid "Current Compiler Versions"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3204
+#: documentation/content/en/articles/committers-guide/_index.adoc:3175
msgid ""
"The in-tree compiler is currently Clang 15.x. Currently, GCC 12 and Clang "
"12, 13, 14 and 15 are tested in the github and project's CI jenkins jobs. "
"Work is underway to get the tree ready for Clang 16. The oldest project "
"supported branch has Clang 12, so the bootstrap portions of the build must "
"work for Clang major versions 12 to 15."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3205
+#: documentation/content/en/articles/committers-guide/_index.adoc:3176
#, no-wrap
msgid "Other Suggestions"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3209
+#: documentation/content/en/articles/committers-guide/_index.adoc:3180
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:3211
+#: documentation/content/en/articles/committers-guide/_index.adoc:3182
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:3218
+#: documentation/content/en/articles/committers-guide/_index.adoc:3189
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:3219
+#: documentation/content/en/articles/committers-guide/_index.adoc:3190
#, no-wrap
msgid "Deprecating Features"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3222
+#: documentation/content/en/articles/committers-guide/_index.adoc:3193
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:3224
+#: documentation/content/en/articles/committers-guide/_index.adoc:3195
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:3225
+#: documentation/content/en/articles/committers-guide/_index.adoc:3196
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:3226
+#: documentation/content/en/articles/committers-guide/_index.adoc:3197
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:3227
+#: documentation/content/en/articles/committers-guide/_index.adoc:3198
#, no-wrap
msgid "Privacy and Confidentiality"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3230
+#: documentation/content/en/articles/committers-guide/_index.adoc:3201
msgid "Most FreeBSD business is done in public."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3233
+#: documentation/content/en/articles/committers-guide/_index.adoc:3204
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:3234
+#: documentation/content/en/articles/committers-guide/_index.adoc:3205
msgid "Certain sensitive matters must remain private or held under embargo."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3240
+#: documentation/content/en/articles/committers-guide/_index.adoc:3211
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:3241
+#: documentation/content/en/articles/committers-guide/_index.adoc:3212
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:3246
+#: documentation/content/en/articles/committers-guide/_index.adoc:3217
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:3247
+#: documentation/content/en/articles/committers-guide/_index.adoc:3218
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:3252
+#: documentation/content/en/articles/committers-guide/_index.adoc:3223
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:3253
+#: documentation/content/en/articles/committers-guide/_index.adoc:3224
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:3256
+#: documentation/content/en/articles/committers-guide/_index.adoc:3227
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:3257
+#: documentation/content/en/articles/committers-guide/_index.adoc:3228
msgid "Private communications must not be made public without permission."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3260
+#: documentation/content/en/articles/committers-guide/_index.adoc:3231
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:3261
+#: documentation/content/en/articles/committers-guide/_index.adoc:3232
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:3264
+#: documentation/content/en/articles/committers-guide/_index.adoc:3235
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:3265
+#: documentation/content/en/articles/committers-guide/_index.adoc:3236
msgid "Core may approve publication."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3267
+#: documentation/content/en/articles/committers-guide/_index.adoc:3238
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:3269
+#: documentation/content/en/articles/committers-guide/_index.adoc:3240
#, no-wrap
msgid "Support for Multiple Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3276
+#: documentation/content/en/articles/committers-guide/_index.adoc:3247
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:3277
+#: documentation/content/en/articles/committers-guide/_index.adoc:3248
#, no-wrap
msgid "Statement of General Intent"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3282
+#: documentation/content/en/articles/committers-guide/_index.adoc:3253
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:3289
+#: documentation/content/en/articles/committers-guide/_index.adoc:3260
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:3290
+#: documentation/content/en/articles/committers-guide/_index.adoc:3261
#, no-wrap
msgid "Platform Targets"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3297
+#: documentation/content/en/articles/committers-guide/_index.adoc:3268
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:3299
+#: documentation/content/en/articles/committers-guide/_index.adoc:3270
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:3304
+#: documentation/content/en/articles/committers-guide/_index.adoc:3275
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:3306
+#: documentation/content/en/articles/committers-guide/_index.adoc:3277
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:3307
+#: documentation/content/en/articles/committers-guide/_index.adoc:3278
#, no-wrap
msgid "Tier 1: Fully-Supported Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3312
+#: documentation/content/en/articles/committers-guide/_index.adoc:3283
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:3314
+#: documentation/content/en/articles/committers-guide/_index.adoc:3285
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:3316
+#: documentation/content/en/articles/committers-guide/_index.adoc:3287
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:3317
+#: documentation/content/en/articles/committers-guide/_index.adoc:3288
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:3318
+#: documentation/content/en/articles/committers-guide/_index.adoc:3289
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:3319
+#: documentation/content/en/articles/committers-guide/_index.adoc:3290
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:3320
+#: documentation/content/en/articles/committers-guide/_index.adoc:3291
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:3321
+#: documentation/content/en/articles/committers-guide/_index.adoc:3292
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:3322
+#: documentation/content/en/articles/committers-guide/_index.adoc:3293
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:3323
+#: documentation/content/en/articles/committers-guide/_index.adoc:3294
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:3324
+#: documentation/content/en/articles/committers-guide/_index.adoc:3295
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:3325
+#: documentation/content/en/articles/committers-guide/_index.adoc:3296
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:3326
+#: documentation/content/en/articles/committers-guide/_index.adoc:3297
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:3327
+#: documentation/content/en/articles/committers-guide/_index.adoc:3298
msgid "Tier 1 platforms will be included in the source tree."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3328
+#: documentation/content/en/articles/committers-guide/_index.adoc:3299
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:3330
+#: documentation/content/en/articles/committers-guide/_index.adoc:3301
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:3332
+#: documentation/content/en/articles/committers-guide/_index.adoc:3303
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:3333
-#: documentation/content/en/articles/committers-guide/_index.adoc:3363
+#: documentation/content/en/articles/committers-guide/_index.adoc:3304
+#: documentation/content/en/articles/committers-guide/_index.adoc:3334
msgid "Inclusion in the `make universe` and `make tinderbox` targets."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3334
+#: documentation/content/en/articles/committers-guide/_index.adoc:3305
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:3336
+#: documentation/content/en/articles/committers-guide/_index.adoc:3307
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:3338
+#: documentation/content/en/articles/committers-guide/_index.adoc:3309
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:3339
+#: documentation/content/en/articles/committers-guide/_index.adoc:3310
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:3340
+#: documentation/content/en/articles/committers-guide/_index.adoc:3311
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:3341
+#: documentation/content/en/articles/committers-guide/_index.adoc:3312
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:3342
+#: documentation/content/en/articles/committers-guide/_index.adoc:3313
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:3343
+#: documentation/content/en/articles/committers-guide/_index.adoc:3314
#, no-wrap
msgid "Tier 2: Developmental and Niche Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3347
+#: documentation/content/en/articles/committers-guide/_index.adoc:3318
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:3351
+#: documentation/content/en/articles/committers-guide/_index.adoc:3322
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:3353
+#: documentation/content/en/articles/committers-guide/_index.adoc:3324
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:3355
+#: documentation/content/en/articles/committers-guide/_index.adoc:3326
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:3356
+#: documentation/content/en/articles/committers-guide/_index.adoc:3327
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:3357
+#: documentation/content/en/articles/committers-guide/_index.adoc:3328
msgid "Tier 2 platforms will be included in the source tree."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3358
+#: documentation/content/en/articles/committers-guide/_index.adoc:3329
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:3359
+#: documentation/content/en/articles/committers-guide/_index.adoc:3330
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:3361
+#: documentation/content/en/articles/committers-guide/_index.adoc:3332
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:3365
+#: documentation/content/en/articles/committers-guide/_index.adoc:3336
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:3367
+#: documentation/content/en/articles/committers-guide/_index.adoc:3338
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:3368
+#: documentation/content/en/articles/committers-guide/_index.adoc:3339
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:3369
+#: documentation/content/en/articles/committers-guide/_index.adoc:3340
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:3370
+#: documentation/content/en/articles/committers-guide/_index.adoc:3341
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:3371
+#: documentation/content/en/articles/committers-guide/_index.adoc:3342
#, no-wrap
msgid "Tier 3: Experimental Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3375
+#: documentation/content/en/articles/committers-guide/_index.adoc:3346
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:3378
+#: documentation/content/en/articles/committers-guide/_index.adoc:3349
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:3381
+#: documentation/content/en/articles/committers-guide/_index.adoc:3352
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:3382
+#: documentation/content/en/articles/committers-guide/_index.adoc:3353
#, no-wrap
msgid "Unsupported Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3386
+#: documentation/content/en/articles/committers-guide/_index.adoc:3357
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:3389
+#: documentation/content/en/articles/committers-guide/_index.adoc:3360
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:3390
+#: documentation/content/en/articles/committers-guide/_index.adoc:3361
#, no-wrap
msgid "Policy on Changing the Tier of an Architecture"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3394
+#: documentation/content/en/articles/committers-guide/_index.adoc:3365
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:3396
+#: documentation/content/en/articles/committers-guide/_index.adoc:3367
#, no-wrap
msgid "Ports Specific FAQ"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3399
+#: documentation/content/en/articles/committers-guide/_index.adoc:3370
#, no-wrap
msgid "Adding a New Port"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3402
+#: documentation/content/en/articles/committers-guide/_index.adoc:3373
#, no-wrap
msgid "How do I add a new port?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3406
+#: documentation/content/en/articles/committers-guide/_index.adoc:3377
msgid ""
"Adding a port to the tree is relatively simple. Once the port is ready to be "
"added, as explained later <<ports-qa-add-new-extra,here>>, 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:3410
+#: documentation/content/en/articles/committers-guide/_index.adoc:3381
#, no-wrap
msgid "\tSUBDIR += newport\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3413
+#: documentation/content/en/articles/committers-guide/_index.adoc:3384
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:3418
+#: documentation/content/en/articles/committers-guide/_index.adoc:3389
#, 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:3422
+#: documentation/content/en/articles/committers-guide/_index.adoc:3393
msgid ""
"Don't forget to <<port-commit-message-formats,setup git hooks for the ports "
"tree as explained here>>; a specific hook has been developed to verify the "
"category's [.filename]#Makefile#."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3425
+#: documentation/content/en/articles/committers-guide/_index.adoc:3396
#, 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:3428
+#: documentation/content/en/articles/committers-guide/_index.adoc:3399
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:3431
+#: documentation/content/en/articles/committers-guide/_index.adoc:3402
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:3433
+#: documentation/content/en/articles/committers-guide/_index.adoc:3404
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:3435
+#: documentation/content/en/articles/committers-guide/_index.adoc:3406
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:3438
+#: documentation/content/en/articles/committers-guide/_index.adoc:3409
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:3442
+#: documentation/content/en/articles/committers-guide/_index.adoc:3413
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:3452
+#: documentation/content/en/articles/committers-guide/_index.adoc:3423
#, 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:3455
+#: documentation/content/en/articles/committers-guide/_index.adoc:3426
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:3458
+#: documentation/content/en/articles/committers-guide/_index.adoc:3429
#, no-wrap
msgid "Removing an Existing Port"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3461
+#: documentation/content/en/articles/committers-guide/_index.adoc:3432
#, no-wrap
msgid "How do I remove an existing port?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3464
+#: documentation/content/en/articles/committers-guide/_index.adoc:3435
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:3466
+#: documentation/content/en/articles/committers-guide/_index.adoc:3437
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:3467
+#: documentation/content/en/articles/committers-guide/_index.adoc:3438
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:3468
+#: documentation/content/en/articles/committers-guide/_index.adoc:3439
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:3472
+#: documentation/content/en/articles/committers-guide/_index.adoc:3443
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:3475
+#: documentation/content/en/articles/committers-guide/_index.adoc:3446
msgid "Then, remove the port:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3479
+#: documentation/content/en/articles/committers-guide/_index.adoc:3450
msgid "Remove the port's files and directory with `git rm`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3480
+#: documentation/content/en/articles/committers-guide/_index.adoc:3451
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:3481
-#: documentation/content/en/articles/committers-guide/_index.adoc:3496
+#: documentation/content/en/articles/committers-guide/_index.adoc:3452
+#: documentation/content/en/articles/committers-guide/_index.adoc:3467
msgid "Add an entry to [.filename]#ports/MOVED#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3482
+#: documentation/content/en/articles/committers-guide/_index.adoc:3453
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:3487
+#: documentation/content/en/articles/committers-guide/_index.adoc:3458
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:3489
+#: documentation/content/en/articles/committers-guide/_index.adoc:3460
#, 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:3494
+#: documentation/content/en/articles/committers-guide/_index.adoc:3465
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:3495
+#: documentation/content/en/articles/committers-guide/_index.adoc:3466
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:3497
+#: documentation/content/en/articles/committers-guide/_index.adoc:3468
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:3498
+#: documentation/content/en/articles/committers-guide/_index.adoc:3469
msgid "Move the port with `git mv`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3499
-#: documentation/content/en/articles/committers-guide/_index.adoc:3510
+#: documentation/content/en/articles/committers-guide/_index.adoc:3470
+#: documentation/content/en/articles/committers-guide/_index.adoc:3481
msgid "Commit the changes."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3502
+#: documentation/content/en/articles/committers-guide/_index.adoc:3473
#, 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:3507
+#: documentation/content/en/articles/committers-guide/_index.adoc:3478
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:3508
+#: documentation/content/en/articles/committers-guide/_index.adoc:3479
msgid "Add the new port to the [.filename]#new-cat/Makefile#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3509
+#: documentation/content/en/articles/committers-guide/_index.adoc:3480
msgid "Change stuff in [.filename]#new-cat/new-port#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3513
+#: documentation/content/en/articles/committers-guide/_index.adoc:3484
#, no-wrap
msgid "Ports Freeze"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3516
+#: documentation/content/en/articles/committers-guide/_index.adoc:3487
#, no-wrap
msgid "What is a “ports freeze”?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3523
+#: documentation/content/en/articles/committers-guide/_index.adoc:3494
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:3525
+#: documentation/content/en/articles/committers-guide/_index.adoc:3496
msgid ""
"For more information on how to merge commits to the quarterly branch, see "
"<<ports-qa-misc-request-mfh>>."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3527
+#: documentation/content/en/articles/committers-guide/_index.adoc:3498
#, no-wrap
msgid "Quarterly Branches"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3530
+#: documentation/content/en/articles/committers-guide/_index.adoc:3501
#, 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:3533
+#: documentation/content/en/articles/committers-guide/_index.adoc:3504
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:3535
+#: documentation/content/en/articles/committers-guide/_index.adoc:3506
#, 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:3538
+#: documentation/content/en/articles/committers-guide/_index.adoc:3509
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:3544
+#: documentation/content/en/articles/committers-guide/_index.adoc:3515
#, 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:3548
+#: documentation/content/en/articles/committers-guide/_index.adoc:3519
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 "
+"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:3550
+#: documentation/content/en/articles/committers-guide/_index.adoc:3521
#, no-wrap
msgid "Creating a New Category"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3553
+#: documentation/content/en/articles/committers-guide/_index.adoc:3524
#, no-wrap
msgid "What is the procedure for creating a new category?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3558
+#: documentation/content/en/articles/committers-guide/_index.adoc:3529
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:3562
+#: documentation/content/en/articles/committers-guide/_index.adoc:3533
msgid "Perform any needed moves. (This only applies to physical categories.)"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3563
+#: documentation/content/en/articles/committers-guide/_index.adoc:3534
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:3564
+#: documentation/content/en/articles/committers-guide/_index.adoc:3535
msgid "Assign the PR back to you."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3567
+#: documentation/content/en/articles/committers-guide/_index.adoc:3538
#, 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:3572
+#: documentation/content/en/articles/committers-guide/_index.adoc:3543
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:3574
+#: documentation/content/en/articles/committers-guide/_index.adoc:3545
msgid "To do this, you will need to:"
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:3578
+#: documentation/content/en/articles/committers-guide/_index.adoc:3549
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:3579
+#: documentation/content/en/articles/committers-guide/_index.adoc:3550
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:3580
+#: documentation/content/en/articles/committers-guide/_index.adoc:3551
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:3583
+#: documentation/content/en/articles/committers-guide/_index.adoc:3554
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:3585
+#: documentation/content/en/articles/committers-guide/_index.adoc:3556
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:3586
+#: documentation/content/en/articles/committers-guide/_index.adoc:3557
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:3587
+#: documentation/content/en/articles/committers-guide/_index.adoc:3558
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:3588
+#: documentation/content/en/articles/committers-guide/_index.adoc:3559
msgid "Add appropriate entries to [.filename]#ports/MOVED#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3589
+#: documentation/content/en/articles/committers-guide/_index.adoc:3560
msgid "Update the documentation by modifying:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3590
-#: documentation/content/en/articles/committers-guide/_index.adoc:3599
+#: documentation/content/en/articles/committers-guide/_index.adoc:3561
+#: documentation/content/en/articles/committers-guide/_index.adoc:3570
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:3592
+#: documentation/content/en/articles/committers-guide/_index.adoc:3563
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:3594
+#: documentation/content/en/articles/committers-guide/_index.adoc:3565
#, 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:3597
+#: documentation/content/en/articles/committers-guide/_index.adoc:3568
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:3601
-#: documentation/content/en/articles/committers-guide/_index.adoc:3695
+#: documentation/content/en/articles/committers-guide/_index.adoc:3572
+#: documentation/content/en/articles/committers-guide/_index.adoc:3666
#, no-wrap
msgid "Miscellaneous Questions"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3604
+#: documentation/content/en/articles/committers-guide/_index.adoc:3575
#, 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:3607
+#: documentation/content/en/articles/committers-guide/_index.adoc:3578
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:3609
+#: documentation/content/en/articles/committers-guide/_index.adoc:3580
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:3610
+#: documentation/content/en/articles/committers-guide/_index.adoc:3581
msgid "Trivial and _tested_ build and runtime fixes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3611
+#: documentation/content/en/articles/committers-guide/_index.adoc:3582
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:3616
+#: documentation/content/en/articles/committers-guide/_index.adoc:3587
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:3619
+#: documentation/content/en/articles/committers-guide/_index.adoc:3590
#, 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:3623
+#: documentation/content/en/articles/committers-guide/_index.adoc:3594
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:3625
+#: documentation/content/en/articles/committers-guide/_index.adoc:3596
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:3627
+#: documentation/content/en/articles/committers-guide/_index.adoc:3598
#, 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:3630
+#: documentation/content/en/articles/committers-guide/_index.adoc:3601
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:3632
+#: documentation/content/en/articles/committers-guide/_index.adoc:3603
#, 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:3636
+#: documentation/content/en/articles/committers-guide/_index.adoc:3607
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:3638
+#: documentation/content/en/articles/committers-guide/_index.adoc:3609
#, 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:3642
+#: documentation/content/en/articles/committers-guide/_index.adoc:3613
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:3644
+#: documentation/content/en/articles/committers-guide/_index.adoc:3615
#, 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:3648
+#: documentation/content/en/articles/committers-guide/_index.adoc:3619
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:3650
+#: documentation/content/en/articles/committers-guide/_index.adoc:3621
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:3654
+#: documentation/content/en/articles/committers-guide/_index.adoc:3625
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:3655
+#: documentation/content/en/articles/committers-guide/_index.adoc:3626
msgid "Select the product your patch is about."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3656
+#: documentation/content/en/articles/committers-guide/_index.adoc:3627
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:3657
+#: documentation/content/en/articles/committers-guide/_index.adoc:3628
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:3658
+#: documentation/content/en/articles/committers-guide/_index.adoc:3629
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:3659
+#: documentation/content/en/articles/committers-guide/_index.adoc:3630
msgid "Submit. Wait for the build to run."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3660
+#: documentation/content/en/articles/committers-guide/_index.adoc:3631
msgid "{portmgr} will reply with a possible fallout."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3661
+#: documentation/content/en/articles/committers-guide/_index.adoc:3632
msgid "Depending on the fallout:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3662
+#: documentation/content/en/articles/committers-guide/_index.adoc:3633
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:3663
+#: documentation/content/en/articles/committers-guide/_index.adoc:3634
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:3664
+#: documentation/content/en/articles/committers-guide/_index.adoc:3635
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:3667
+#: documentation/content/en/articles/committers-guide/_index.adoc:3638
#, no-wrap
msgid "Issues Specific to Developers Who Are Not Committers"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3672
+#: documentation/content/en/articles/committers-guide/_index.adoc:3643
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:3674
+#: documentation/content/en/articles/committers-guide/_index.adoc:3645
msgid "<<admin>>"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3675
+#: documentation/content/en/articles/committers-guide/_index.adoc:3646
msgid "<<conventions-everyone>>"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3679
+#: documentation/content/en/articles/committers-guide/_index.adoc:3650
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:3681
+#: documentation/content/en/articles/committers-guide/_index.adoc:3652
msgid "<<developer.relations>>"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3682
+#: documentation/content/en/articles/committers-guide/_index.adoc:3653
msgid "<<ssh.guide>>"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3683
+#: documentation/content/en/articles/committers-guide/_index.adoc:3654
msgid "<<rules>>"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3685
+#: documentation/content/en/articles/committers-guide/_index.adoc:3656
#, no-wrap
msgid "Information About Google Analytics"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3688
+#: documentation/content/en/articles/committers-guide/_index.adoc:3659
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:3692
+#: documentation/content/en/articles/committers-guide/_index.adoc:3663
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:3697
+#: documentation/content/en/articles/committers-guide/_index.adoc:3668
#, 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:3701
+#: documentation/content/en/articles/committers-guide/_index.adoc:3672
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:3702
+#: documentation/content/en/articles/committers-guide/_index.adoc:3673
#, no-wrap
msgid "Where are the mailing list archives stored?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3705
+#: documentation/content/en/articles/committers-guide/_index.adoc:3676
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:3706
+#: documentation/content/en/articles/committers-guide/_index.adoc:3677
#, 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:3709
+#: documentation/content/en/articles/committers-guide/_index.adoc:3680
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:3711
+#: documentation/content/en/articles/committers-guide/_index.adoc:3682
#, no-wrap
msgid "Benefits and Perks for FreeBSD Committers"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3714
+#: documentation/content/en/articles/committers-guide/_index.adoc:3685
#, no-wrap
msgid "Recognition"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3718
+#: documentation/content/en/articles/committers-guide/_index.adoc:3689
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:3720
+#: documentation/content/en/articles/committers-guide/_index.adoc:3691
#, no-wrap
msgid "FreeBSD Mall"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3723
+#: documentation/content/en/articles/committers-guide/_index.adoc:3694
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:3725
+#: documentation/content/en/articles/committers-guide/_index.adoc:3696
#, no-wrap
msgid "`Gandi.net`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3728
+#: documentation/content/en/articles/committers-guide/_index.adoc:3699
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:3732
+#: documentation/content/en/articles/committers-guide/_index.adoc:3703
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."
+"Gandi offers an E-rate discount to all FreeBSD developers. 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:3734
+#: documentation/content/en/articles/committers-guide/_index.adoc:3705
#, no-wrap
msgid "`rsync.net`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3737
+#: documentation/content/en/articles/committers-guide/_index.adoc:3708
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:3739
+#: documentation/content/en/articles/committers-guide/_index.adoc:3710
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:3741
+#: documentation/content/en/articles/committers-guide/_index.adoc:3712
#, no-wrap
msgid "`JetBrains`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3744
+#: documentation/content/en/articles/committers-guide/_index.adoc:3715
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:3746
+#: documentation/content/en/articles/committers-guide/_index.adoc:3717
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:3750
+#: documentation/content/en/articles/committers-guide/_index.adoc:3721
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/contributing/_index.po b/documentation/content/en/articles/contributing/_index.po
index 55bbc4aebb..bebc3dbc01 100644
--- a/documentation/content/en/articles/contributing/_index.po
+++ b/documentation/content/en/articles/contributing/_index.po
@@ -1,1623 +1,1623 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/contributing/_index.adoc:1
#, no-wrap
msgid "How to contribute to the FreeBSD Project"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/contributing/_index.adoc:1
#: documentation/content/en/articles/contributing/_index.adoc:13
#, no-wrap
msgid "Contributing to FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:46
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:48
msgid ""
"This article describes the different ways in which an individual or "
"organization may contribute to the FreeBSD Project."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:50
msgid "'''"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:55
msgid ""
"So you want to contribute to FreeBSD? That is great! FreeBSD _relies_ on the "
"contributions of its user base to survive. Your contributions are not only "
"appreciated, they are vital to FreeBSD's continued growth."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:58
msgid ""
"A large and growing number of international contributors, of greatly varying "
"ages and areas of technical expertise, develop FreeBSD. There is always "
"more work to be done than there are people available to do it, and more help "
"is always appreciated."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:62
msgid ""
"As a volunteer, what you do is limited only by what you want to do. "
"However, we do ask that you are aware of what other members of the FreeBSD "
"community will expect of you. You may want to take this into account before "
"deciding to volunteer."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:66
msgid ""
"The FreeBSD project is responsible for an entire operating system "
"environment, rather than just a kernel or a few scattered utilities. As "
"such, our [.filename]#TODO# lists span a very wide range of tasks: from "
"documentation, beta testing and presentation, to the system installer and "
"highly specialized types of kernel development. People of any skill level, "
"in almost any area, can almost certainly help the project."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:71
msgid ""
"Commercial entities engaged in FreeBSD-related enterprises are also "
"encouraged to contact us. Do you need a special extension to make your "
"product work? You will find us receptive to your requests, given that they "
"are not too outlandish. Are you working on a value-added product? Please "
"let us know! We may be able to work cooperatively on some aspect of it. The "
"free software world is challenging many existing assumptions about how "
"software is developed, sold, and maintained, and we urge you to at least "
"give it a second look."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributing/_index.adoc:73
#, no-wrap
msgid "What Is Needed"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:76
msgid ""
"The following list of tasks and sub-projects represents something of an "
"amalgam of various [.filename]#TODO# lists and user requests."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:78
#, no-wrap
msgid "Ongoing Non-Programmer Tasks"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:83
msgid ""
"Many people who are involved in FreeBSD are not programmers. The Project "
"includes documentation writers, Web designers, and support people. All that "
"these people need to contribute is an investment of time and a willingness "
"to learn."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:85
msgid ""
"Read through the FAQ and Handbook periodically. If anything is poorly "
"explained, ambiguous, out of date or incorrect, let us know. Even better, "
"send us a fix (AsciiDoc is not difficult to learn, but there is no objection "
"to plain text submissions)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:86
msgid ""
"Help translate FreeBSD documentation into your native language. If "
"documentation already exists for your language, you can help translate "
"additional documents or verify that the translations are up-to-date and "
"correct. First take a look at the extref:{fdp-primer}[Translations FAQ, "
"translations] in the FreeBSD Documentation Project Primer. You are not "
"committing yourself to translating every single FreeBSD document by doing "
"this - as a volunteer, you can do as much or as little translation as you "
"desire. Once someone begins translating, others almost always join the "
"effort. If you only have the time or energy to translate one part of the "
"documentation, please translate the installation instructions."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:87
msgid ""
"Read the {freebsd-questions} occasionally (or even regularly). It can be "
"very satisfying to share your expertise and help people solve their "
"problems; sometimes you may even learn something new yourself! These forums "
"can also be a source of ideas for things to improve upon."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:89
#, no-wrap
msgid "Ongoing Programmer Tasks"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:93
msgid ""
"Most of the tasks listed here may require a considerable investment of time, "
"an in-depth knowledge of the FreeBSD kernel, or both. However, there are "
"also many useful tasks which are suitable for \"weekend hackers\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:95
msgid ""
"If you run FreeBSD-CURRENT and have a good Internet connection, there is a "
"machine `current.FreeBSD.org` which builds a full release once a day-every "
"now and again, try to install the latest release from it and report any "
"failures in the process."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:96
msgid ""
"Read the {freebsd-bugs}. There may be a problem you can comment "
"constructively on or with patches you can test. Or you could even try to fix "
"one of the problems yourself."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:97
msgid ""
"If you know of any bug fixes which have been successfully applied to -"
"CURRENT but have not been merged into -STABLE after a decent interval "
"(normally a couple of weeks), send the committer a polite reminder."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:98
msgid ""
"Move contributed software to [.filename]#src/contrib# in the source tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:99
msgid "Make sure code in [.filename]#src/contrib# is up to date."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:100
msgid ""
"Build the source tree (or just part of it) with extra warnings enabled and "
"clean up the warnings. A list of build warnings can also be found from our "
"https://ci.freebsd.org[CI] by selecting a build and checking \"LLVM/Clang "
"Warnings\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:101
msgid ""
"Fix warnings for ports which do deprecated things like using `gets()` or "
"including [.filename]#malloc.h#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:102
msgid ""
"If you have contributed any ports and you had to make FreeBSD-specific "
"changes, send your patches back to the original authors (this will make your "
"life easier when they bring out the next version)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:103
msgid ""
"Get copies of formal standards like POSIX(R). Compare FreeBSD's behavior to "
"that required by the standard. If the behavior differs, particularly in "
"subtle or obscure corners of the specification, send in a PR about it. If "
"you are able, figure out how to fix it and include a patch in the PR. If you "
"think the standard is wrong, ask the standards body to consider the question."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:104
msgid "Suggest further tasks for this list!"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:105
#, no-wrap
msgid "Work through the PR Database"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:112
msgid ""
"The https://bugs.FreeBSD.org/search/[FreeBSD PR list] shows all the current "
"active problem reports and requests for enhancement that have been submitted "
"by FreeBSD users. The PR database includes both programmer and non-"
"programmer tasks. Look through the open PRs, and see if anything there "
"takes your interest. Some of these might be very simple tasks that just "
"need an extra pair of eyes to look over them and confirm that the fix in the "
"PR is a good one. Others might be much more complex, or might not even have "
"a fix included at all."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:115
msgid ""
"Start with the PRs that have not been assigned to anyone else. If a PR is "
"assigned to someone else, but it looks like something you can handle, email "
"the person it is assigned to and ask if you can work on it-they might "
"already have a patch ready to be tested, or further ideas that you can "
"discuss with them."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:116
#, no-wrap
msgid "Ongoing Ports Tasks"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:121
msgid ""
"The Ports Collection is a perpetual work in progress. We want to provide "
"our users with an easy to use, up to date, high quality repository of third "
"party software. We need people to donate some of their time and effort to "
"help us achieve this goal."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:125
msgid ""
"Anyone can get involved, and there are lots of different ways to do so. "
"Contributing to ports is an excellent way to help \"give back\" something to "
"the project. Whether you are looking for an ongoing role, or a fun "
"challenge for a rainy day, we would love to have your help!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:127
msgid ""
"There are a number of easy ways you can contribute to keeping the ports tree "
"up to date and in good working order:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:129
msgid ""
"Find some cool or useful software and extref:{porters-handbook}[create a "
"port] for it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:130
msgid ""
"There are a large number of ports that have no maintainer. Become a "
"maintainer and <<adopt-port>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:131
msgid "If you have created or adopted a port, be aware of <<maintain-port>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:132
msgid "When you are looking for a quick challenge you could <<fix-broken>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:133
#, no-wrap
msgid "Pick one of the items from the Ideas page"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:137
msgid ""
"The https://wiki.freebsd.org/IdeasPage[FreeBSD list of projects and ideas "
"for volunteers] is also available for people willing to contribute to the "
"FreeBSD project. The list is being regularly updated and contains items for "
"both programmers and non-programmers with information about each project."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributing/_index.adoc:139
#, no-wrap
msgid "How to Contribute"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:142
msgid ""
"Contributions to the system generally fall into one or more of the following "
"5 categories:"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:144
#, no-wrap
msgid "Bug Reports and General Commentary"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:149
msgid ""
"An idea or suggestion of _general_ technical interest should be mailed to "
"the {freebsd-hackers}. Likewise, people with an interest in such things "
"(and a tolerance for a _high_ volume of mail!) may subscribe to the {freebsd-"
"hackers}. See extref:{handbook}[The FreeBSD Handbook, eresources-mail] for "
"more information about this and other mailing lists."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:152
msgid ""
"If you are submitting a simple patch to the src repo, please consider "
"submitting it to the project's GitHub mirror as https://github.com/freebsd/"
"freebsd-src/pulls[a pull request]. Suitable submissions should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:154
msgid ""
"It is ready or nearly ready to be committed. A committer should be able to "
"land this patch with less than 10 minutes of additional work."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:155
msgid "It passes all the GitHub CI jobs."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:156
msgid "You can respond to feedback quickly."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:157
msgid ""
"It touches fewer than about 10 files and the changes are less than about 200 "
"lines. Changes larger than this may be OK, or you may be asked to submit "
"multiple pull requests of a more manageable size."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:158
msgid ""
"Each logical change is a separate commit within the pull request. Commit "
"messages for each change should follow extref:{committers-guide}#commit-log-"
"message[commit log guide]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:159
msgid ""
"All commits have your name and valid email address as you'd like to see them "
"in the FreeBSD repository as the author. Fake github.com addresses cannot be "
"used."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:160
msgid ""
"The scope of the pull request should not change during review. If the review "
"suggests changes that expand the scope, please create an independent pull "
"request."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:161
msgid ""
"Fixup commits should be squashed with the commit they are fixing. Each "
"commit in your branch should be suitable for FreeBSD's repository."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:162
msgid ""
"Commits should include one or more `Signed-off-by:` lines with full name and "
"email address certifying https://developercertificate.org/[Developer "
"Certificate of Origin]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:167
msgid ""
"When updating pull request, please rebase with a forced push rather than a "
"merge commit. More complex changes may be submitted as pull requests, but "
"they may be closed if they are too large, too unwieldy, become inactive, "
"need further discussion in the community, or need extensive revision. "
"Please avoid creating large, wide-ranging cleanup patches: they are too "
"large and lack the focus needed for a good review. Misdirected patches may "
"be redirected to a more appropriate forum for the patch to be resolved."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:170
msgid ""
"Pull requests submitted to the ports repository may or may not see action, "
"based on the whims of developers. For now, you will have a better "
"experience if you follow the ports submission process <<ports-contributing>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:172
msgid ""
"The docs team also accepts pull requests via GitHub, but has not established "
"any policy for them yet."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:179
msgid ""
"If you find a bug or are submitting a specific change, please report it "
"using the https://bugs.FreeBSD.org/submit/[bug submission form]. Try to "
"fill-in each field of the bug report. Unless they exceed 65KB, include any "
"patches directly in the report. If the patch is suitable to be applied to "
"the source tree put `[PATCH]` in the synopsis of the report. When including "
"patches, _do not_ use cut-and-paste because cut-and-paste turns tabs into "
"spaces and makes them unusable. When patches are a lot larger than 20KB, "
"consider compressing them (eg. with man:gzip[1] or man:bzip2[1]) prior to "
"uploading them."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:182
msgid ""
"After filing a report, you should receive confirmation along with a tracking "
"number. Keep this tracking number so that you can update us with details "
"about the problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:184
msgid ""
"See also extref:{problem-reports}[this article] on how to write good problem "
"reports."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:185
#, no-wrap
msgid "Changes to the Documentation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:190
msgid ""
"Changes to the documentation are overseen by the {freebsd-doc}. Please look "
"at the extref:{fdp-primer}[FreeBSD Documentation Project Primer] for "
"complete instructions. Send submissions and changes (even small ones are "
"welcome!) using the same method as any other bug report."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:191
#, no-wrap
msgid "Changes to Existing Source Code"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:196
msgid ""
"An addition or change to the existing source code is a somewhat trickier "
"affair and depends a lot on how far out of date you are with the current "
"state of FreeBSD development. There is a special on-going release of "
"FreeBSD known as \"FreeBSD-CURRENT\" which is made available in a variety of "
"ways for the convenience of developers working actively on the system. See "
"extref:{handbook}[The FreeBSD Handbook, current-stable] for more information "
"about getting and using FreeBSD-CURRENT."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:199
msgid ""
"Working from older sources unfortunately means that your changes may "
"sometimes be too obsolete or too divergent for easy re-integration into "
"FreeBSD. Chances of this can be minimized somewhat by subscribing to the "
"{freebsd-announce} and the {freebsd-current} lists, where discussions on the "
"current state of the system take place."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:202
msgid ""
"Assuming that you can manage to secure fairly up-to-date sources to base "
"your changes on, the next step is to produce a set of diffs to send to the "
"FreeBSD maintainers. This is done with the man:diff[1] command."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:204
msgid ""
"The preferred man:diff[1] format for submitting patches is the unified "
"output format generated by `diff -u`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/contributing/_index.adoc:208
#, no-wrap
msgid "% diff -u oldfile newfile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:211
msgid "or"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/contributing/_index.adoc:215
#, no-wrap
msgid "% diff -u -r -N olddir newdir\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:218
msgid ""
"would generate a set of unified diffs for the given source file or directory "
"hierarchy."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:220
msgid "See man:diff[1] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:224
msgid ""
"Once you have a set of diffs (which you may test with the man:patch[1] "
"command), you should submit them for inclusion with FreeBSD as a bug "
"report. _Do not_ just send the diffs to the {freebsd-hackers} or they will "
"get lost! We greatly appreciate your submission (this is a volunteer "
"project!); because we are busy, we may not be able to address it "
"immediately, but it will remain in the PR database until we do. Indicate "
"your submission by including `[PATCH]` in the synopsis of the report."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:227
msgid ""
"If you feel it appropriate (e.g. you have added, deleted, or renamed files), "
"bundle your changes into a `tar` file. Archives created with man:shar[1] "
"are also welcome."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:231
msgid ""
"If your change is of a potentially sensitive nature, such as if you are "
"unsure of copyright issues governing its further distribution then you "
"should send it to {core-email} directly rather than submitting as a bug "
"report. The {core-email} reaches a much smaller group of people who do much "
"of the day-to-day work on FreeBSD. Note that this group is also _very busy_ "
"and so you should only send mail to them where it is truly necessary."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:234
msgid ""
"Please refer to man:intro[9] and man:style[9] for some information on coding "
"style. We would appreciate it if you were at least aware of this "
"information before submitting code."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:235
#, no-wrap
msgid "New Code or Major Value-Added Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:239
msgid ""
"In the case of a significant contribution of a large body work, or the "
"addition of an important new feature to FreeBSD, it becomes almost always "
"necessary to either send changes as tar files or upload them to a web or FTP "
"site for other people to access. If you do not have access to a web or FTP "
"site, ask on an appropriate FreeBSD mailing list for someone to host the "
"changes for you."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:244
msgid ""
"When working with large amounts of code, the touchy subject of copyrights "
"also invariably comes up. FreeBSD prefers free software licenses such as "
"BSD or ISC. Copyleft licenses such as GPLv2 are sometimes permitted. The "
"complete listing can be found on the link:https://www.FreeBSD.org/internal/"
"software-license/[core team licensing policy] page."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:245
#, no-wrap
msgid "Money or Hardware"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:248
msgid ""
"We are always very happy to accept donations to further the cause of the "
"FreeBSD Project and, in a volunteer effort like ours, a little can go a long "
"way! Donations of hardware are also very important to expanding our list of "
"supported peripherals since we generally lack the funds to buy such items "
"ourselves."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/contributing/_index.adoc:250
#, no-wrap
msgid "Donating Funds"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:255
msgid ""
"The https://www.freebsdfoundation.org[FreeBSD Foundation] is a non-profit, "
"tax-exempt foundation established to further the goals of the FreeBSD "
"Project. As a 501(c)3 entity, the Foundation is generally exempt from US "
"federal income tax as well as Colorado State income tax. Donations to a tax-"
"exempt entity are often deductible from taxable federal income."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:257
msgid "Donations may be sent in check form to:"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/articles/contributing/_index.adoc:265
#, no-wrap
msgid ""
"The FreeBSD Foundation\n"
"3980 Broadway Street\n"
"STE #103-107\n"
"Boulder CO 80304\n"
"USA"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:268
msgid ""
"The FreeBSD Foundation is also able to accept https://www.freebsdfoundation."
"org/donate/[online donations] through various payment options."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:271
msgid ""
"More information about the FreeBSD Foundation can be found in https://people."
"FreeBSD.org/~jdp/foundation/announcement.html[The FreeBSD Foundation -- an "
"Introduction]. To contact the Foundation by email, write to mailto:"
"info@FreeBSDFoundation.org[info@FreeBSDFoundation.org]."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/contributing/_index.adoc:272
#, no-wrap
msgid "Donating Hardware"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:276
msgid ""
"The FreeBSD Project happily accepts donations of hardware that it can find "
"good use for. If you are interested in donating hardware, please contact "
"the link:https://www.FreeBSD.org/donations/[Donations Liaison Office]."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributing/_index.adoc:278
#, no-wrap
msgid "Contributing to ports"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:281
#, no-wrap
msgid "Adopting an unmaintained port"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/contributing/_index.adoc:283
#, no-wrap
msgid "Choosing an unmaintained port"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:289
msgid ""
"Taking over maintainership of ports that are unmaintained is a great way to "
"get involved. Unmaintained ports are only updated and fixed when somebody "
"volunteers to work on them. There are a large number of unmaintained "
"ports. It is a good idea to start with adopting a port that you use "
"regularly."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:292
msgid ""
"Unmaintained ports have their `MAINTAINER` set to `ports@FreeBSD.org`. Many "
"unmaintained ports can have pending updates, this can be seen at the https://"
"portscout.freebsd.org/ports@freebsd.org.html[FreeBSD Ports distfile scanner]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:294
msgid ""
"On https://portsfallout.com/fallout?port=&maintainer=ports%40FreeBSD."
"org[PortsFallout] can be seen a list of unmaintained ports with errors."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:297
msgid ""
"Some ports affect a large number of others due to dependencies and slave "
"port relationships. Generally, we want people to have some experience "
"before they maintain such ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:301
msgid ""
"You can find out whether or not a port has dependencies or slave ports by "
"looking at a master index of ports called [.filename]#INDEX#. (The name of "
"the file varies by release of FreeBSD; for instance, [.filename]#INDEX-8#.) "
"Some ports have conditional dependencies that are not included in a default "
"[.filename]#INDEX# build. We expect you to be able to recognize such ports "
"by looking through other ports' [.filename]#Makefile#'s."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/contributing/_index.adoc:302
#, no-wrap
msgid "How to adopt the port"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:307
msgid ""
"First make sure you understand your <<maintain-port>>. Also read the extref:"
"{porters-handbook}[Porter's Handbook]. _Please do not commit yourself to "
"more than you feel you can comfortably handle._"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:313
msgid ""
"You may request maintainership of any unmaintained port as soon as you "
"wish. Simply set `MAINTAINER` to your own email address and send a PR "
"(Problem Report) with the change. If the port has build errors or needs "
"updating, you may wish to include any other changes in the same PR. This "
"will help because many committers are less willing to assign maintainership "
"to someone who does not have a known track record with FreeBSD. Submitting "
"PRs that fix build errors or update ports are the best ways to establish one."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:317
msgid ""
"File your PR with category `ports` and class `change-request`. A committer "
"will examine your PR, commit the changes, and finally close the PR. "
"Sometimes this process can take a little while (committers are volunteers, "
"too :)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:319
#, no-wrap
msgid "The challenge for port maintainers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:322
msgid ""
"This section will give you an idea of why ports need to be maintained and "
"outline the responsibilities of a port maintainer."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/contributing/_index.adoc:324
#, no-wrap
msgid "Why ports require maintenance"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:329
msgid ""
"Creating a port is a once-off task. Ensuring that a port is up to date and "
"continues to build and run requires an ongoing maintenance effort. "
"Maintainers are the people who dedicate some of their time to meeting these "
"goals."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:332
msgid ""
"The foremost reason ports need maintenance is to bring the latest and "
"greatest in third party software to the FreeBSD community. An additional "
"challenge is to keep individual ports working within the Ports Collection "
"framework as it evolves."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:334
msgid "As a maintainer, you will need to manage the following challenges:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:336
#, no-wrap
-msgid "*New software versions and updates.* New versions and updates of existing ported software become available all the time, and these need to be incorporated into the Ports Collection in order to provide up-to-date software.\n"
+msgid "*New software versions and updates.* New versions and updates of existing ported software become available all the time, and these need to be incorporated into the Ports Collection to provide up-to-date software.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:338
#, no-wrap
msgid "*Changes to dependencies.* If significant changes are made to the dependencies of your port, it may need to be updated so that it will continue to work correctly.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:340
#, no-wrap
msgid "*Changes affecting dependent ports.* If other ports depend on a port that you maintain, changes to your port may require coordination with other maintainers.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:342
#, no-wrap
msgid "*Interaction with other users, maintainers and developers.* Part of being a maintainer is taking on a support role. You are not expected to provide general support (but we welcome it if you choose to do so). What you should provide is a point of coordination for FreeBSD-specific issues regarding your ports.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:344
#, no-wrap
msgid "*Bug hunting.* A port may be affected by bugs which are specific to FreeBSD. You will need to investigate, find, and fix these bugs when they are reported. Thoroughly testing a port to identify problems before they make their way into the Ports Collection is even better.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:346
#, no-wrap
msgid "*Changes to ports infrastructure and policy.* Occasionally the systems that are used to build ports and packages are updated or a new recommendation affecting the infrastructure is made. You should be aware of these changes in case your ports are affected and require updating.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:348
#, no-wrap
msgid "*Changes to the base system.* FreeBSD is under constant development. Changes to software, libraries, the kernel or even policy changes can cause flow-on change requirements to ports.\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/contributing/_index.adoc:349
#, no-wrap
msgid "Maintainer responsibilities"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/contributing/_index.adoc:351
#, no-wrap
msgid "Keep your ports up to date"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:354
msgid ""
"This section outlines the process to follow to keep your ports up to date."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:357
msgid ""
"This is an overview. More information about upgrading a port is available "
"in the extref:{porters-handbook}[Porter's Handbook]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:361
msgid "Watch for updates"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:366
msgid ""
"Monitor the upstream vendor for new versions, updates and security fixes for "
"the software. Announcement mailing lists or news web pages are useful for "
"doing this. Sometimes users will contact you and ask when your port will be "
"updated. If you are busy with other things or for any reason just cannot "
"update it at the moment, ask if they will help you by submitting an update."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:369
msgid ""
"You may also receive automated email from the `FreeBSD Ports Version Check` "
"informing you that a newer version of your port's distfile is available. "
"More information about that system (including how to stop future emails) "
"will be provided in the message."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:370
msgid "Incorporate changes"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:373
msgid ""
"When they become available, incorporate the changes into the port. You need "
"to be able to generate a patch between the original port and your updated "
"port."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:374
msgid "Review and test"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:376
msgid "Thoroughly review and test your changes:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:378
msgid ""
"Build, install and test your port on as many platforms and architectures as "
"you can. It is common for a port to work on one branch or platform and fail "
"on another."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:379
msgid ""
"Make sure your port's dependencies are complete. The recommended way of "
"doing this is by installing your own ports tinderbox. See <<resources>> for "
"more information."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:380
msgid ""
"Check that the packing list is up to date. This involves adding in any new "
"files and directories and removing unused entries."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:381
msgid ""
"Verify your port using man:portlint[1] as a guide. See <<resources>> for "
"important information about using portlint."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:382
msgid ""
"Consider whether changes to your port might cause any other ports to break. "
"If this is the case, coordinate the changes with the maintainers of those "
"ports. This is especially important if your update changes the shared "
"library version; in this case, at the very least, the dependent ports will "
"need to get a `PORTREVISION` bump so that they will automatically be "
"upgraded by automated tools such as portmaster or man:portupgrade[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:384
#: documentation/content/en/articles/contributing/_index.adoc:451
msgid "Submit changes"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:387
msgid ""
"Send your update by submitting a PR with an explanation of the changes and a "
"patch containing the differences between the original port and the updated "
"one. Please refer to extref:{problem-reports}[Writing FreeBSD Problem "
"Reports] for information on how to write a really good PR."
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/articles/contributing/_index.adoc:393
msgid ""
"Please do not submit a man:shar[1] archive of the entire port; instead, use "
"man:git-format-patch[1] or man:diff[1] `-ruN`. In this way, committers can "
"much more easily see exactly what changes are being made. The Porter's "
"Handbook section on extref:{porters-handbook}[Upgrading, port-upgrading] has "
"more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:395
msgid "Wait"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:399
msgid ""
"At some stage a committer will deal with your PR. It may take minutes, or "
"it may take one or two weeks - so please be patient. If it takes any "
"longer, please seek for help on mailing lists ({freebsd-ports}), IRC: "
"#bsdports on EFNet or #freebsd-ports on Libera for example."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:400
msgid "Give feedback"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:403
msgid ""
"If a committer finds a problem with your changes, they will most likely "
"refer it back to you. A prompt response will help get your PR committed "
"faster, and is better for maintaining a thread of conversation when trying "
"to resolve any problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:404
msgid "And Finally"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:407
msgid ""
"Your changes will be committed and your port will have been updated. The PR "
"will then be closed by the committer. That's it!"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/contributing/_index.adoc:409
#, no-wrap
msgid "Ensure your ports continue to build correctly"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:412
msgid ""
"This section is about discovering and fixing problems that stop your ports "
"from building correctly."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:415
msgid ""
"FreeBSD only guarantees that the Ports Collection works on the `-STABLE` "
"branches. In theory, you should be able to get by with running the latest "
"release of each stable branch (since the ABIs are not supposed to change) "
"but if you can run the branch, that is even better."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:419
msgid ""
"Since the majority of FreeBSD installations run on PC-compatible machines "
"(what is termed the `i386` architecture), we expect you to keep the port "
"working on that architecture. We prefer that ports also work on the `amd64` "
"architecture running native. It is completely fair to ask for help if you "
"do not have one of these machines."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:424
msgid ""
"The usual failure modes for non-`x86` machines are that the original "
"programmers assumed that, for instance, pointers are `int`-s, or that a "
"relatively lax older gcc compiler was being used. More and more, "
"application authors are reworking their code to remove these assumptions - "
"but if the author is not actively maintaining their code, you may need to do "
"this yourself."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:427
msgid ""
"These are the tasks you need to perform to ensure your port is able to be "
"built:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:431
msgid "Watch for build failures"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:433
msgid ""
"Check your mail for mail from `pkg-fallout@FreeBSD.org` and the http://"
"portscout.FreeBSD.org[distfiles scanner] to see if any of the port which are "
"failing to build are out of date."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:434
#: documentation/content/en/articles/contributing/_index.adoc:482
msgid "Collect information"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:438
msgid ""
"Once you are aware of a problem, collect information to help you fix it. "
"Build errors reported by `pkg-fallout` are accompanied by logs which will "
"show you where the build failed. If the failure was reported to you by a "
"user, ask them to send you information which may help in diagnosing the "
"problem, such as:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:440
msgid "Build logs"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:441
msgid ""
"The commands and options used to build the port (including options set in [."
"filename]#/etc/make.conf#)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:442
msgid ""
"A list of packages installed on their system as shown by man:pkg-info[8]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:443
msgid "The version of FreeBSD they are running as shown by man:uname[1] `-a`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:444
msgid "When their ports collection was last updated"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:445
msgid "When their ports tree and [.filename]#INDEX# was last updated"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:447
msgid "Investigate and find a solution"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:450
msgid ""
"Unfortunately there is no straightforward process to follow to do this. "
"Remember, though: if you are stuck, ask for help! The {freebsd-ports} is a "
"good place to start, and the upstream developers are often very helpful."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:453
msgid ""
"Just as with updating a port, you should now incorporate changes, review and "
"test, submit your changes in a PR, and provide feedback if required."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:454
msgid "Send patches to upstream authors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:459
msgid ""
"In some cases, you will have to make patches to the port to make it run on "
"FreeBSD. Some (but not all) upstream authors will accept such patches back "
"into their code for the next release. If so, this may even help their users "
"on other BSD-based systems as well and perhaps save duplicated effort. "
"Please consider sending any applicable patches to the authors as a courtesy."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/contributing/_index.adoc:461
#, no-wrap
msgid "Investigate bug reports and PRs related to your port"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:464
msgid "This section is about discovering and fixing bugs."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:467
msgid ""
"FreeBSD-specific bugs are generally caused by assumptions about the build "
"and runtime environments that do not apply to FreeBSD. You are less likely "
"to encounter a problem of this type, but it can be more subtle and difficult "
"to diagnose."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:469
msgid ""
"These are the tasks you need to perform to ensure your port continues to "
"work as intended:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:473
msgid "Respond to bug reports"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:476
msgid ""
"Bugs may be reported to you through email via the https://bugs.FreeBSD.org/"
"search/[Problem Report database]. Bugs may also be reported directly to you "
"by users."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:479
msgid ""
"You should respond to PRs and other reports within 14 days, but please try "
"not to take that long. Try to respond as soon as possible, even if it is "
"just to say you need some more time before you can work on the PR."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:481
msgid ""
"If you have not responded after 14 days, any committer may commit from a PR "
"that you have not responded to via a `maintainer-timeout`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:484
msgid ""
"If the person reporting the bug has not also provided a fix, you need to "
"collect the information that will allow you to generate one."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:487
msgid ""
"If the bug is reproducible, you can collect most of the required information "
"yourself. If not, ask the person who reported the bug to collect the "
"information for you, such as:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:489
msgid ""
"A detailed description of their actions, expected program behavior and "
"actual behavior"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:490
msgid "Copies of input data used to trigger the bug"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:491
msgid ""
"Information about their build and execution environment - for example, a "
"list of installed packages and the output of man:env[1]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:492
msgid "Core dumps"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:493
msgid "Stack traces"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:495
msgid "Eliminate incorrect reports"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:501
msgid ""
"Some bug reports may be incorrect. For example, the user may have simply "
"misused the program; or their installed packages may be out of date and "
"require updating. Sometimes a reported bug is not specific to FreeBSD. In "
"this case report the bug to the upstream developers. If the bug is within "
"your capabilities to fix, you can also patch the port so that the fix is "
"applied before the next upstream release."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:502
msgid "Find a solution"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:505
msgid ""
"As with build errors, you will need to sort out a fix to the problem. "
"Again, remember to ask if you are stuck!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:506
msgid "Submit or approve changes"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributing/_index.adoc:509
msgid ""
"Just as with updating a port, you should now incorporate changes, review and "
"test, and submit your changes in a PR (or send a follow-up if a PR already "
"exists for the problem). If another user has submitted changes in the PR, "
"you can also send a follow-up saying whether or not you approve the changes."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/contributing/_index.adoc:511
#, no-wrap
msgid "Providing support"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:516
msgid ""
"Part of being a maintainer is providing support - not for the software in "
"general - but for the port and any FreeBSD-specific quirks and problems. "
"Users may contact you with questions, suggestions, problems and patches. "
"Most of the time their correspondence will be specific to FreeBSD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:520
msgid ""
"Occasionally you may have to invoke your skills in diplomacy, and kindly "
"point users seeking general support to the appropriate resources. Less "
"frequently you will encounter a person asking why the `RPMS` are not up to "
"date or how can they get the software to run under Foo Linux. Take the "
"opportunity to tell them that your port is up to date (if it is, of "
"course!), and suggest that they try FreeBSD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:523
msgid ""
"Sometimes users and developers will decide that you are a busy person whose "
"time is valuable and do some of the work for you. For example, they might:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:525
msgid "submit a PR or send you patches to update your port,"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:526
msgid "investigate and perhaps provide a fix to a PR, or"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:527
msgid "otherwise submit changes to your port."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:533
msgid ""
"In these cases your main obligation is to respond in a timely manner. "
"Again, the timeout for non-responsive maintainers is 14 days. After this "
"period changes may be committed unapproved. They have taken the trouble to "
"do this for you; so please try to at least respond promptly. Then review, "
"approve, modify or discuss their changes with them as soon as possible."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:535
msgid ""
"If you can make them feel that their contribution is appreciated (and it "
"should be) you will have a better chance persuading them to do more things "
"for you in the future :-)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:537
#, no-wrap
msgid "Finding and fixing a broken port"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:540
msgid ""
"There are some really good places to find a port that needs some attention."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:543
msgid ""
"You can use the https://bugs.freebsd.org/search[web interface] to the "
"Problem Report database to search through and view unresolved PRs. The "
"majority of ports PRs are updates, but with a little searching and skimming "
"over synopses you should be able to find something interesting to work on "
"(the `sw-bug` class is a good place to start)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:545
msgid ""
"https://portsfallout.com/[PortsFallout] shows port issues gathered from the "
"FreeBSD package building."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:547
msgid ""
"It is OK to send changes for a maintained port as well, but remember to ask "
"the maintainer in case they are already working on the problem."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:551
msgid ""
"Once you have found a bug or problem, collect information, investigate and "
"fix! If there is an existing PR, follow up to that. Otherwise create a new "
"PR. Your changes will be reviewed and, if everything checks out, committed."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:553
#, no-wrap
msgid "When to call it quits"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:559
msgid ""
"As your interests and commitments change, you may find that you no longer "
"have time to continue some (or all) of your ports contributions. That is "
"fine! Please let us know if you are no longer using a port or have otherwise "
"lost time or interest in being a maintainer. In this way we can go ahead "
"and allow other people to try to work on existing problems with the port "
"without waiting for your response. Remember, FreeBSD is a volunteer "
"project, so if maintaining a port is no fun any more, it is probably time to "
"let someone else do it!"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:563
msgid ""
"In any case, the Ports Management Team (`portmgr`) reserves the right to "
"reset your maintainership if you have not actively maintained your port in "
"some time. (Currently, this is set to 3 months.) By this, we mean that "
"there are unresolved problems or pending updates that have not been worked "
"on during that time."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributing/_index.adoc:565
#, no-wrap
msgid "Resources for ports maintainers and contributors"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:568
msgid ""
"The extref:{porters-handbook}[Porter's Handbook] is your hitchhiker's guide "
"to the ports system. Keep it handy!"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:571
msgid ""
"extref:{problem-reports}[Writing FreeBSD Problem Reports] describes how to "
"best formulate and submit a PR. In 2005 more than eleven thousand ports PRs "
"were submitted! Following this article will greatly assist us in reducing "
"the time needed to handle your PRs."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:573
msgid ""
"The https://bugs.freebsd.org/bugzilla/query.cgi[Problem Report database]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:576
msgid ""
"The http://portscout.FreeBSD.org[FreeBSD Ports distfile scanner (portscout)] "
"can show you ports for which the distfiles are not fetchable. You can check "
"on your own ports or use it to find ports that need their `MASTER_SITES` "
"updated."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:579
msgid ""
"package:ports-mgmt/poudriere[] is the most thorough way to test a port "
"through the entire cycle of installation, packaging, and deinstallation. "
"Documentation is located at the https://github.com/freebsd/"
"poudriere[poudriere github repository]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:583
msgid ""
"man:portlint[1] is an application which can be used to verify that your port "
"conforms to many important stylistic and functional guidelines. portlint is "
"a simple heuristic application, so you should use it __only as a guide__. "
"If portlint suggests changes which seem unreasonable, consult the extref:"
"{porters-handbook}[Porter's Handbook] or ask for advice."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:588
msgid ""
"The {freebsd-ports} is for general ports-related discussion. It is a good "
"place to ask for help. You can link:https://lists.freebsd.org/[subscribe, "
"or read and search the list archives]. Reading the archives of the {freebsd-"
"ports-bugs} and the {svn-ports-head} may also be of interest."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:590
msgid ""
"https://portsfallout.com/[PortsFallout] is a place to help in searching for "
"the https://lists.freebsd.org/archives/freebsd-pkg-fallout/[FreeBSD package-"
"fallout archive]."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributing/_index.adoc:592
#, no-wrap
msgid "Getting Started in Other Areas"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:595
msgid ""
"Looking for something interesting to get started that is not mentioned "
"elsewhere in this article? The FreeBSD Project has several Wiki pages "
"containing areas within which new contributors can get ideas on how to get "
"started."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:597
msgid ""
"The https://wiki.freebsd.org/JuniorJobs[Junior Jobs] page has a list of "
"projects that might be of interest to people just getting started in "
"FreeBSD, and want to work on interesting things to get their feet wet."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributing/_index.adoc:598
msgid ""
"The https://wiki.freebsd.org/IdeasPage[Ideas Page] contains various \"nice "
"to have\" or \"interesting\" things to work on in the Project."
msgstr ""
diff --git a/documentation/content/en/articles/contributors/_index.po b/documentation/content/en/articles/contributors/_index.po
index 028980429f..9cfc174f3d 100644
--- a/documentation/content/en/articles/contributors/_index.po
+++ b/documentation/content/en/articles/contributors/_index.po
@@ -1,535 +1,534 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/contributors/_index.adoc:1
#, no-wrap
msgid "A list of organizations and individuals who have contributed to FreeBSD"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/contributors/_index.adoc:1
#: documentation/content/en/articles/contributors/_index.adoc:8
#, no-wrap
msgid "Contributors to FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:62
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:65
msgid ""
"This article lists individuals and organizations who have made a "
"contribution to FreeBSD. To see the current list of FreeBSD Committers you "
"can take a look at the following <<staff-committers, list>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:67
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:71
#, no-wrap
msgid "The FreeBSD Developers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:75
msgid ""
"This list, which includes all members of the Core Team, names everyone who "
"has commit privileges for one or more of the three source trees (doc, ports "
"and src). To see the current Core Team members you can take a look at the "
"link:https://www.freebsd.org/administration/#t-core[administration page]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:77
msgid "(in alphabetical order by last name):"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:81
#, no-wrap
msgid "Core Team Alumni"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:85
msgid ""
"The following people were members of the FreeBSD core team during the "
"periods indicated. We thank them for their past efforts in the service of "
"the FreeBSD project."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:87
#: documentation/content/en/articles/contributors/_index.adoc:97
#: documentation/content/en/articles/contributors/_index.adoc:107
msgid "_In rough reverse chronological order:_"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:91
#, no-wrap
msgid "Development Team Alumni"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:95
msgid ""
"The following people were members of the FreeBSD development team during the "
"periods indicated. We thank them for their past efforts in the service of "
"the FreeBSD project."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:101
#, no-wrap
msgid "Ports Management Team Alumni"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:105
msgid ""
"The following people were members of the FreeBSD portmgr team during the "
"periods indicated. We thank them for their past efforts in the service of "
"the FreeBSD project."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:111
#, no-wrap
msgid "Development Team: In Memoriam"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:115
msgid ""
"During the many years that the FreeBSD Project has been in existence, sadly, "
"some of our developers have passed away. Here are some remembrances."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:117
msgid "_In rough reverse chronological order of their passing:_"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:121
#, no-wrap
msgid "Derived Software Contributors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:125
msgid ""
"This software was originally derived from William F. Jolitz's 386BSD release "
"0.1, though almost none of the original 386BSD specific code remains. This "
"software has been essentially re-implemented from the 4.4BSD-Lite release "
"provided by the Computer Science Research Group (CSRG) at the University of "
"California, Berkeley and associated academic contributors."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:127
msgid ""
"There are also portions of NetBSD and OpenBSD that have been integrated into "
"FreeBSD as well, and we would therefore like to thank all the contributors "
"to NetBSD and OpenBSD for their work."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:129
#, no-wrap
msgid "Additional FreeBSD Contributors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:132
#: documentation/content/en/articles/contributors/_index.adoc:139
msgid "(in alphabetical order by first name):"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:136
#, no-wrap
msgid "386BSD Patch Kit Patch Contributors"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/contributors/_index.adoc:143
#, no-wrap
msgid "Donors Gallery"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:146
msgid ""
"The FreeBSD Foundation thanks https://freebsdfoundation.org/our-donors/"
"donors/[financial and in-kind donors]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:148
msgid ""
"The https://www.freebsd.org/donations/[FreeBSD Donations Liaison] area "
"includes a https://www.freebsd.org/donations/donors/[list of donated "
"hardware]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:150
msgid "The FreeBSD Project thanks all donors!"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/contributors/_index.adoc:154
msgid "As of 2010, the section below was several years out-of-date."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributors/_index.adoc:156
#, no-wrap
msgid "Contributors to the central server project"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:159
msgid ""
"The following individuals and businesses made it possible for the FreeBSD "
"Project to build a new central server machine, which has replaced `freefall."
"FreeBSD.org` at one point, by donating the following items:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:161
msgid ""
"{mbarkah} and his employer, http://www.hemi.com/[Hemisphere Online], donated "
"a _Pentium Pro (P6) 200MHz CPU_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:162
msgid ""
"http://www.asacomputers.com/[ASA Computers] donated a _Tyan 1662 "
"motherboard_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:163
msgid ""
"Joe McGuckin <mailto:joe@via.net[joe@via.net]> of http://www.via.net/[ViaNet "
"Communications] donated a _Kingston ethernet controller_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:164
msgid ""
"Jack O'Neill <mailto:jack@diamond.xtalwind.net[jack@diamond.xtalwind.net]> "
"donated an _NCR 53C875 SCSI controller card_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:165
msgid ""
"Ulf Zimmermann <mailto:ulf@Alameda.net[ulf@Alameda.net]> of http://www."
"Alameda.net/[Alameda Networks] donated _128MB of memory_, a _4 Gb disk drive "
"and the case_."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributors/_index.adoc:166
#, no-wrap
msgid "Direct funding"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:169
msgid ""
"The following individuals and businesses have generously contributed direct "
"funding to the project:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:171
msgid ""
"Annelise Anderson <mailto:andrsn@hoover.stanford.edu[andrsn@hoover.stanford."
"edu]>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:172
msgid "{dillon}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:173
msgid "http://www.bluemountain.com/[Blue Mountain Arts]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:174
msgid "http://www.epilogue.com/[Epilogue Technology Corporation]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:175
msgid "{sef}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:176
msgid "http://www.gta.com/[Global Technology Associates, Inc]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:177
msgid "Don Scott Wilde."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:178
msgid ""
"Gianmarco Giovannelli <mailto:gmarco@masternet.it[gmarco@masternet.it]>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:179
msgid "Josef C. Grosch <mailto:joeg@truenorth.org[joeg@truenorth.org]>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:180
msgid "Robert T. Morris."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:181
msgid "{chuckr}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:182
msgid ""
"Kenneth P. Stox <mailto:ken@stox.sa.enteract.com[ken@stox.sa.enteract.com]> "
"of http://www.imagescape.com/[Imaginary Landscape, LLC.]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:183
msgid "Dmitry S. Kohmanyuk <mailto:dk@dog.farm.org[dk@dog.farm.org]>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:184
msgid ""
"http://www.cdrom.co.jp/[Laser5] of Japan (a portion of the profits from "
"sales of their various FreeBSD CDROMs)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:185
msgid ""
"http://www.mmjp.or.jp/fuki/[Fuki Shuppan Publishing Co.] donated a portion "
"of their profits from _Hajimete no FreeBSD_ (FreeBSD, Getting started) to "
"the FreeBSD and XFree86 projects."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:186
msgid ""
"http://www.ascii.co.jp/[ASCII Corp.] donated a portion of their profits from "
"several FreeBSD-related books to the FreeBSD project."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:187
msgid ""
"http://www.yokogawa.co.jp/[Yokogawa Electric Corp] has generously donated "
"significant funding to the FreeBSD project."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:188
msgid "http://www.buffnet.net/[BuffNET]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:189
msgid "http://www.pacificsolutions.com/[Pacific Solutions]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:190
msgid ""
"http://www.siemens.de/[Siemens AG] via Andre Albsmeier <mailto:andre."
"albsmeier@mchp.siemens.de[andre.albsmeier@mchp.siemens.de]>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:191
msgid "Chris Silva <mailto:ras@interaccess.com[ras@interaccess.com]>."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributors/_index.adoc:192
#, no-wrap
msgid "Hardware contributors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:195
msgid ""
"The following individuals and businesses have generously contributed "
"hardware for testing and device driver development/support:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:197
msgid ""
"BSDi for providing the Pentium P5-90 and 486/DX2-66 EISA/VL systems that are "
"being used for our development work, to say nothing of the network access "
"and other donations of hardware resources."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:198
msgid ""
"http://www.compaq.com[Compaq] has donated a variety of Alpha systems to the "
"FreeBSD Project. Among the many generous donations are 4 AlphaStation DS10s, "
"an AlphaServer DS20, AlphaServer 2100s, an AlphaServer 4100, 8 500Mhz "
"Personal Workstations, 4 433Mhz Personal Workstations, and more! These "
"machines are used for release engineering, package building, SMP "
"development, and general development on the Alpha architecture."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:199
msgid ""
"TRW Financial Systems, Inc. provided 130 PCs, three 68 GB file servers, "
"twelve Ethernets, two routers and an ATM switch for debugging the diskless "
"code"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:200
msgid ""
"Dermot McDonnell donated the Toshiba XM3401B CDROM drive currently used in "
"_freefall_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:201
msgid ""
"Chuck Robey <mailto:chuckr@glue.umd.edu[chuckr@glue.umd.edu]> contributed "
"his floppy tape streamer for experimental work."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:202
msgid ""
"Larry Altneu <mailto:larry@alr.com[larry@alr.com],> and {wilko}, provided "
-"Wangtek and Archive QIC-02 tape drives in order to improve the [."
-"filename]#wt# driver."
+"Wangtek and Archive QIC-02 tape drives to improve the [.filename]#wt# driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:203
msgid ""
"Ernst Winter (http://berklix.org/ewinter/[Deceased]) contributed a 2.88 MB "
"floppy drive to the project. This will hopefully increase the pressure for "
"rewriting the floppy disk driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:204
msgid ""
"http://www.tekram.com/[Tekram Technologies] sent one each of their DC-390, "
"DC-390U and DC-390F FAST and ULTRA SCSI host adapter cards for regression "
"testing of the NCR and AMD drivers with their cards. They are also to be "
"applauded for making driver sources for free operating systems available "
"from their FTP server link:ftp://ftp.tekram.com/scsi/FreeBSD/[ftp://ftp."
"tekram.com/scsi/FreeBSD/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:205
msgid ""
"Larry M. Augustin contributed not only a Symbios Sym8751S SCSI card, but "
"also a set of data books, including one about the forthcoming Sym53c895 chip "
"with Ultra-2 and LVD support, and the latest programming manual with "
"information on how to safely use the advanced features of the latest Symbios "
"SCSI chips. Thanks a lot!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:206
msgid ""
"{kuku} donated an FX120 12 speed Mitsumi CDROM drive for IDE CDROM driver "
"development."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:207
msgid ""
"Mike Tancsa <mailto:mike@sentex.ca[mike@sentex.ca]> donated four various ATM "
-"PCI cards in order to help increase support of these cards as well as help "
-"support the development effort of the netatm ATM stack."
+"PCI cards to help increase support of these cards as well as help support "
+"the development effort of the netatm ATM stack."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/contributors/_index.adoc:208
#, no-wrap
msgid "Special contributors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:211
msgid ""
"http://www.osd.bsdi.com/[BSDi] (formerly Walnut Creek CDROM) has donated "
"almost more than we can say (see the 'About the FreeBSD Project' section of "
"the extref:{handbook}[FreeBSD Handbook] for more details). In particular, we "
"would like to thank them for the original hardware used for `freefall."
"FreeBSD.org`, our primary development machine, and for `thud.FreeBSD.org`, a "
"testing and build box. We are also indebted to them for funding various "
"contributors over the years and providing us with unrestricted use of their "
"T1 connection to the Internet."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:212
msgid ""
"The http://www.interface-business.de/[interface business GmbH, Dresden] has "
"been patiently supporting {joerg} who has often preferred FreeBSD work over "
"paid work, and used to fall back to their (quite expensive) EUnet Internet "
"connection whenever his private connection became too slow or flaky to work "
"with it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/contributors/_index.adoc:212
msgid ""
"http://www.bsdi.com/[Berkeley Software Design, Inc.] has contributed their "
"DOS emulator code to the remaining BSD world, which is used in the `doscmd` "
"command."
msgstr ""
diff --git a/documentation/content/en/articles/cups/_index.po b/documentation/content/en/articles/cups/_index.po
index 90ea212eca..11c5502507 100644
--- a/documentation/content/en/articles/cups/_index.po
+++ b/documentation/content/en/articles/cups/_index.po
@@ -1,502 +1,502 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:21-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/cups/_index.adoc:1
#, no-wrap
msgid "How to install and use CUPS on FreeBSD"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/cups/_index.adoc:1
#: documentation/content/en/articles/cups/_index.adoc:11
#, no-wrap
msgid "CUPS on FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:44
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:46
msgid "An article about configuring CUPS on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:48
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/cups/_index.adoc:52
#, no-wrap
msgid "An Introduction to the Common Unix Printing System (CUPS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:56
msgid ""
"CUPS, the Common UNIX Printing System, provides a portable printing layer "
"for UNIX(R)-based operating systems. It has been developed by Easy Software "
"Products to promote a standard printing solution for all UNIX(R) vendors and "
"users."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:61
msgid ""
"CUPS uses the Internet Printing Protocol (IPP) as the basis for managing "
"print jobs and queues. The Line Printer Daemon (LPD), Server Message Block "
"(SMB), and AppSocket (aka JetDirect) protocols are also supported with "
"reduced functionality. CUPS adds network printer browsing and PostScript "
"Printer Description (PPD) based printing options to support real-world "
"printing under UNIX(R). As a result, CUPS is ideally-suited for sharing and "
"accessing printers in mixed environments of FreeBSD, Linux(R), Mac OS(R) X, "
"or Windows(R)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:63
msgid "The main site for CUPS is http://www.cups.org/[http://www.cups.org/]."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/cups/_index.adoc:65
#, no-wrap
msgid "Installing the CUPS Print Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:68
msgid ""
"To install CUPS using a precompiled binary, issue the following command from "
"a root terminal:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:72
#, no-wrap
msgid "# pkg install cups\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:76
msgid ""
"Other optional, but recommended, packages are package:print/gutenprint[] and "
"package:print/hplip[], both of which add drivers and utilities for a variety "
"of printers. Once installed, the CUPS configuration files can be found in "
"the directory [.filename]#/usr/local/etc/cups#."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/cups/_index.adoc:78
#, no-wrap
msgid "Configuring the CUPS Print Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:82
msgid ""
-"After installation, a few files must be edited in order to configure the "
-"CUPS server. First, create or modify, as the case may be, the file [."
-"filename]#/etc/devfs.rules# and add the following information to set the "
-"proper permissions on all potential printer devices and to associate "
-"printers with the `cups` user group:"
+"After installation, a few files must be edited to configure the CUPS "
+"server. First, create or modify, as the case may be, the file [.filename]#/"
+"etc/devfs.rules# and add the following information to set the proper "
+"permissions on all potential printer devices and to associate printers with "
+"the `cups` user group:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:90
#, no-wrap
msgid ""
"[system=10]\n"
"add path 'unlpt*' mode 0660 group cups\n"
"add path 'ulpt*' mode 0660 group cups\n"
"add path 'lpt*' mode 0660 group cups\n"
"add path 'usb/X.Y.Z' mode 0660 group cups\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/cups/_index.adoc:96
msgid ""
"Note that _X_, _Y_, and _Z_ should be replaced with the target USB device "
"listed in the [.filename]#/dev/usb# directory that corresponds to the "
"printer. To find the correct device, examine the output of man:dmesg[8], "
"where [.filename]#ugenX.Y# lists the printer device, which is a symbolic "
"link to a USB device in [.filename]#/dev/usb#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:99
msgid "Next, add two lines to [.filename]#/etc/rc.conf# as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:104
#, no-wrap
msgid ""
"cupsd_enable=\"YES\"\n"
"devfs_system_ruleset=\"system\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:107
msgid ""
"These two entries will start the CUPS print server on boot and invoke the "
"local devfs rule created above, respectively."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:109
msgid ""
-"In order to enable CUPS printing under certain Microsoft(R) Windows(R) "
-"clients, the line below should be uncommented in [.filename]#/usr/local/etc/"
-"cups/mime.types# and [.filename]#/usr/local/etc/cups/mime.convs#:"
+"To enable CUPS printing under certain Microsoft(R) Windows(R) clients, the "
+"line below should be uncommented in [.filename]#/usr/local/etc/cups/mime."
+"types# and [.filename]#/usr/local/etc/cups/mime.convs#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:113
#, no-wrap
msgid "application/octet-stream\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:116
msgid ""
"Once these changes have been made, the man:devfs[8] and CUPS systems must "
"both be restarted, either by rebooting the computer or issuing the following "
"two commands in a root terminal:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:121
#, no-wrap
msgid ""
"# /etc/rc.d/devfs restart\n"
"# /usr/local/etc/rc.d/cupsd restart\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/cups/_index.adoc:124
#, no-wrap
msgid "Configuring Printers on the CUPS Print Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:128
msgid ""
"After the CUPS system has been installed and configured, the administrator "
"can begin configuring the local printers attached to the CUPS print server. "
"This part of the process is very similar, if not identical, to configuring "
"CUPS printers on other UNIX(R)-based operating systems, such as a Linux(R) "
"distribution."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:133
msgid ""
"The primary means for managing and administering the CUPS server is through "
"the web-based interface, which can be found by launching a web browser and "
"entering http://localhost:631[http://localhost:631] in the browser's URL "
"bar. If the CUPS server is on another machine on the network, substitute "
"the server's local IP address for `localhost`. The CUPS web interface is "
"fairly self-explanatory, as there are sections for managing printers and "
"print jobs, authorizing users, and more. Additionally, on the right-hand "
"side of the Administration screen are several check-boxes allowing easy "
"access to commonly-changed settings, such as whether to share published "
"printers connected to the system, whether to allow remote administration of "
"the CUPS server, and whether to allow users additional access and privileges "
"to the printers and print jobs."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:137
msgid ""
"Adding a printer is generally as easy as clicking \"Add Printer\" at the "
"Administration screen of the CUPS web interface, or clicking one of the "
"\"New Printers Found\" buttons also at the Administration screen. When "
"presented with the \"Device\" drop-down box, simply select the desired "
"locally-attached printer, and then continue through the process. If one has "
"added the package:print/gutenprint-cups[] or package:print/hplip[] ports or "
"packages as referenced above, then additional print drivers will be "
"available in the subsequent screens that might provide more stability or "
"features."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/cups/_index.adoc:139
#, no-wrap
msgid "Configuring CUPS Clients"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:143
msgid ""
"Once the CUPS server has been configured and printers have been added and "
"published to the network, the next step is to configure the clients, or the "
"machines that are going to access the CUPS server. If one has a single "
"desktop machine that is acting as both server and client, then much of this "
"information may not be needed."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/cups/_index.adoc:145
#, no-wrap
msgid "UNIX(R) Clients"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:151
msgid ""
"CUPS will also need to be installed on your UNIX(R) clients. Once CUPS is "
"installed on the clients, then CUPS printers that are shared across the "
"network are often automatically discovered by the printer managers for "
"various desktop environments such as GNOME or KDE. Alternatively, one can "
"access the local CUPS interface on the client machine at http://"
"localhost:631[http://localhost:631] and click on \"Add Printer\" in the "
"Administration section. When presented with the \"Device\" drop-down box, "
"simply select the networked CUPS printer, if it was automatically "
"discovered, or select `ipp` or `http` and enter the IPP or HTTP URI of the "
"networked CUPS printer, usually in one of the two following syntaxes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:155
#, no-wrap
msgid "ipp://server-name-or-ip/printers/printername\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:160
#: documentation/content/en/articles/cups/_index.adoc:182
#, no-wrap
msgid "http://server-name-or-ip:631/printers/printername\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:163
msgid ""
"If the CUPS clients have difficulty finding other CUPS printers shared "
"across the network, sometimes it is helpful to add or create a file [."
"filename]#/usr/local/etc/cups/client.conf# with a single entry as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:167
#, no-wrap
msgid "ServerName server-ip\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:170
msgid ""
"In this case, _server-ip_ would be replaced by the local IP address of the "
"CUPS server on the network."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/cups/_index.adoc:172
#, no-wrap
msgid "Windows(R) Clients"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:178
msgid ""
"Versions of Windows(R) prior to XP did not have the capability to natively "
"network with IPP-based printers. However, Windows(R) XP and later versions "
"do have this capability. Therefore, to add a CUPS printer in these versions "
"of Windows(R) is quite easy. Generally, the Windows(R) administrator will "
"run the Windows(R) `Add Printer` wizard, select `Network Printer` and then "
"enter the URI in the following syntax:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:185
msgid ""
"If one has an older version of Windows(R) without native IPP printing "
"support, then the general means of connecting to a CUPS printer is to use "
"package:net/samba413[] and CUPS together, which is a topic outside the scope "
"of this chapter."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/cups/_index.adoc:187
#, no-wrap
msgid "CUPS Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/cups/_index.adoc:196
msgid ""
"Difficulties with CUPS often lies in permissions. First, double check the "
"man:devfs[8] permissions as outlined above. Next, check the actual "
"permissions of the devices created in the file system. It is also helpful "
"to make sure your user is a member of the `cups` group. If the permissions "
"check boxes in the Administration section of the CUPS web interface do not "
"seem to be working, another fix might be to manually backup the main CUPS "
"configuration file located at [.filename]#/usr/local/etc/cups/cupsd.conf# "
"and edit the various configuration options and try different combinations of "
"configuration options. One sample [.filename]#/usr/local/etc/cups/cupsd."
"conf# to test is listed below. Please note that this sample [."
"filename]#cupsd.conf# sacrifices security for easier configuration; once the "
"administrator successfully connects to the CUPS server and configures the "
"clients, it is advisable to revisit this configuration file and begin "
"locking down access."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:202
#, no-wrap
msgid ""
"# Log general information in error_log - change \"info\" to \"debug\" for\n"
"# troubleshooting...\n"
"LogLevel info\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:205
#, no-wrap
msgid ""
"# Administrator user group...\n"
"SystemGroup wheel\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:210
#, no-wrap
msgid ""
"# Listen for connections on Port 631.\n"
"Port 631\n"
"#Listen localhost:631\n"
"Listen /var/run/cups.sock\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:217
#, no-wrap
msgid ""
"# Show shared printers on the local network.\n"
"Browsing On\n"
"BrowseOrder allow,deny\n"
"#BrowseAllow @LOCAL\n"
"BrowseAllow 192.168.1.* # change to local LAN settings\n"
"BrowseAddress 192.168.1.* # change to local LAN settings\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:221
#, no-wrap
msgid ""
"# Default authentication type, when authentication is required...\n"
"DefaultAuthType Basic\n"
"DefaultEncryption Never # comment this line to allow encryption\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:228
#, no-wrap
msgid ""
"# Allow access to the server from any machine on the LAN\n"
"<Location />\n"
" Order allow,deny\n"
" #Allow localhost\n"
" Allow 192.168.1.* # change to local LAN settings\n"
"</Location>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:236
#, no-wrap
msgid ""
"# Allow access to the admin pages from any machine on the LAN\n"
"<Location /admin>\n"
" #Encryption Required\n"
" Order allow,deny\n"
" #Allow localhost\n"
" Allow 192.168.1.* # change to local LAN settings\n"
"</Location>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:245
#, no-wrap
msgid ""
"# Allow access to configuration files from any machine on the LAN\n"
"<Location /admin/conf>\n"
" AuthType Basic\n"
" Require user @SYSTEM\n"
" Order allow,deny\n"
" #Allow localhost\n"
" Allow 192.168.1.* # change to local LAN settings\n"
"</Location>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:256
#, no-wrap
msgid ""
"# Set the default printer/job policies...\n"
"<Policy default>\n"
" # Job-related operations must be done by the owner or an administrator...\n"
" <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \\\n"
"Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \\\n"
"Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \\\n"
"CUPS-Move-Job>\n"
" Require user @OWNER @SYSTEM\n"
" Order deny,allow\n"
" </Limit>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:267
#, no-wrap
msgid ""
" # All administration operations require an administrator to authenticate...\n"
" <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \\\n"
"Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \\\n"
"Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \\\n"
"Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \\\n"
"CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>\n"
" AuthType Basic\n"
" Require user @SYSTEM\n"
" Order deny,allow\n"
" </Limit>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:273
#, no-wrap
msgid ""
" # Only the owner or an administrator can cancel or authenticate a job...\n"
" <Limit Cancel-Job CUPS-Authenticate-Job>\n"
" Require user @OWNER @SYSTEM\n"
" Order deny,allow\n"
" </Limit>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/cups/_index.adoc:278
#, no-wrap
msgid ""
" <Limit All>\n"
" Order deny,allow\n"
" </Limit>\n"
"</Policy>\n"
msgstr ""
diff --git a/documentation/content/en/articles/explaining-bsd/_index.po b/documentation/content/en/articles/explaining-bsd/_index.po
index 882500331e..60a7239f29 100644
--- a/documentation/content/en/articles/explaining-bsd/_index.po
+++ b/documentation/content/en/articles/explaining-bsd/_index.po
@@ -1,683 +1,683 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:21-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/explaining-bsd/_index.adoc:1
#, no-wrap
msgid "Brief explanation about BSD"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/explaining-bsd/_index.adoc:1
#: documentation/content/en/articles/explaining-bsd/_index.adoc:11
#, no-wrap
msgid "Explaining BSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:44
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:46
msgid ""
"In the open source world, the word \"Linux\" is almost synonymous with "
"\"Operating System\", but it is not the only open source UNIX(R) operating "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:48
msgid ""
"So what is the secret? Why is BSD not better known? This white paper "
"addresses these and other questions."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:50
msgid ""
"Throughout this paper, differences between BSD and Linux will be noted "
"__like this__."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:52
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/explaining-bsd/_index.adoc:56
#, no-wrap
msgid "What is BSD?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:63
msgid ""
"BSD stands for \"Berkeley Software Distribution\". It is the name of "
"distributions of source code from the University of California, Berkeley, "
"which were originally extensions to AT&T's Research UNIX(R) operating "
"system. Several open source operating system projects are based on a "
"release of this source code known as 4.4BSD-Lite. In addition, they "
"comprise a number of packages from other Open Source projects, including "
"notably the GNU project. The overall operating system comprises:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:65
msgid ""
"The BSD kernel, which handles process scheduling, memory management, "
"symmetric multi-processing (SMP), device drivers, etc."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:66
msgid "The C library, the base API for the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:68
msgid ""
"__The BSD C library is based on code from Berkeley, not the GNU project.__"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:69
msgid "Utilities such as shells, file utilities, compilers and linkers."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:71
msgid ""
"__Some of the utilities are derived from the GNU project, others are not.__"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:72
msgid "The X Window system, which handles graphical display."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:75
msgid ""
"The X Window system used in most versions of BSD is maintained by the http://"
"www.X.org/[X.Org project]. FreeBSD allows the user to choose from a variety "
"of desktop environments, such as Gnome, KDE, or Xfce; and lightweight window "
"managers like Openbox, Fluxbox, or Awesome."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:76
msgid "Many other programs and utilities."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/explaining-bsd/_index.adoc:78
#, no-wrap
msgid "What, a real UNIX(R)?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:83
msgid ""
"The BSD operating systems are not clones, but open source derivatives of "
"AT&T's Research UNIX(R) operating system, which is also the ancestor of the "
"modern UNIX(R) System V. This may surprise you. How could that happen when "
"AT&T has never released its code as open source?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:85
msgid ""
"It is true that AT&T UNIX(R) is not open source, and in a copyright sense "
"BSD is very definitely _not_ UNIX(R), but on the other hand, AT&T has "
"imported sources from other projects, noticeably the Computer Sciences "
"Research Group (CSRG) of the University of California in Berkeley, CA. "
"Starting in 1976, the CSRG started releasing tapes of their software, "
"calling them _Berkeley Software Distribution_ or __BSD__."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:89
msgid ""
"Initial BSD releases consisted mainly of user programs, but that changed "
"dramatically when the CSRG landed a contract with the Defense Advanced "
"Research Projects Agency (DARPA) to upgrade the communications protocols on "
"their network, ARPANET. The new protocols were known as the __Internet "
"Protocols__, later _TCP/IP_ after the most important protocols. The first "
"widely distributed implementation was part of 4.2BSD, in 1982."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:96
msgid ""
"In the course of the 1980s, a number of new workstation companies sprang "
"up. Many preferred to license UNIX(R) rather than developing operating "
"systems for themselves. In particular, Sun Microsystems licensed UNIX(R) "
"and implemented a version of 4.2BSD, which they called SunOS(TM). When AT&T "
"themselves were allowed to sell UNIX(R) commercially, they started with a "
"somewhat bare-bones implementation called System III, to be quickly followed "
"by System V. The System V code base did not include networking, so all "
"implementations included additional software from the BSD, including the TCP/"
"IP software, but also utilities such as the _csh_ shell and the _vi_ "
"editor. Collectively, these enhancements were known as the __Berkeley "
"Extensions__."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:105
msgid ""
"The BSD tapes contained AT&T source code and thus required a UNIX(R) source "
"license. By 1990, the CSRG's funding was running out, and it faced "
"closure. Some members of the group decided to release the BSD code, which "
"was Open Source, without the AT&T proprietary code. This finally happened "
"with the __Networking Tape 2__, usually known as __Net/2__. Net/2 was not a "
"complete operating system: about 20% of the kernel code was missing. One of "
"the CSRG members, William F. Jolitz, wrote the remaining code and released "
"it in early 1992 as __386BSD__. At the same time, another group of ex-CSRG "
"members formed a commercial company called http://www.bsdi.com/[Berkeley "
"Software Design Inc.] and released a beta version of an operating system "
"called http://www.bsdi.com/[BSD/386], which was based on the same sources. "
"The name of the operating system was later changed to BSD/OS."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:111
msgid ""
"386BSD never became a stable operating system. Instead, two other projects "
"split off from it in 1993: http://www.NetBSD.org/[NetBSD] and link:https://"
"www.FreeBSD.org/[FreeBSD]. The two projects originally diverged due to "
"differences in patience waiting for improvements to 386BSD: the NetBSD "
"people started early in the year, and the first version of FreeBSD was not "
"ready until the end of the year. In the meantime, the code base had "
"diverged sufficiently to make it difficult to merge. In addition, the "
"projects had different aims, as we will see below. In 1996, http://www."
"OpenBSD.org/[OpenBSD] split off from NetBSD, and in 2003, http://www."
"dragonflybsd.org/[DragonFlyBSD] split off from FreeBSD."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/explaining-bsd/_index.adoc:113
#, no-wrap
msgid "Why is BSD not better known?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:116
msgid "For a number of reasons, BSD is relatively unknown:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:118
msgid ""
"The BSD developers are often more interested in polishing their code than "
"marketing it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:119
msgid ""
"Much of Linux's popularity is due to factors external to the Linux projects, "
"such as the press, and to companies formed to provide Linux services. Until "
"recently, the open source BSDs had no such proponents."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:120
msgid ""
"In 1992, AT&T sued http://www.bsdi.com/[BSDI], the vendor of BSD/386, "
"alleging that the product contained AT&T-copyrighted code. The case was "
"settled out of court in 1994, but the spectre of the litigation continues to "
"haunt people. In March 2000 an article published on the web claimed that the "
"court case had been \"recently settled\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:124
msgid ""
"One detail that the lawsuit did clarify is the naming: in the 1980s, BSD was "
"known as \"BSD UNIX(R)\". With the elimination of the last vestige of AT&T "
"code from BSD, it also lost the right to the name UNIX(R). Thus you will "
"see references in book titles to \"the 4.3BSD UNIX(R) operating system\" and "
"\"the 4.4BSD operating system\"."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/explaining-bsd/_index.adoc:126
#, no-wrap
msgid "Comparing BSD and Linux"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:132
msgid ""
"So what is really the difference between, say, Debian Linux and FreeBSD? For "
"the average user, the difference is surprisingly small: Both are UNIX(R) "
"like operating systems. Both are developed by non-commercial projects (this "
"does not apply to many other Linux distributions, of course). In the "
"following section, we will look at BSD and compare it to Linux. The "
"description applies most closely to FreeBSD, which accounts for an estimated "
"80% of the BSD installations, but the differences from NetBSD, OpenBSD and "
"DragonFlyBSD are small."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:133
#, no-wrap
msgid "Who owns BSD?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:138
msgid ""
"No one person or corporation owns BSD. It is created and distributed by a "
"community of highly technical and committed contributors all over the "
"world. Some of the components of BSD are Open Source projects in their own "
"right and managed by different project maintainers."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:139
#, no-wrap
msgid "How is BSD developed and updated?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:144
msgid ""
"The BSD kernels are developed and updated following the Open Source "
"development model. Each project maintains a publicly accessible _source "
"tree_ which contains all source files for the project, including "
"documentation and other incidental files. Users can obtain a complete copy "
"of any version."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:147
msgid ""
"A large number of developers worldwide contribute to improvements to BSD. "
"They are divided into three kinds:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:149
msgid ""
"_Contributors_ write code or documentation. They are not permitted to commit "
-"(add code) directly to the source tree. In order for their code to be "
-"included in the system, it must be reviewed and checked in by a registered "
-"developer, known as a __committer__."
+"(add code) directly to the source tree. For their code to be included in the "
+"system, it must be reviewed and checked in by a registered developer, known "
+"as a __committer__."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:150
msgid ""
-"_Committers_ are developers with write access to the source tree. In order "
-"to become a committer, an individual must show ability in the area in which "
-"they are active."
+"_Committers_ are developers with write access to the source tree. To become "
+"a committer, an individual must show ability in the area in which they are "
+"active."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:157
msgid ""
"It is at the individual committer's discretion whether they should obtain "
"authority before committing changes to the source tree. In general, an "
"experienced committer may make changes which are obviously correct without "
"obtaining consensus. For example, a documentation project committer may "
"correct typographical or grammatical errors without review. On the other "
"hand, developers making far-reaching or complicated changes are expected to "
"submit their changes for review before committing them In extreme cases, a "
"core team member with a function such as Principal Architect may order that "
"changes be removed from the tree, a process known as _backing out_. All "
"committers receive mail describing each individual commit, so it is not "
"possible to commit secretly."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:158
msgid ""
"The _Core team_. FreeBSD and NetBSD each have a core team which manages the "
"project. The core teams developed in the course of the projects, and their "
-"role is not always well-defined. It is not necessary to be a developer in "
-"order to be a core team member, though it is normal. The rules for the core "
-"team vary from one project to the other, but in general they have more say "
-"in the direction of the project than non-core team members have."
+"role is not always well-defined. It is not necessary to be a developer to be "
+"a core team member, though it is normal. The rules for the core team vary "
+"from one project to the other, but in general they have more say in the "
+"direction of the project than non-core team members have."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:160
msgid "This arrangement differs from Linux in a number of ways:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:162
msgid ""
"No one person controls the content of the system. In practice, this "
"difference is overrated, since the Principal Architect can require that code "
"be backed out, and even in the Linux project several people are permitted to "
"make changes."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:163
msgid ""
"On the other hand, there _is_ a central repository, a single place where you "
"can find the entire operating system sources, including all older versions."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:164
msgid ""
"BSD projects maintain the entire \"Operating System\", not only the kernel. "
"This distinction is only marginally useful: neither BSD nor Linux is useful "
"without applications. The applications used under BSD are frequently the "
"same as the applications used under Linux."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:165
msgid ""
"As a result of the formalized maintenance of a single SVN source tree, BSD "
"development is clear, and it is possible to access any version of the system "
"by release number or by date. SVN also allows incremental updates to the "
"system: for example, the FreeBSD repository is updated about 100 times a "
"day. Most of these changes are small."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:166
#, no-wrap
msgid "BSD releases"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:171
msgid ""
-"FreeBSD, NetBSD and OpenBSD provide the system in three different \"releases"
-"\". As with Linux, releases are assigned a number such as 1.4.1 or 3.5. In "
-"addition, the version number has a suffix indicating its purpose:"
+"FreeBSD, NetBSD and OpenBSD provide the system in three different "
+"\"releases\". As with Linux, releases are assigned a number such as 1.4.1 "
+"or 3.5. In addition, the version number has a suffix indicating its purpose:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:173
msgid ""
"The development version of the system is called _CURRENT_. FreeBSD assigns a "
"number to CURRENT, for example FreeBSD 5.0-CURRENT. NetBSD uses a slightly "
"different naming scheme and appends a single-letter suffix which indicates "
"changes in the internal interfaces, for example NetBSD 1.4.3G. OpenBSD does "
"not assign a number (\"OpenBSD-current\"). All new development on the system "
"goes into this branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:174
msgid ""
"At regular intervals, between two and four times a year, the projects bring "
"out a _RELEASE_ version of the system, which is available on CD-ROM and for "
"free download from FTP sites, for example OpenBSD 2.6-RELEASE or NetBSD 1.4-"
"RELEASE. The RELEASE version is intended for end users and is the normal "
"version of the system. NetBSD also provides _patch releases_ with a third "
"digit, for example NetBSD 1.4.2."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:175
msgid ""
"As bugs are found in a RELEASE version, they are fixed, and the fixes are "
"added to the SVN tree. In FreeBSD, the resultant version is called the "
"_STABLE_ version, while in NetBSD and OpenBSD it continues to be called the "
"RELEASE version. Smaller new features can also be added to this branch after "
"a period of test in the CURRENT branch. Security and other important bug "
"fixes are also applied to all supported RELEASE versions."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:182
msgid ""
"_By contrast, Linux maintains two separate code trees: the stable version "
"and the development version. Stable versions have an even minor version "
"number, such as 2.0, 2.2 or 2.4. Development versions have an odd minor "
"version number, such as 2.1, 2.3 or 2.5. In each case, the number is "
"followed by a further number designating the exact release. In addition, "
"each vendor adds their own userland programs and utilities, so the name of "
"the distribution is also important. Each distribution vendor also assigns "
"version numbers to the distribution, so a complete description might be "
"something like \"TurboLinux 6.0 with kernel 2.2.14\"_"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:183
#, no-wrap
msgid "What versions of BSD are available?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:186
msgid ""
"In contrast to the numerous Linux distributions, there are only four major "
"open source BSDs. Each BSD project maintains its own source tree and its own "
"kernel. In practice, though, there appear to be fewer divergences between "
"the userland code of the projects than there is in Linux."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:188
msgid ""
"It is difficult to categorize the goals of each project: the differences are "
"very subjective. Basically,"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:190
msgid ""
"FreeBSD aims for high performance and ease of use by end users, and is a "
"favourite of web content providers. It runs on a link:https://www.FreeBSD."
"org/platforms/[number of platforms] and has significantly more users than "
"the other projects."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:191
msgid ""
"NetBSD aims for maximum portability: \"of course it runs NetBSD\". It runs "
"on machines from palmtops to large servers, and has even been used on NASA "
"space missions. It is a particularly good choice for running on old non-"
"Intel(R) hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:192
msgid ""
"OpenBSD aims for security and code purity: it uses a combination of the open "
"source concept and rigorous code reviews to create a system which is "
"demonstrably correct, making it the choice of security-conscious "
"organizations such as banks, stock exchanges and US Government departments. "
"Like NetBSD, it runs on a number of platforms."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:193
msgid ""
"DragonFlyBSD aims for high performance and scalability under everything from "
"a single-node UP system to a massively clustered system. DragonFlyBSD has "
"several long-range technical goals, but focus lies on providing a SMP-"
"capable infrastructure that is easy to understand, maintain and develop for."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:195
msgid ""
"There are also two additional BSD UNIX(R) operating systems which are not "
"open source, BSD/OS and Apple's Mac OS(R) X:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:197
msgid ""
"BSD/OS was the oldest of the 4.4BSD derivatives. It was not open source, "
"though source code licenses were available at relatively low cost. It "
"resembled FreeBSD in many ways. Two years after the acquisition of BSDi by "
"Wind River Systems, BSD/OS failed to survive as an independent product. "
"Support and source code may still be available from Wind River, but all new "
"development is focused on the VxWorks embedded operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:198
msgid ""
"http://www.apple.com/macosx/server/[Mac OS(R) X] is the latest version of "
"the operating system for Apple(R)'s Mac(R) line. The BSD core of this "
"operating system, http://developer.apple.com/darwin/[Darwin], is available "
"as a fully functional open source operating system for x86 and PPC "
"computers. The Aqua/Quartz graphics system and many other proprietary "
"aspects of Mac OS(R) X remain closed-source, however. Several Darwin "
"developers are also FreeBSD committers, and vice-versa."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:199
#, no-wrap
msgid "How does the BSD license differ from the GNU Public license?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:205
msgid ""
"Linux is available under the http://www.fsf.org/copyleft/gpl.html[GNU "
"General Public License] (GPL), which is designed to eliminate closed source "
"software. In particular, any derivative work of a product released under "
"the GPL must also be supplied with source code if requested. By contrast, "
"the http://www.opensource.org/licenses/bsd-license.html[BSD license] is less "
"restrictive: binary-only distributions are allowed. This is particularly "
"attractive for embedded applications."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:206
#, no-wrap
msgid "What else should I know?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:211
msgid ""
"Since fewer applications are available for BSD than Linux, the BSD "
"developers created a Linux compatibility package, which allows Linux "
"programs to run under BSD. The package includes both kernel modifications, "
-"in order to correctly perform Linux system calls, and Linux compatibility "
-"files such as the C library. There is no noticeable difference in execution "
-"speed between a Linux application running on a Linux machine and a Linux "
+"to correctly perform Linux system calls, and Linux compatibility files such "
+"as the C library. There is no noticeable difference in execution speed "
+"between a Linux application running on a Linux machine and a Linux "
"application running on a BSD machine of the same speed."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:214
msgid ""
"The \"all from one supplier\" nature of BSD means that upgrades are much "
"easier to handle than is frequently the case with Linux. BSD handles "
"library version upgrades by providing compatibility modules for earlier "
"library versions, so it is possible to run binaries which are several years "
"old with no problems."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:215
#, no-wrap
msgid "Which should I use, BSD or Linux?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:218
msgid ""
"What does this all mean in practice? Who should use BSD, who should use "
"Linux?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:221
msgid "This is a very difficult question to answer. Here are some guidelines:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:223
msgid ""
"\"If it ain't broke, don't fix it\": If you already use an open source "
"operating system, and you are happy with it, there is probably no good "
"reason to change."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:224
msgid ""
"BSD systems, in particular FreeBSD, can have notably higher performance than "
"Linux. But this is not across the board. In many cases, there is little or "
"no difference in performance. In some cases, Linux may perform better than "
"FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:225
msgid ""
"In general, BSD systems have a better reputation for reliability, mainly as "
"a result of the more mature code base."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:226
msgid ""
"BSD projects have a better reputation for the quality and completeness of "
"their documentation. The various documentation projects aim to provide "
"actively updated documentation, in many languages, and covering all aspects "
"of the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:227
msgid "The BSD license may be more attractive than the GPL."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:228
msgid ""
"BSD can execute most Linux binaries, while Linux can not execute BSD "
"binaries. Many BSD implementations can also execute binaries from other "
"UNIX(R) like systems. As a result, BSD may present an easier migration route "
"from other systems than Linux would."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/explaining-bsd/_index.adoc:229
#, no-wrap
msgid "Who provides support, service, and training for BSD?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:232
msgid ""
"BSDi / http://www.freebsdmall.com[FreeBSD Mall, Inc.] have been providing "
"support contracts for FreeBSD for nearly a decade."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/explaining-bsd/_index.adoc:233
msgid ""
"In addition, each of the projects has a list of consultants for hire: link:"
"https://www.FreeBSD.org/commercial/consult_bycat/[FreeBSD], http://www."
"netbsd.org/gallery/consultants.html[NetBSD], and http://www.openbsd.org/"
"support.html[OpenBSD]."
msgstr ""
diff --git a/documentation/content/en/articles/filtering-bridges/_index.po b/documentation/content/en/articles/filtering-bridges/_index.po
index 6cf8b8859c..bfc8da3835 100644
--- a/documentation/content/en/articles/filtering-bridges/_index.po
+++ b/documentation/content/en/articles/filtering-bridges/_index.po
@@ -1,584 +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 <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:21-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/filtering-bridges/_index.adoc:1
#, no-wrap
msgid "Configuring firewalls and filtering on FreeBSD hosts acting as bridges rather than routers"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/filtering-bridges/_index.adoc:1
#: documentation/content/en/articles/filtering-bridges/_index.adoc:11
#, no-wrap
msgid "Filtering Bridges"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:44
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:48
msgid ""
"Often it is useful to divide one physical network (like an Ethernet) into "
"two separate segments without having to create subnets, and use a router to "
"link them together. The device that connects the two networks in this way "
"is called a bridge. A FreeBSD system with two network interfaces is enough "
-"in order to act as a bridge."
+"to act as a bridge."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:51
msgid ""
"A bridge works by scanning the addresses of MAC level (Ethernet addresses) "
"of the devices connected to each of its network interfaces and then "
"forwarding the traffic between the two networks only if the source and the "
"destination are on different segments. Under many points of view a bridge "
"is similar to an Ethernet switch with only two ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:53
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/filtering-bridges/_index.adoc:57
#, no-wrap
msgid "Why use a filtering bridge?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:62
msgid ""
"More and more frequently, thanks to the lowering costs of broad band "
"Internet connections (xDSL) and also because of the reduction of available "
"IPv4 addresses, many companies are connected to the Internet 24 hours on 24 "
"and with few (sometimes not even a power of 2) IP addresses. In these "
"situations it is often desirable to have a firewall that filters incoming "
"and outgoing traffic from and towards Internet, but a packet filtering "
"solution based on router may not be applicable, either due to subnetting "
"issues, the router is owned by the connectivity supplier (ISP), or because "
"it does not support such functionalities. In these scenarios the use of a "
"filtering bridge is highly advised."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:64
msgid ""
"A bridge-based firewall can be configured and inserted between the xDSL "
"router and your Ethernet hub/switch without any IP numbering issues."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/filtering-bridges/_index.adoc:66
#, no-wrap
msgid "How to Install"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:71
msgid ""
"Adding bridge functionalities to a FreeBSD system is not difficult. Since "
"4.5 release it is possible to load such functionalities as modules instead "
"of having to rebuild the kernel, simplifying the procedure a great deal. In "
"the following subsections I will explain both installation ways."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:76
msgid ""
"_Do not_ follow both instructions: a procedure _excludes_ the other one. "
"Select the best choice according to your needs and abilities."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:82
msgid ""
"Before going on, be sure to have at least two Ethernet cards that support "
"the promiscuous mode for both reception and transmission, since they must be "
"able to send Ethernet packets with any address, not just their own. "
"Moreover, to have a good throughput, the cards should be PCI bus mastering "
"cards. The best choices are still the Intel EtherExpress(TM) Pro, followed "
"by the 3Com(R) 3c9xx series. To simplify the firewall configuration it may "
"be useful to have two cards of different manufacturers (using different "
-"drivers) in order to distinguish clearly which interface is connected to the "
-"router and which to the inner network."
+"drivers) to distinguish clearly which interface is connected to the router "
+"and which to the inner network."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/filtering-bridges/_index.adoc:84
#, no-wrap
msgid "Kernel Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:88
msgid ""
"So you have decided to use the older but well tested installation method. "
"To begin, you have to add the following rows to your kernel configuration "
"file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:94
#, no-wrap
msgid ""
"options BRIDGE\n"
"options IPFIREWALL\n"
"options IPFIREWALL_VERBOSE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:97
msgid ""
"The first line is to compile the bridge support, the second one is the "
"firewall and the third one is the logging functions of the firewall."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:100
msgid ""
"Now it is necessary to build and install the new kernel. You may find "
"detailed instructions in the extref:{handbook}[Building and Installing a "
"Custom Kernel, kernelconfig-building] section of the FreeBSD Handbook."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/filtering-bridges/_index.adoc:102
#, no-wrap
msgid "Modules Loading"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:105
msgid ""
"If you have chosen to use the new and simpler installation method, the only "
"thing to do now is add the following row to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:109
#, no-wrap
msgid "bridge_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:113
msgid ""
"In this way, during the system startup, the [.filename]#bridge.ko# module "
"will be loaded together with the kernel. It is not required to add a "
"similar row for the [.filename]#ipfw.ko# module, since it will be loaded "
"automatically after the execution of the steps in the following section."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/filtering-bridges/_index.adoc:115
#, no-wrap
msgid "Final Preparation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:121
msgid ""
-"Before rebooting in order to load the new kernel or the required modules "
-"(according to the previously chosen installation method), you have to make "
-"some changes to the [.filename]#/etc/rc.conf# configuration file. The "
-"default rule of the firewall is to reject all IP packets. Initially we will "
-"set up an `open` firewall, in order to verify its operation without any "
-"issue related to packet filtering (in case you are going to execute this "
-"procedure remotely, such configuration will avoid you to remain isolated "
-"from the network). Put these lines in [.filename]#/etc/rc.conf#:"
+"Before rebooting to load the new kernel or the required modules (according "
+"to the previously chosen installation method), you have to make some changes "
+"to the [.filename]#/etc/rc.conf# configuration file. The default rule of "
+"the firewall is to reject all IP packets. Initially we will set up an "
+"`open` firewall, to verify its operation without any issue related to packet "
+"filtering (in case you are going to execute this procedure remotely, such "
+"configuration will avoid you to remain isolated from the network). Put "
+"these lines in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:128
#, no-wrap
msgid ""
"firewall_enable=\"YES\"\n"
"firewall_type=\"open\"\n"
"firewall_quiet=\"YES\"\n"
"firewall_logging=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:131
msgid ""
"The first row will enable the firewall (and will load the module [."
"filename]#ipfw.ko# if it is not compiled in the kernel), the second one to "
"set up it in `open` mode (as explained in [.filename]#/etc/rc.firewall#), "
"the third one to not show rules loading and the fourth one to enable logging "
"support."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:137
msgid ""
"About the configuration of the network interfaces, the most used way is to "
"assign an IP to only one of the network cards, but the bridge will work "
"equally even if both interfaces or none has a configured IP. In the last "
"case (IP-less) the bridge machine will be still more hidden, as inaccessible "
"from the network: to configure it, you have to login from console or through "
"a third network interface separated from the bridge. Sometimes, during the "
"system startup, some programs require network access, say for domain "
"resolution: in this case it is necessary to assign an IP to the external "
"interface (the one connected to Internet, where DNS server resides), since "
"the bridge will be activated at the end of the startup procedure. It means "
"that the [.filename]#fxp0# interface (in our case) must be mentioned in the "
"ifconfig section of the [.filename]#/etc/rc.conf# file, while the [."
"filename]#xl0# is not. Assigning an IP to both the network cards does not "
"make much sense, unless, during the start procedure, applications should "
"access to services on both Ethernet segments."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:144
msgid ""
"There is another important thing to know. When running IP over Ethernet, "
"there are actually two Ethernet protocols in use: one is IP, the other is "
"ARP. ARP does the conversion of the IP address of a host into its Ethernet "
-"address (MAC layer). In order to allow the communication between two hosts "
-"separated by the bridge, it is necessary that the bridge will forward ARP "
-"packets. Such protocol is not included in the IP layer, since it exists "
-"only with IP over Ethernet. The FreeBSD firewall filters exclusively on the "
-"IP layer and therefore all non-IP packets (ARP included) will be forwarded "
-"without being filtered, even if the firewall is configured to not permit "
-"anything."
+"address (MAC layer). To allow the communication between two hosts separated "
+"by the bridge, it is necessary that the bridge will forward ARP packets. "
+"Such protocol is not included in the IP layer, since it exists only with IP "
+"over Ethernet. The FreeBSD firewall filters exclusively on the IP layer and "
+"therefore all non-IP packets (ARP included) will be forwarded without being "
+"filtered, even if the firewall is configured to not permit anything."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:146
msgid ""
"Now it is time to reboot the system and use it as before: there will be some "
"new messages about the bridge and the firewall, but the bridge will not be "
"activated and the firewall, being in `open` mode, will not avoid any "
"operations."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:148
msgid ""
"If there are any problems, you should sort them out now before proceeding."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/filtering-bridges/_index.adoc:150
#, no-wrap
msgid "Enabling the Bridge"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:153
msgid ""
"At this point, to enable the bridge, you have to execute the following "
"commands (having the shrewdness to replace the names of the two network "
"interfaces [.filename]#fxp0# and [.filename]#xl0# with your own ones):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:159
#, no-wrap
msgid ""
"# sysctl net.link.ether.bridge.config=fxp0:0,xl0:0\n"
"# sysctl net.link.ether.bridge.ipfw=1\n"
"# sysctl net.link.ether.bridge.enable=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:162
msgid ""
"The first row specifies which interfaces should be activated by the bridge, "
"the second one will enable the firewall on the bridge and finally the third "
"one will enable the bridge."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:165
msgid ""
"At this point you should be able to insert the machine between two sets of "
"hosts without compromising any communication abilities between them. If so, "
"the next step is to add the `net.link.ether.bridge._[blah]_=_[blah]_` "
-"portions of these rows to the [.filename]#/etc/sysctl.conf# file, in order "
-"to have them execute at startup."
+"portions of these rows to the [.filename]#/etc/sysctl.conf# file, to have "
+"them execute at startup."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/filtering-bridges/_index.adoc:167
#, no-wrap
msgid "Configuring The Firewall"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:177
msgid ""
-"Now it is time to create your own file with custom firewall rules, in order "
-"to secure the inside network. There will be some complication in doing this "
-"because not all of the firewall functionalities are available on bridged "
-"packets. Furthermore, there is a difference between the packets that are in "
-"the process of being forwarded and packets that are being received by the "
-"local machine. In general, incoming packets are run through the firewall "
-"only once, not twice as is normally the case; in fact they are filtered only "
-"upon receipt, so rules that use `out` or `xmit` will never match. "
-"Personally, I use `in via` which is an older syntax, but one that has a "
-"sense when you read it. Another limitation is that you are restricted to "
-"use only `pass` or `drop` commands for packets filtered by a bridge. "
-"Sophisticated things like `divert`, `forward` or `reject` are not "
-"available. Such options can still be used, but only on traffic to or from "
-"the bridge machine itself (if it has an IP address)."
+"Now it is time to create your own file with custom firewall rules, to secure "
+"the inside network. There will be some complication in doing this because "
+"not all of the firewall functionalities are available on bridged packets. "
+"Furthermore, there is a difference between the packets that are in the "
+"process of being forwarded and packets that are being received by the local "
+"machine. In general, incoming packets are run through the firewall only "
+"once, not twice as is normally the case; in fact they are filtered only upon "
+"receipt, so rules that use `out` or `xmit` will never match. Personally, I "
+"use `in via` which is an older syntax, but one that has a sense when you "
+"read it. Another limitation is that you are restricted to use only `pass` "
+"or `drop` commands for packets filtered by a bridge. Sophisticated things "
+"like `divert`, `forward` or `reject` are not available. Such options can "
+"still be used, but only on traffic to or from the bridge machine itself (if "
+"it has an IP address)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:185
msgid ""
"New in FreeBSD 4.0, is the concept of stateful filtering. This is a big "
"improvement for UDP traffic, which typically is a request going out, "
"followed shortly thereafter by a response with the exact same set of IP "
"addresses and port numbers (but with source and destination reversed, of "
"course). For firewalls that have no statekeeping, there is almost no way to "
"deal with this sort of traffic as a single session. But with a firewall "
"that can \"remember\" an outgoing UDP packet and, for the next few minutes, "
"allow a response, handling UDP services is trivial. The following example "
"shows how to do it. It is possible to do the same thing with TCP packets. "
"This allows you to avoid some denial of service attacks and other nasty "
"tricks, but it also typically makes your state table grow quickly in size."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:189
msgid ""
"Let's look at an example setup. Note first that at the top of [.filename]#/"
"etc/rc.firewall# there are already standard rules for the loopback interface "
"[.filename]#lo0#, so we should not have to care for them anymore. Custom "
"rules should be put in a separate file (say [.filename]#/etc/rc.firewall."
"local#) and loaded at system startup, by modifying the row of [.filename]#/"
"etc/rc.conf# where we defined the `open` firewall:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:193
#, no-wrap
msgid "firewall_type=\"/etc/rc.firewall.local\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:198
msgid ""
"You have to specify the _full_ path, otherwise it will not be loaded with "
"the risk to remain isolated from the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:201
msgid ""
"For our example imagine to have the [.filename]#fxp0# interface connected "
"towards the outside (Internet) and the [.filename]#xl0# towards the inside "
"(LAN). The bridge machine has the IP `1.2.3.4` (it is not possible that your "
"ISP can give you an address quite like this, but for our example it is good)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:206
#, no-wrap
msgid ""
"# Things that we have kept state on before get to go through in a hurry\n"
"add check-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:211
#, no-wrap
msgid ""
"# Throw away RFC 1918 networks\n"
"add drop all from 10.0.0.0/8 to any in via fxp0\n"
"add drop all from 172.16.0.0/12 to any in via fxp0\n"
"add drop all from 192.168.0.0/16 to any in via fxp0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:217
#, no-wrap
msgid ""
"# Allow the bridge machine to say anything it wants\n"
"# (if the machine is IP-less do not include these rows)\n"
"add pass tcp from 1.2.3.4 to any setup keep-state\n"
"add pass udp from 1.2.3.4 to any keep-state\n"
"add pass ip from 1.2.3.4 to any\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:222
#, no-wrap
msgid ""
"# Allow the inside hosts to say anything they want\n"
"add pass tcp from any to any in via xl0 setup keep-state\n"
"add pass udp from any to any in via xl0 keep-state\n"
"add pass ip from any to any in via xl0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:234
#, no-wrap
msgid ""
"# TCP section\n"
"# Allow SSH\n"
"add pass tcp from any to any 22 in via fxp0 setup keep-state\n"
"# Allow SMTP only towards the mail server\n"
"add pass tcp from any to relay 25 in via fxp0 setup keep-state\n"
"# Allow zone transfers only by the secondary name server [dns2.nic.it]\n"
"add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state\n"
"# Pass ident probes. It is better than waiting for them to timeout\n"
"add pass tcp from any to any 113 in via fxp0 setup keep-state\n"
"# Pass the \"quarantine\" range\n"
"add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:240
#, no-wrap
msgid ""
"# UDP section\n"
"# Allow DNS only towards the name server\n"
"add pass udp from any to ns 53 in via fxp0 keep-state\n"
"# Pass the \"quarantine\" range\n"
"add pass udp from any to any 49152-65535 in via fxp0 keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:247
#, no-wrap
msgid ""
"# ICMP section\n"
"# Pass 'ping'\n"
"add pass icmp from any to any icmptypes 8 keep-state\n"
"# Pass error messages generated by 'traceroute'\n"
"add pass icmp from any to any icmptypes 3\n"
"add pass icmp from any to any icmptypes 11\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:250
#, no-wrap
msgid ""
"# Everything else is suspect\n"
"add drop log all from any to any\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:254
msgid ""
"Those of you who have set up firewalls before may notice some things "
"missing. In particular, there are no anti-spoofing rules, in fact we did "
"_not_ add:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/filtering-bridges/_index.adoc:258
#, no-wrap
msgid "add deny all from 1.2.3.4/8 to any in via fxp0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:264
msgid ""
"That is, drop packets that are coming in from the outside claiming to be "
"from our network. This is something that you would commonly do to be sure "
"that someone does not try to evade the packet filter, by generating "
"nefarious packets that look like they are from the inside. The problem with "
"that is that there is _at least_ one host on the outside interface that you "
"do not want to ignore: the router. But usually, the ISP anti-spoofs at "
"their router, so we do not need to bother that much."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:267
msgid ""
"The last rule seems to be an exact duplicate of the default rule, that is, "
"do not let anything pass that is not specifically allowed. But there is a "
"difference: all suspected traffic will be logged."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:273
msgid ""
"There are two rules for passing SMTP and DNS traffic towards the mail server "
"and the name server, if you have them. Obviously the whole rule set should "
"be flavored to personal taste, this is only a specific example (rule format "
-"is described accurately in the man:ipfw[8] man page). Note that in order "
-"for \"relay\" and \"ns\" to work, name service lookups must work _before_ "
-"the bridge is enabled. This is an example of making sure that you set the "
-"IP on the correct network card. Alternatively it is possible to specify the "
-"IP address instead of the host name (required if the machine is IP-less)."
+"is described accurately in the man:ipfw[8] man page). Note that for "
+"\"relay\" and \"ns\" to work, name service lookups must work _before_ the "
+"bridge is enabled. This is an example of making sure that you set the IP on "
+"the correct network card. Alternatively it is possible to specify the IP "
+"address instead of the host name (required if the machine is IP-less)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:278
msgid ""
"People that are used to setting up firewalls are probably also used to "
"either having a `reset` or a `forward` rule for ident packets (TCP port "
"113). Unfortunately, this is not an applicable option with the bridge, so "
"the best thing is to simply pass them to their destination. As long as that "
"destination machine is not running an ident daemon, this is relatively "
"harmless. The alternative is dropping connections on port 113, which "
"creates some problems with services like IRC (the ident probe must timeout)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:285
msgid ""
"The only other thing that is a little weird that you may have noticed is "
"that there is a rule to let the bridge machine speak, and another for "
"internal hosts. Remember that this is because the two sets of traffic will "
"take different paths through the kernel and into the packet filter. The "
"inside net will go through the bridge, while the local machine will use the "
"normal IP stack to speak. Thus the two rules to handle the different "
"cases. The `in via fxp0` rules work for both paths. In general, if you use "
"`in via` rules throughout the filter, you will need to make an exception for "
"locally generated packets, because they did not come in via any of our "
"interfaces."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/filtering-bridges/_index.adoc:287
#, no-wrap
msgid "Contributors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:291
msgid ""
"Many parts of this article have been taken, updated and adapted from an old "
"text about bridging, edited by Nick Sayer. A pair of inspirations are due "
"to an introduction on bridging by Steve Peterson."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:293
msgid ""
"A big thanks to Luigi Rizzo for the implementation of the bridge code in "
"FreeBSD and for the time he has dedicated to me answering all of my related "
"questions."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/filtering-bridges/_index.adoc:294
msgid ""
"A thanks goes out also to Tom Rhodes who looked over my job of translation "
"from Italian (the original language of this article) into English."
msgstr ""
diff --git a/documentation/content/en/articles/freebsd-releng/_index.po b/documentation/content/en/articles/freebsd-releng/_index.po
index 4b2c604952..43a05e6b8a 100644
--- a/documentation/content/en/articles/freebsd-releng/_index.po
+++ b/documentation/content/en/articles/freebsd-releng/_index.po
@@ -1,2200 +1,2199 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:23-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/freebsd-releng/_index.adoc:1
#, no-wrap
msgid "Describes the approach used by the FreeBSD release engineering team to make production quality releases of the FreeBSD Operating System. It describes the tools available for those interested in producing customized FreeBSD releases for corporate rollouts or commercial productization"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/freebsd-releng/_index.adoc:1
#: documentation/content/en/articles/freebsd-releng/_index.adoc:16
#, no-wrap
msgid "FreeBSD Release Engineering"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:63
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:65
msgid ""
"This article describes the release engineering process of the FreeBSD "
"Project."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:69
msgid ""
"This document has not yet been updated to describe the current release "
"procedures of the FreeBSD Release Engineering team following the transition "
"from Subversion to Git."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:72
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:76
#, no-wrap
msgid "Introduction to the FreeBSD Release Engineering Process"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:80
msgid ""
"Development of FreeBSD has a very specific workflow. In general, all "
"changes to the FreeBSD base system are committed to the {branchHead} branch, "
"which reflects the top of the source tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:83
msgid ""
"After a reasonable testing period, changes can then be merged to the "
"{branchStable} branches. The default minimum timeframe before merging to "
"{branchStable} branches is three (3) days."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:85
msgid ""
"Although a general rule to wait a minimum of three days before merging from "
"{branchHead}, there are a few special circumstances where an immediate merge "
"may be necessary, such as a critical security fix, or a bug fix that "
"directly inhibits the release build process."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:88
msgid ""
"After several months, and the number of changes in the {branchStable} branch "
"have grown significantly, it is time to release the next version of "
"FreeBSD. These releases have been historically referred to as \"point\" "
"releases."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:91
msgid ""
"In between releases from the {branchStable} branches, approximately every "
"two (2) years, a release will be cut directly from {branchHead}. These "
"releases have been historically referred to as \"dot-zero\" releases."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:93
msgid ""
"This article will highlight the workflow and responsibilities of the "
"{teamRe} for both \"dot-zero\" and \"point\"' releases."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:95
msgid "The following sections of this article describe:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:96
#, no-wrap
msgid "<<releng-prep>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:98
msgid "General information and preparation before starting the release cycle."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:99
#, no-wrap
msgid "<<releng-website>>"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:101
#: documentation/content/en/articles/freebsd-releng/_index.adoc:289
#, no-wrap
msgid "Website Changes During the Release Cycle"
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:102
#, no-wrap
msgid "<<releng-terms>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:104
msgid ""
"Terminology and general information, such as the \"code slush\" and \"code "
"freeze\", used throughout this document."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:105
#, no-wrap
msgid "<<releng-head>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:107
msgid "The Release Engineering process for a \"dot-zero\" release."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:108
#, no-wrap
msgid "<<releng-stable>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:110
msgid "The Release Engineering process for a \"point\" release."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:111
#, no-wrap
msgid "<<releng-building>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:113
msgid ""
"Information related to the specific procedures to build installation medium."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:114
#, no-wrap
msgid "<<releng-mirrors>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:116
msgid "Procedures to publish installation medium."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/freebsd-releng/_index.adoc:117
#, no-wrap
msgid "<<releng-wrapup>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:119
msgid "Wrapping up the release cycle."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:121
#, no-wrap
msgid "General Information and Preparation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:126
msgid ""
"Approximately two months before the start of the release cycle, the {teamRe} "
"decides on a schedule for the release. The schedule includes the various "
"milestone points of the release cycle, such as freeze dates, branch dates, "
"and build dates. For example:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:131
#, no-wrap
msgid "Milestone"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:133
#, no-wrap
msgid "Anticipated Date"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:134
#, no-wrap
msgid "{branchHead} slush:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:136
#, no-wrap
msgid "May 27, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:137
#, no-wrap
msgid "{branchHead} freeze:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:139
#, no-wrap
msgid "June 10, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:140
#, no-wrap
msgid "{branchHead} KBI freeze:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:142
#: documentation/content/en/articles/freebsd-releng/_index.adoc:145
#, no-wrap
msgid "June 24, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:143
#, no-wrap
msgid "`doc/` tree slush [1]:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:146
#, no-wrap
msgid "Ports quarterly branch [2]:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:148
#, no-wrap
msgid "July 1, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:149
#, no-wrap
msgid "{branchStablex} branch:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:151
#: documentation/content/en/articles/freebsd-releng/_index.adoc:154
#: documentation/content/en/articles/freebsd-releng/_index.adoc:157
#, no-wrap
msgid "July 8, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:152
#, no-wrap
msgid "`doc/` tree tag [3]:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:155
#, no-wrap
msgid "BETA1 build starts:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:158
#, no-wrap
msgid "{branchHead} thaw:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:160
#, no-wrap
msgid "July 9, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:161
#, no-wrap
msgid "BETA2 build starts:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:163
#, no-wrap
msgid "July 15, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:164
#, no-wrap
msgid "BETA3 build starts [*]:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:166
#, no-wrap
msgid "July 22, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:167
#, no-wrap
msgid "{branchRelengx} branch:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:169
#: documentation/content/en/articles/freebsd-releng/_index.adoc:172
#, no-wrap
msgid "July 29, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:170
#, no-wrap
msgid "RC1 build starts:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:173
#, no-wrap
msgid "{branchStablex} thaw:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:175
#, no-wrap
msgid "July 30, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:176
#, no-wrap
msgid "RC2 build starts:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:178
#, no-wrap
msgid "August 5, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:179
#, no-wrap
msgid "Final Ports package builds [4]:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:181
#, no-wrap
msgid "August 6, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:182
#, no-wrap
msgid "Ports release tag:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:184
#: documentation/content/en/articles/freebsd-releng/_index.adoc:187
#, no-wrap
msgid "August 12, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:185
#, no-wrap
msgid "RC3 build starts [*]:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:188
#, no-wrap
msgid "RELEASE build starts:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:190
#, no-wrap
msgid "August 19, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:191
#, no-wrap
msgid "RELEASE announcement:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:192
#, no-wrap
msgid "September 2, 2016"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:197
msgid "Items marked with \"[*]\" are \"as needed\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:200
msgid "The `doc/` tree slush is coordinated by the {teamDoceng}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:201
msgid ""
"The Ports quarterly branch used is determined by when the final `RC` build "
"is planned. A new quarterly branch is created on the first day of the "
"quarter, so this metric should be used when taking the release cycle "
"milestones into account. The quarterly branch is created by the "
"{teamPortmgr}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:202
msgid "The `doc/` tree is tagged by the {teamDoceng}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:203
msgid ""
"The final Ports package build is done by the {teamPortmgr} after the final "
"(or what is expected to be final) `RC` build."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:207
msgid ""
"If the release is being created from an existing {branchStable} branch, the "
"KBI freeze date can be excluded, since the KBI is already considered frozen "
"on established {branchStable} branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:212
msgid ""
"When writing the release cycle schedule, a number of things need to be taken "
"into consideration, in particular milestones where the target date depends "
"on predefined milestones upon which there is a dependency. For example, the "
"Ports Collection release tag originates from the active quarterly branch at "
"the time of the last `RC`. This in part defines which quarterly branch is "
"used, when the release tag can happen, and what revision of the ports tree "
"is used for the final `RELEASE` build."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:214
msgid ""
"After general agreement on the schedule, the {teamRe} emails the schedule to "
"the FreeBSD Developers."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:217
msgid ""
"It is somewhat typical that many developers will inform the {teamRe} about "
"various works-in-progress. In some cases, an extension for the in-progress "
-"work will be requested, and in other cases, a request for \"blanket approval"
-"\" to a particular subset of the tree will be made."
+"work will be requested, and in other cases, a request for \"blanket "
+"approval\" to a particular subset of the tree will be made."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:221
msgid ""
"When such requests are made, it is important to make sure timelines (even if "
"estimated) are discussed. For blanket approvals, the length of time for the "
"blanket approval should be made clear. For example, a FreeBSD developer may "
"request blanket approvals from the start of the code slush until the start "
"of the `RC` builds."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:226
msgid ""
-"In order to keep track of blanket approvals, the {teamRe} uses an internal "
-"repository to keep a running log of such requests, which defines the area "
-"upon which a blanket approval was granted, the author(s), when the blanket "
-"approval expires, and the reason the approval was granted. One example of "
-"this is granting blanket approval to [.filename]#release/doc/# to all "
-"{teamRe} members until the final `RC` to update the release notes and other "
-"release-related documentation."
+"To keep track of blanket approvals, the {teamRe} uses an internal repository "
+"to keep a running log of such requests, which defines the area upon which a "
+"blanket approval was granted, the author(s), when the blanket approval "
+"expires, and the reason the approval was granted. One example of this is "
+"granting blanket approval to [.filename]#release/doc/# to all {teamRe} "
+"members until the final `RC` to update the release notes and other release-"
+"related documentation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:231
msgid ""
"The {teamRe} also uses this repository to track pending approval requests "
"that are received just prior to starting various builds during the release "
"cycle, which the Release Engineer specifies the cutoff period with an email "
"to the FreeBSD developers."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:234
msgid ""
"Depending on the underlying set of code in question, and the overall impact "
"the set of code has on FreeBSD as a whole, such requests may be approved or "
"denied by the {teamRe}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:238
msgid ""
"The same applies to work-in-progress extensions. For example, in-progress "
"work for a new device driver that is otherwise isolated from the rest of the "
"tree may be granted an extension. A new scheduler, however, may not be "
"feasible, especially if such dramatic changes do not exist in another branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:240
msgid ""
"The schedule is also added to the Project website, in the `doc/` repository, "
"in [.filename]#~/website/content/en/releases/{branchRevision}R/schedule."
"adoc#. This file is continuously updated as the release cycle progresses."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:244
msgid ""
"In most cases, the [.filename]#schedule.adoc# can be copied from a prior "
"release and updated accordingly."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:247
msgid ""
"In addition to adding [.filename]#schedule.adoc# to the website, [."
"filename]#~/shared/releases.adoc# is also updated to add the link to the "
"schedule to various subpages, as well as enabling the link to the schedule "
"on the Project website index page."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:249
msgid ""
"The schedule is also linked from [.filename]#~/website/content/en/releng/"
"_index.adoc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:251
msgid ""
"Approximately one month prior to the scheduled \"code slush\", the {teamRe} "
"sends a reminder email to the FreeBSD Developers."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:253
#, no-wrap
msgid "Release Engineering Terminology"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:256
msgid ""
"This section describes some of the terminology used throughout the rest of "
"this document."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:258
#, no-wrap
msgid "The Code Slush"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:261
msgid ""
"Although the code slush is not a hard freeze on the tree, the {teamRe} "
"requests that bugs in the existing code base take priority over new features."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:263
msgid "The code slush does not enforce commit approvals to the branch."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:265
#, no-wrap
msgid "The Code Freeze"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:268
msgid ""
"The code freeze marks the point in time where all commits to the branch "
"require explicit approval from the {teamRe}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:271
msgid ""
"The FreeBSD Subversion repository contains several hooks to perform sanity "
"checks before any commit is actually committed to the tree. One of these "
"hooks will evaluate if committing to a particular branch requires specific "
"approval."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:274
msgid ""
"To enforce commit approvals by the {teamRe}, the Release Engineer updates [."
"filename]#base/svnadmin/conf/approvers#, and commits the change back to the "
"repository. Once this is done, any change to the branch must include an "
"\"Approved by:\" line in the commit message."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:276
msgid ""
"The \"Approved by:\" line must match the second column in [.filename]#base/"
"svnadmin/conf/approvers#, otherwise the commit will be rejected by the "
"repository hooks."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:280
msgid ""
"During the code freeze, FreeBSD committers are urged to follow the link:"
"https://wiki.freebsd.org/Releng/ChangeRequestGuidelines[Change Request "
"Guidelines]."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:283
#, no-wrap
msgid "The KBI/KPI Freeze"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:287
msgid ""
"KBI/KPI stability implies that the caller of a function across two different "
"releases of software that implement the function results in the same end "
"state. The caller, whether it is a process, thread, or function, expects "
"the function to operate in a certain way, otherwise the KBI/KPI stability on "
"the branch is broken."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:292
msgid ""
"This section describes the changes to the website that should occur as the "
"release cycle progresses."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:296
msgid ""
"The files specified throughout this section are relative to the `head/` "
"branch of the `doc` repository in Subversion."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:299
#, no-wrap
msgid "Website Changes Before the Release Cycle Begins"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:302
msgid ""
"When the release cycle schedule is available, these files need to be updated "
"to enable various different functionalities on the FreeBSD Project website:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:307
#: documentation/content/en/articles/freebsd-releng/_index.adoc:326
#: documentation/content/en/articles/freebsd-releng/_index.adoc:396
#: documentation/content/en/articles/freebsd-releng/_index.adoc:451
#: documentation/content/en/articles/freebsd-releng/_index.adoc:499
#: documentation/content/en/articles/freebsd-releng/_index.adoc:556
#: documentation/content/en/articles/freebsd-releng/_index.adoc:742
#, no-wrap
msgid "File to Edit"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:309
#: documentation/content/en/articles/freebsd-releng/_index.adoc:328
#: documentation/content/en/articles/freebsd-releng/_index.adoc:398
#: documentation/content/en/articles/freebsd-releng/_index.adoc:453
#: documentation/content/en/articles/freebsd-releng/_index.adoc:501
#: documentation/content/en/articles/freebsd-releng/_index.adoc:558
#: documentation/content/en/articles/freebsd-releng/_index.adoc:744
#: documentation/content/en/articles/freebsd-releng/_index.adoc:868
#, no-wrap
msgid "What to Change"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:310
#: documentation/content/en/articles/freebsd-releng/_index.adoc:313
#, no-wrap
msgid "[.filename]#~/shared/releases.adoc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:312
#, no-wrap
msgid "Change `beta-upcoming` from `IGNORE` to `INCLUDE`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:315
#, no-wrap
msgid "Change `beta-testing` from `IGNORE` to `INCLUDE`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:318
#, no-wrap
msgid "Website Changes During `BETA` or `RC`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:321
msgid ""
"When transitioning from `PRERELEASE` to `BETA`, these files need to be "
"updated to enable the \"Help Test\" block on the download page. All files "
"are relative to [.filename]#head/# in the `doc` repository:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:329
#, no-wrap
msgid "[.filename]#share/releases.adoc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:331
#, no-wrap
msgid "Update `betarel-vers` to `BETA__1__`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:332
#, no-wrap
msgid "[.filename]#~/website/data/en/news/news.toml#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:334
#, no-wrap
msgid "Add an entry announcing the `BETA`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:335
#: documentation/content/en/articles/freebsd-releng/_index.adoc:887
#, no-wrap
msgid "[.filename]#~/website/static/security/advisory-template.txt#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:337
#: documentation/content/en/articles/freebsd-releng/_index.adoc:339
#, no-wrap
msgid "Add the new `BETA`, `RC`, or final `RELEASE` to the template"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:338
#: documentation/content/en/articles/freebsd-releng/_index.adoc:890
#, no-wrap
msgid "[.filename]#~/website/static/security/errata-template.txt#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:342
msgid ""
"Once the {branchRelengx} branch is created, the various release-related "
"documents need to be generated and manually added to the `doc/` repository."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:344
msgid ""
"Within [.filename]#release/doc#, invoke to generate [.filename]#errata."
"html#, [.filename]#hardware.html#, [.filename]#readme.html#, and [."
"filename]#relnotes.html# pages, which are then added to [.filename]#doc/head/"
"en_US.ISO8859-1/htdocs/releases/X.YR/#, where _X.Y_ represents the major and "
"minor version number of the release."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:346
msgid ""
"The `fbsd:nokeywords` property must be set to `on` on the newly-added files "
"before the pre-commit hooks will allow them to be added to the repository."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:350
msgid ""
"The relevant release-related documents exist in the [.filename]#doc# "
"repository for FreeBSD 12.x and later."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:353
#, no-wrap
msgid "Ports Changes During `BETA`, `RC`, and the Final `RELEASE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:357
msgid ""
"For each build during the release cycle, the `MANIFEST` files containing the "
"`SHA256` of the various distribution sets, such as `base.txz`, `kernel.txz`, "
"and so on, are added to the package:misc/freebsd-release-manifests[] port. "
"This allows utilities other than , such as package:ports-mgmt/poudriere[], "
"to safely use these distribution sets by providing a mechanism through which "
"the checksums can be verified."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:359
#, no-wrap
msgid "Release from {branchHead}"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:362
msgid ""
"This section describes the general procedures of the FreeBSD release cycle "
"from the {branchHead} branch."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:364
#, no-wrap
msgid "FreeBSD \"`ALPHA`\" Builds"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:368
msgid ""
"Starting with the FreeBSD 10.0-RELEASE cycle, the notion of \"`ALPHA`\" "
"builds was introduced. Unlike the `BETA` and `RC` builds, `ALPHA` builds "
"are not included in the FreeBSD Release schedule."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:370
msgid ""
"The idea behind `ALPHA` builds is to provide regular FreeBSD-provided builds "
"before the creation of the {branchStable} branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:372
msgid "FreeBSD `ALPHA` snapshots should be built approximately once a week."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:375
msgid ""
"For the first `ALPHA` build, the `BRANCH` value in [.filename]#sys/conf/"
"newvers.sh# needs to be changed from `CURRENT` to `ALPHA1`. For subsequent "
"`ALPHA` builds, increment each `ALPHA__N__` value by one."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:377
msgid "See <<releng-building>> for information on building the `ALPHA` images."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:379
#, no-wrap
msgid "Creating the {branchStablex} Branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:384
msgid ""
"When creating the {branchStable} branch, several changes are required in "
"both the new {branchStable} branch and the {branchHead} branch. The files "
"listed are relative to the repository root. To create the new "
"{branchStablex} branch in Subversion:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:388
#, no-wrap
msgid "% svn cp ^/head {branchStablex}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:391
msgid ""
"Once the {branchStablex} branch has been committed, make the following edits:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:399
#, no-wrap
msgid "[.filename]#stable/12/UPDATING#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:401
#, no-wrap
msgid "Update the FreeBSD version, and remove the notice about `WITNESS`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:402
#, no-wrap
msgid "[.filename]#stable/12/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:411
#, no-wrap
msgid ""
"[source,shell,subs=\"attributes\"]\n"
"....\n"
"#ifndef MALLOC_PRODUCTION\n"
"#define MALLOC_PRODUCTION\n"
"#endif\n"
"...."
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:412
#, no-wrap
msgid "[.filename]#stable/12/lib/clang/llvm.build.mk#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:414
#, no-wrap
msgid "Uncomment `-DNDEBUG`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:415
#, no-wrap
msgid "[.filename]#stable/12/sys/\\*/conf/GENERIC*#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:417
#: documentation/content/en/articles/freebsd-releng/_index.adoc:420
#, no-wrap
msgid "Remove debugging support"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:418
#, no-wrap
msgid "[.filename]#stable/12/sys/*/conf/MINIMAL#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:421
#, no-wrap
msgid "[.filename]#stable/12/release/release.conf.sample#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:423
#, no-wrap
msgid "Update `SRCBRANCH`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:424
#, no-wrap
msgid "[.filename]#stable/12/sys/*/conf/GENERIC-NODEBUG#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:426
#, no-wrap
msgid "Remove these kernel configurations"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:427
#, no-wrap
msgid "[.filename]#stable/12/sys/arm/conf/std.arm*#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:429
#, no-wrap
msgid "Remove debugging options"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:430
#: documentation/content/en/articles/freebsd-releng/_index.adoc:574
#, no-wrap
msgid "[.filename]#stable/12/sys/conf/newvers.sh#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:432
#, no-wrap
msgid "Update the `BRANCH` value to reflect `BETA1`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:433
#: documentation/content/en/articles/freebsd-releng/_index.adoc:436
#, no-wrap
msgid "[.filename]#stable/12/share/mk/src.opts.mk#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:435
#, no-wrap
msgid "Move `REPRODUCIBLE_BUILD` from `\\__DEFAULT_NO_OPTIONS` to `__DEFAULT_YES_OPTIONS`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:438
#, no-wrap
msgid "Move `LLVM_ASSERTIONS` from `\\__DEFAULT_YES_OPTIONS` to `__DEFAULT_NO_OPTIONS` (FreeBSD 13.x and later only)"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:439
#, no-wrap
msgid "[.filename]#stable/12/libexec/rc/rc.conf#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:441
#, no-wrap
msgid "Set `dumpdev` from `AUTO` to `NO` (it is configurable via for those that want it enabled by default)"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:442
#, no-wrap
msgid "[.filename]#stable/12/release/Makefile#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:443
#, no-wrap
msgid "Remove the `debug.witness.trace` entries"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:446
msgid ""
"Then in the {branchHead} branch, which will now become a new major version:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:454
#, no-wrap
msgid "[.filename]#head/UPDATING#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:456
#, no-wrap
msgid "Update the FreeBSD version"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:457
#, no-wrap
msgid "[.filename]#head/sys/conf/newvers.sh#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:459
#, no-wrap
msgid "Update the `BRANCH` value to reflect `CURRENT`, and increment `REVISION`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:460
#, no-wrap
msgid "[.filename]#head/Makefile.inc1#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:462
#, no-wrap
msgid "Update `TARGET_TRIPLE` and `MACHINE_TRIPLE`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:463
#, no-wrap
msgid "[.filename]#head/sys/sys/param.h#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:465
#: documentation/content/en/articles/freebsd-releng/_index.adoc:564
#: documentation/content/en/articles/freebsd-releng/_index.adoc:579
#, no-wrap
msgid "Update `__FreeBSD_version`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:466
#, no-wrap
msgid "[.filename]#head/gnu/usr.bin/cc/cc_tools/freebsd-native.h#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:468
#, no-wrap
msgid "Update `FBSD_MAJOR` and `FBSD_CC_VER`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:469
#, no-wrap
msgid "[.filename]#head/contrib/gcc/config.gcc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:471
#, no-wrap
msgid "Append the `freebsdversion.h` section"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:472
#, no-wrap
msgid "[.filename]#head/lib/clang/llvm.build.mk#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:474
#, no-wrap
msgid "Update the value of `OS_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:475
#, no-wrap
msgid "[.filename]#head/lib/clang/freebsd_cc_version.h#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:477
#, no-wrap
msgid "Update `FREEBSD_CC_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:478
#, no-wrap
msgid "[.filename]#head/lib/clang/include/lld/Common/Version.inc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:480
#, no-wrap
msgid "Update `LLD_REVISION_STRING`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:481
#, no-wrap
msgid "[.filename]#head/Makefile.libcompat#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:482
#: documentation/content/en/articles/freebsd-releng/_index.adoc:512
#, no-wrap
msgid "Update `LIB32CPUFLAGS`"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:485
#, no-wrap
msgid "Release from {branchStable}"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:488
msgid ""
"This section describes the general procedures of the FreeBSD release cycle "
"from an extablished {branchStable} branch."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:490
#, no-wrap
msgid "FreeBSD `stable` Branch Code Slush"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:494
msgid ""
"In preparation for the code freeze on a `stable` branch, several files need "
"to be updated to reflect the release cycle is officially in progress. These "
"files are all relative to the top-most level of the stable branch:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:502
#: documentation/content/en/articles/freebsd-releng/_index.adoc:745
#, no-wrap
msgid "[.filename]#sys/conf/newvers.sh#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:504
#, no-wrap
msgid "Update the `BRANCH` value to reflect `PRERELEASE`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:505
#, no-wrap
msgid "[.filename]#Makefile.inc1#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:507
#, no-wrap
msgid "Update `TARGET_TRIPLE`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:508
#, no-wrap
msgid "[.filename]#lib/clang/llvm.build.mk#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:510
#, no-wrap
msgid "Update `OS_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:511
#, no-wrap
msgid "[.filename]#Makefile.libcompat#"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:515
#, no-wrap
msgid "FreeBSD `BETA` Builds"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:520
msgid ""
"Following the code slush, the next phase of the release cycle is the code "
"freeze. This is the point at which all commits to the stable branch require "
"explicit approval from the {teamRe}. This is enforced by pre-commit hooks "
"in the Subversion repository by editing [.filename]#base/svnadmin/conf/"
"approvers# to include a regular expression matching the {branchStablex} "
"branch for the release:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:525
#, no-wrap
msgid ""
"^/{branchStablex}\tre\n"
"^/{branchRelengx}\tre\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:531
msgid ""
"There are two general exceptions to requiring commit approval during the "
"release cycle. The first is any change that needs to be committed by the "
-"Release Engineer in order to proceed with the day-to-day workflow of the "
-"release cycle, the other is security fixes that may occur during the release "
-"cycle."
+"Release Engineer to proceed with the day-to-day workflow of the release "
+"cycle, the other is security fixes that may occur during the release cycle."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:535
msgid ""
"Once the code freeze is in effect, the next build from the branch is labeled "
"`BETA1`. This is done by updating the `BRANCH` value in [.filename]#sys/"
"conf/newvers.sh# from `PRERELEASE` to `BETA1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:538
msgid ""
"Once this is done, the first set of `BETA` builds are started. Subsequent "
"`BETA` builds do not require updates to any files other than [.filename]#sys/"
"conf/newvers.sh#, incrementing the `BETA` build number."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:540
#, no-wrap
msgid "Creating the {branchRelengx} Branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:546
msgid ""
"When the first `RC` (Release Candidate) build is ready to begin, the "
"{branchReleng} branch is created. This is a multi-step process that must be "
-"done in a specific order, in order to avoid anomalies such as overlaps with "
+"done in a specific order, to avoid anomalies such as overlaps with "
"`__FreeBSD_version` values, for example. The paths listed below are "
"relative to the repository root. The order of commits and what to change "
"are:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:550
#, no-wrap
msgid "% svn cp ^/{branchStablex} {branchRelengx}\n"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:559
#, no-wrap
msgid "[.filename]#releng/12.0/sys/conf/newvers.sh#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:561
#, no-wrap
msgid "Change `BETA__X__` to `RC1`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:562
#, no-wrap
msgid "[.filename]#releng/12.0/sys/sys/param.h#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:565
#, no-wrap
msgid "[.filename]#releng/12.0/sys/conf/kern.opts.mk"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:567
#, no-wrap
msgid "Move `REPRODUCIBLE_BUILD` from `__DEFAULT_NO_OPTIONS` to `__DEFAULT_YES_OPTIONS`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:568
#, no-wrap
msgid "[.filename]#releng/12.0/etc/pkg/FreeBSD.conf#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:570
#: documentation/content/en/articles/freebsd-releng/_index.adoc:573
#, no-wrap
msgid "Replace `latest` with `quarterly` as the default package repository location"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:571
#, no-wrap
msgid "[.filename]#releng/12.0/release/pkg_repos/release-dvd.conf#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:576
#, no-wrap
msgid "Update `BETA__X__` with `PRERELEASE`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:577
#, no-wrap
msgid "[.filename]#stable/12/sys/sys/param.h#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:580
#, no-wrap
msgid "[.filename]#svnadmin/conf/approvers#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:581
#, no-wrap
msgid "Add a new approvers line for the releng branch as was done for the stable branch"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:588
#, no-wrap
msgid ""
"% svn propdel -R svn:mergeinfo {branchRelengx}\n"
"% svn commit {branchRelengx}\n"
"% svn commit {branchStablex}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:591
msgid ""
"Now that two new `__FreeBSD_version` values exist, also update [.filename]#~/"
"documentation/content/en/books/porters-handbook/versions/chapter.adoc# in "
"the Documentation Project repository."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:593
msgid ""
"After the first `RC` build has completed and tested, the {branchStable} "
"branch can be \"thawed\" by removing (or commenting) the ^/{branchStablex} "
"entry in [.filename]#svnadmin/conf/approvers#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:595
msgid ""
"Following the availability of the first `RC`, {teamBugmeister} should be "
"emailed to add the new FreeBSD `-RELEASE` to the `versions` available in the "
"drop-down menu shown in the bug tracker."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:597
#, no-wrap
msgid "Building FreeBSD Installation Media"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:600
msgid ""
"This section describes the general procedures producing FreeBSD development "
"snapshots and releases."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:602
#, no-wrap
msgid "Release Build Scripts"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:605
msgid ""
"This section describes the build scripts used by {teamRe} to produce "
"development snapshots and releases."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/freebsd-releng/_index.adoc:607
#, no-wrap
msgid "The [.filename]#release.sh# Script"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:610
msgid ""
"Prior to FreeBSD 9.0-RELEASE, [.filename]#src/release/Makefile# was updated "
"to support , and the [.filename]#src/release/generate-release.sh# script was "
"introduced as a wrapper to automate invoking the targets."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:613
msgid ""
"Prior to FreeBSD 9.2-RELEASE, [.filename]#src/release/release.sh# was "
"introduced, which heavily based on [.filename]#src/release/generate-release."
"sh# included support to specify configuration files to override various "
"options and environment variables. Support for configuration files provided "
"support for cross building each architecture for a release by specifying a "
"separate configuration file for each invocation."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:615
msgid ""
"As a brief example of using [.filename]#src/release/release.sh# to build a "
"single release in [.filename]#/scratch#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:619
#, no-wrap
msgid "# /bin/sh /usr/src/release/release.sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:622
msgid ""
"As a brief example of using [.filename]#src/release/release.sh# to build a "
"single, cross-built release using a different target directory, create a "
"custom [.filename]#release.conf# containing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:630
#, no-wrap
msgid ""
"# release.sh configuration for powerpc/powerpc64\n"
"CHROOTDIR=\"/scratch-powerpc64\"\n"
"TARGET=\"powerpc\"\n"
"TARGET_ARCH=\"powerpc64\"\n"
"KERNEL=\"GENERIC64\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:633
msgid "Then invoke [.filename]#src/release/release.sh# as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:637
#, no-wrap
msgid "# /bin/sh /usr/src/release/release.sh -c $HOME/release.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:640
msgid ""
"See and [.filename]#src/release/release.conf.sample# for more details and "
"example usage."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/freebsd-releng/_index.adoc:642
#, no-wrap
msgid "The [.filename]#thermite.sh# Wrapper Script"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:645
msgid ""
-"In order to make cross building the full set of architectures supported on a "
-"given branch faster, easier, and reduce human error factors, a wrapper "
-"script around [.filename]#src/release/release.sh# was written to iterate "
-"through the various combinations of architectures and invoke [.filename]#src/"
-"release/release.sh# using a configuration file specific to that architecture."
+"To make cross building the full set of architectures supported on a given "
+"branch faster, easier, and reduce human error factors, a wrapper script "
+"around [.filename]#src/release/release.sh# was written to iterate through "
+"the various combinations of architectures and invoke [.filename]#src/release/"
+"release.sh# using a configuration file specific to that architecture."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:647
msgid ""
"The wrapper script is called [.filename]#thermite.sh#, which is available in "
"the FreeBSD Subversion repository at `svn://svn.freebsd.org/base/user/gjb/"
"thermite/`, in addition to configuration files used to build {branchHead} "
"and {branchStablex} development snapshots."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:649
msgid ""
"Using [.filename]#thermite.sh# is covered in <<releng-build-snapshot>> and "
"<<releng-build-release>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:652
msgid ""
"Each architecture and individual kernel have their own configuration file "
"used by [.filename]#release.sh#. Each branch has its own [."
"filename]#defaults-X.conf# configuration which contains entries common "
"throughout each architecture, where overrides or special variables are set "
"and/or overridden in the per-build files."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:654
msgid ""
-"The per-build configuration file naming scheme is in the form of [.filename]#"
-"${revision}-${TARGET_ARCH}-${KERNCONF}-${type}.conf#, where the uppercase "
-"variables are equivalent to what uses in the build system, and lowercase "
-"variables are set within the configuration files, mapping to the major "
-"version of the respective branch."
+"The per-build configuration file naming scheme is in the form of [."
+"filename]#${revision}-${TARGET_ARCH}-${KERNCONF}-${type}.conf#, where the "
+"uppercase variables are equivalent to what uses in the build system, and "
+"lowercase variables are set within the configuration files, mapping to the "
+"major version of the respective branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:657
msgid ""
"Each branch also has its own [.filename]#builds-X.conf# configuration, which "
"is used by [.filename]#thermite.sh#. The [.filename]#thermite.sh# script "
"iterates through each ${revision}, ${TARGET_ARCH}, ${KERNCONF}, and ${type} "
"value, creating a master list of what to build. However, a given "
"combination from the list will only be built if the respective configuration "
"file exists, which is where the naming scheme above is relevant."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:659
msgid "There are two paths of file sourcing:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:661
msgid "[.filename]#builds-12.conf# - [.filename]#main.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:663
msgid "This controls [.filename]#thermite.sh# behavior"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:664
msgid ""
"[.filename]#12-amd64-GENERIC-snap.conf# - [.filename]#defaults-12.conf# - [."
"filename]#main.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:666
msgid "This controls [.filename]#release/release.sh# behavior within the build"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:670
msgid ""
"The [.filename]#builds-12.conf#, [.filename]#defaults-12.conf#, and [."
"filename]#main.conf# configuration files exist to reduce repetition between "
"the various per-build files."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:673
#, no-wrap
msgid "Building FreeBSD Development Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:676
msgid ""
"The official release build machines have a specific filesystem layout, which "
"using ZFS, [.filename]#thermite.sh# takes heavy advantage of with clones and "
"snapshots, ensuring a pristine build environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:678
msgid ""
"The build scripts reside in [.filename]#/releng/scripts-snapshot/scripts# or "
"[.filename]#/releng/scripts-release/scripts# respectively, to avoid "
"collisions between an `RC` build from a releng branch versus a `STABLE` "
"snapshot from the respective stable branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:681
msgid ""
"A separate dataset exists for the final build images, [.filename]#/snap/"
"ftp#. This directory contains both snapshots and releases directories. They "
"are only used if the `EVERYTHINGISFINE` variable is defined in [."
"filename]#main.conf#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:685
msgid ""
"The `EVERYTHINGISFINE` variable name was chosen to avoid colliding with a "
"variable that might be possibly set in the user environment, accidentally "
"enabling the behavior that depends on it being defined."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:690
msgid ""
"As [.filename]#thermite.sh# iterates through the master list of combinations "
"and locates the per-build configuration file, a ZFS dataset is created under "
"[.filename]#/releng#, such as [.filename]#/releng/12-amd64-GENERIC-snap#. "
"The `src/`, `ports/`, and `doc/` trees are checked out to separate ZFS "
"datasets, such as [.filename]#/releng/12-src-snap#, which are then cloned "
"and mounted into the respective build datasets. This is done to avoid "
"checking out a given tree more than once."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:692
msgid ""
"Assuming these filesystem paths, [.filename]#thermite.sh# would be invoked "
"as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:699
#, no-wrap
msgid ""
"# cd /releng/scripts-snapshot/scripts\n"
"# ./setrev.sh -b {branchStablex}\n"
"# ./zfs-cleanup.sh -c ./builds-12.conf\n"
"# ./thermite.sh -c ./builds-12.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:702
msgid ""
"Once the builds have completed, additional helper scripts are available to "
"generate development snapshot emails which are sent to the `freebsd-"
"snapshots@freebsd.org` mailing list:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:707
#, no-wrap
msgid ""
"# cd /releng/scripts-snapshot/scripts\n"
"# ./get-checksums.sh -c ./builds-12.conf | ./generate-email.pl > snapshot-12-mail\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:712
msgid ""
"The generated output should be double-checked for correctness, and the email "
"itself should be PGP signed, in-line."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:719
msgid ""
"These helper scripts only apply to development snapshot builds. "
"Announcements during the release cycle (excluding the final release "
"announcement) are created from an email template. A sample of the email "
"template currently used can be found link:here[here]."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:722
#, no-wrap
msgid "Building FreeBSD Releases"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:726
msgid ""
"Similar to building FreeBSD development snapshots, [.filename]#thermite.sh# "
"would be invoked the same way. The difference between development snapshots "
"and release builds, `BETA` and `RC` included, is that the configuration "
"files must be named with `release` instead of `snap` as the type, as "
"mentioned above."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:728
msgid ""
"In addition, the `BUILDTYPE` and `types` must be changed from `snap` to "
"`release` in [.filename]#defaults-12.conf# and [.filename]#builds-12.conf#, "
"respectively."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:732
msgid ""
"When building `BETA`, `RC`, and the final `RELEASE`, also statically set "
"`BUILDSVNREV` to the revision on the branch reflecting the name change, "
"`BUILDDATE` to the date the builds are started in `YYYYMMDD` format. If the "
"`doc/` and `ports/` trees have been tagged, also set `PORTBRANCH` and "
"`DOCBRANCH` to the relevant tag path in the Subversion repository, replacing "
"`HEAD` with the last changed revision. Also set `releasesrc` in [."
"filename]#builds-12.conf# to the relevant branch, such as {branchStablex} or "
"{branchRelengx}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:735
msgid ""
"During the release cycle, a copy of [.filename]#CHECKSUM.SHA512# and [."
"filename]#CHECKSUM.SHA256# for each architecture are stored in the {teamRe} "
"internal repository in addition to being included in the various "
"announcement emails. Each [.filename]#MANIFEST# containing the hashes of [."
"filename]#base.txz#, [.filename]#kernel.txz#, etc. are added to package:misc/"
"freebsd-release-manifests[] in the Ports Collection, as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:737
msgid "In preparation for the release build, several files need to be updated:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:747
#, no-wrap
msgid "Update the `BRANCH` value to `RELEASE`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:748
#, no-wrap
msgid "[.filename]#UPDATING#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:750
#, no-wrap
msgid "Add the anticipated announcement date"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:751
#, no-wrap
msgid "[.filename]#lib/csu/common/crtbrand.S#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:752
#, no-wrap
msgid "Replace `__FreeBSD_version` with the value in [.filename]#sys/sys/param.h#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:757
msgid ""
"After building the final `RELEASE`, the {branchRelengx} branch is tagged as "
"{branchReleasex} using the revision from which the `RELEASE` was built. "
"Similar to creating the {branchStablex} and {branchRelengx} branches, this "
"is done with `svn cp`. From the repository root:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:762
#, no-wrap
msgid ""
"% svn cp ^/{branchRelengx}@r306420 {branchReleasex}\n"
"% svn commit {branchReleasex}\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:765
#, no-wrap
msgid "Publishing FreeBSD Installation Media to Project Mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:768
msgid ""
"This section describes the procedure to publish FreeBSD development "
"snapshots and releases to the Project mirrors."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:770
#, no-wrap
msgid "Staging FreeBSD Installation Media Images"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:773
msgid "Staging FreeBSD snapshots and releases is a two part process:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:775
msgid "Creating the directory structure to match the hierarchy on `ftp-master`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:778
msgid ""
"If `EVERYTHINGISFINE` is defined in the build configuration files, [."
"filename]#main.conf# in the case of the build scripts referenced above, this "
"happens automatically in the after the build is complete, creating the "
"directory structure in [.filename]#${DESTDIR}/R/ftp-stage# with a path "
"structure matching what is expected on `ftp-master`. This is equivalent to "
"running the following in the directly:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:782
#, no-wrap
msgid "# make -C /usr/src/release -f Makefile.mirrors EVERYTHINGISFINE=1 ftp-stage\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:785
msgid ""
"After each architecture is built, [.filename]#thermite.sh# will rsync the [."
"filename]#${DESTDIR}/R/ftp-stage# from the build to [.filename]#/snap/ftp/"
"snapshots# or [.filename]#/snap/ftp/releases# on the build host, "
"respectively."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:786
msgid ""
"Copying the files to a staging directory on `ftp-master` before moving the "
"files into [.filename]#pub/# to begin propagation to the Project mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:788
msgid ""
"Once all builds have finished, [.filename]#/snap/ftp/snapshots#, or [."
"filename]#/snap/ftp/releases# for a release, is polled by `ftp-master` using "
"rsync to [.filename]#/archive/tmp/snapshots# or [.filename]#/archive/tmp/"
"releases#, respectively."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:792
msgid ""
"On `ftp-master` in the FreeBSD Project infrastructure, this step requires "
"`root` level access, as this step must be executed as the `archive` user."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:795
#, no-wrap
msgid "Publishing FreeBSD Installation Media"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:799
msgid ""
"Once the images are staged in [.filename]#/archive/tmp/#, they are ready to "
-"be made public by putting them in [.filename]#/archive/pub/FreeBSD#. In "
-"order to reduce propagation time, is used to create hard links from [."
-"filename]#/archive/tmp# to [.filename]#/archive/pub/FreeBSD#."
+"be made public by putting them in [.filename]#/archive/pub/FreeBSD#. To "
+"reduce propagation time, is used to create hard links from [.filename]#/"
+"archive/tmp# to [.filename]#/archive/pub/FreeBSD#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:803
msgid ""
-"In order for this to be effective, both [.filename]#/archive/tmp# and [."
-"filename]#/archive/pub# must reside on the same logical filesystem."
+"For this to be effective, both [.filename]#/archive/tmp# and [.filename]#/"
+"archive/pub# must reside on the same logical filesystem."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:806
msgid ""
-"There is a caveat, however, where rsync must be used after in order to "
-"correct the symbolic links in [.filename]#pub/FreeBSD/snapshots/ISO-IMAGES# "
-"which will replace with a hard link, increasing the propagation time."
+"There is a caveat, however, where rsync must be used after to correct the "
+"symbolic links in [.filename]#pub/FreeBSD/snapshots/ISO-IMAGES# which will "
+"replace with a hard link, increasing the propagation time."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:810
msgid ""
"As with the staging steps, this requires `root` level access, as this step "
"must be executed as the `archive` user."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:813
msgid "As the `archive` user:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:819
#, no-wrap
msgid ""
"% cd /archive/tmp/snapshots\n"
"% pax -r -w -l . /archive/pub/FreeBSD/snapshots\n"
"% /usr/local/bin/rsync -avH /archive/tmp/snapshots/* /archive/pub/FreeBSD/snapshots/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:822
msgid "Replace _snapshots_ with _releases_ as appropriate."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:824
#, no-wrap
msgid "Wrapping up the Release Cycle"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:827
msgid "This section describes general post-release tasks."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:829
#, no-wrap
msgid "Post-Release Errata Notices"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:833
msgid ""
"As the release cycle approaches conclusion, it is common to have several EN "
"(Errata Notice) candidates to address issues that were discovered late in "
"the cycle. Following the release, the {teamRe} and the {teamSecteam} "
"revisit changes that were not approved prior to the final release, and "
"depending on the scope of the change in question, may issue an EN."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/freebsd-releng/_index.adoc:837
msgid "The actual process of issuing ENs is handled by the {teamSecteam}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:840
msgid ""
"To request an Errata Notice after a release cycle has completed, a developer "
"should fill out the https://www.freebsd.org/security/errata-template."
"txt[Errata Notice template], in particular the `Background`, `Problem "
"Description`, `Impact`, and if applicable, `Workaround` sections."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:842
msgid ""
"The completed Errata Notice template should be emailed together with either "
"a patch against the {branchReleng} branch or a list of revisions from the "
"{branchStable} branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:845
msgid ""
"For Errata Notice requests immediately following the release, the request "
"should be emailed to both the {teamRe} and the {teamSecteam}. Once the "
"{branchReleng} branch has been handed over to the {teamSecteam} as described "
"in <<releng-wrapup-handoff>>, Errata Notice requests should be sent to the "
"{teamSecteam}."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:847
#, no-wrap
msgid "Handoff to the {teamSecteam}"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:850
msgid ""
"Roughly two weeks following the release, the Release Engineer updates [."
"filename]#svnadmin/conf/approvers# changing the approver column from `re` to "
"`(so|security-officer)` for the {branchRelengx} branch."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/freebsd-releng/_index.adoc:852
#, no-wrap
msgid "Release End-of-Life"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:855
msgid ""
"This section describes the website-related files to update when a release "
"reaches EoL (End-of-Life)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/freebsd-releng/_index.adoc:857
#, no-wrap
msgid "Website Updates for End-of-Life"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/freebsd-releng/_index.adoc:860
msgid ""
"When a release reaches End-of-Life, references to that release should be "
"removed and/or updated on the website:"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:865
#, no-wrap
msgid "File"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:869
#, no-wrap
msgid "[.filename]#~/website/themes/beastie/layouts/index.html#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:871
#: documentation/content/en/articles/freebsd-releng/_index.adoc:886
#, no-wrap
msgid "Remove `u-relXXX-announce` and `u-relXXX-announce` references."
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:872
#, no-wrap
msgid "[.filename]#~/website/content/en/releases/_index.adoc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:874
#, no-wrap
msgid "Move the `u-relXXX-*` variables from the supported release list to the Legacy Releases list."
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:875
#, no-wrap
msgid "[.filename]#~/website/content/en/releng/_index.adoc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:877
#, no-wrap
msgid "Update the appropriate releng branch to refelect the branch is no longer supported."
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:878
#, no-wrap
msgid "[.filename]#~/website/content/en/security/_index.adoc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:880
#, no-wrap
msgid "Remove the branch from the supported branch list."
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:881
#, no-wrap
msgid "[.filename]#~/website/content/en/where.adoc#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:883
#, no-wrap
msgid "Remove the URLs for the release."
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:884
#, no-wrap
msgid "[.filename]#~/website/themes/beastie/layouts/partials/sidenav.html#"
msgstr ""
#. type: Table
#: documentation/content/en/articles/freebsd-releng/_index.adoc:889
#: documentation/content/en/articles/freebsd-releng/_index.adoc:891
#, no-wrap
msgid "Remove references to the release and releng branch."
msgstr ""
diff --git a/documentation/content/en/articles/hubs/_index.po b/documentation/content/en/articles/hubs/_index.po
index 32d1cda85c..8aa3d693f3 100644
--- a/documentation/content/en/articles/hubs/_index.po
+++ b/documentation/content/en/articles/hubs/_index.po
@@ -1,915 +1,915 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:23-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/hubs/_index.adoc:1
#, no-wrap
msgid "The all in one guide for mirroring the FreeBSD website, FTP servers, and more"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/hubs/_index.adoc:1
#: documentation/content/en/articles/hubs/_index.adoc:17
#, no-wrap
msgid "Mirroring FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:50
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:52
msgid ""
"An in-progress article on how to mirror FreeBSD, aimed at hub administrators."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:54
msgid "'''"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:60
msgid "We are not accepting new mirrors at this time."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/hubs/_index.adoc:63
#, no-wrap
msgid "Contact Information"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:67
msgid ""
"The Mirror System Coordinators can be reached through email at mailto:mirror-"
"admin@FreeBSD.org[mirror-admin@FreeBSD.org]. There is also a {freebsd-hubs}."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/hubs/_index.adoc:69
#, no-wrap
msgid "Requirements for FreeBSD Mirrors"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:72
#, no-wrap
msgid "Disk Space"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:82
msgid ""
"Disk space is one of the most important requirements. Depending on the set "
"of releases, architectures, and degree of completeness you want to mirror, a "
"huge amount of disk space may be consumed. Also keep in mind that "
"_official_ mirrors are probably required to be complete. The web pages "
"should always be mirrored completely. Also note that the numbers stated "
"here are reflecting the current state (at {rel120-current}-RELEASE/{rel113-"
"current}-RELEASE). Further development and releases will only increase the "
"required amount. Also make sure to keep some (ca. 10-20%) extra space "
"around just to be sure. Here are some approximate figures:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:84
msgid "Full FTP Distribution: 1.4 TB"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:85
msgid "CTM deltas: 10 GB"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:86
msgid "Web pages: 1GB"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:88
msgid ""
"The current disk usage of FTP Distribution can be found at link:ftp://ftp."
"FreeBSD.org/pub/FreeBSD/dir.sizes[ftp://ftp.FreeBSD.org/pub/FreeBSD/dir."
"sizes]."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:90
#, no-wrap
msgid "Network Connection/Bandwidth"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:97
msgid ""
"Of course, you need to be connected to the Internet. The required bandwidth "
"depends on your intended use of the mirror. If you just want to mirror some "
"parts of FreeBSD for local use at your site/intranet, the demand may be much "
"smaller than if you want to make the files publicly available. If you "
"intend to become an official mirror, the bandwidth required will be even "
"higher. We can only give rough estimates here:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:99
msgid ""
"Local site, no public access: basically no minimum, but < 2 Mbps could make "
"syncing too slow."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:100
msgid "Unofficial public site: 34 Mbps is probably a good start."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:101
msgid ""
"Official site: > 100 Mbps is recommended, and your host should be connected "
"as close as possible to your border router."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:103
#, no-wrap
msgid "System Requirements, CPU, RAM"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:111
msgid ""
"One thing this depends on the expected number of clients, which is "
"determined by the server's policy. It is also affected by the types of "
"services you want to offer. Plain FTP or HTTP services may not require a "
"huge amount of resources. Watch out if you provide rsync. This can have a "
"huge impact on CPU and memory requirements as it is considered a memory "
"hog. The following are just examples to give you a very rough hint."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:114
msgid ""
"For a moderately visited site that offers rsync, you might consider a "
"current CPU with around 800MHz - 1 GHz, and at least 512MB RAM. This is "
"probably the minimum you want for an _official_ site."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:116
msgid ""
"For a frequently used site you definitely need more RAM (consider 2GB as a "
"good start) and possibly more CPU, which could also mean that you need to go "
"for a SMP system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:120
msgid ""
"You also want to consider a fast disk subsystem. Operations on the SVN "
"repository require a fast disk subsystem (RAID is highly advised). A SCSI "
"controller that has a cache of its own can also speed up things since most "
"of these services incur a large number of small modifications to the disk."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:122
#, no-wrap
msgid "Services to Offer"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:127
msgid ""
"Every mirror site is required to have a set of core services available. In "
"addition to these required services, there are a number of optional services "
"that server administrators may choose to offer. This section explains which "
"services you can provide and how to go about implementing them."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/hubs/_index.adoc:129
#, no-wrap
msgid "FTP (required for FTP Fileset)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:135
msgid ""
"This is one of the most basic services, and it is required for each mirror "
"offering public FTP distributions. FTP access must be anonymous, and no "
"upload/download ratios are allowed (a ridiculous thing anyway). Upload "
"capability is not required (and _must_ never be allowed for the FreeBSD file "
"space). Also the FreeBSD archive should be available under the path [."
"filename]#/pub/FreeBSD#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:137
msgid ""
"There is a lot of software available which can be set up to allow anonymous "
"FTP (in alphabetical order)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:139
msgid ""
"`/usr/libexec/ftpd`: FreeBSD's own ftpd can be used. Be sure to read man:"
"ftpd[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:140
msgid "package:ftp/ncftpd[]: A commercial package, free for educational use."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:141
msgid "package:ftp/oftpd[]: An ftpd designed with security as a main focus."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:142
msgid "package:ftp/proftpd[]: A modular and very flexible ftpd."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:143
msgid "package:ftp/pure-ftpd[]: Another ftpd developed with security in mind."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:144
msgid "package:ftp/twoftpd[]: As above."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:145
msgid "package:ftp/vsftpd[]: The \"very secure\" ftpd."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:149
msgid ""
"FreeBSD's `ftpd`, `proftpd` and maybe `ncftpd` are among the most commonly "
"used FTPds. The others do not have a large userbase among mirror sites. "
"One thing to consider is that you may need flexibility in limiting how many "
"simultaneous connections are allowed, thus limiting how much network "
"bandwidth and system resources are consumed."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/hubs/_index.adoc:151
#, no-wrap
msgid "Rsync (optional for FTP Fileset)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:161
msgid ""
"Rsync is often offered for access to the contents of the FTP area of "
"FreeBSD, so other mirror sites can use your system as their source. The "
"protocol is different from FTP in many ways. It is much more bandwidth "
"friendly, as only differences between files are transferred instead of whole "
"files when they change. Rsync does require a significant amount of memory "
"for each instance. The size depends on the size of the synced module in "
"terms of the number of directories and files. Rsync can use `rsh` and `ssh` "
"(now default) as a transport, or use its own protocol for stand-alone access "
"(this is the preferred method for public rsync servers). Authentication, "
"connection limits, and other restrictions may be applied. There is just one "
"software package available:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:163
msgid "package:net/rsync[]"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/hubs/_index.adoc:165
#, no-wrap
msgid "HTTP (required for Web Pages, Optional for FTP Fileset)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:171
msgid ""
"If you want to offer the FreeBSD web pages, you will need to install a web "
"server. You may optionally offer the FTP fileset via HTTP. The choice of "
"web server software is left up to the mirror administrator. Some of the "
"most popular choices are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:173
msgid ""
"package:www/apache24[]: Apache is still one of the most widely deployed web "
"servers on the Internet. It is used extensively by the FreeBSD Project."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:174
msgid ""
"package:www/boa[]: Boa is a single-tasking HTTP server. Unlike traditional "
"web servers, it does not fork for each incoming connection, nor does it fork "
"many copies of itself to handle multiple connections. Although, it should "
"provide considerably great performance for purely static content."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:175
msgid ""
"package:www/cherokee[]: Cherokee is a very fast, flexible and easy to "
"configure web server. It supports the widespread technologies nowadays: "
"FastCGI, SCGI, PHP, CGI, SSL/TLS encrypted connections, vhosts, users "
"authentication, on the fly encoding and load balancing. It also generates "
"Apache compatible log files."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:176
msgid ""
"package:www/lighttpd[]: lighttpd is a secure, fast, compliant and very "
"flexible web server which has been optimized for high-performance "
"environments. It has a very low memory footprint compared to other web "
"servers and takes care of cpu-load."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:177
msgid ""
"package:www/nginx[]: nginx is a high performance edge web server with a low "
"memory footprint and key features to build a modern and efficient web "
"infrastructure. Features include a HTTP server, HTTP and mail reverse proxy, "
"caching, load balancing, compression, request throttling, connection "
"multiplexing and reuse, SSL offload and HTTP media streaming."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:178
msgid ""
"package:www/thttpd[]: If you are going to be serving a large amount of "
"static content you may find that using an application such as thttpd is more "
"efficient than others. It is also optimized for excellent performance on "
"FreeBSD."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/hubs/_index.adoc:180
#, no-wrap
msgid "How to Mirror FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:184
msgid ""
"Ok, now you know the requirements and how to offer the services, but not how "
"to get it. :-) This section explains how to actually mirror the various "
"parts of FreeBSD, what tools to use, and where to mirror from."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:186
#, no-wrap
msgid "Mirroring the FTP Site"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:191
msgid ""
"The FTP area is the largest amount of data that needs to be mirrored. It "
"includes the _distribution sets_ required for network installation, the "
"_branches_ which are actually snapshots of checked-out source trees, the "
"_ISO Images_ to write CD-ROMs with the installation distribution, a live "
"file system, and a snapshot of the ports tree. All of course for various "
"FreeBSD versions, and various architectures."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:197
msgid ""
"The best way to mirror the FTP area is rsync. You can install the port "
"package:net/rsync[] and then use rsync to sync with your upstream host. "
"rsync is already mentioned in <<mirror-serv-rsync>>. Since rsync access is "
"not required, your preferred upstream site may not allow it. You may need "
"to hunt around a little bit to find a site that allows rsync access."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:202
msgid ""
"Since the number of rsync clients will have a significant impact on the "
"server machine, most admins impose limitations on their server. For a "
"mirror, you should ask the site maintainer you are syncing from about their "
"policy, and maybe an exception for your host (since you are a mirror)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:205
msgid "A command line to mirror FreeBSD might look like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/hubs/_index.adoc:209
#, no-wrap
msgid "% rsync -vaHz --delete rsync://ftp4.de.FreeBSD.org/FreeBSD/ /pub/FreeBSD/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:213
msgid ""
"Consult the documentation for rsync, which is also available at http://rsync."
"samba.org/[http://rsync.samba.org/], about the various options to be used "
"with rsync. If you sync the whole module (unlike subdirectories), be aware "
"that the module-directory (here \"FreeBSD\") will not be created, so you "
"cannot omit the target directory. Also you might want to set up a script "
"framework that calls such a command via man:cron[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:215
#, no-wrap
msgid "Mirroring the WWW Pages"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:220
msgid ""
"Since doc migration to Hugo/Asciidoctor on 2021-01-25, mirroring the website "
"with rsync no longer works."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:223
msgid ""
"There are ongoing studies to implement a website mirror with the extref:"
"{handbook}mirrors/[official infrastructure]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:225
msgid ""
"For the former website mirrors, a way to achieve mirroring the website today "
"is building the website locally with the corresponding address it will be "
"hosted."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/hubs/_index.adoc:229
#, no-wrap
msgid "% cd website && env HUGO_baseURL=\"https://www.XX.freebsd.org/\" make\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:232
msgid ""
"Check for more details about the build tools on extref:{fdp-primer}overview/"
"[FreeBSD Documentation Project Primer for New Contributors, overview-quick-"
"start] book."
msgstr ""
#. [source,shell]
#. ....
#. % rsync -vaHz --delete rsync://bit0.us-west.freebsd.org/FreeBSD-www-data/ /usr/local/www/
#. ....
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:243
msgid ""
"Notice the website was split into www.FreeBSD.org and docs.FreeBSD.org, and "
"there are links between them; plus, at this moment, `HUGO_baseURL` variable "
"won't cover all links, this way, mirroring the website is discouraged."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:246
#, no-wrap
msgid "Mirroring Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:251
msgid ""
"Due to very high requirements of bandwidth, storage and adminstration the "
"FreeBSD Project has decided not to allow public mirrors of packages. For "
"sites with lots of machines, it might be advantagous to run a caching HTTP "
"proxy for the man:pkg[8] process. Alternatively specific packages and their "
"dependencies can be fetched by running something like the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/hubs/_index.adoc:255
#, no-wrap
msgid "% pkg fetch -d -o /usr/local/mirror vim\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:258
msgid ""
"Once those packages have been fetched, the repository metadata must be "
"generated by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/hubs/_index.adoc:262
#, no-wrap
msgid "% pkg repo /usr/local/mirror\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:266
msgid ""
"Once the packages have been fetched and the metadata for the repository has "
"been generated, serve the packages up to the client machines via HTTP. For "
"additional information see the man pages for man:pkg[8], specifically the "
"man:pkg-repo[8] page."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:268
#, no-wrap
msgid "How Often Should I Mirror?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:274
msgid ""
"Every mirror should be updated at a minimum of once per day. Certainly a "
"script with locking to prevent multiple runs happening at the same time will "
"be needed to run from man:cron[8]. Since nearly every admin does this in "
"their own way, specific instructions cannot be provided. It could work "
"something like this:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:278
msgid ""
"Put the command to run your mirroring application in a script. Use of a "
"plain `/bin/sh` script is recommended."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:279
msgid ""
"Add some output redirections so diagnostic messages are logged to a file."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:280
msgid "Test if your script works. Check the logs."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:281
msgid ""
"Use man:crontab[1] to add the script to the appropriate user's man:"
"crontab[5]. This should be a different user than what your FTP daemon runs "
"as so that if file permissions inside your FTP area are not world-readable "
"those files cannot be accessed by anonymous FTP. This is used to \"stage\" "
"releases - making sure all of the official mirror sites have all of the "
"necessary release files on release day."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:284
msgid "Here are some recommended schedules:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:286
msgid "FTP fileset: daily"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:287
msgid "WWW pages: daily"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/hubs/_index.adoc:289
#, no-wrap
msgid "Where to Mirror From"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:294
msgid ""
"This is an important issue. So this section will spend some effort to "
"explain the backgrounds. We will say this several times: under no "
"circumstances should you mirror from `ftp.FreeBSD.org`."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:296
#, no-wrap
msgid "A few Words About the Organization"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:307
msgid ""
"Mirrors are organized by country. All official mirrors have a DNS entry of "
"the form `ftpN.CC.FreeBSD.org`. _CC_ (i.e., country code) is the _top level "
"domain_ (TLD) of the country where this mirror is located. _N_ is a number, "
"telling that the host would be the _Nth_ mirror in that country. (Same "
"applies to `wwwN.CC.FreeBSD.org`, etc.) There are mirrors with no _CC_ "
"part. These are the mirror sites that are very well connected and allow a "
"large number of concurrent users. `ftp.FreeBSD.org` is actually two "
"machines, one currently located in Denmark and the other in the United "
"States. It is _NOT_ a master site and should never be used to mirror from. "
"Lots of online documentation leads \"interactive\"users to `ftp.FreeBSD.org` "
"so automated mirroring systems should find a different machine to mirror "
"from."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:315
msgid ""
"Additionally there exists a hierarchy of mirrors, which is described in "
"terms of __tiers__. The master sites are not referred to but can be "
"described as __Tier-0__. Mirrors that mirror from these sites can be "
"considered __Tier-1__, mirrors of __Tier-1__-mirrors, are __Tier-2__, etc. "
"Official sites are encouraged to be of a low __tier__, but the lower the "
"tier the higher the requirements in terms as described in <<mirror-"
"requirements>>. Also access to low-tier-mirrors may be restricted, and "
"access to master sites is definitely restricted. The __tier__-hierarchy is "
"not reflected by DNS and generally not documented anywhere except for the "
"master sites. However, official mirrors with low numbers like 1-4, are "
"usually _Tier-1_ (this is just a rough hint, and there is no rule)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:317
#, no-wrap
msgid "Ok, but Where Should I get the Stuff Now?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:321
msgid ""
"Under no circumstances should you mirror from `ftp.FreeBSD.org`. The short "
"answer is: from the site that is closest to you in Internet terms, or gives "
"you the fastest access."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/hubs/_index.adoc:323
#, no-wrap
msgid "I Just Want to Mirror from Somewhere!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:327
msgid ""
"If you have no special intentions or requirements, the statement in <<mirror-"
"where-where>> applies. This means:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:331
msgid ""
"Check for those which provide fastest access (number of hops, round-trip-"
"times) and offer the services you intend to use (like rsync)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:332
msgid ""
"Contact the administrators of your chosen site stating your request, and "
"asking about their terms and policies."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:333
msgid "Set up your mirror as described above."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/hubs/_index.adoc:336
#, no-wrap
-msgid "I am an Official Mirror, What is the Right Rite for Me?"
+msgid "I am an Official Mirror, What is the Right Site for Me?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:341
msgid ""
"In general the description in <<mirror-where-simple>> still applies. Of "
"course you may want to put some weight on the fact that your upstream should "
"be of a low tier. There are some other considerations about _official_ "
"mirrors that are described in <<mirror-official>>."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/hubs/_index.adoc:343
#, no-wrap
msgid "I Want to Access the Master Sites!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:350
msgid ""
"If you have good reasons and good prerequisites, you may want and get access "
"to one of the master sites. Access to these sites is generally restricted, "
"and there are special policies for access. If you are already an _official_ "
"mirror, this certainly helps you getting access. In any other case make "
"sure your country really needs another mirror. If it already has three or "
"more, ask the \"zone administrator\" (mailto:hostmaster@CC.FreeBSD."
"org[hostmaster@CC.FreeBSD.org]) or {freebsd-hubs} first."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:353
msgid ""
"Whoever helped you become, an _official_ should have helped you gain access "
"to an appropriate upstream host, either one of the master sites or a "
"suitable Tier-1 site. If not, you can send email to mailto:mirror-"
"admin@FreeBSD.org[mirror-admin@FreeBSD.org] to request help with that."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:355
msgid "There is one master site for the FTP fileset."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/hubs/_index.adoc:357
#, no-wrap
msgid "ftp-master.FreeBSD.org"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:360
msgid "This is the master site for the FTP fileset."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:363
msgid ""
"`ftp-master.FreeBSD.org` provides rsync access, in addition to FTP. Refer "
"to <<mirror-ftp-rsync>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:365
msgid ""
"Mirrors are also encouraged to allow rsync access for the FTP contents, "
"since they are __Tier-1__-mirrors."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/hubs/_index.adoc:367
#, no-wrap
msgid "Official Mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:370
msgid "Official mirrors are mirrors that"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:372
msgid "a) have a `FreeBSD.org` DNS entry (usually a CNAME)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:373
msgid ""
"b) are listed as an official mirror in the FreeBSD documentation (like "
"handbook)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:376
msgid ""
"So far to distinguish official mirrors. Official mirrors are not necessarily "
"__Tier-1__-mirrors. However you probably will not find a __Tier-1__-mirror, "
"that is not also official."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:378
#, no-wrap
msgid "Special Requirements for Official (tier-1) Mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:383
msgid ""
"It is not so easy to state requirements for all official mirrors, since the "
"project is sort of tolerant here. It is more easy to say, what _official "
"tier-1 mirrors_ are required to. All other official mirrors can consider "
"this a big __should__."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:385
msgid "Tier-1 mirrors are required to:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:387
msgid "carry the complete fileset"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:388
msgid "allow access to other mirror sites"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:389
msgid "provide FTP and rsync access"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:392
msgid ""
"Furthermore, admins should be subscribed to the {freebsd-hubs}. See extref:"
"{handbook}[this link, eresources-mail] for details, how to subscribe."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:397
msgid ""
"It is _very_ important for a hub administrator, especially Tier-1 hub "
"admins, to check the https://www.FreeBSD.org/releng/[release schedule] for "
"the next FreeBSD release. This is important because it will tell you when "
"the next release is scheduled to come out, and thus giving you time to "
"prepare for the big spike of traffic which follows it."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/hubs/_index.adoc:400
msgid ""
"It is also important that hub administrators try to keep their mirrors as up-"
"to-date as possible (again, even more crucial for Tier-1 mirrors). If "
"Mirror1 does not update for a while, lower tier mirrors will begin to mirror "
"old data from Mirror1 and thus begins a downward spiral... Keep your mirrors "
"up to date!"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:403
#, no-wrap
msgid "How to Become Official Then?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:406
msgid "We are not accepting any new mirrors at this time."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/hubs/_index.adoc:408
#, no-wrap
msgid "Some Statistics from Mirror Sites"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:411
msgid ""
"Here are links to the stat pages of your favorite mirrors (aka the only ones "
"who feel like providing stats)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/hubs/_index.adoc:413
#, no-wrap
msgid "FTP Site Statistics"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:416
msgid ""
"ftp.is.FreeBSD.org - mailto:hostmaster@is.FreeBSD.org[hostmaster@is.FreeBSD."
"org] - http://www.rhnet.is/status/draupnir/draupnir.html[ (Bandwidth)] "
"http://www.rhnet.is/status/ftp/ftp-notendur.html[(FTP processes)] http://www."
"rhnet.is/status/ftp/http-notendur.html[(HTTP processes)]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/hubs/_index.adoc:416
msgid ""
"ftp2.ru.FreeBSD.org - mailto:mirror@macomnet.ru[mirror@macomnet.ru] - http://"
"mirror.macomnet.net/mrtg/mirror.macomnet.net_195.128.64.25.html[(Bandwidth)] "
"http://mirror.macomnet.net/mrtg/mirror.macomnet.net_proc.html[(HTTP and FTP "
"users)]"
msgstr ""
diff --git a/documentation/content/en/articles/ipsec-must/_index.po b/documentation/content/en/articles/ipsec-must/_index.po
index 163bfbf77b..5a15b621b2 100644
--- a/documentation/content/en/articles/ipsec-must/_index.po
+++ b/documentation/content/en/articles/ipsec-must/_index.po
@@ -1,567 +1,567 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:21-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Title =
#: documentation/content/en/articles/ipsec-must/_index.adoc:1
#: documentation/content/en/articles/ipsec-must/_index.adoc:11
#, no-wrap
msgid "Independent Verification of IPsec Functionality in FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:44
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:47
msgid ""
"You installed IPsec and it seems to be working. How do you know? I describe "
"a method for experimentally verifying that IPsec is working."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:49
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:53
#, no-wrap
msgid "The Problem"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:58
msgid ""
"First, lets assume you have <<ipsec-install>>. How do you know it is "
"<<caveat>>? Sure, your connection will not work if it is misconfigured, and "
"it will work when you finally get it right. man:netstat[1] will list it. "
"But can you independently confirm it?"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:60
#, no-wrap
msgid "The Solution"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:63
msgid "First, some crypto-relevant info theory:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:65
msgid ""
"Encrypted data is uniformly distributed, i.e., has maximal entropy per "
"symbol;"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:66
msgid ""
"Raw, uncompressed data is typically redundant, i.e., has sub-maximal entropy."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:70
msgid ""
"Suppose you could measure the entropy of the data to- and from- your network "
"interface. Then you could see the difference between unencrypted data and "
"encrypted data. This would be true even if some of the data in \"encrypted "
"mode\" was not encrypted---as the outermost IP header must be if the packet "
"is to be routable."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/ipsec-must/_index.adoc:72
#, no-wrap
msgid "MUST"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:77
msgid ""
-"Ueli Maurer's \"Universal Statistical Test for Random Bit Generators"
-"\"(https://web.archive.org/web/20011115002319/http://www.geocities.com/"
-"SiliconValley/Code/4704/universal.pdf[MUST]) quickly measures the entropy of "
-"a sample. It uses a compression-like algorithm. <<code>> for a variant "
-"which measures successive (~quarter megabyte) chunks of a file."
+"Ueli Maurer's \"Universal Statistical Test for Random Bit "
+"Generators\"(https://web.archive.org/web/20011115002319/http://www.geocities."
+"com/SiliconValley/Code/4704/universal.pdf[MUST]) quickly measures the "
+"entropy of a sample. It uses a compression-like algorithm. <<code>> for a "
+"variant which measures successive (~quarter megabyte) chunks of a file."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/ipsec-must/_index.adoc:79
#, no-wrap
msgid "Tcpdump"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:83
msgid ""
"We also need a way to capture the raw network data. A program called man:"
"tcpdump[1] lets you do this, if you have enabled the _Berkeley Packet "
"Filter_ interface in your <<kernel>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:85
msgid "The command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:89
#, no-wrap
msgid " tcpdump -c 4000 -s 10000 -w dumpfile.bin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:93
msgid ""
"will capture 4000 raw packets to _dumpfile.bin_. Up to 10,000 bytes per "
"packet will be captured in this example."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:95
#, no-wrap
msgid "The Experiment"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:98
msgid "Here is the experiment:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:102
msgid "Open a window to an IPsec host and another window to an insecure host."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:103
msgid "Now start <<tcpdump>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:104
msgid ""
"In the \"secure\" window, run the UNIX(R) command man:yes[1], which will "
"stream the `y` character. After a while, stop this. Switch to the insecure "
"window, and repeat. After a while, stop."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:105
msgid ""
"Now run <<code>> on the captured packets. You should see something like the "
"following. The important thing to note is that the secure connection has 93% "
"(6.7) of the expected value (7.18), and the \"normal\" connection has 29% "
"(2.1) of the expected value."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:121
#, no-wrap
msgid ""
"% tcpdump -c 4000 -s 10000 -w ipsecdemo.bin\n"
"% uliscan ipsecdemo.bin\n"
"Uliscan 21 Dec 98\n"
"L=8 256 258560\n"
"Measuring file ipsecdemo.bin\n"
"Init done\n"
"Expected value for L=8 is 7.1836656\n"
"6.9396 --------------------------------------------------------\n"
"6.6177 -----------------------------------------------------\n"
"6.4100 ---------------------------------------------------\n"
"2.1101 -----------------\n"
"2.0838 -----------------\n"
"2.0983 -----------------\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:125
#, no-wrap
msgid "Caveat"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:131
msgid ""
"This experiment shows that IPsec _does_ seem to be distributing the payload "
"data __uniformly__, as encryption should. However, the experiment described "
"here _cannot_ detect many possible flaws in a system (none of which do I "
"have any evidence for). These include poor key generation or exchange, data "
"or keys being visible to others, use of weak algorithms, kernel subversion, "
"etc. Study the source; know the code."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:133
#, no-wrap
msgid "IPsec---Definition"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:139
msgid ""
"Internet Protocol security extensions to IPv4; required for IPv6. A "
"protocol for negotiating encryption and authentication at the IP (host-to-"
"host) level. SSL secures only one application socket; SSH secures only a "
"login; PGP secures only a specified file or message. IPsec encrypts "
"everything between two hosts."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:141
#, no-wrap
msgid "Installing IPsec"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:145
msgid ""
"Most of the modern versions of FreeBSD have IPsec support in their base "
"source. So you will need to include the `IPSEC` option in your kernel "
"config and, after kernel rebuild and reinstall, configure IPsec connections "
"using man:setkey[8] command."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:147
msgid ""
"A comprehensive guide on running IPsec on FreeBSD is provided in extref:"
"{handbook}[FreeBSD Handbook, ipsec]."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:149
#, no-wrap
msgid "src/sys/i386/conf/KERNELNAME"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:153
msgid ""
-"This needs to be present in the kernel config file in order to capture "
-"network data with man:tcpdump[1]. Be sure to run man:config[8] after adding "
-"this, and rebuild and reinstall."
+"This needs to be present in the kernel config file to capture network data "
+"with man:tcpdump[1]. Be sure to run man:config[8] after adding this, and "
+"rebuild and reinstall."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:157
#, no-wrap
msgid "device\tbpf\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/ipsec-must/_index.adoc:160
#, no-wrap
msgid "Maurer's Universal Statistical Test (for block size=8 bits)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/ipsec-must/_index.adoc:163
msgid ""
"You can find the same code at https://web.archive.org/web/20031204230654/"
"http://www.geocities.com:80/SiliconValley/Code/4704/uliscanc.txt[this link]."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:168
#, no-wrap
msgid ""
"/*\n"
" ULISCAN.c ---blocksize of 8\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:172
#, no-wrap
msgid ""
" 1 Oct 98\n"
" 1 Dec 98\n"
" 21 Dec 98 uliscan.c derived from ueli8.c\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:174
#, no-wrap
msgid " This version has // comments removed for Sun cc\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:177
#, no-wrap
msgid ""
" This implements Ueli M Maurer's \"Universal Statistical Test for Random\n"
" Bit Generators\" using L=8\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:180
#, no-wrap
msgid ""
" Accepts a filename on the command line; writes its results, with other\n"
" info, to stdout.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:182
#, no-wrap
msgid " Handles input file exhaustion gracefully.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:185
#, no-wrap
msgid ""
" Ref: J. Cryptology v 5 no 2, 1992 pp 89-105\n"
" also on the web somewhere, which is where I found it.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:188
#, no-wrap
msgid ""
" -David Honig\n"
" honig@sprynet.com\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:193
#, no-wrap
msgid ""
" Usage:\n"
" ULISCAN filename\n"
" outputs to stdout\n"
"*/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:199
#, no-wrap
msgid ""
"#define L 8\n"
"#define V (1<<L)\n"
"#define Q (10*V)\n"
"#define K (100 *Q)\n"
"#define MAXSAMP (Q + K)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:202
#, no-wrap
msgid ""
"#include <stdio.h>\n"
"#include <math.h>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:214
#, no-wrap
msgid ""
"int main(argc, argv)\n"
"int argc;\n"
"char **argv;\n"
"{\n"
" FILE *fptr;\n"
" int i,j;\n"
" int b, c;\n"
" int table[V];\n"
" double sum = 0.0;\n"
" int iproduct = 1;\n"
" int run;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:216
#, no-wrap
msgid " extern double log(/* double x */);\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:218
#, no-wrap
msgid " printf(\"Uliscan 21 Dec 98 \\nL=%d %d %d \\n\", L, V, MAXSAMP);\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:225
#, no-wrap
msgid ""
" if (argc < 2) {\n"
" printf(\"Usage: Uliscan filename\\n\");\n"
" exit(-1);\n"
" } else {\n"
" printf(\"Measuring file %s\\n\", argv[1]);\n"
" }\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:227
#, no-wrap
msgid " fptr = fopen(argv[1],\"rb\");\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:232
#, no-wrap
msgid ""
" if (fptr == NULL) {\n"
" printf(\"Can't find %s\\n\", argv[1]);\n"
" exit(-1);\n"
" }\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:236
#, no-wrap
msgid ""
" for (i = 0; i < V; i++) {\n"
" table[i] = 0;\n"
" }\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:241
#, no-wrap
msgid ""
" for (i = 0; i < Q; i++) {\n"
" b = fgetc(fptr);\n"
" table[b] = i;\n"
" }\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:243
#, no-wrap
msgid " printf(\"Init done\\n\");\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:245
#, no-wrap
msgid " printf(\"Expected value for L=8 is 7.1836656\\n\");\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:247
#, no-wrap
msgid " run = 1;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:251
#, no-wrap
msgid ""
" while (run) {\n"
" sum = 0.0;\n"
" iproduct = 1;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:256
#, no-wrap
msgid ""
" if (run)\n"
" for (i = Q; run && i < Q + K; i++) {\n"
" j = i;\n"
" b = fgetc(fptr);\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:259
#, no-wrap
msgid ""
" if (b < 0)\n"
" run = 0;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:263
#, no-wrap
msgid ""
" if (run) {\n"
" if (table[b] > j)\n"
" j += K;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:265
#, no-wrap
msgid " sum += log((double)(j-table[b]));\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:269
#, no-wrap
msgid ""
" table[b] = i;\n"
" }\n"
" }\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:272
#, no-wrap
msgid ""
" if (!run)\n"
" printf(\"Premature end of file; read %d blocks.\\n\", i - Q);\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:275
#, no-wrap
msgid ""
" sum = (sum/((double)(i - Q))) / log(2.0);\n"
" printf(\"%4.4f \", sum);\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:278
#, no-wrap
msgid ""
" for (i = 0; i < (int)(sum*8.0 + 0.50); i++)\n"
" printf(\"-\");\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:280
#, no-wrap
msgid " printf(\"\\n\");\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/ipsec-must/_index.adoc:294
#, no-wrap
msgid ""
" /* refill initial table */\n"
" if (0) {\n"
" for (i = 0; i < Q; i++) {\n"
" b = fgetc(fptr);\n"
" if (b < 0) {\n"
" run = 0;\n"
" } else {\n"
" table[b] = i;\n"
" }\n"
" }\n"
" }\n"
" }\n"
"}\n"
msgstr ""
diff --git a/documentation/content/en/articles/license-guide/_index.po b/documentation/content/en/articles/license-guide/_index.po
index 5b2ef8b880..b88072ef2a 100644
--- a/documentation/content/en/articles/license-guide/_index.po
+++ b/documentation/content/en/articles/license-guide/_index.po
@@ -1,766 +1,761 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 21:10-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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: title
#: documentation/content/en/articles/license-guide/_index.adoc:1
#, no-wrap
msgid "FreeBSD Licensing Policy"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/license-guide/_index.adoc:9
#, no-wrap
msgid "FreeBSD License Policies"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:20
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/license-guide/_index.adoc:26
#, no-wrap
msgid "Preferred License for New Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:32
msgid ""
"The rest of this section is intended to help you get started. As a rule, "
"when in doubt, ask. It is much easier to receive advice than to fix the "
"source tree. The FreeBSD Project makes use of both explicit licenses (where "
"the verbatim text of the license is reproduced in each file) and detached "
"licenses (where a tag in the file specifies the license, as described in "
"this document)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:34
msgid "The FreeBSD Project uses this text as the preferred license:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/license-guide/_index.adoc:42
#: documentation/content/en/articles/license-guide/_index.adoc:138
#, no-wrap
msgid ""
"/*-\n"
" * Copyright (c) [year] [your name]\n"
" *\n"
" * SPDX-License-Identifier: BSD-2-Clause\n"
" */\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:48
msgid ""
"The FreeBSD project does not allow using the \"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 switching to a license without it. New contributions to FreeBSD "
"should use the BSD-2-Clause license."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:54
msgid ""
"The FreeBSD project discourages completely new licenses and variations on "
"the standard licenses. New licenses require the approval of {core-email} to "
"reside in the main repository. In the past, non-standard licenses have "
"generated more problems than standard ones. Poor drafting of non-standard "
"licenses often causes more unintended consequences, so they are unlikely to "
"be approved by {core-email}. The FreeBSD project is standardizing on the "
"BSD-2-Clause license, as published by SPDX."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:60
msgid ""
"In addition, project policy requires that code licensed under some non-BSD "
"licenses must be placed in specific sections of the repository. For some "
"licenses, compilation must be conditional or disabled by default. For "
"example, code in the static part of the GENERIC kernel must be licensed "
"under the BSD or substantially similar licenses. GPL, APSL, CDDL, etc, "
"licensed software must not be compiled into the static GENERIC kernel. Code "
"with these licenses may be used in pre-compiled modules, however."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:64
msgid ""
"Developers are reminded that, in open source, getting \"open\" correct is "
"just as important as getting \"source\" correct. Improper handling of "
"intellectual property has serious consequences. Any questions or concerns "
"should immediately be brought to the attention of {core-email}."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/license-guide/_index.adoc:66
#, no-wrap
msgid "Software License Policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:72
msgid ""
"The following sections outline the project's Software License Policies in "
"detail. For the most part we expect developers to read, understand and "
-"utilize the sections above this one in order to apply appropriate licenses "
-"to their contributions. The rest of this document details the philosophical "
+"utilize the sections above this one to apply appropriate licenses to their "
+"contributions. The rest of this document details the philosophical "
"background to the policies as well as the policies in great detail. As "
"always, if the text below is confusing or you need help with applying these "
"policies, please reach out to {core-email}."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/license-guide/_index.adoc:73
#, no-wrap
msgid "Guiding Principles"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:78
msgid ""
"The FreeBSD Project aims to produce a complete, BSD-licensed operating "
"system allowing consumers of the system to produce derivative products "
"without constraint or further license obligations. We invite and greatly "
-"appreciate the contribution of both changes and additions under the "
-"two-clause BSD license, and encourage the adoption of this license by other "
-"open source projects. Use of the BSD license is key to encouraging the "
-"adoption of advanced operating system technology, and on many notable "
-"occasions has been pivotal to widespread use of new technology."
+"appreciate the contribution of both changes and additions under the two-"
+"clause BSD license, and encourage the adoption of this license by other open "
+"source projects. Use of the BSD license is key to encouraging the adoption "
+"of advanced operating system technology, and on many notable occasions has "
+"been pivotal to widespread use of new technology."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:80
msgid ""
-"We accept however that compelling reasons exist to allow "
-"differently-licensed software to be included in the FreeBSD source tree."
+"We accept however that compelling reasons exist to allow differently-"
+"licensed software to be included in the FreeBSD source tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:83
msgid ""
"We require software licensed under some non-BSD licenses to be carefully "
"isolated in the source tree so that it cannot contaminate BSD-only "
"components. Such cautious management encourages licensing clarity and "
"facilitates the production of BSD-only derivative products."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:87
msgid ""
"Unless a special exception is made, no existing BSD-licensed components may "
"be replaced with more restrictively licensed software. We encourage FreeBSD "
"and third party developers to seek the relicensing, dual-licensing, or "
"reimplementing of critical components under the BSD license instead. Such "
"would ease their more integral adoption into the FreeBSD operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/license-guide/_index.adoc:88
#, no-wrap
msgid "Policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:92
msgid ""
"The import of new software licensed under any licenses other than the BSD "
"license and BSD-Like Licenses (as defined below) requires the prior approval "
"of the FreeBSD Core Team. Requests for import must include:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:94
msgid ""
"A list of features or bug fixes that the new version or patches contain, "
"along with evidence that our users need those features. PRs or references "
"to mailing list discussions are ideal forms of evidence."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:96
msgid ""
"This process should be used for all software imports, not just those that "
"require Core Team review. The mere existence of a new version does not "
"justify an import of software to source or ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:98
msgid ""
"A list of FreeBSD branches that may be affected. Expansions of scope "
"require a new request to and approval from the FreeBSD Core Team."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:101
msgid ""
"The Apache License 2.0 is acceptable for use in some cases. The Core Team "
"must approve the import of new Apache License licensed components or the "
"change of license of existing components to the Apache License."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:102
#: documentation/content/en/articles/license-guide/_index.adoc:107
#: documentation/content/en/articles/license-guide/_index.adoc:112
msgid "This license is approved for the following components:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:103
msgid "LLVM toolchain and (with LLVM Exceptions) runtime components."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:106
msgid ""
"The BSD+Patent License is acceptable for use in some cases. The Core Team "
"must approve the import of new BSD+Patent License licensed components or the "
"change of license of existing components to the BSD+Patent License."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:108
msgid "EDK2 derived code related to UEFI functionality"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:111
msgid ""
"The Common Development and Distribution License (CDDL) is acceptable for use "
"in some cases. The Core Team must approve the import of new CDDL licensed "
"components or the change of license of existing components to the CDDL."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:113
msgid "DTrace"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:114
msgid "ZFS filesystem, including kernel support and userland utilities"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:120
msgid ""
"Historically, the phrase 'All Rights Reserved.' was included in all "
-"copyright notices. All the BSD releases had it, in order to comply with the "
-"https://en.wikipedia.org/wiki/Buenos_Aires_Convention[Buenos Aires "
-"Convention of 1910] in the Americas. With the ratification of the "
-"https://en.wikipedia.org/wiki/Berne_Convention[Berne Convention] in 2000 by "
-"Nicaragua, the Buenos Aires Convention -- and the phrase -- became "
-"obsolete. As such, the FreeBSD project recommends that new code omit the "
-"phrase and encourages existing copyright holders to remove it. In 2018, the "
-"project updated its templates to remove it."
+"copyright notices. All the BSD releases had it, to comply with the https://"
+"en.wikipedia.org/wiki/Buenos_Aires_Convention[Buenos Aires Convention of "
+"1910] in the Americas. With the ratification of the https://en.wikipedia."
+"org/wiki/Berne_Convention[Berne Convention] in 2000 by Nicaragua, the Buenos "
+"Aires Convention -- and the phrase -- became obsolete. As such, the FreeBSD "
+"project recommends that new code omit the phrase and encourages existing "
+"copyright holders to remove it. In 2018, the project updated its templates "
+"to remove it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:123
msgid ""
-"Initially, many items in the FreeBSD tree were marked with "
-"BSD-2-Clause-FreeBSD. However, SPDX has obsoleted the license as a variant; "
-"and the SPDX text of the obsolete tag differs enough from the standard "
-"FreeBSD license that it shouldn't be used. A review of its current use is "
-"ongoing."
+"Initially, many items in the FreeBSD tree were marked with BSD-2-Clause-"
+"FreeBSD. However, SPDX has obsoleted the license as a variant; and the SPDX "
+"text of the obsolete tag differs enough from the standard FreeBSD license "
+"that it shouldn't be used. A review of its current use is ongoing."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/license-guide/_index.adoc:124
#, no-wrap
msgid "Acceptable licenses"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:128
msgid ""
"The following licenses are considered to be acceptable BSD-Like Licenses for "
"the purpose of this Policy. Deviations or the use of any other license must "
"be approved by the FreeBSD Core Team:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:130
msgid "The 2 clause version of the BSD license"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:140
msgid "The 3 clause version of the BSD license"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/license-guide/_index.adoc:148
#, no-wrap
msgid ""
"/*-\n"
" * Copyright (c) [year] [your name]\n"
" *\n"
" * SPDX-License-Identifier: BSD-3-Clause\n"
" */\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:150
msgid "The ISC License"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/license-guide/_index.adoc:158
#, no-wrap
msgid ""
"/*-\n"
" * Copyright (c) [year] [copyright holder]\n"
" *\n"
" * SPDX-License-Identifier: ISC\n"
" */\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:160
msgid "The MIT License"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/license-guide/_index.adoc:168
#, no-wrap
msgid ""
"/*-\n"
" * Copyright (c) [year] [copyright holders]\n"
" *\n"
" * SPDX-License-Identifier: MIT\n"
" */\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/license-guide/_index.adoc:169
#, no-wrap
msgid "Software Collection License"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:174
msgid ""
-"The FreeBSD Project licenses its compilation of software as described in "
-"[.filename]#COPYRIGHT# under the BSD-2-Clause license. This license does "
-"not supersede the license of individual files, which is described below. "
-"Files that do not have an explicit license are licensed under the "
-"BSD-2-Clause license."
+"The FreeBSD Project licenses its compilation of software as described in [."
+"filename]#COPYRIGHT# under the BSD-2-Clause license. This license does not "
+"supersede the license of individual files, which is described below. Files "
+"that do not have an explicit license are licensed under the BSD-2-Clause "
+"license."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/license-guide/_index.adoc:175
#, no-wrap
msgid "License File Location"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:187
msgid ""
"To comply with the https://reuse.software/[REUSE Software] standard as much "
"as possible, all license files will be stored in the [.filename]#LICENSES/# "
"directory of the repository. There are three subdirectories under this top "
"level directory. The [.filename]#LICENSES/text/# subdirectory contains, in "
"detached form, the text of all the licenses that are allowed in the FreeBSD "
-"software collection. These files are stored using the "
-"SPDX-License-Identifier name followed by .txt. The "
-"[.filename]#LICENSES/exceptions/# subdirectory has the text of all "
-"exceptions that are allowed in detached form in the FreeBSD software "
-"collection. These files are stored using the exception identifier name "
-"followed by .txt. The [.filename]#LICENSES/other/# contains, in detached "
-"form, the license files references in SPDX-License-Identifier expressions, "
-"but aren't otherwise allowed as detached licenses. All such files must "
-"appear at least once in the FreeBSD software collection, and should be "
-"removed when the last file that references them is removed. Licenses that "
-"have no adequate SPDX matching license must be in "
-"[.filename]#LICENSES/other/# and have a filename that starts with "
-"LicenseRef- followed by a unique idstring. No such files have currently "
-"been identified, but if they are, a full list will appear here."
+"software collection. These files are stored using the SPDX-License-"
+"Identifier name followed by .txt. The [.filename]#LICENSES/exceptions/# "
+"subdirectory has the text of all exceptions that are allowed in detached "
+"form in the FreeBSD software collection. These files are stored using the "
+"exception identifier name followed by .txt. The [.filename]#LICENSES/other/"
+"# contains, in detached form, the license files references in SPDX-License-"
+"Identifier expressions, but aren't otherwise allowed as detached licenses. "
+"All such files must appear at least once in the FreeBSD software collection, "
+"and should be removed when the last file that references them is removed. "
+"Licenses that have no adequate SPDX matching license must be in [."
+"filename]#LICENSES/other/# and have a filename that starts with LicenseRef- "
+"followed by a unique idstring. No such files have currently been "
+"identified, but if they are, a full list will appear here."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:191
msgid ""
"The FreeBSD Project currently does not make use of the `DEP5` files "
"described in the `REUSE Software` standard. The FreeBSD Project has not "
"marked all the files in the tree yet in accordance with this standard, as "
"described later in this document. The FreeBSD Project has not yet included "
"these files in its repositories since this policy is still evolving."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/license-guide/_index.adoc:193
#, no-wrap
msgid "Individual Files License"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:197
msgid ""
"Each individual file in the FreeBSD software collection has its own "
"copyright and license. How they are marked varies and is described in this "
"section."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:201
msgid ""
"A copyright notice identifies who claims the legal copyright to a file. "
"These are provided on a best effort basis by the project. Because "
"copyrights may be legally transferred, the current copyright holder may "
"differ from what is listed in the file."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:210
msgid ""
"A license is a legal document between the contributor and the users of the "
"software granting permission to use the copyrighted portions of the "
"software, subject to certain terms and conditions set forth in the license. "
"Licenses can be expressed in one of two ways in the FreeBSD software "
"collection. Licenses can be explicit in a file. When a license grant is "
"explicit in the file, that file may be used, copied, and modified in "
"accordance with that license. Licenses can also be expressed indirectly, "
"where the text of the license is elsewhere. The project uses the Software "
"Package Data Exchange (SPDX) license identifiers for this purpose, as "
"described in the following subsections. SPDX license identifiers are "
"managed by the SPDX Workgroup at the Linux Foundation, and have been agreed "
"on by partners throughout the industry, tool vendors, and legal teams. For "
"further information see https://spdx.org/ and the following sections for how "
"the FreeBSD Project uses them."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:213
msgid ""
"Entities that contribute fixes and enhancements to the software collection "
"without an explicit license agree to license those changes under the terms "
"that apply to the modified file(s). Project policy, in line with industry "
"practice, only includes a copyright notice from significant contributors to "
"the files in the collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/license-guide/_index.adoc:215
-msgid "There are four types of files in the FreeBSD software collection"
+msgid "There are four types of files in the FreeBSD software collection:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:216
+#: documentation/content/en/articles/license-guide/_index.adoc:217
msgid "Files that have only an explicit copyright notice and license."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:217
+#: documentation/content/en/articles/license-guide/_index.adoc:218
msgid ""
-"Files that have both an explicit copyright notice and license, and a "
-"SPDX-License-Identifier tag."
+"Files that have both an explicit copyright notice and license, and a SPDX-"
+"License-Identifier tag."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:218
+#: documentation/content/en/articles/license-guide/_index.adoc:219
msgid ""
"Files that have only a copyright notice and an SPDX-License-Identifier tag, "
-"but no explicit license"
+"but no explicit license."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:219
-msgid "Files that lack any copyright or license at all"
+#: documentation/content/en/articles/license-guide/_index.adoc:220
+msgid "Files that lack any copyright or license at all."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/license-guide/_index.adoc:220
+#: documentation/content/en/articles/license-guide/_index.adoc:221
#, no-wrap
msgid "Only Copyright and License"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:224
+#: documentation/content/en/articles/license-guide/_index.adoc:225
msgid ""
"Many files in the FreeBSD software collection have both a copyright notice "
"and an explicit license contained in the file. In these cases, the license "
"contained in the file governs."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/license-guide/_index.adoc:225
+#: documentation/content/en/articles/license-guide/_index.adoc:226
#, no-wrap
msgid "Copyright and License with SPDX-License-Identifier expression"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:231
+#: documentation/content/en/articles/license-guide/_index.adoc:232
msgid ""
"Some files in the FreeBSD software collection contain a copyright statement, "
"an SPDX-License-Identifier tag and an explicit license. The explicit "
-"license takes precedence over the SPDX-License-Identifier tag. The "
-"SPDX-License-Identifier tag is the project's best effort attempt to "
-"characterize the license, but is only informative for automated tools. See "
-"<<expressions,SPDX-License-Identifier Expressions>> for how to interpret the "
-"expression."
+"license takes precedence over the SPDX-License-Identifier tag. The SPDX-"
+"License-Identifier tag is the project's best effort attempt to characterize "
+"the license, but is only informative for automated tools. See <<expressions,"
+"SPDX-License-Identifier Expressions>> for how to interpret the expression."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/license-guide/_index.adoc:232
+#: documentation/content/en/articles/license-guide/_index.adoc:233
#, no-wrap
msgid "Only Copyright and SPDX-License-Identifier expression."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:238
+#: documentation/content/en/articles/license-guide/_index.adoc:239
msgid ""
"Some files in the tree contain detached licenses. These files contain only "
"a copyright notice and an SPDX-License-Identifier expression, but no "
"explicit license. See <<expressions,SPDX-License-Identifier Expressions>> "
"for how to interpret the expression. Note: the expressions allowed for "
"detached licenses by the project are a subset of the expressions used "
"informationally or that are defined by the standard."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:240
+#: documentation/content/en/articles/license-guide/_index.adoc:241
msgid ""
"The license for files containing only the SPDX-License-Identifier should be "
"construed to be"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:243
+#: documentation/content/en/articles/license-guide/_index.adoc:244
msgid ""
"Start the license with the copyright notice from the file. Include all the "
"copyright holders."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:246
+#: documentation/content/en/articles/license-guide/_index.adoc:247
msgid ""
-"For each sub-expression, copy the license text from "
-"[.filename]#LICENSE/text/`id`.txt#. When exceptions are present, append "
-"them from [.filename]#src/share/license/exceptions/`id`.txt#. "
-"SPDX-License-Identifier expressions should be construed as described in the "
-"SPDX standard."
+"For each sub-expression, copy the license text from [.filename]#LICENSE/text/"
+"`id`.txt#. When exceptions are present, append them from [.filename]#src/"
+"share/license/exceptions/`id`.txt#. SPDX-License-Identifier expressions "
+"should be construed as described in the SPDX standard."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:249
+#: documentation/content/en/articles/license-guide/_index.adoc:250
msgid ""
"Where `id` is the SPDX short license identifier from the `Identifier` column "
-"of https://spdx.org/licenses/[SPDX Identifiers] or "
-"https://spdx.org/licenses/exceptions-index.html[license exception]. If "
-"there is no file in [.filename]#LICENSE/#, then that license or exception "
-"cannot be specified as a detached license under this section."
+"of https://spdx.org/licenses/[SPDX Identifiers] or https://spdx.org/licenses/"
+"exceptions-index.html[license exception]. If there is no file in [."
+"filename]#LICENSE/#, then that license or exception cannot be specified as a "
+"detached license under this section."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:251
+#: documentation/content/en/articles/license-guide/_index.adoc:252
msgid ""
"When reading the license text that is detached from a file, a number of "
"considerations must be taken to make the detached license make sense."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:254
+#: documentation/content/en/articles/license-guide/_index.adoc:255
msgid ""
"Any reference to a copyright notice shall refer to the copyright notice "
"constructed from the licensed file, not from any copyright notice in the "
"license text file itself. Many SPDX files have sample copyright notices "
"that are understood to be examples only."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:256
+#: documentation/content/en/articles/license-guide/_index.adoc:258
msgid ""
"When names of entities are referred to in the license text, they shall be "
"construed to apply to the list of all copyright holders listed in the "
"copyright notices of the licensed file. For example, the BSD-4-clause "
"license contains the phrase \"This product includes software developed by "
-"the organization\". The phrase 'the organization' should be replaced by the "
+"the organization\". The phrase 'the organization' should be replaced by the "
"copyright holders."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:258
+#: documentation/content/en/articles/license-guide/_index.adoc:260
msgid ""
"When the SPDX offers variations of the license, it is understood the license "
"in the [.filename]#LICENSE/# file represents the exact version of the "
"license selected. The SPDX standard exists to match families of licenses "
"and these variations help match similar licenses that the SPDX organization "
"believes to be legally identical."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:262
+#: documentation/content/en/articles/license-guide/_index.adoc:264
msgid ""
"For licenses that have slight variations in text, the SPDX has guidelines to "
"match them. These guidelines are not relevant here. Contributors wishing "
-"to license under a variant of a SPDX license not contained verbatim in "
-"[.filename]#LICENSE/# cannot use the detached option and must specify the "
+"to license under a variant of a SPDX license not contained verbatim in [."
+"filename]#LICENSE/# cannot use the detached option and must specify the "
"license explicitly."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/license-guide/_index.adoc:263
+#: documentation/content/en/articles/license-guide/_index.adoc:265
#, no-wrap
msgid "Files without Copyright or any License Marking"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:268
+#: documentation/content/en/articles/license-guide/_index.adoc:270
msgid ""
"Some files cannot have suitable comments added to them. In such cases, a "
"license may be found in [.filename]#file.ext.license#. For example, a file "
-"named [.filename]#foo.jpg# may have a license in "
-"[.filename]#foo.jpg.license#, following the REUSE Software conventions."
+"named [.filename]#foo.jpg# may have a license in [.filename]#foo.jpg."
+"license#, following the REUSE Software conventions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:271
+#: documentation/content/en/articles/license-guide/_index.adoc:273
msgid ""
"Files created by the project that lack a copyright notice are understood to "
"fall under the blanket copyright and licensing in [.filename]#COPYRIGHT#. "
"Either the file is a mere recitation of facts, not protectable by Copyright "
"Law, or the content is so trivial as to not warrant the overhead of an "
"explicit license."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:274
+#: documentation/content/en/articles/license-guide/_index.adoc:276
msgid ""
"Files that lack marking and have more than a trivial amount of copyrightable "
"material, or whose author believes them to be improperly marked, should be "
"brought to the attention of the FreeBSD core team. It is the strong policy "
"of the FreeBSD Project to comply with all appropriate licenses."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:276
+#: documentation/content/en/articles/license-guide/_index.adoc:278
msgid ""
"In the future, all such files will be marked explicitly, or follow the REUSE "
"Software [.filename]#.license# convention."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/license-guide/_index.adoc:278
+#: documentation/content/en/articles/license-guide/_index.adoc:280
#, no-wrap
msgid "SPDX-License-Identifier Expressions"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:285
+#: documentation/content/en/articles/license-guide/_index.adoc:287
msgid ""
"An 'SPDX License expression' is used in two contexts in the FreeBSD software "
"collection. First, its full form is used for files that have explicit "
-"license statements contained within the file as well as a summarizing "
-"SPDX-License-Identifier expression. In this context, the full power of "
-"these expressions may be used. Second, in a restricted form described "
-"above, it is used to denote the actual license for a given file. In the "
-"second context, only a subset of this expression is allowed by the project."
+"license statements contained within the file as well as a summarizing SPDX-"
+"License-Identifier expression. In this context, the full power of these "
+"expressions may be used. Second, in a restricted form described above, it "
+"is used to denote the actual license for a given file. In the second "
+"context, only a subset of this expression is allowed by the project."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:289
+#: documentation/content/en/articles/license-guide/_index.adoc:291
msgid ""
"An `SPDX License sub-expression` is either an SPDX short form license "
"identifier from the https://spdx.org/licenses/[SPDX License List], or the "
"combination of two SPDX short form license identifiers separated by \"WITH\" "
"when a https://spdx.org/licenses/exceptions-index.html[license exception] "
"applies. When multiple licenses apply, an expression consists of keywords "
"\"AND\", \"OR\" separating sub-expressions and surrounded by \"(\", \")\" . "
-"The "
-"https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/[full "
-"specification of expressions] spells out all the details and takes "
+"The https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/"
+"[full specification of expressions] spells out all the details and takes "
"precedence when it conflicts with the simplified treatment of this section."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:297
+#: documentation/content/en/articles/license-guide/_index.adoc:299
msgid ""
"Some license identifiers, like [L]GPL, have the option to use only that "
"version, or any later version. SPDX defines the suffix `-or-later` to mean "
"that version of the license or a later version. It defines `-only` to mean "
"only that specific version of the file. There is an old convention to have "
"no suffix (which means what the new '-only' suffix means, but which people "
"confuse for `-or-later`). In addition, affixing a `+` suffix was meant to "
"mean `-or-later`. New files in FreeBSD should not use these two "
"conventions. Old files that use this convention should be converted as "
"appropriate."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/license-guide/_index.adoc:302
+#: documentation/content/en/articles/license-guide/_index.adoc:304
#, no-wrap
msgid ""
" // SPDX-License-Identifier: GPL-2.0-only\n"
" // SPDX-License-Identifier: LGPL-2.1-or-later\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:306
+#: documentation/content/en/articles/license-guide/_index.adoc:308
msgid ""
"`WITH` should be used when a license modifier is needed. In the FreeBSD "
"project, a number of files from LLVM have an exception to the Apache 2.0 "
"license:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/license-guide/_index.adoc:310
+#: documentation/content/en/articles/license-guide/_index.adoc:312
#, no-wrap
msgid " // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:314
+#: documentation/content/en/articles/license-guide/_index.adoc:316
msgid ""
"https://spdx.org/licenses/exceptions-index.html[Exception tags] are managed "
"by SPDX. License exceptions can only be applied to certain licenses, as "
"specified in the exception."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:317
+#: documentation/content/en/articles/license-guide/_index.adoc:319
msgid ""
"`OR` should be used if the file has a choice of license and one license is "
"selected. For example, some dtsi files are available under dual licenses:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/license-guide/_index.adoc:321
+#: documentation/content/en/articles/license-guide/_index.adoc:323
#, no-wrap
msgid " // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/license-guide/_index.adoc:325
+#: documentation/content/en/articles/license-guide/_index.adoc:327
msgid ""
"`AND` should be used if the file has multiple licenses whose terms all apply "
"to use the file. For example, if code has been incorporated by several "
"projects, each with their own license:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/license-guide/_index.adoc:329
+#: documentation/content/en/articles/license-guide/_index.adoc:331
#, no-wrap
msgid " // SPDX-License-Identifier: BSD-2-Clause AND MIT\n"
msgstr ""
diff --git a/documentation/content/en/articles/linux-emulation/_index.po b/documentation/content/en/articles/linux-emulation/_index.po
index a4e50d7ae4..ea76cc08bd 100644
--- a/documentation/content/en/articles/linux-emulation/_index.po
+++ b/documentation/content/en/articles/linux-emulation/_index.po
@@ -1,3231 +1,3230 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-08-07 10:21-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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-emulation/_index.adoc:1
#, no-wrap
msgid "A technical description about the internals of the Linux emulation layer in FreeBSD"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/articles/linux-emulation/_index.adoc:1
#, no-wrap
msgid "Linux® emulation in FreeBSD"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/linux-emulation/_index.adoc:11
#, no-wrap
msgid "Linux(R) emulation in FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:44
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:54
msgid ""
"This masters thesis deals with updating the Linux(R) emulation layer (the so "
"called _Linuxulator_). The task was to update the layer to match the "
"functionality of Linux(R) 2.6. As a reference implementation, the Linux(R) "
"2.6.16 kernel was chosen. The concept is loosely based on the NetBSD "
"implementation. Most of the work was done in the summer of 2006 as a part "
"of the Google Summer of Code students program. The focus was on bringing "
"the _NPTL_ (new POSIX(R) thread library) support into the emulation layer, "
"including _TLS_ (thread local storage), _futexes_ (fast user space mutexes), "
"_PID mangling_, and some other minor things. Many small problems were "
"identified and fixed in the process. My work was integrated into the main "
"FreeBSD source repository and will be shipped in the upcoming 7.0R release. "
"We, the emulation development team, are working on making the Linux(R) 2.6 "
"emulation the default emulation layer in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:56
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/linux-emulation/_index.adoc:60
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:67
msgid ""
"In the last few years the open source UNIX(R) based operating systems "
"started to be widely deployed on server and client machines. Among these "
"operating systems I would like to point out two: FreeBSD, for its BSD "
"heritage, time proven code base and many interesting features and Linux(R) "
"for its wide user base, enthusiastic open developer community and support "
"from large companies. FreeBSD tends to be used on server class machines "
"serving heavy duty networking tasks with less usage on desktop class "
"machines for ordinary users. While Linux(R) has the same usage on servers, "
"but it is used much more by home based users. This leads to a situation "
"where there are many binary only programs available for Linux(R) that lack "
"support for FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:69
msgid ""
"Naturally, a need for the ability to run Linux(R) binaries on a FreeBSD "
"system arises and this is what this thesis deals with: the emulation of the "
"Linux(R) kernel in the FreeBSD operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:72
msgid ""
"During the Summer of 2006 Google Inc. sponsored a project which focused on "
"extending the Linux(R) emulation layer (the so called Linuxulator) in "
"FreeBSD to include Linux(R) 2.6 facilities. This thesis is written as a "
"part of this project."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/linux-emulation/_index.adoc:74
#, no-wrap
msgid "A look inside..."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:80
msgid ""
"In this section we are going to describe every operating system in "
"question. How they deal with syscalls, trapframes etc., all the low-level "
"stuff. We also describe the way they understand common UNIX(R) primitives "
"like what a PID is, what a thread is, etc. In the third subsection we talk "
"about how UNIX(R) on UNIX(R) emulation could be done in general."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:82
#, no-wrap
msgid "What is UNIX(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:94
msgid ""
"UNIX(R) is an operating system with a long history that has influenced "
"almost every other operating system currently in use. Starting in the "
"1960s, its development continues to this day (although in different "
"projects). UNIX(R) development soon forked into two main ways: the BSDs and "
"System III/V families. They mutually influenced themselves by growing a "
"common UNIX(R) standard. Among the contributions originated in BSD we can "
"name virtual memory, TCP/IP networking, FFS, and many others. The System V "
"branch contributed to SysV interprocess communication primitives, copy-on-"
"write, etc. UNIX(R) itself does not exist any more but its ideas have been "
"used by many other operating systems world wide thus forming the so called "
"UNIX(R)-like operating systems. These days the most influential ones are "
"Linux(R), Solaris, and possibly (to some extent) FreeBSD. There are in-"
"company UNIX(R) derivatives (AIX, HP-UX etc.), but these have been more and "
"more migrated to the aforementioned systems. Let us summarize typical "
"UNIX(R) characteristics."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:96
#: documentation/content/en/articles/linux-emulation/_index.adoc:187
#: documentation/content/en/articles/linux-emulation/_index.adoc:279
#, no-wrap
msgid "Technical details"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:104
msgid ""
"Every running program constitutes a process that represents a state of the "
"computation. Running process is divided between kernel-space and user-"
"space. Some operations can be done only from kernel space (dealing with "
"hardware etc.), but the process should spend most of its lifetime in the "
"user space. The kernel is where the management of the processes, hardware, "
"and low-level details take place. The kernel provides a standard unified "
"UNIX(R) API to the user space. The most important ones are covered below."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:106
#, no-wrap
msgid "Communication between kernel and user space process"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:114
msgid ""
"Common UNIX(R) API defines a syscall as a way to issue commands from a user "
"space process to the kernel. The most common implementation is either by "
"using an interrupt or specialized instruction (think of `SYSENTER`/`SYSCALL` "
"instructions for ia32). Syscalls are defined by a number. For example in "
"FreeBSD, the syscall number 85 is the man:swapon[2] syscall and the syscall "
"number 132 is man:mkfifo[2]. Some syscalls need parameters, which are "
"passed from the user-space to the kernel-space in various ways "
"(implementation dependant). Syscalls are synchronous."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:118
msgid ""
"Another possible way to communicate is by using a _trap_. Traps occur "
"asynchronously after some event occurs (division by zero, page fault etc.). "
"A trap can be transparent for a process (page fault) or can result in a "
"reaction like sending a _signal_ (division by zero)."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:120
#, no-wrap
msgid "Communication between processes"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:125
msgid ""
"There are other APIs (System V IPC, shared memory etc.) but the single most "
"important API is signal. Signals are sent by processes or by the kernel and "
"received by processes. Some signals can be ignored or handled by a user "
"supplied routine, some result in a predefined action that cannot be altered "
"or ignored."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:127
#, no-wrap
msgid "Process management"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:137
msgid ""
"Kernel instances are processed first in the system (so called init). Every "
"running process can create its identical copy using the man:fork[2] "
"syscall. Some slightly modified versions of this syscall were introduced "
"but the basic semantic is the same. Every running process can morph into "
"some other process using the man:exec[3] syscall. Some modifications of "
"this syscall were introduced but all serve the same basic purpose. "
"Processes end their lives by calling the man:exit[2] syscall. Every process "
"is identified by a unique number called PID. Every process has a defined "
"parent (identified by its PID)."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:139
#, no-wrap
msgid "Thread management"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:145
msgid ""
"Traditional UNIX(R) does not define any API nor implementation for "
"threading, while POSIX(R) defines its threading API but the implementation "
"is undefined. Traditionally there were two ways of implementing threads. "
"Handling them as separate processes (1:1 threading) or envelope the whole "
"thread group in one process and managing the threading in userspace (1:N "
"threading). Comparing main features of each approach:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:147
msgid "1:1 threading"
msgstr ""
#. type: Bullet: '- '
#: documentation/content/en/articles/linux-emulation/_index.adoc:149
msgid "heavyweight threads"
msgstr ""
#. type: Bullet: '- '
#: documentation/content/en/articles/linux-emulation/_index.adoc:150
msgid ""
"the scheduling cannot be altered by the user (slightly mitigated by the "
"POSIX(R) API)"
msgstr ""
#. type: Bullet: '+ '
#: documentation/content/en/articles/linux-emulation/_index.adoc:151
msgid "no syscall wrapping necessary"
msgstr ""
#. type: Bullet: '+ '
#: documentation/content/en/articles/linux-emulation/_index.adoc:152
msgid "can utilize multiple CPUs"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:154
msgid "1:N threading"
msgstr ""
#. type: Bullet: '+ '
#: documentation/content/en/articles/linux-emulation/_index.adoc:156
msgid "lightweight threads"
msgstr ""
#. type: Bullet: '+ '
#: documentation/content/en/articles/linux-emulation/_index.adoc:157
msgid "scheduling can be easily altered by the user"
msgstr ""
#. type: Bullet: '- '
#: documentation/content/en/articles/linux-emulation/_index.adoc:158
msgid "syscalls must be wrapped"
msgstr ""
#. type: Bullet: '- '
#: documentation/content/en/articles/linux-emulation/_index.adoc:159
msgid "cannot utilize more than one CPU"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:161
#, no-wrap
msgid "What is FreeBSD?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:169
msgid ""
"The FreeBSD project is one of the oldest open source operating systems "
"currently available for daily use. It is a direct descendant of the genuine "
"UNIX(R) so it could be claimed that it is a true UNIX(R) although licensing "
"issues do not permit that. The start of the project dates back to the early "
"1990's when a crew of fellow BSD users patched the 386BSD operating system. "
"Based on this patchkit a new operating system arose named FreeBSD for its "
"liberal license. Another group created the NetBSD operating system with "
"different goals in mind. We will focus on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:174
msgid ""
"FreeBSD is a modern UNIX(R)-based operating system with all the features of "
"UNIX(R). Preemptive multitasking, multiuser facilities, TCP/IP networking, "
"memory protection, symmetric multiprocessing support, virtual memory with "
"merged VM and buffer cache, they are all there. One of the interesting and "
"extremely useful features is the ability to emulate other UNIX(R)-like "
"operating systems. As of December 2006 and 7-CURRENT development, the "
"following emulation functionalities are supported:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:176
msgid "FreeBSD/i386 emulation on FreeBSD/amd64"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:177
msgid "FreeBSD/i386 emulation on FreeBSD/ia64"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:178
msgid "Linux(R)-emulation of Linux(R) operating system on FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:179
msgid "NDIS-emulation of Windows networking drivers interface"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:180
msgid "NetBSD-emulation of NetBSD operating system"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:181
msgid "PECoff-support for PECoff FreeBSD executables"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:182
msgid "SVR4-emulation of System V revision 4 UNIX(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:185
msgid ""
"Actively developed emulations are the Linux(R) layer and various FreeBSD-on-"
"FreeBSD layers. Others are not supposed to work properly nor be usable "
"these days."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:195
msgid ""
"FreeBSD is traditional flavor of UNIX(R) in the sense of dividing the run of "
"processes into two halves: kernel space and user space run. There are two "
"types of process entry to the kernel: a syscall and a trap. There is only "
"one way to return. In the subsequent sections we will describe the three "
"gates to/from the kernel. The whole description applies to the i386 "
"architecture as the Linuxulator only exists there but the concept is similar "
"on other architectures. The information was taken from [1] and the source "
"code."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:197
#, no-wrap
msgid "System entries"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:204
msgid ""
"FreeBSD has an abstraction called an execution class loader, which is a "
"wedge into the man:execve[2] syscall. This employs a structure `sysentvec`, "
"which describes an executable ABI. It contains things like errno "
"translation table, signal translation table, various functions to serve "
"syscall needs (stack fixup, coredumping, etc.). Every ABI the FreeBSD "
"kernel wants to support must define this structure, as it is used later in "
"the syscall processing code and at some other places. System entries are "
"handled by trap handlers, where we can access both the kernel-space and the "
"user-space at once."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:206
#: documentation/content/en/articles/linux-emulation/_index.adoc:288
#, no-wrap
msgid "Syscalls"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:209
msgid ""
-"Syscalls on FreeBSD are issued by executing interrupt `0x80` with register `"
-"%eax` set to a desired syscall number with arguments passed on the stack."
+"Syscalls on FreeBSD are issued by executing interrupt `0x80` with register "
+"`%eax` set to a desired syscall number with arguments passed on the stack."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:215
msgid ""
"When a process issues an interrupt `0x80`, the `int0x80` syscall trap "
"handler is issued (defined in [.filename]#sys/i386/i386/exception.s#), which "
"prepares arguments (i.e. copies them on to the stack) for a call to a C "
"function man:syscall[2] (defined in [.filename]#sys/i386/i386/trap.c#), "
"which processes the passed in trapframe. The processing consists of "
"preparing the syscall (depending on the `sysvec` entry), determining if the "
"syscall is 32-bit or 64-bit one (changes size of the parameters), then the "
"parameters are copied, including the syscall. Next, the actual syscall "
"function is executed with processing of the return code (special cases for "
"`ERESTART` and `EJUSTRETURN` errors). Finally an `userret()` is scheduled, "
"switching the process back to the users-pace. The parameters to the actual "
"syscall handler are passed in the form of `struct thread *td`, `struct "
"syscall args *` arguments where the second parameter is a pointer to the "
"copied in structure of parameters."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:217
#: documentation/content/en/articles/linux-emulation/_index.adoc:307
#: documentation/content/en/articles/linux-emulation/_index.adoc:794
#, no-wrap
msgid "Traps"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:224
msgid ""
"Handling of traps in FreeBSD is similar to the handling of syscalls. "
"Whenever a trap occurs, an assembler handler is called. It is chosen "
"between alltraps, alltraps with regs pushed or calltrap depending on the "
"type of the trap. This handler prepares arguments for a call to a C "
"function `trap()` (defined in [.filename]#sys/i386/i386/trap.c#), which then "
"processes the occurred trap. After the processing it might send a signal to "
"the process and/or exit to userland using `userret()`."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:226
#: documentation/content/en/articles/linux-emulation/_index.adoc:312
#, no-wrap
msgid "Exits"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:230
msgid ""
"Exits from kernel to userspace happen using the assembler routine `doreti` "
"regardless of whether the kernel was entered via a trap or via a syscall. "
"This restores the program status from the stack and returns to the userspace."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:232
#: documentation/content/en/articles/linux-emulation/_index.adoc:318
#, no-wrap
msgid "UNIX(R) primitives"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:238
msgid ""
"FreeBSD operating system adheres to the traditional UNIX(R) scheme, where "
"every process has a unique identification number, the so called _PID_ "
"(Process ID). PID numbers are allocated either linearly or randomly ranging "
"from `0` to `PID_MAX`. The allocation of PID numbers is done using linear "
"searching of PID space. Every thread in a process receives the same PID "
"number as result of the man:getpid[2] call."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:249
msgid ""
"There are currently two ways to implement threading in FreeBSD. The first "
"way is M:N threading followed by the 1:1 threading model. The default "
"library used is M:N threading (`libpthread`) and you can switch at runtime "
"to 1:1 threading (`libthr`). The plan is to switch to 1:1 library by "
"default soon. Although those two libraries use the same kernel primitives, "
"they are accessed through different API(es). The M:N library uses the "
"`kse_*` family of syscalls while the 1:1 library uses the `thr_*` family of "
"syscalls. Due to this, there is no general concept of thread ID shared "
"between kernel and userspace. Of course, both threading libraries implement "
"the pthread thread ID API. Every kernel thread (as described by `struct "
"thread`) has td tid identifier but this is not directly accessible from "
"userland and solely serves the kernel's needs. It is also used for 1:1 "
"threading library as pthread's thread ID but handling of this is internal to "
"the library and cannot be relied on."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:257
msgid ""
"As stated previously there are two implementations of threading in FreeBSD. "
"The M:N library divides the work between kernel space and userspace. Thread "
"is an entity that gets scheduled in the kernel but it can represent various "
"number of userspace threads. M userspace threads get mapped to N kernel "
"threads thus saving resources while keeping the ability to exploit "
"multiprocessor parallelism. Further information about the implementation "
"can be obtained from the man page or [1]. The 1:1 library directly maps a "
"userland thread to a kernel thread thus greatly simplifying the scheme. "
"None of these designs implement a fairness mechanism (such a mechanism was "
"implemented but it was removed recently because it caused serious slowdown "
"and made the code more difficult to deal with)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:259
#, no-wrap
msgid "What is Linux(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:263
msgid ""
"Linux(R) is a UNIX(R)-like kernel originally developed by Linus Torvalds, "
"and now being contributed to by a massive crowd of programmers all around "
"the world. From its mere beginnings to today, with wide support from "
"companies such as IBM or Google, Linux(R) is being associated with its fast "
"development pace, full hardware support and benevolent dictator model of "
"organization."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:267
msgid ""
"Linux(R) development started in 1991 as a hobbyist project at University of "
"Helsinki in Finland. Since then it has obtained all the features of a "
"modern UNIX(R)-like OS: multiprocessing, multiuser support, virtual memory, "
"networking, basically everything is there. There are also highly advanced "
"features like virtualization etc."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:270
msgid ""
"As of 2006 Linux(R) seems to be the most widely used open source operating "
"system with support from independent software vendors like Oracle, "
"RealNetworks, Adobe, etc. Most of the commercial software distributed for "
"Linux(R) can only be obtained in a binary form so recompilation for other "
"operating systems is impossible."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:275
msgid ""
"Most of the Linux(R) development happens in a Git version control system. "
"Git is a distributed system so there is no central source of the Linux(R) "
"code, but some branches are considered prominent and official. The version "
"number scheme implemented by Linux(R) consists of four numbers A.B.C.D. "
"Currently development happens in 2.6.C.D, where C represents major version, "
"where new features are added or changed while D is a minor version for "
"bugfixes only."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:277
msgid "More information can be obtained from [3]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:286
msgid ""
"Linux(R) follows the traditional UNIX(R) scheme of dividing the run of a "
"process in two halves: the kernel and user space. The kernel can be entered "
"in two ways: via a trap or via a syscall. The return is handled only in one "
"way. The further description applies to Linux(R) 2.6 on the i386(TM) "
"architecture. This information was taken from [2]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:296
msgid ""
"Syscalls in Linux(R) are performed (in userspace) using `syscallX` macros "
"where X substitutes a number representing the number of parameters of the "
"given syscall. This macro translates to a code that loads `%eax` register "
"with a number of the syscall and executes interrupt `0x80`. After this "
"syscall return is called, which translates negative return values to "
"positive `errno` values and sets `res` to `-1` in case of an error. "
"Whenever the interrupt `0x80` is called the process enters the kernel in "
"system call trap handler. This routine saves all registers on the stack and "
"calls the selected syscall entry. Note that the Linux(R) calling convention "
"expects parameters to the syscall to be passed via registers as shown here:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:298
msgid "parameter -> `%ebx`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:299
msgid "parameter -> `%ecx`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:300
msgid "parameter -> `%edx`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:301
msgid "parameter -> `%esi`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:302
msgid "parameter -> `%edi`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:303
msgid "parameter -> `%ebp`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:305
msgid ""
"There are some exceptions to this, where Linux(R) uses different calling "
"convention (most notably the `clone` syscall)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:310
msgid ""
"The trap handlers are introduced in [.filename]#arch/i386/kernel/traps.c# "
"and most of these handlers live in [.filename]#arch/i386/kernel/entry.S#, "
"where handling of the traps happens."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:316
msgid ""
"Return from the syscall is managed by syscall man:exit[3], which checks for "
"the process having unfinished work, then checks whether we used user-"
"supplied selectors. If this happens stack fixing is applied and finally the "
"registers are restored from the stack and the process returns to the "
"userspace."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:327
msgid ""
"In the 2.6 version, the Linux(R) operating system redefined some of the "
"traditional UNIX(R) primitives, notably PID, TID and thread. PID is defined "
"not to be unique for every process, so for some processes (threads) man:"
"getppid[2] returns the same value. Unique identification of process is "
"provided by TID. This is because _NPTL_ (New POSIX(R) Thread Library) "
"defines threads to be normal processes (so called 1:1 threading). Spawning "
"a new process in Linux(R) 2.6 happens using the `clone` syscall (fork "
"variants are reimplemented using it). This clone syscall defines a set of "
"flags that affect behavior of the cloning process regarding thread "
"implementation. The semantic is a bit fuzzy as there is no single flag "
"telling the syscall to create a thread."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:329
msgid "Implemented clone flags are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:331
msgid "`CLONE_VM` - processes share their memory space"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:332
msgid "`CLONE_FS` - share umask, cwd and namespace"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:333
msgid "`CLONE_FILES` - share open files"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:334
msgid "`CLONE_SIGHAND` - share signal handlers and blocked signals"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:335
msgid "`CLONE_PARENT` - share parent"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:336
msgid "`CLONE_THREAD` - be thread (further explanation below)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:337
msgid "`CLONE_NEWNS` - new namespace"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:338
msgid "`CLONE_SYSVSEM` - share SysV undo structures"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:339
msgid "`CLONE_SETTLS` - setup TLS at supplied address"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:340
msgid "`CLONE_PARENT_SETTID` - set TID in the parent"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:341
msgid "`CLONE_CHILD_CLEARTID` - clear TID in the child"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:342
msgid "`CLONE_CHILD_SETTID` - set TID in the child"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:348
msgid ""
"`CLONE_PARENT` sets the real parent to the parent of the caller. This is "
"useful for threads because if thread A creates thread B we want thread B to "
"be parented to the parent of the whole thread group. `CLONE_THREAD` does "
"exactly the same thing as `CLONE_PARENT`, `CLONE_VM` and `CLONE_SIGHAND`, "
"rewrites PID to be the same as PID of the caller, sets exit signal to be "
"none and enters the thread group. `CLONE_SETTLS` sets up GDT entries for "
"TLS handling. The `CLONE_*_*TID` set of flags sets/clears user supplied "
"address to TID or 0."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:352
msgid ""
"As you can see the `CLONE_THREAD` does most of the work and does not seem to "
"fit the scheme very well. The original intention is unclear (even for "
"authors, according to comments in the code) but I think originally there was "
"one threading flag, which was then parcelled among many other flags but this "
"separation was never fully finished. It is also unclear what this partition "
"is good for as glibc does not use that so only hand-written use of the clone "
"permits a programmer to access this features."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:355
msgid ""
"For non-threaded programs the PID and TID are the same. For threaded "
"programs the first thread PID and TID are the same and every created thread "
"shares the same PID and gets assigned a unique TID (because `CLONE_THREAD` "
"is passed in) also parent is shared for all processes forming this threaded "
"program."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:357
msgid ""
"The code that implements man:pthread_create[3] in NPTL defines the clone "
"flags like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:361
#, no-wrap
msgid "int clone_flags = (CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGNAL\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:363
#, no-wrap
msgid " | CLONE_SETTLS | CLONE_PARENT_SETTID\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:366
#, no-wrap
msgid ""
"| CLONE_CHILD_CLEARTID | CLONE_SYSVSEM\n"
"#if __ASSUME_NO_CLONE_DETACHED == 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:369
#, no-wrap
msgid ""
"| CLONE_DETACHED\n"
"#endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:371
#, no-wrap
msgid "| 0);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:374
msgid "The `CLONE_SIGNAL` is defined like"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:378
#, no-wrap
msgid "#define CLONE_SIGNAL (CLONE_SIGHAND | CLONE_THREAD)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:381
msgid "the last 0 means no signal is sent when any of the threads exits."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:383
#, no-wrap
msgid "What is emulation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:388
msgid ""
"According to a dictionary definition, emulation is the ability of a program "
"or device to imitate another program or device. This is achieved by "
"providing the same reaction to a given stimulus as the emulated object. In "
"practice, the software world mostly sees three types of emulation - a "
"program used to emulate a machine (QEMU, various game console emulators "
"etc.), software emulation of a hardware facility (OpenGL emulators, floating "
"point units emulation etc.) and operating system emulation (either in kernel "
"of the operating system or as a userspace program)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:395
msgid ""
"Emulation is usually used in a place, where using the original component is "
"not feasible nor possible at all. For example someone might want to use a "
"program developed for a different operating system than they use. Then "
"emulation comes in handy. Sometimes there is no other way but to use "
"emulation - e.g. when the hardware device you try to use does not exist (yet/"
"anymore) then there is no other way but emulation. This happens often when "
"porting an operating system to a new (non-existent) platform. Sometimes it "
"is just cheaper to emulate."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:407
msgid ""
"Looking from an implementation point of view, there are two main approaches "
"to the implementation of emulation. You can either emulate the whole thing "
"- accepting possible inputs of the original object, maintaining inner state "
"and emitting correct output based on the state and/or input. This kind of "
"emulation does not require any special conditions and basically can be "
"implemented anywhere for any device/program. The drawback is that "
"implementing such emulation is quite difficult, time-consuming and error-"
"prone. In some cases we can use a simpler approach. Imagine you want to "
"emulate a printer that prints from left to right on a printer that prints "
"from right to left. It is obvious that there is no need for a complex "
"emulation layer but simply reversing of the printed text is sufficient. "
"Sometimes the emulating environment is very similar to the emulated one so "
"just a thin layer of some translation is necessary to provide fully working "
"emulation! As you can see this is much less demanding to implement, so less "
"time-consuming and error-prone than the previous approach. But the "
"necessary condition is that the two environments must be similar enough. "
"The third approach combines the two previous. Most of the time the objects "
"do not provide the same capabilities so in a case of emulating the more "
"powerful one on the less powerful we have to emulate the missing features "
"with full emulation described above."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:410
msgid ""
"This master thesis deals with emulation of UNIX(R) on UNIX(R), which is "
"exactly the case, where only a thin layer of translation is sufficient to "
"provide full emulation. The UNIX(R) API consists of a set of syscalls, "
"which are usually self contained and do not affect some global kernel state."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:412
msgid ""
"There are a few syscalls that affect inner state but this can be dealt with "
"by providing some structures that maintain the extra state."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:416
msgid ""
"No emulation is perfect and emulations tend to lack some parts but this "
"usually does not cause any serious drawbacks. Imagine a game console "
"emulator that emulates everything but music output. No doubt that the games "
"are playable and one can use the emulator. It might not be that comfortable "
"as the original game console but its an acceptable compromise between price "
"and comfort."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:420
msgid ""
"The same goes with the UNIX(R) API. Most programs can live with a very "
"limited set of syscalls working. Those syscalls tend to be the oldest ones "
"(man:read[2]/man:write[2], man:fork[2] family, man:signal[3] handling, man:"
"exit[3], man:socket[2] API) hence it is easy to emulate because their "
"semantics is shared among all UNIX(R)es, which exist todays."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/linux-emulation/_index.adoc:422
#, no-wrap
msgid "Emulation"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:424
#, no-wrap
msgid "How emulation works in FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:429
msgid ""
"As stated earlier, FreeBSD supports running binaries from several other "
"UNIX(R)es. This works because FreeBSD has an abstraction called the "
"execution class loader. This wedges into the man:execve[2] syscall, so when "
"man:execve[2] is about to execute a binary it examines its type."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:435
msgid ""
"There are basically two types of binaries in FreeBSD. Shell-like text "
"scripts which are identified by `#!` as their first two characters and "
"normal (typically _ELF_) binaries, which are a representation of a compiled "
"executable object. The vast majority (one could say all of them) of "
"binaries in FreeBSD are from type ELF. ELF files contain a header, which "
"specifies the OS ABI for this ELF file. By reading this information, the "
"operating system can accurately determine what type of binary the given file "
"is."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:441
msgid ""
"Every OS ABI must be registered in the FreeBSD kernel. This applies to the "
"FreeBSD native OS ABI, as well. So when man:execve[2] executes a binary it "
"iterates through the list of registered APIs and when it finds the right one "
"it starts to use the information contained in the OS ABI description (its "
"syscall table, `errno` translation table, etc.). So every time the process "
"calls a syscall, it uses its own set of syscalls instead of some global "
"one. This effectively provides a very elegant and easy way of supporting "
"execution of various binary formats."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:446
msgid ""
"The nature of emulation of different OSes (and also some other subsystems) "
"led developers to invite a handler event mechanism. There are various "
"places in the kernel, where a list of event handlers are called. Every "
"subsystem can register an event handler and they are called accordingly. "
"For example, when a process exits there is a handler called that possibly "
"cleans up whatever the subsystem needs to be cleaned."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:448
msgid ""
"Those simple facilities provide basically everything that is needed for the "
"emulation infrastructure and in fact these are basically the only things "
"necessary to implement the Linux(R) emulation layer."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:450
#, no-wrap
msgid "Common primitives in the FreeBSD kernel"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:454
msgid ""
"Emulation layers need some support from the operating system. I am going to "
"describe some of the supported primitives in the FreeBSD operating system."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:456
#, no-wrap
msgid "Locking primitives"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:459
msgid "Contributed by: `{attilio}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:461
msgid ""
"The FreeBSD synchronization primitive set is based on the idea to supply a "
"rather huge number of different primitives in a way that the better one can "
"be used for every particular, appropriate situation."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:463
msgid ""
"To a high level point of view you can consider three kinds of "
"synchronization primitives in the FreeBSD kernel:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:465
msgid "atomic operations and memory barriers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:466
msgid "locks"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:467
msgid "scheduling barriers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:470
msgid ""
"Below there are descriptions for the 3 families. For every lock, you should "
"really check the linked manpage (where possible) for more detailed "
"explanations."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:472
#, no-wrap
msgid "Atomic operations and memory barriers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:483
msgid ""
"Atomic operations are implemented through a set of functions performing "
"simple arithmetics on memory operands in an atomic way with respect to "
"external events (interrupts, preemption, etc.). Atomic operations can "
"guarantee atomicity just on small data types (in the magnitude order of the "
"`.long.` architecture C data type), so should be rarely used directly in the "
"end-level code, if not only for very simple operations (like flag setting in "
"a bitmap, for example). In fact, it is rather simple and common to write "
"down a wrong semantic based on just atomic operations (usually referred as "
"lock-less). The FreeBSD kernel offers a way to perform atomic operations in "
"conjunction with a memory barrier. The memory barriers will guarantee that "
"an atomic operation will happen following some specified ordering with "
"respect to other memory accesses. For example, if we need that an atomic "
"operation happen just after all other pending writes (in terms of "
"instructions reordering buffers activities) are completed, we need to "
"explicitly use a memory barrier in conjunction to this atomic operation. So "
"it is simple to understand why memory barriers play a key role for higher-"
"level locks building (just as refcounts, mutexes, etc.). For a detailed "
"explanatory on atomic operations, please refer to man:atomic[9]. It is far, "
"however, noting that atomic operations (and memory barriers as well) should "
"ideally only be used for building front-ending locks (as mutexes)."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:485
#, no-wrap
msgid "Refcounts"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:491
msgid ""
"Refcounts are interfaces for handling reference counters. They are "
"implemented through atomic operations and are intended to be used just for "
"cases, where the reference counter is the only one thing to be protected, so "
"even something like a spin-mutex is deprecated. Using the refcount "
"interface for structures, where a mutex is already used is often wrong since "
"we should probably close the reference counter in some already protected "
"paths. A manpage discussing refcount does not exist currently, just check [."
"filename]#sys/refcount.h# for an overview of the existing API."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:493
#, no-wrap
msgid "Locks"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:498
msgid ""
"FreeBSD kernel has huge classes of locks. Every lock is defined by some "
"peculiar properties, but probably the most important is the event linked to "
"contesting holders (or in other terms, the behavior of threads unable to "
"acquire the lock). FreeBSD's locking scheme presents three different "
"behaviors for contenders:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:500
msgid "spinning"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:501
msgid "blocking"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:502
msgid "sleeping"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:506
msgid "numbers are not casual"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:509
#, no-wrap
msgid "Spinning locks"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:515
msgid ""
"Spin locks let waiters to spin until they cannot acquire the lock. An "
"important matter do deal with is when a thread contests on a spin lock if it "
"is not descheduled. Since the FreeBSD kernel is preemptive, this exposes "
"spin lock at the risk of deadlocks that can be solved just disabling "
"interrupts while they are acquired. For this and other reasons (like lack "
"of priority propagation support, poorness in load balancing schemes between "
"CPUs, etc.), spin locks are intended to protect very small paths of code, or "
"ideally not to be used at all if not explicitly requested (explained later)."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:517
#, no-wrap
msgid "Blocking"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:522
msgid ""
"Block locks let waiters to be descheduled and blocked until the lock owner "
-"does not drop it and wakes up one or more contenders. In order to avoid "
-"starvation issues, blocking locks do priority propagation from the waiters "
-"to the owner. Block locks must be implemented through the turnstile "
-"interface and are intended to be the most used kind of locks in the kernel, "
-"if no particular conditions are met."
+"does not drop it and wakes up one or more contenders. To avoid starvation "
+"issues, blocking locks do priority propagation from the waiters to the "
+"owner. Block locks must be implemented through the turnstile interface and "
+"are intended to be the most used kind of locks in the kernel, if no "
+"particular conditions are met."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:524
#, no-wrap
msgid "Sleeping"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:529
msgid ""
"Sleep locks let waiters to be descheduled and fall asleep until the lock "
"holder does not drop it and wakes up one or more waiters. Since sleep locks "
"are intended to protect large paths of code and to cater asynchronous "
"events, they do not do any form of priority propagation. They must be "
"implemented through the man:sleepqueue[9] interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:533
msgid ""
"The order used to acquire locks is very important, not only for the "
"possibility to deadlock due at lock order reversals, but even because lock "
"acquisition should follow specific rules linked to locks natures. If you "
"give a look at the table above, the practical rule is that if a thread holds "
"a lock of level n (where the level is the number listed close to the kind of "
"lock) it is not allowed to acquire a lock of superior levels, since this "
"would break the specified semantic for a path. For example, if a thread "
"holds a block lock (level 2), it is allowed to acquire a spin lock (level 1) "
"but not a sleep lock (level 3), since block locks are intended to protect "
"smaller paths than sleep lock (these rules are not about atomic operations "
"or scheduling barriers, however)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:535
msgid "This is a list of lock with their respective behaviors:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:537
msgid "spin mutex - spinning - man:mutex[9]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:538
msgid "sleep mutex - blocking - man:mutex[9]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:539
msgid "pool mutex - blocking - man:mtx[pool]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:540
msgid ""
"sleep family - sleeping - man:sleep[9] pause tsleep msleep msleep spin "
"msleep rw msleep sx"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:541
msgid "condvar - sleeping - man:condvar[9]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:542
msgid "rwlock - blocking - man:rwlock[9]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:543
msgid "sxlock - sleeping - man:sx[9]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:544
msgid "lockmgr - sleeping - man:lockmgr[9]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:545
msgid "semaphores - sleeping - man:sema[9]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:547
msgid ""
"Among these locks only mutexes, sxlocks, rwlocks and lockmgrs are intended "
"to handle recursion, but currently recursion is only supported by mutexes "
"and lockmgrs."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:549
#, no-wrap
msgid "Scheduling barriers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:553
msgid ""
-"Scheduling barriers are intended to be used in order to drive scheduling of "
+"Scheduling barriers are intended to be used to drive scheduling of "
"threading. They consist mainly of three different stubs:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:555
msgid "critical sections (and preemption)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:556
msgid "sched_bind"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:557
msgid "sched_pin"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:559
msgid ""
"Generally, these should be used only in a particular context and even if "
"they can often replace locks, they should be avoided because they do not let "
"the diagnose of simple eventual problems with locking debugging tools (as "
"man:witness[4])."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:561
#, no-wrap
msgid "Critical sections"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:569
msgid ""
"The FreeBSD kernel has been made preemptive basically to deal with interrupt "
-"threads. In fact, in order to avoid high interrupt latency, time-sharing "
-"priority threads can be preempted by interrupt threads (in this way, they do "
-"not need to wait to be scheduled as the normal path previews). Preemption, "
-"however, introduces new racing points that need to be handled, as well. "
-"Often, in order to deal with preemption, the simplest thing to do is to "
-"completely disable it. A critical section defines a piece of code "
-"(borderlined by the pair of functions man:critical_enter[9] and man:"
-"critical_exit[9], where preemption is guaranteed to not happen (until the "
-"protected code is fully executed). This can often replace a lock "
-"effectively but should be used carefully in order to not lose the whole "
-"advantage that preemption brings."
+"threads. In fact, to avoid high interrupt latency, time-sharing priority "
+"threads can be preempted by interrupt threads (in this way, they do not need "
+"to wait to be scheduled as the normal path previews). Preemption, however, "
+"introduces new racing points that need to be handled, as well. Often, to "
+"deal with preemption, the simplest thing to do is to completely disable it. "
+"A critical section defines a piece of code (borderlined by the pair of "
+"functions man:critical_enter[9] and man:critical_exit[9], where preemption "
+"is guaranteed to not happen (until the protected code is fully executed). "
+"This can often replace a lock effectively but should be used carefully to "
+"not lose the whole advantage that preemption brings."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:571
#, no-wrap
msgid "sched_pin/sched_unpin"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:577
msgid ""
"Another way to deal with preemption is the `sched_pin()` interface. If a "
"piece of code is closed in the `sched_pin()` and `sched_unpin()` pair of "
"functions it is guaranteed that the respective thread, even if it can be "
"preempted, it will always be executed on the same CPU. Pinning is very "
"effective in the particular case when we have to access at per-cpu datas and "
"we assume other threads will not change those data. The latter condition "
"will determine a critical section as a too strong condition for our code."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:579
#, no-wrap
msgid "sched_bind/sched_unbind"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:584
msgid ""
-"`sched_bind` is an API used in order to bind a thread to a particular CPU "
-"for all the time it executes the code, until a `sched_unbind` function call "
-"does not unbind it. This feature has a key role in situations where you "
-"cannot trust the current state of CPUs (for example, at very early stages of "
-"boot), as you want to avoid your thread to migrate on inactive CPUs. Since "
+"`sched_bind` is an API used to bind a thread to a particular CPU for all the "
+"time it executes the code, until a `sched_unbind` function call does not "
+"unbind it. This feature has a key role in situations where you cannot trust "
+"the current state of CPUs (for example, at very early stages of boot), as "
+"you want to avoid your thread to migrate on inactive CPUs. Since "
"`sched_bind` and `sched_unbind` manipulate internal scheduler structures, "
"they need to be enclosed in `sched_lock` acquisition/releasing when used."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:586
#, no-wrap
msgid "Proc structure"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:592
msgid ""
"Various emulation layers sometimes require some additional per-process "
"data. It can manage separate structures (a list, a tree etc.) containing "
"these data for every process but this tends to be slow and memory "
"consuming. To solve this problem the FreeBSD `proc` structure contains "
"`p_emuldata`, which is a void pointer to some emulation layer specific "
"data. This `proc` entry is protected by the proc mutex."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:597
msgid ""
"The FreeBSD `proc` structure contains a `p_sysent` entry that identifies, "
"which ABI this process is running. In fact, it is a pointer to the "
"`sysentvec` described above. So by comparing this pointer to the address "
"where the `sysentvec` structure for the given ABI is stored we can "
"effectively determine whether the process belongs to our emulation layer. "
"The code typically looks like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:602
#, no-wrap
msgid ""
"if (__predict_true(p->p_sysent != &elf_Linux(R)_sysvec))\n"
"\t return;\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:606
msgid ""
"As you can see, we effectively use the `__predict_true` modifier to collapse "
"the most common case (FreeBSD process) to a simple return operation thus "
"preserving high performance. This code should be turned into a macro "
"because currently it is not very flexible, i.e. we do not support Linux(R)64 "
"emulation nor A.OUT Linux(R) processes on i386."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:608
#, no-wrap
msgid "VFS"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:617
msgid ""
"The FreeBSD VFS subsystem is very complex but the Linux(R) emulation layer "
"uses just a small subset via a well defined API. It can either operate on "
"vnodes or file handlers. Vnode represents a virtual vnode, i.e. "
"representation of a node in VFS. Another representation is a file handler, "
"which represents an opened file from the perspective of a process. A file "
"handler can represent a socket or an ordinary file. A file handler contains "
"a pointer to its vnode. More then one file handler can point to the same "
"vnode."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:619
#, no-wrap
msgid "namei"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:626
msgid ""
"The man:namei[9] routine is a central entry point to pathname lookup and "
"translation. It traverses the path point by point from the starting point "
"to the end point using lookup function, which is internal to VFS. The man:"
"namei[9] syscall can cope with symlinks, absolute and relative paths. When "
"a path is looked up using man:namei[9] it is inputed to the name cache. This "
"behavior can be suppressed. This routine is used all over the kernel and "
"its performance is very critical."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:628
#, no-wrap
msgid "vn_fullpath"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:634
msgid ""
"The man:vn_fullpath[9] function takes the best effort to traverse VFS name "
"cache and returns a path for a given (locked) vnode. This process is "
"unreliable but works just fine for the most common cases. The unreliability "
"is because it relies on VFS cache (it does not traverse the on medium "
"structures), it does not work with hardlinks, etc. This routine is used in "
"several places in the Linuxulator."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:636
#, no-wrap
msgid "Vnode operations"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:639
msgid ""
"`fgetvp` - given a thread and a file descriptor number it returns the "
"associated vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:640
msgid "man:vn_lock[9] - locks a vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:641
msgid "`vn_unlock` - unlocks a vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:642
msgid "man:VOP_READDIR[9] - reads a directory referenced by a vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:643
msgid ""
"man:VOP_GETATTR[9] - gets attributes of a file or a directory referenced by "
"a vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:644
msgid "man:VOP_LOOKUP[9] - looks up a path to a given directory"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:645
msgid "man:VOP_OPEN[9] - opens a file referenced by a vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:646
msgid "man:VOP_CLOSE[9] - closes a file referenced by a vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:647
msgid "man:vput[9] - decrements the use count for a vnode and unlocks it"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:648
msgid "man:vrele[9] - decrements the use count for a vnode"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:649
msgid "man:vref[9] - increments the use count for a vnode"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:651
#, no-wrap
msgid "File handler operations"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:654
msgid ""
"`fget` - given a thread and a file descriptor number it returns associated "
"file handler and references it"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:655
msgid "`fdrop` - drops a reference to a file handler"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:656
msgid "`fhold` - references a file handler"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/linux-emulation/_index.adoc:658
#, no-wrap
msgid "Linux(R) emulation layer -MD part"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:666
msgid ""
"This section deals with implementation of Linux(R) emulation layer in "
"FreeBSD operating system. It first describes the machine dependent part "
"talking about how and where interaction between userland and kernel is "
"implemented. It talks about syscalls, signals, ptrace, traps, stack fixup. "
"This part discusses i386 but it is written generally so other architectures "
"should not differ very much. The next part is the machine independent part "
"of the Linuxulator. This section only covers i386 and ELF handling. A.OUT "
"is obsolete and untested."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:668
#, no-wrap
msgid "Syscall handling"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:672
msgid ""
"Syscall handling is mostly written in [.filename]#linux_sysvec.c#, which "
"covers most of the routines pointed out in the `sysentvec` structure. When "
"a Linux(R) process running on FreeBSD issues a syscall, the general syscall "
"routine calls linux prepsyscall routine for the Linux(R) ABI."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:674
#, no-wrap
msgid "Linux(R) prepsyscall"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:681
msgid ""
"Linux(R) passes arguments to syscalls via registers (that is why it is "
"limited to 6 parameters on i386) while FreeBSD uses the stack. The Linux(R) "
"prepsyscall routine must copy parameters from registers to the stack. The "
"order of the registers is: `%ebx`, `%ecx`, `%edx`, `%esi`, `%edi`, `%ebp`. "
"The catch is that this is true for only _most_ of the syscalls. Some (most "
"notably `clone`) uses a different order but it is luckily easy to fix by "
"inserting a dummy parameter in the `linux_clone` prototype."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:683
#, no-wrap
msgid "Syscall writing"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:687
msgid ""
"Every syscall implemented in the Linuxulator must have its prototype with "
"various flags in [.filename]#syscalls.master#. The form of the file is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:695
#, no-wrap
msgid ""
"...\n"
"\tAUE_FORK STD\t\t{ int linux_fork(void); }\n"
"...\n"
"\tAUE_CLOSE NOPROTO\t{ int close(int fd); }\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:705
msgid ""
"The first column represents the syscall number. The second column is for "
"auditing support. The third column represents the syscall type. It is "
"either `STD`, `OBSOL`, `NOPROTO` and `UNIMPL`. `STD` is a standard syscall "
"with full prototype and implementation. `OBSOL` is obsolete and defines "
"just the prototype. `NOPROTO` means that the syscall is implemented "
"elsewhere so do not prepend ABI prefix, etc. `UNIMPL` means that the "
"syscall will be substituted with the `nosys` syscall (a syscall just "
"printing out a message about the syscall not being implemented and returning "
"`ENOSYS`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:708
msgid ""
"From [.filename]#syscalls.master# a script generates three files: [."
"filename]#linux_syscall.h#, [.filename]#linux_proto.h# and [."
"filename]#linux_sysent.c#. The [.filename]#linux_syscall.h# contains "
"definitions of syscall names and their numerical value, e.g.:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:716
#, no-wrap
msgid ""
"...\n"
"#define LINUX_SYS_linux_fork 2\n"
"...\n"
"#define LINUX_SYS_close 6\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:719
msgid ""
"The [.filename]#linux_proto.h# contains structure definitions of arguments "
"to every syscall, e.g.:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:725
#, no-wrap
msgid ""
"struct linux_fork_args {\n"
" register_t dummy;\n"
"};\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:728
msgid ""
"And finally, [.filename]#linux_sysent.c# contains structure describing the "
"system entry table, used to actually dispatch a syscall, e.g.:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:733
#, no-wrap
msgid ""
"{ 0, (sy_call_t *)linux_fork, AUE_FORK, NULL, 0, 0 }, /* 2 = linux_fork */\n"
"{ AS(close_args), (sy_call_t *)close, AUE_CLOSE, NULL, 0, 0 }, /* 6 = close */\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:737
msgid ""
"As you can see `linux_fork` is implemented in Linuxulator itself so the "
"definition is of `STD` type and has no argument, which is exhibited by the "
"dummy argument structure. On the other hand `close` is just an alias for "
"real FreeBSD man:close[2] so it has no linux arguments structure associated "
"and in the system entry table it is not prefixed with linux as it calls the "
"real man:close[2] in the kernel."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:739
#, no-wrap
msgid "Dummy syscalls"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:745
msgid ""
"The Linux(R) emulation layer is not complete, as some syscalls are not "
"implemented properly and some are not implemented at all. The emulation "
"layer employs a facility to mark unimplemented syscalls with the `DUMMY` "
"macro. These dummy definitions reside in [.filename]#linux_dummy.c# in a "
"form of `DUMMY(syscall);`, which is then translated to various syscall "
"auxiliary files and the implementation consists of printing a message saying "
"that this syscall is not implemented. The `UNIMPL` prototype is not used "
"because we want to be able to identify the name of the syscall that was "
-"called in order to know what syscalls are more important to implement."
+"called to know what syscalls are more important to implement."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:747
#, no-wrap
msgid "Signal handling"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:751
msgid ""
"Signal handling is done generally in the FreeBSD kernel for all binary "
"compatibilities with a call to a compat-dependent layer. Linux(R) "
"compatibility layer defines `linux_sendsig` routine for this purpose."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:753
#, no-wrap
msgid "Linux(R) sendsig"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:760
msgid ""
"This routine first checks whether the signal has been installed with a "
"`SA_SIGINFO` in which case it calls `linux_rt_sendsig` routine instead. "
"Furthermore, it allocates (or reuses an already existing) signal handle "
"context, then it builds a list of arguments for the signal handler. It "
"translates the signal number based on the signal translation table, assigns "
"a handler, translates sigset. Then it saves context for the `sigreturn` "
"routine (various registers, translated trap number and signal mask). "
"Finally, it copies out the signal context to the userspace and prepares "
"context for the actual signal handler to run."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:762
#, no-wrap
msgid "linux_rt_sendsig"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:767
msgid ""
"This routine is similar to `linux_sendsig` just the signal context "
"preparation is different. It adds `siginfo`, `ucontext`, and some POSIX(R) "
"parts. It might be worth considering whether those two functions could not "
"be merged with a benefit of less code duplication and possibly even faster "
"execution."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:769
#, no-wrap
msgid "linux_sigreturn"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:774
msgid ""
"This syscall is used for return from the signal handler. It does some "
"security checks and restores the original process context. It also unmasks "
"the signal in process signal mask."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:776
#, no-wrap
msgid "Ptrace"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:782
msgid ""
-"Many UNIX(R) derivates implement the man:ptrace[2] syscall in order to allow "
-"various tracking and debugging features. This facility enables the tracing "
-"process to obtain various information about the traced process, like "
-"register dumps, any memory from the process address space, etc. and also to "
-"trace the process like in stepping an instruction or between system entries "
-"(syscalls and traps). man:ptrace[2] also lets you set various information "
-"in the traced process (registers etc.). man:ptrace[2] is a UNIX(R)-wide "
-"standard implemented in most UNIX(R)es around the world."
+"Many UNIX(R) derivates implement the man:ptrace[2] syscall to allow various "
+"tracking and debugging features. This facility enables the tracing process "
+"to obtain various information about the traced process, like register dumps, "
+"any memory from the process address space, etc. and also to trace the "
+"process like in stepping an instruction or between system entries (syscalls "
+"and traps). man:ptrace[2] also lets you set various information in the "
+"traced process (registers etc.). man:ptrace[2] is a UNIX(R)-wide standard "
+"implemented in most UNIX(R)es around the world."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:788
msgid ""
"Linux(R) emulation in FreeBSD implements the man:ptrace[2] facility in [."
"filename]#linux_ptrace.c#. The routines for converting registers between "
"Linux(R) and FreeBSD and the actual man:ptrace[2] syscall emulation "
"syscall. The syscall is a long switch block that implements its counterpart "
"in FreeBSD for every man:ptrace[2] command. The man:ptrace[2] commands are "
"mostly equal between Linux(R) and FreeBSD so usually just a small "
"modification is needed. For example, `PT_GETREGS` in Linux(R) operates on "
"direct data while FreeBSD uses a pointer to the data so after performing a "
"(native) man:ptrace[2] syscall, a copyout must be done to preserve Linux(R) "
"semantics."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:792
msgid ""
"The man:ptrace[2] implementation in Linuxulator has some known weaknesses. "
"There have been panics seen when using `strace` (which is a man:ptrace[2] "
"consumer) in the Linuxulator environment. Also `PT_SYSCALL` is not "
"implemented."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:799
msgid ""
"Whenever a Linux(R) process running in the emulation layer traps the trap "
"itself is handled transparently with the only exception of the trap "
"translation. Linux(R) and FreeBSD differs in opinion on what a trap is so "
"this is dealt with here. The code is actually very short:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:805
#, no-wrap
msgid ""
"static int\n"
"translate_traps(int signal, int trap_code)\n"
"{\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:808
#, no-wrap
msgid ""
" if (signal != SIGBUS)\n"
" return signal;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:810
#, no-wrap
msgid " switch (trap_code) {\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:816
#, no-wrap
msgid ""
" case T_PROTFLT:\n"
" case T_TSSFLT:\n"
" case T_DOUBLEFLT:\n"
" case T_PAGEFLT:\n"
" return SIGSEGV;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:821
#, no-wrap
msgid ""
" default:\n"
" return signal;\n"
" }\n"
"}\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:824
#, no-wrap
msgid "Stack fixup"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:831
msgid ""
"The RTLD run-time link-editor expects so called AUX tags on stack during an "
"`execve` so a fixup must be done to ensure this. Of course, every RTLD "
"system is different so the emulation layer must provide its own stack fixup "
"routine to do this. So does Linuxulator. The `elf_linux_fixup` simply "
"copies out AUX tags to the stack and adjusts the stack of the user space "
"process to point right after those tags. So RTLD works in a smart way."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:833
#, no-wrap
msgid "A.OUT support"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:840
msgid ""
"The Linux(R) emulation layer on i386 also supports Linux(R) A.OUT binaries. "
"Pretty much everything described in the previous sections must be "
"implemented for A.OUT support (beside traps translation and signals "
"sending). The support for A.OUT binaries is no longer maintained, "
"especially the 2.6 emulation does not work with it but this does not cause "
"any problem, as the linux-base in ports probably do not support A.OUT "
"binaries at all. This support will probably be removed in future. Most of "
"the stuff necessary for loading Linux(R) A.OUT binaries is in [."
"filename]#imgact_linux.c# file."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/linux-emulation/_index.adoc:842
#, no-wrap
msgid "Linux(R) emulation layer -MI part"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:847
msgid ""
"This section talks about machine independent part of the Linuxulator. It "
"covers the emulation infrastructure needed for Linux(R) 2.6 emulation, the "
"thread local storage (TLS) implementation (on i386) and futexes. Then we "
"talk briefly about some syscalls."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:849
#, no-wrap
msgid "Description of NPTL"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:857
msgid ""
"One of the major areas of progress in development of Linux(R) 2.6 was "
"threading. Prior to 2.6, the Linux(R) threading support was implemented in "
"the linuxthreads library. The library was a partial implementation of "
"POSIX(R) threading. The threading was implemented using separate processes "
"for each thread using the `clone` syscall to let them share the address "
"space (and other things). The main weaknesses of this approach was that "
"every thread had a different PID, signal handling was broken (from the "
"pthreads perspective), etc. Also the performance was not very good (use of "
"`SIGUSR` signals for threads synchronization, kernel resource consumption, "
"etc.) so to overcome these problems a new threading system was developed and "
"named NPTL."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:863
msgid ""
"The NPTL library focused on two things but a third thing came along so it is "
"usually considered a part of NPTL. Those two things were embedding of "
"threads into a process structure and futexes. The additional third thing "
"was TLS, which is not directly required by NPTL but the whole NPTL userland "
"library depends on it. Those improvements yielded in much improved "
"performance and standards conformance. NPTL is a standard threading library "
"in Linux(R) systems these days."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:867
msgid ""
"The FreeBSD Linuxulator implementation approaches the NPTL in three main "
"areas. The TLS, futexes and PID mangling, which is meant to simulate the "
"Linux(R) threads. Further sections describe each of these areas."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:869
#, no-wrap
msgid "Linux(R) 2.6 emulation infrastructure"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:872
msgid ""
"These sections deal with the way Linux(R) threads are managed and how we "
"simulate that in FreeBSD."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:874
#, no-wrap
msgid "Runtime determining of 2.6 emulation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:883
msgid ""
"The Linux(R) emulation layer in FreeBSD supports runtime setting of the "
"emulated version. This is done via man:sysctl[8], namely `compat.linux."
"osrelease`. Setting this man:sysctl[8] affects runtime behavior of the "
"emulation layer. When set to 2.6.x it sets the value of `linux_use_linux26` "
"while setting to something else keeps it unset. This variable (plus per-"
"prison variables of the very same kind) determines whether 2.6 "
"infrastructure (mainly PID mangling) is used in the code or not. The "
"version setting is done system-wide and this affects all Linux(R) "
"processes. The man:sysctl[8] should not be changed when running any "
"Linux(R) binary as it might harm things."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:885
#, no-wrap
msgid "Linux(R) processes and thread identifiers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:892
msgid ""
"The semantics of Linux(R) threading are a little confusing and uses entirely "
"different nomenclature to FreeBSD. A process in Linux(R) consists of a "
"`struct task` embedding two identifier fields - PID and TGID. PID is _not_ "
"a process ID but it is a thread ID. The TGID identifies a thread group in "
"other words a process. For single-threaded process the PID equals the TGID."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:898
msgid ""
"The thread in NPTL is just an ordinary process that happens to have TGID not "
"equal to PID and have a group leader not equal to itself (and shared VM etc. "
"of course). Everything else happens in the same way as to an ordinary "
"process. There is no separation of a shared status to some external "
"structure like in FreeBSD. This creates some duplication of information and "
"possible data inconsistency. The Linux(R) kernel seems to use task -> group "
"information in some places and task information elsewhere and it is really "
"not very consistent and looks error-prone."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:901
msgid ""
"Every NPTL thread is created by a call to the `clone` syscall with a "
"specific set of flags (more in the next subsection). The NPTL implements "
"strict 1:1 threading."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:903
msgid ""
"In FreeBSD we emulate NPTL threads with ordinary FreeBSD processes that "
"share VM space, etc. and the PID gymnastic is just mimicked in the emulation "
"specific structure attached to the process. The structure attached to the "
"process looks like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:908
#, no-wrap
msgid ""
"struct linux_emuldata {\n"
" pid_t pid;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:911
#, no-wrap
msgid ""
" int *child_set_tid; /* in clone(): Child.s TID to set on clone */\n"
" int *child_clear_tid;/* in clone(): Child.s TID to clear on exit */\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:913
#, no-wrap
msgid " struct linux_emuldata_shared *shared;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:915
#, no-wrap
msgid " int pdeath_signal; /* parent death signal */\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:918
#, no-wrap
msgid ""
" LIST_ENTRY(linux_emuldata) threads; /* list of linux threads */\n"
"};\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:925
msgid ""
"The PID is used to identify the FreeBSD process that attaches this "
"structure. The `child_se_tid` and `child_clear_tid` are used for TID "
"address copyout when a process exits and is created. The `shared` pointer "
"points to a structure shared among threads. The `pdeath_signal` variable "
"identifies the parent death signal and the `threads` pointer is used to link "
"this structure to the list of threads. The `linux_emuldata_shared` "
"structure looks like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:929
#, no-wrap
msgid "struct linux_emuldata_shared {\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:931
#, no-wrap
msgid " int refs;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:933
#, no-wrap
msgid " pid_t group_pid;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:936
#, no-wrap
msgid ""
" LIST_HEAD(, linux_emuldata) threads; /* head of list of linux threads */\n"
"};\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:941
msgid ""
"The `refs` is a reference counter being used to determine when we can free "
"the structure to avoid memory leaks. The `group_pid` is to identify PID ( = "
"TGID) of the whole process ( = thread group). The `threads` pointer is the "
"head of the list of threads in the process."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:944
msgid ""
"The `linux_emuldata` structure can be obtained from the process using "
"`em_find`. The prototype of the function is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:948
#, no-wrap
msgid "struct linux_emuldata *em_find(struct proc *, int locked);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:953
msgid ""
"Here, `proc` is the process we want the emuldata structure from and the "
"locked parameter determines whether we want to lock or not. The accepted "
"values are `EMUL_DOLOCK` and `EMUL_DOUNLOCK`. More about locking later."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:955
#, no-wrap
msgid "PID mangling"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:962
msgid ""
"As there is a difference in view as what to the idea of a process ID and "
"thread ID is between FreeBSD and Linux(R) we have to translate the view "
"somehow. We do it by PID mangling. This means that we fake what a PID "
"(=TGID) and TID (=PID) is between kernel and userland. The rule of thumb is "
"that in kernel (in Linuxulator) PID = PID and TGID = shared -> group pid and "
"to userland we present `PID = shared -> group_pid` and `TID = proc -> "
"p_pid`. The PID member of `linux_emuldata structure` is a FreeBSD PID."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:966
msgid ""
"The above affects mainly getpid, getppid, gettid syscalls. Where we use PID/"
"TGID respectively. In copyout of TIDs in `child_clear_tid` and "
"`child_set_tid` we copy out FreeBSD PID."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:968
#, no-wrap
msgid "Clone syscall"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:972
msgid ""
"The `clone` syscall is the way threads are created in Linux(R). The syscall "
"prototype looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:977
#, no-wrap
msgid ""
"int linux_clone(l_int flags, void *stack, void *parent_tidptr, int dummy,\n"
"void * child_tidptr);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:987
msgid ""
"The `flags` parameter tells the syscall how exactly the processes should be "
"cloned. As described above, Linux(R) can create processes sharing various "
"things independently, for example two processes can share file descriptors "
"but not VM, etc. Last byte of the `flags` parameter is the exit signal of "
"the newly created process. The `stack` parameter if non-`NULL` tells, where "
"the thread stack is and if it is `NULL` we are supposed to copy-on-write the "
"calling process stack (i.e. do what normal man:fork[2] routine does). The "
"`parent_tidptr` parameter is used as an address for copying out process PID "
"(i.e. thread id) once the process is sufficiently instantiated but is not "
"runnable yet. The `dummy` parameter is here because of the very strange "
"calling convention of this syscall on i386. It uses the registers directly "
"and does not let the compiler do it what results in the need of a dummy "
"syscall. The `child_tidptr` parameter is used as an address for copying out "
"PID once the process has finished forking and when the process exits."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1001
msgid ""
"The syscall itself proceeds by setting corresponding flags depending on the "
"flags passed in. For example, `CLONE_VM` maps to RFMEM (sharing of VM), "
"etc. The only nit here is `CLONE_FS` and `CLONE_FILES` because FreeBSD does "
"not allow setting this separately so we fake it by not setting RFFDG "
"(copying of fd table and other fs information) if either of these is "
"defined. This does not cause any problems, because those flags are always "
"set together. After setting the flags the process is forked using the "
"internal `fork1` routine, the process is instrumented not to be put on a run "
"queue, i.e. not to be set runnable. After the forking is done we possibly "
"reparent the newly created process to emulate `CLONE_PARENT` semantics. "
"Next part is creating the emulation data. Threads in Linux(R) does not "
"signal their parents so we set exit signal to be 0 to disable this. After "
"that setting of `child_set_tid` and `child_clear_tid` is performed enabling "
"the functionality later in the code. At this point we copy out the PID to "
"the address specified by `parent_tidptr`. The setting of process stack is "
"done by simply rewriting thread frame `%esp` register (`%rsp` on amd64). "
"Next part is setting up TLS for the newly created process. After this man:"
"vfork[2] semantics might be emulated and finally the newly created process "
"is put on a run queue and copying out its PID to the parent process via "
"`clone` return value is done."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1004
msgid ""
"The `clone` syscall is able and in fact is used for emulating classic man:"
"fork[2] and man:vfork[2] syscalls. Newer glibc in a case of 2.6 kernel uses "
"`clone` to implement man:fork[2] and man:vfork[2] syscalls."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1006
#, no-wrap
msgid "Locking"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1012
msgid ""
"The locking is implemented to be per-subsystem because we do not expect a "
"lot of contention on these. There are two locks: `emul_lock` used to "
"protect manipulating of `linux_emuldata` and `emul_shared_lock` used to "
"manipulate `linux_emuldata_shared`. The `emul_lock` is a nonsleepable "
"blocking mutex while `emul_shared_lock` is a sleepable blocking `sx_lock`. "
"Due to of the per-subsystem locking we can coalesce some locks and that is "
"why the em find offers the non-locking access."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:1014
#, no-wrap
msgid "TLS"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1017
msgid "This section deals with TLS also known as thread local storage."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1019
#, no-wrap
msgid "Introduction to threading"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1040
msgid ""
"Threads in computer science are entities within a process that can be "
"scheduled independently from each other. The threads in the process share "
"process wide data (file descriptors, etc.) but also have their own stack for "
"their own data. Sometimes there is a need for process-wide data specific to "
"a given thread. Imagine a name of the thread in execution or something like "
"that. The traditional UNIX(R) threading API, pthreads provides a way to do "
"it via man:pthread_key_create[3], man:pthread_setspecific[3] and man:"
"pthread_getspecific[3] where a thread can create a key to the thread local "
"data and using man:pthread_getspecific[3] or man:pthread_getspecific[3] to "
"manipulate those data. You can easily see that this is not the most "
"comfortable way this could be accomplished. So various producers of C/C++ "
"compilers introduced a better way. They defined a new modifier keyword "
"thread that specifies that a variable is thread specific. A new method of "
"accessing such variables was developed as well (at least on i386). The "
"pthreads method tends to be implemented in userspace as a trivial lookup "
"table. The performance of such a solution is not very good. So the new "
"method uses (on i386) segment registers to address a segment, where TLS area "
"is stored so the actual accessing of a thread variable is just appending the "
"segment register to the address thus addressing via it. The segment "
"registers are usually `%gs` and `%fs` acting like segment selectors. Every "
"thread has its own area where the thread local data are stored and the "
"segment must be loaded on every context switch. This method is very fast "
"and used almost exclusively in the whole i386 UNIX(R) world. Both FreeBSD "
"and Linux(R) implement this approach and it yields very good results. The "
"only drawback is the need to reload the segment on every context switch "
"which can slowdown context switches. FreeBSD tries to avoid this overhead "
"by using only 1 segment descriptor for this while Linux(R) uses 3. "
"Interesting thing is that almost nothing uses more than 1 descriptor (only "
"Wine seems to use 2) so Linux(R) pays this unnecessary price for context "
"switches."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1042
#, no-wrap
msgid "Segments on i386"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1049
msgid ""
"The i386 architecture implements the so called segments. A segment is a "
"description of an area of memory. The base address (bottom) of the memory "
"area, the end of it (ceiling), type, protection, etc. The memory described "
"by a segment can be accessed using segment selector registers (`%cs`, `%ds`, "
"`%ss`, `%es`, `%fs`, `%gs`). For example let us suppose we have a segment "
"which base address is 0x1234 and length and this code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1053
#, no-wrap
msgid "mov %edx,%gs:0x10\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1062
msgid ""
"This will load the content of the `%edx` register into memory location "
"0x1244. Some segment registers have a special use, for example `%cs` is "
-"used for code segment and `%ss` is used for stack segment but `%fs` and `"
-"%gs` are generally unused. Segments are either stored in a global GDT table "
-"or in a local LDT table. LDT is accessed via an entry in the GDT. The LDT "
-"can store more types of segments. LDT can be per process. Both tables "
-"define up to 8191 entries."
+"used for code segment and `%ss` is used for stack segment but `%fs` and "
+"`%gs` are generally unused. Segments are either stored in a global GDT "
+"table or in a local LDT table. LDT is accessed via an entry in the GDT. "
+"The LDT can store more types of segments. LDT can be per process. Both "
+"tables define up to 8191 entries."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1064
#, no-wrap
msgid "Implementation on Linux(R) i386"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1072
msgid ""
"There are two main ways of setting up TLS in Linux(R). It can be set when "
"cloning a process using the `clone` syscall or it can call "
"`set_thread_area`. When a process passes `CLONE_SETTLS` flag to `clone`, "
"the kernel expects the memory pointed to by the `%esi` register a Linux(R) "
"user space representation of a segment, which gets translated to the machine "
"representation of a segment and loaded into a GDT slot. The GDT slot can be "
"specified with a number or -1 can be used meaning that the system itself "
"should choose the first free slot. In practice, the vast majority of "
"programs use only one TLS entry and does not care about the number of the "
"entry. We exploit this in the emulation and in fact depend on it."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1074
#, no-wrap
msgid "Emulation of Linux(R) TLS"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1077
#, no-wrap
msgid "i386"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1095
msgid ""
"Loading of TLS for the current thread happens by calling `set_thread_area` "
"while loading TLS for a second process in `clone` is done in the separate "
"block in `clone`. Those two functions are very similar. The only "
"difference being the actual loading of the GDT segment, which happens on the "
"next context switch for the newly created process while `set_thread_area` "
"must load this directly. The code basically does this. It copies the "
"Linux(R) form segment descriptor from the userland. The code checks for the "
"number of the descriptor but because this differs between FreeBSD and "
"Linux(R) we fake it a little. We only support indexes of 6, 3 and -1. The "
"6 is genuine Linux(R) number, 3 is genuine FreeBSD one and -1 means "
"autoselection. Then we set the descriptor number to constant 3 and copy out "
"this to the userspace. We rely on the userspace process using the number "
"from the descriptor but this works most of the time (have never seen a case "
"where this did not work) as the userspace process typically passes in 1. "
"Then we convert the descriptor from the Linux(R) form to a machine dependant "
"form (i.e. operating system independent form) and copy this to the FreeBSD "
"defined segment descriptor. Finally we can load it. We assign the "
"descriptor to threads PCB (process control block) and load the `%gs` segment "
"using `load_gs`. This loading must be done in a critical section so that "
"nothing can interrupt us. The `CLONE_SETTLS` case works exactly like this "
"just the loading using `load_gs` is not performed. The segment used for "
"this (segment number 3) is shared for this use between FreeBSD processes and "
"Linux(R) processes so the Linux(R) emulation layer does not add any overhead "
"over plain FreeBSD."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1097
#, no-wrap
msgid "amd64"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1101
msgid ""
"The amd64 implementation is similar to the i386 one but there was initially "
"no 32bit segment descriptor used for this purpose (hence not even native "
"32bit TLS users worked) so we had to add such a segment and implement its "
"loading on every context switch (when a flag signaling use of 32bit is "
"set). Apart from this the TLS loading is exactly the same just the segment "
"numbers are different and the descriptor format and the loading differs "
"slightly."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:1103
#, no-wrap
msgid "Futexes"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1106
#, no-wrap
msgid "Introduction to synchronization"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1116
msgid ""
"Threads need some kind of synchronization and POSIX(R) provides some of "
"them: mutexes for mutual exclusion, read-write locks for mutual exclusion "
"with biased ratio of reads and writes and condition variables for signaling "
"a status change. It is interesting to note that POSIX(R) threading API "
"lacks support for semaphores. Those synchronization routines "
"implementations are heavily dependant on the type threading support we "
"have. In pure 1:M (userspace) model the implementation can be solely done "
"in userspace and thus be very fast (the condition variables will probably "
"end up being implemented using signals, i.e. not fast) and simple. In 1:1 "
"model, the situation is also quite clear - the threads must be synchronized "
"using kernel facilities (which is very slow because a syscall must be "
"performed). The mixed M:N scenario just combines the first and second "
"approach or rely solely on kernel. Threads synchronization is a vital part "
"of thread-enabled programming and its performance can affect resulting "
"program a lot. Recent benchmarks on FreeBSD operating system showed that an "
"improved sx_lock implementation yielded 40% speedup in _ZFS_ (a heavy sx "
"user), this is in-kernel stuff but it shows clearly how important the "
"performance of synchronization primitives is."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1120
msgid ""
"Threaded programs should be written with as little contention on locks as "
"possible. Otherwise, instead of doing useful work the thread just waits on "
"a lock. As a result of this, the most well written threaded programs show "
"little locks contention."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1122
#, no-wrap
msgid "Futexes introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1127
msgid ""
"Linux(R) implements 1:1 threading, i.e. it has to use in-kernel "
"synchronization primitives. As stated earlier, well written threaded "
"programs have little lock contention. So a typical sequence could be "
"performed as two atomic increase/decrease mutex reference counter, which is "
"very fast, as presented by the following example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1133
#, no-wrap
msgid ""
"pthread_mutex_lock(&mutex);\n"
"...\n"
"pthread_mutex_unlock(&mutex);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1136
msgid ""
"1:1 threading forces us to perform two syscalls for those mutex calls, which "
"is very slow."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1141
msgid ""
"The solution Linux(R) 2.6 implements is called futexes. Futexes implement "
"the check for contention in userspace and call kernel primitives only in a "
"case of contention. Thus the typical case takes place without any kernel "
"intervention. This yields reasonably fast and flexible synchronization "
"primitives implementation."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1143
#, no-wrap
msgid "Futex API"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1146
msgid "The futex syscall looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1150
#, no-wrap
msgid "int futex(void *uaddr, int op, int val, struct timespec *timeout, void *uaddr2, int val3);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1153
msgid ""
"In this example `uaddr` is an address of the mutex in userspace, `op` is an "
"operation we are about to perform and the other parameters have per-"
"operation meaning."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1155
msgid "Futexes implement the following operations:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1157
msgid "`FUTEX_WAIT`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1158
msgid "`FUTEX_WAKE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1159
msgid "`FUTEX_FD`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1160
msgid "`FUTEX_REQUEUE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1161
msgid "`FUTEX_CMP_REQUEUE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1162
msgid "`FUTEX_WAKE_OP`"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1164
#, no-wrap
msgid "FUTEX_WAIT"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1169
msgid ""
"This operation verifies that on address `uaddr` the value `val` is written. "
"If not, `EWOULDBLOCK` is returned, otherwise the thread is queued on the "
"futex and gets suspended. If the argument `timeout` is non-zero it "
"specifies the maximum time for the sleeping, otherwise the sleeping is "
"infinite."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1171
#, no-wrap
msgid "FUTEX_WAKE"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1174
msgid ""
"This operation takes a futex at `uaddr` and wakes up `val` first futexes "
"queued on this futex."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1176
#, no-wrap
msgid "FUTEX_FD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1179
msgid "This operations associates a file descriptor with a given futex."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1181
#, no-wrap
msgid "FUTEX_REQUEUE"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1184
msgid ""
"This operation takes `val` threads queued on futex at `uaddr`, wakes them "
"up, and takes `val2` next threads and requeues them on futex at `uaddr2`."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1186
#, no-wrap
msgid "FUTEX_CMP_REQUEUE"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1189
msgid ""
"This operation does the same as `FUTEX_REQUEUE` but it checks that `val3` "
"equals to `val` first."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1191
#, no-wrap
msgid "FUTEX_WAKE_OP"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1195
msgid ""
"This operation performs an atomic operation on `val3` (which contains coded "
"some other value) and `uaddr`. Then it wakes up `val` threads on futex at "
"`uaddr` and if the atomic operation returned a positive number it wakes up "
"`val2` threads on futex at `uaddr2`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1197
msgid "The operations implemented in `FUTEX_WAKE_OP`:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1199
msgid "`FUTEX_OP_SET`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1200
msgid "`FUTEX_OP_ADD`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1201
msgid "`FUTEX_OP_OR`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1202
msgid "`FUTEX_OP_AND`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1203
msgid "`FUTEX_OP_XOR`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1208
msgid ""
"There is no `val2` parameter in the futex prototype. The `val2` is taken "
"from the `struct timespec *timeout` parameter for operations "
"`FUTEX_REQUEUE`, `FUTEX_CMP_REQUEUE` and `FUTEX_WAKE_OP`."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1211
#, no-wrap
msgid "Futex emulation in FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1216
msgid ""
"The futex emulation in FreeBSD is taken from NetBSD and further extended by "
"us. It is placed in `linux_futex.c` and [.filename]#linux_futex.h# files. "
"The `futex` structure looks like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1222
#, no-wrap
msgid ""
"struct futex {\n"
" void *f_uaddr;\n"
" int f_refcount;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1224
#, no-wrap
msgid " LIST_ENTRY(futex) f_list;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1227
#, no-wrap
msgid ""
" TAILQ_HEAD(lf_waiting_paroc, waiting_proc) f_waiting_proc;\n"
"};\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1230
msgid "And the structure `waiting_proc` is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1234
#, no-wrap
msgid "struct waiting_proc {\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1236
#, no-wrap
msgid " struct thread *wp_t;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1238
#, no-wrap
msgid " struct futex *wp_new_futex;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1241
#, no-wrap
msgid ""
" TAILQ_ENTRY(waiting_proc) wp_list;\n"
"};\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1244
#, no-wrap
msgid "futex_get / futex_put"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1248
msgid ""
"A futex is obtained using the `futex_get` function, which searches a linear "
"list of futexes and returns the found one or creates a new futex. When "
"releasing a futex from the use we call the `futex_put` function, which "
"decreases a reference counter of the futex and if the refcount reaches zero "
"it is released."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1250
#, no-wrap
msgid "futex_sleep"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1258
msgid ""
"When a futex queues a thread for sleeping it creates a `working_proc` "
"structure and puts this structure to the list inside the futex structure "
"then it just performs a man:tsleep[9] to suspend the thread. The sleep can "
"be timed out. After man:tsleep[9] returns (the thread was woken up or it "
"timed out) the `working_proc` structure is removed from the list and is "
"destroyed. All this is done in the `futex_sleep` function. If we got woken "
"up from `futex_wake` we have `wp_new_futex` set so we sleep on it. This way "
"the actual requeueing is done in this function."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1260
#, no-wrap
msgid "futex_wake"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1268
msgid ""
"Waking up a thread sleeping on a futex is performed in the `futex_wake` "
"function. First in this function we mimic the strange Linux(R) behavior, "
"where it wakes up N threads for all operations, the only exception is that "
"the REQUEUE operations are performed on N+1 threads. But this usually does "
"not make any difference as we are waking up all threads. Next in the "
"function in the loop we wake up n threads, after this we check if there is a "
"new futex for requeueing. If so, we requeue up to n2 threads on the new "
"futex. This cooperates with `futex_sleep`."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1270
#, no-wrap
msgid "futex_wake_op"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1275
msgid ""
"The `FUTEX_WAKE_OP` operation is quite complicated. First we obtain two "
"futexes at addresses `uaddr` and `uaddr2` then we perform the atomic "
"operation using `val3` and `uaddr2`. Then `val` waiters on the first futex "
"is woken up and if the atomic operation condition holds we wake up `val2` (i."
"e. `timeout`) waiter on the second futex."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1277
#, no-wrap
msgid "futex atomic operation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1282
msgid ""
"The atomic operation takes two parameters `encoded_op` and `uaddr`. The "
"encoded operation encodes the operation itself, comparing value, operation "
"argument, and comparing argument. The pseudocode for the operation is like "
"this one:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1287
#, no-wrap
msgid ""
"oldval = *uaddr2\n"
"*uaddr2 = oldval OP oparg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1291
msgid ""
"And this is done atomically. First a copying in of the number at `uaddr` is "
"performed and the operation is done. The code handles page faults and if no "
"page fault occurs `oldval` is compared to `cmparg` argument with cmp "
"comparator."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1293
#, no-wrap
msgid "Futex locking"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1297
msgid ""
"Futex implementation uses two lock lists protecting `sx_lock` and global "
"locks (either Giant or another `sx_lock`). Every operation is performed "
"locked from the start to the very end."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:1299
#, no-wrap
msgid "Various syscalls implementation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1302
msgid ""
"In this section I am going to describe some smaller syscalls that are worth "
"mentioning because their implementation is not obvious or those syscalls are "
"interesting from other point of view."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1304
#, no-wrap
msgid "*at family of syscalls"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1313
msgid ""
"During development of Linux(R) 2.6.16 kernel, the *at syscalls were added. "
"Those syscalls (`openat` for example) work exactly like their at-less "
"counterparts with the slight exception of the `dirfd` parameter. This "
"parameter changes where the given file, on which the syscall is to be "
"performed, is. When the `filename` parameter is absolute `dirfd` is ignored "
"but when the path to the file is relative, it comes to the play. The "
"`dirfd` parameter is a directory relative to which the relative pathname is "
"checked. The `dirfd` parameter is a file descriptor of some directory or "
"`AT_FDCWD`. So for example the `openat` syscall can be like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1317
#, no-wrap
msgid "file descriptor 123 = /tmp/foo/, current working directory = /tmp/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1322
#, no-wrap
msgid ""
"openat(123, /tmp/bah\\, flags, mode)\t/* opens /tmp/bah */\n"
"openat(123, bah\\, flags, mode)\t\t/* opens /tmp/foo/bah */\n"
"openat(AT_FDWCWD, bah\\, flags, mode)\t/* opens /tmp/bah */\n"
"openat(stdio, bah\\, flags, mode)\t/* returns error because stdio is not a directory */\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1331
msgid ""
"This infrastructure is necessary to avoid races when opening files outside "
"the working directory. Imagine that a process consists of two threads, "
"thread A and thread B. Thread A issues `open(./tmp/foo/bah., flags, mode)` "
"and before returning it gets preempted and thread B runs. Thread B does not "
"care about the needs of thread A and renames or removes [.filename]#/tmp/foo/"
"#. We got a race. To avoid this we can open [.filename]#/tmp/foo# and use "
"it as `dirfd` for `openat` syscall. This also enables user to implement per-"
"thread working directories."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1334
msgid ""
"Linux(R) family of *at syscalls contains: `linux_openat`, `linux_mkdirat`, "
"`linux_mknodat`, `linux_fchownat`, `linux_futimesat`, `linux_fstatat64`, "
"`linux_unlinkat`, `linux_renameat`, `linux_linkat`, `linux_symlinkat`, "
"`linux_readlinkat`, `linux_fchmodat` and `linux_faccessat`. All these are "
"implemented using the modified man:namei[9] routine and simple wrapping "
"layer."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1336
#, no-wrap
msgid "Implementation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1344
msgid ""
"The implementation is done by altering the man:namei[9] routine (described "
"above) to take additional parameter `dirfd` in its `nameidata` structure, "
"which specifies the starting point of the pathname lookup instead of using "
"the current working directory every time. The resolution of `dirfd` from "
"file descriptor number to a vnode is done in native *at syscalls. When "
"`dirfd` is `AT_FDCWD` the `dvp` entry in `nameidata` structure is `NULL` but "
"when `dirfd` is a different number we obtain a file for this file "
"descriptor, check whether this file is valid and if there is vnode attached "
"to it then we get a vnode. Then we check this vnode for being a directory. "
"In the actual man:namei[9] routine we simply substitute the `dvp` vnode for "
"`dp` variable in the man:namei[9] function, which determines the starting "
"point. The man:namei[9] is not used directly but via a trace of different "
"functions on various levels. For example the `openat` goes like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/linux-emulation/_index.adoc:1348
#, no-wrap
msgid "openat() --> kern_openat() --> vn_open() -> namei()\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1354
msgid ""
"For this reason `kern_open` and `vn_open` must be altered to incorporate the "
"additional `dirfd` parameter. No compat layer is created for those because "
"there are not many users of this and the users can be easily converted. "
"This general implementation enables FreeBSD to implement their own *at "
"syscalls. This is being discussed right now."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1356
#, no-wrap
msgid "Ioctl"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1370
msgid ""
"The ioctl interface is quite fragile due to its generality. We have to bear "
"in mind that devices differ between Linux(R) and FreeBSD so some care must "
"be applied to do ioctl emulation work right. The ioctl handling is "
"implemented in [.filename]#linux_ioctl.c#, where `linux_ioctl` function is "
"defined. This function simply iterates over sets of ioctl handlers to find "
"a handler that implements a given command. The ioctl syscall has three "
"parameters, the file descriptor, command and an argument. The command is a "
"16-bit number, which in theory is divided into high 8 bits determining class "
"of the ioctl command and low 8 bits, which are the actual command within the "
"given set. The emulation takes advantage of this division. We implement "
"handlers for each set, like `sound_handler` or `disk_handler`. Each handler "
"has a maximum command and a minimum command defined, which is used for "
"determining what handler is used. There are slight problems with this "
"approach because Linux(R) does not use the set division consistently so "
"sometimes ioctls for a different set are inside a set they should not belong "
"to (SCSI generic ioctls inside cdrom set, etc.). FreeBSD currently does not "
"implement many Linux(R) ioctls (compared to NetBSD, for example) but the "
"plan is to port those from NetBSD. The trend is to use Linux(R) ioctls even "
"in the native FreeBSD drivers because of the easy porting of applications."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/linux-emulation/_index.adoc:1372
#, no-wrap
msgid "Debugging"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1379
msgid ""
"Every syscall should be debuggable. For this purpose we introduce a small "
"infrastructure. We have the ldebug facility, which tells whether a given "
"syscall should be debugged (settable via a sysctl). For printing we have "
"LMSG and ARGS macros. Those are used for altering a printable string for "
"uniform debugging messages."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/linux-emulation/_index.adoc:1381
#, no-wrap
msgid "Conclusion"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:1384
#, no-wrap
msgid "Results"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1390
msgid ""
"As of April 2007 the Linux(R) emulation layer is capable of emulating the "
"Linux(R) 2.6.16 kernel quite well. The remaining problems concern futexes, "
"unfinished *at family of syscalls, problematic signals delivery, missing "
"`epoll` and `inotify` and probably some bugs we have not discovered yet. "
"Despite this we are capable of running basically all the Linux(R) programs "
"included in FreeBSD Ports Collection with Fedora Core 4 at 2.6.16 and there "
"are some rudimentary reports of success with Fedora Core 6 at 2.6.16. The "
"Fedora Core 6 linux_base was recently committed enabling some further "
"testing of the emulation layer and giving us some more hints where we should "
"put our effort in implementing missing stuff."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1394
msgid ""
"We are able to run the most used applications like package:www/linux-"
"firefox[], package:net-im/skype[] and some games from the Ports Collection. "
"Some of the programs exhibit bad behavior under 2.6 emulation but this is "
"currently under investigation and hopefully will be fixed soon. The only "
"big application that is known not to work is the Linux(R) Java(TM) "
"Development Kit and this is because of the requirement of `epoll` facility "
"which is not directly related to the Linux(R) kernel 2.6."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1397
msgid ""
"We hope to enable 2.6.16 emulation by default some time after FreeBSD 7.0 is "
"released at least to expose the 2.6 emulation parts for some wider testing. "
"Once this is done we can switch to Fedora Core 6 linux_base, which is the "
"ultimate plan."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:1399
#, no-wrap
msgid "Future work"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1402
msgid ""
"Future work should focus on fixing the remaining issues with futexes, "
"implement the rest of the *at family of syscalls, fix the signal delivery "
"and possibly implement the `epoll` and `inotify` facilities."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1404
msgid ""
"We hope to be able to run the most important programs flawlessly soon, so we "
"will be able to switch to the 2.6 emulation by default and make the Fedora "
"Core 6 the default linux_base because our currently used Fedora Core 4 is "
"not supported any more."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1408
msgid ""
"The other possible goal is to share our code with NetBSD and DragonflyBSD. "
"NetBSD has some support for 2.6 emulation but its far from finished and not "
"really tested. DragonflyBSD has expressed some interest in porting the 2.6 "
"improvements."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1413
msgid ""
"Generally, as Linux(R) develops we would like to keep up with their "
"development, implementing newly added syscalls. Splice comes to mind "
"first. Some already implemented syscalls are also suboptimal, for example "
"`mremap` and others. Some performance improvements can also be made, finer "
"grained locking and others."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/linux-emulation/_index.adoc:1415
#, no-wrap
msgid "Team"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1418
msgid "I cooperated on this project with (in alphabetical order):"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1420
msgid "`{jhb}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1421
msgid "`{kib}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1422
msgid "Emmanuel Dreyfus"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1423
msgid "Scot Hetzel"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1424
msgid "`{jkim}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1425
msgid "`{netchild}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1426
msgid "`{ssouhlal}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1427
msgid "Li Xiao"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1428
msgid "`{davidxu}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1430
msgid ""
"I would like to thank all those people for their advice, code reviews and "
"general support."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/linux-emulation/_index.adoc:1432
#, no-wrap
msgid "Literatures"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1435
msgid ""
"Marshall Kirk McKusick - George V. Nevile-Neil. Design and Implementation of "
"the FreeBSD operating system. Addison-Wesley, 2005."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1436
msgid "https://tldp.org[https://tldp.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/linux-emulation/_index.adoc:1436
msgid "https://www.kernel.org[https://www.kernel.org]"
msgstr ""
diff --git a/documentation/content/en/articles/pgpkeys/_index.po b/documentation/content/en/articles/pgpkeys/_index.po
index 19147e25f4..a2e554a8a4 100644
--- a/documentation/content/en/articles/pgpkeys/_index.po
+++ b/documentation/content/en/articles/pgpkeys/_index.po
@@ -1,2854 +1,2860 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 "{core-secretary-name} `<{core-secretary-email}>`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:69
#, no-wrap
msgid "{portmgr-secretary-name} `<{portmgr-secretary-email}>`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:72
#, no-wrap
msgid "{doceng-secretary-name} `<{doceng-secretary-email}>`"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/pgpkeys/_index.adoc:76
#, no-wrap
msgid "Core Team Members"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:78
#: documentation/content/en/articles/pgpkeys/_index.adoc:342
#, no-wrap
msgid "`{bapt}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:81
#: documentation/content/en/articles/pgpkeys/_index.adoc:1089
#, no-wrap
msgid "`{bcr}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:84
#: documentation/content/en/articles/pgpkeys/_index.adoc:762
#, no-wrap
msgid "`{grog}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:87
#: documentation/content/en/articles/pgpkeys/_index.adoc:171
#, no-wrap
msgid "`{jhb}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:90
#: documentation/content/en/articles/pgpkeys/_index.adoc:579
#, no-wrap
msgid "`{lwhsu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:93
#: documentation/content/en/articles/pgpkeys/_index.adoc:1350
#, no-wrap
msgid "`{manu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:96
#: documentation/content/en/articles/pgpkeys/_index.adoc:198
#, no-wrap
msgid "`{tcberner}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:99
#: documentation/content/en/articles/pgpkeys/_index.adoc:1041
#, no-wrap
msgid "`{0mp}`"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/pgpkeys/_index.adoc:103
#, no-wrap
msgid "Developers"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:105
#, no-wrap
msgid "`{jgh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:108
#, no-wrap
msgid "`{ariff}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:111
#, no-wrap
msgid "`{tabthorpe}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:114
#, no-wrap
msgid "`{eadler}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:117
#, no-wrap
msgid "`{pauamma}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:120
#, no-wrap
msgid "`{shaun}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:123
#, no-wrap
msgid "`{brix}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:126
#, no-wrap
msgid "`{mandree}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:129
#, no-wrap
msgid "`{will}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:132
#, no-wrap
msgid "`{dim}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:135
#, no-wrap
msgid "`{anholt}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:138
#, no-wrap
msgid "`{fernape}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:141
#, no-wrap
msgid "`{mva}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:144
#, no-wrap
msgid "`{araujo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:147
#, no-wrap
msgid "`{mat}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:150
#, no-wrap
msgid "`{syuu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:153
#, no-wrap
msgid "`{asami}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:156
#, no-wrap
msgid "`{jsa}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:159
#, no-wrap
msgid "`{jadawin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:162
#, no-wrap
msgid "`{jwb}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:165
#, no-wrap
msgid "`{dbaio}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:168
#, no-wrap
msgid "`{timur}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:174
#, no-wrap
msgid "`{gjb}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:177
#, no-wrap
msgid "`{snb}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:180
#, no-wrap
msgid "`{barner}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:183
#, no-wrap
msgid "`{lbartoletti}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:186
#, no-wrap
msgid "`{art}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:189
#, no-wrap
msgid "`{tobez}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:192
#, no-wrap
msgid "`{damien}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:195
#, no-wrap
msgid "`{bdragon}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:201
#, no-wrap
msgid "`{tdb}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:204
#, no-wrap
msgid "`{mbr}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:207
#, no-wrap
msgid "`{bvs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:210
#, no-wrap
msgid "`{novel}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:213
#, no-wrap
msgid "`{garga}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:216
#, no-wrap
msgid "`{kbowling}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:219
#, no-wrap
msgid "`{alexbl}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:222
#, no-wrap
msgid "`{ebrandi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:225
#, no-wrap
msgid "`{harti}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:228
#, no-wrap
msgid "`{obraun}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:231
#, no-wrap
msgid "`{makc}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:234
#, no-wrap
msgid "`{jmb}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:237
#, no-wrap
msgid "`{antoine}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:240
#, no-wrap
msgid "`{db}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:243
#, no-wrap
msgid "`{brueffer}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:246
#, no-wrap
msgid "`{markus}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:249
#, no-wrap
msgid "`{br}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:252
#, no-wrap
msgid "`{jch}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:255
#, no-wrap
msgid "`{jchandra}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:258
#, no-wrap
msgid "`{jcamou}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:261
#, no-wrap
msgid "`{acm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:264
#, no-wrap
msgid "`{gahr}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:267
#, no-wrap
msgid "`{dchagin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:270
#, no-wrap
msgid "`{perky}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:273
#, no-wrap
msgid "`{jon}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:276
#, no-wrap
msgid "`{jonathan}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:279
#, no-wrap
msgid "`{loader}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:282
#, no-wrap
msgid "`{luoqi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:285
#, no-wrap
msgid "`{ache}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:288
#, no-wrap
msgid "`{melifaro}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:291
#, no-wrap
msgid "`{cjh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:294
#, no-wrap
msgid "`{davidch}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:297
#, no-wrap
msgid "`{milki}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:300
#, no-wrap
msgid "`{cjc}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:303
#, no-wrap
msgid "`{marcus}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:306
#, no-wrap
msgid "`{fuz}`"
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 "`{cc}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:336
#, no-wrap
msgid "`{culot}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:339
#, no-wrap
msgid "`{alfredo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:345
#, no-wrap
msgid "`{ceri}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:348
#, no-wrap
msgid "`{edavis}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:351
#, no-wrap
msgid "`{alexey}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:354
#, no-wrap
msgid "`{bsd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:357
#, no-wrap
msgid "`{carl}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:360
#, no-wrap
msgid "`{carlavilla}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:363
#, no-wrap
msgid "`{vd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:366
#, no-wrap
msgid "`{rdivacky}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:369
#, no-wrap
msgid "`{danfe}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:372
#, no-wrap
msgid "`{dd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:375
#, no-wrap
msgid "`{bdrewery}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:378
#, no-wrap
msgid "`{gad}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:381
#, no-wrap
msgid "`{kd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:384
#, no-wrap
msgid "`{olivierd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:387
#, no-wrap
msgid "`{bruno}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:390
#, no-wrap
msgid "`{ale}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:393
#, no-wrap
msgid "`{nemysis}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:396
#, no-wrap
msgid "`{peadar}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:399
#, no-wrap
msgid "`{deischen}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:402
#, no-wrap
msgid "`{diizzy}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:405
#, no-wrap
msgid "`{ue}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:408
#, no-wrap
msgid "`{madpilot}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:411
#, no-wrap
msgid "`{rafan}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:414
#, no-wrap
msgid "`{kami}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:417
#, no-wrap
msgid "`{farrokhi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:420
#, no-wrap
msgid "`{jedgar}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:423
#, no-wrap
msgid "`{mfechner}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:426
#, no-wrap
msgid "`{feld}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:429
#, no-wrap
msgid "`{green}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:432
#, no-wrap
msgid "`{fanf}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:435
#, no-wrap
msgid "`{blackend}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:438
#, no-wrap
msgid "`{petef}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:441
#, no-wrap
msgid "`{decke}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:444
#, no-wrap
msgid "`{landonf}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:447
#, no-wrap
msgid "`{billf}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:450
#, no-wrap
msgid "`{grembo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:453
#, no-wrap
msgid "`{sgalabov}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:456
#, no-wrap
msgid "`{avg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:459
#, no-wrap
msgid "`{beat}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:462
#, no-wrap
msgid "`{sjg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:465
#, no-wrap
msgid "`{gibbs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:468
#, no-wrap
msgid "`{pfg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:471
#, no-wrap
msgid "`{girgen}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:474
#, no-wrap
msgid "`{eugen}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:477
#, no-wrap
msgid "`{pgollucci}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:480
#, no-wrap
msgid "`{trociny}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:483
#, no-wrap
msgid "`{dmgk}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:486
#, no-wrap
msgid "`{daichi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:489
#, no-wrap
msgid "`{grehan}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:492
#, no-wrap
msgid "`{jamie}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:495
#, no-wrap
msgid "`{adridg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:498
#, no-wrap
msgid "`{wg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:501
#, no-wrap
msgid "`{bar}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:504
#, no-wrap
msgid "`{jmg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:507
#, no-wrap
msgid "`{mjg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:510
#, no-wrap
msgid "`{jhale}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:513
#, no-wrap
msgid "`{jah}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:516
#, no-wrap
msgid "`{dannyboy}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:519
#, no-wrap
msgid "`{dhartmei}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:522
#, no-wrap
msgid "`{ohauer}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:525
#, no-wrap
msgid "`{ehaupt}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:528
#, no-wrap
msgid "`{jhay}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:531
#, no-wrap
msgid "`{bhd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:534
#, no-wrap
msgid "`{sheldonh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:537
#, no-wrap
msgid "`{mikeh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:540
#, no-wrap
msgid "`{mheinen}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:543
#, no-wrap
msgid "`{niels}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:546
#, no-wrap
msgid "`{ghelmer}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:549
#, no-wrap
msgid "`{mux}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:552
#, no-wrap
msgid "`{wen}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:555
#, no-wrap
msgid "`{dhn}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:558
#, no-wrap
msgid "`{jhibbits}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:561
#, no-wrap
msgid "`{jhixson}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:564
#, no-wrap
msgid "`{pho}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:567
#, no-wrap
msgid "`{oh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:570
#, no-wrap
msgid "`{mhorne}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:573
#, no-wrap
msgid "`{bhughes}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:576
#, no-wrap
msgid "`{sunpoet}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:582
#, no-wrap
msgid "`{foxfair}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:585
#, no-wrap
msgid "`{whu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:588
#, no-wrap
msgid "`{chinsan}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:591
#, no-wrap
msgid "`{zlei}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:594
#, no-wrap
msgid "`{davide}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:597
#, no-wrap
msgid "`{jkh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:600
#, no-wrap
msgid "`{versus}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:603
#, no-wrap
msgid "`{pi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:606
#, no-wrap
msgid "`{weongyo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:609
#, no-wrap
msgid "`{peterj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:612
#, no-wrap
msgid "`{jinmei}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:615
#, no-wrap
msgid "`{ahze}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:618
#, no-wrap
msgid "`{markj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:621
#, no-wrap
msgid "`{trevor}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:624
#, no-wrap
msgid "`{erj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:627
#, no-wrap
msgid "`{allanjude}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:630
#, no-wrap
msgid "`{bjk}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:633
#, no-wrap
msgid "`{phk}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:636
#, no-wrap
msgid "`{pluknet}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:639
#, no-wrap
msgid "`{cokane}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:642
#, no-wrap
msgid "`{karels}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:645
#, no-wrap
msgid "`{kato}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:648
#, no-wrap
msgid "`{vkashyap}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:651
#, no-wrap
msgid "`{pkubaj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:654
#, no-wrap
msgid "`{kris}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:657
#, no-wrap
msgid "`{keramida}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:660
#, no-wrap
msgid "`{fjoe}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:663
#, no-wrap
msgid "`{manolis}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:666
#, no-wrap
msgid "`{stevek}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:669
#, no-wrap
msgid "`{jkim}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:672
#, no-wrap
msgid "`{zack}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:675
#, no-wrap
msgid "`{jceel}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:678
#, no-wrap
msgid "`{andreas}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:681
#, no-wrap
msgid "`{kai}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:684
#, no-wrap
msgid "`{corvink}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:687
#, no-wrap
msgid "`{jkois}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:690
#, no-wrap
msgid "`{sergei}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:693
#, no-wrap
msgid "`{maxim}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:696
#, no-wrap
msgid "`{taras}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:699
#, no-wrap
msgid "`{tobik}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:702
#, no-wrap
msgid "`{jkoshy}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:705
#, no-wrap
msgid "`{wkoszek}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:708
#, no-wrap
msgid "`{ak}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:711
#, no-wrap
msgid "`{gabor}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:714
#, no-wrap
msgid "`{anchie}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:717
#, no-wrap
msgid "`{rushani}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:720
#, no-wrap
msgid "`{kuriyama}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:723
#, no-wrap
msgid "`{rene}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:726
#, no-wrap
msgid "`{jlaffaye}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:729
#, no-wrap
msgid "`{clement}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:732
#, no-wrap
msgid "`{mlaier}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:735
#, no-wrap
msgid "`{martymac}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:738
#, no-wrap
msgid "`{glarkin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:741
#, no-wrap
msgid "`{dru}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:744
#, no-wrap
msgid "`{lawrance}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:747
#, no-wrap
msgid "`{njl}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:750
#, no-wrap
msgid "`{jlh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:753
#, no-wrap
msgid "`{leeym}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:756
#, no-wrap
msgid "`{sam}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:759
#, no-wrap
msgid "`{jylefort}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:765
#, no-wrap
msgid "`{oliver}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:768
#, no-wrap
msgid "`{netchild}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:771
#, no-wrap
msgid "`{leitao}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:774
#, no-wrap
msgid "`{ae}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:777
#, no-wrap
msgid "`{lesi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:780
#, no-wrap
msgid "`{achim}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:783
#, no-wrap
msgid "`{cel}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:786
#, no-wrap
msgid "`{glewis}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:789
#, no-wrap
msgid "`{vishwin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:792
#, no-wrap
msgid "`{delphij}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:795
#, no-wrap
msgid "`{avatar}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:798
#, no-wrap
msgid "`{ijliao}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:801
#, no-wrap
msgid "`{rlibby}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:804
#, no-wrap
msgid "`{pclin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:807
#, no-wrap
msgid "`{yzlin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:810
#, no-wrap
msgid "`{linimon}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:813
#, no-wrap
msgid "`{arved}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:816
#, no-wrap
msgid "`{dryice}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:819
#, no-wrap
msgid "`{nemoliu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:822
#, no-wrap
msgid "`{kevlo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:825
#, no-wrap
msgid "`{zml}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:828
#, no-wrap
msgid "`{nox}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:831
#, no-wrap
msgid "`{avl}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:834
#, no-wrap
msgid "`{scottl}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:837
#, no-wrap
msgid "`{rmacklem}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:840
#, no-wrap
msgid "`{vmaffione}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:843
#, no-wrap
msgid "`{bmah}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:846
#, no-wrap
msgid "`{rm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:849
#, no-wrap
msgid "`{mtm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:852
#, no-wrap
msgid "`{dwmalone}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:855
#, no-wrap
msgid "`{marino}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:858
#, no-wrap
msgid "`{cherry}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:861
#, no-wrap
msgid "`{matusita}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:864
#, no-wrap
msgid "`{mm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:867
#, no-wrap
msgid "`{sem}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:870
#, no-wrap
msgid "`{mckusick}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:873
#, no-wrap
msgid "`{tmclaugh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:876
#, no-wrap
msgid "`{jmelo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:879
#, no-wrap
msgid "`{mmel}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:882
#, no-wrap
msgid "`{jmmv}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:885
#, no-wrap
msgid "`{kadesai}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:888
#, no-wrap
msgid "`{ken}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:891
#, no-wrap
msgid "`{markm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:894
#, no-wrap
msgid "`{dinoex}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:897
#, no-wrap
msgid "`{sanpei}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:900
#, no-wrap
msgid "`{rmh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:903
#, no-wrap
msgid "`{driesm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:906
#, no-wrap
msgid "`{jrm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:909
#, no-wrap
msgid "`{freqlabs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:912
#, no-wrap
msgid "`{mmoll}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:915
#, no-wrap
msgid "`{cmt}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:918
#, no-wrap
msgid "`{stephen}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:921
#, no-wrap
msgid "`{marcel}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:924
#, no-wrap
msgid "`{dougm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:927
#, no-wrap
msgid "`{kmoore}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:930
#, no-wrap
msgid "`{marck}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:933
#, no-wrap
msgid "`{mav}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:936
#, no-wrap
msgid "`{rich}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:939
#, no-wrap
msgid "`{knu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:942
#, no-wrap
msgid "`{tmm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:945
#, no-wrap
msgid "`{max}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:948
#, no-wrap
msgid "`{maho}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:951
#, no-wrap
msgid "`{yoichi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:954
#, no-wrap
msgid "`{bland}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:957
#, no-wrap
msgid "`{gnn}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:960
#, no-wrap
msgid "`{khng}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:963
#, no-wrap
msgid "`{simon}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:966
#, no-wrap
msgid "`{rnoland}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:969
#, no-wrap
msgid "`{anders}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:972
#, no-wrap
msgid "`{lofi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:975
#, no-wrap
msgid "`{obrien}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:978
#, no-wrap
msgid "`{olgeni}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:981
#, no-wrap
msgid "`{philip}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:984
#, no-wrap
msgid "`{jpaetzel}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:987
#, no-wrap
msgid "`{zirias}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:990
#, no-wrap
msgid "`{hiren}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:993
#, no-wrap
msgid "`{hmp}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:996
#, no-wrap
msgid "`{fluffy}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:999
#, no-wrap
msgid "`{sat}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1002
#, no-wrap
msgid "`{np}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1005
#, no-wrap
msgid "`{royger}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1008
#, no-wrap
msgid "`{rpaulo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1011
#, no-wrap
msgid "`{misha}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1014
#, no-wrap
msgid "`{rpokala}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1017
#, no-wrap
msgid "`{mp}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1020
#, no-wrap
msgid "`{roam}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1023
#, no-wrap
msgid "`{den}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1026
#, no-wrap
msgid "`{csjp}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1029
#, no-wrap
msgid "`{grahamperrin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1032
#, no-wrap
msgid "`{gerald}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1035
#, no-wrap
msgid "`{scottph}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1038
#, no-wrap
msgid "`{jacula}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1044
#, no-wrap
msgid "`{jdp}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1047
#, no-wrap
msgid "`{krion}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1050
#, no-wrap
msgid "`{sepotvin}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1053
#, no-wrap
msgid "`{cpm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1056
#, no-wrap
msgid "`{markp}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1059
#, no-wrap
msgid "`{alepulver}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1062
#, no-wrap
msgid "`{kp}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1065
#, no-wrap
msgid "`{thomas}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1068
#, no-wrap
msgid "`{hq}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1071
#, no-wrap
msgid "`{bofh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1074
#, no-wrap
msgid "`{fox}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1077
#, no-wrap
msgid "`{lbr}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1080
#, no-wrap
msgid "`{crees}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1083
#, no-wrap
msgid "`{rees}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1086
#, no-wrap
msgid "`{mr}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1092
#, no-wrap
msgid "`{trhodes}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1095
#, no-wrap
msgid "`{benno}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1098
#, no-wrap
msgid "`{beech}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1101
#, no-wrap
msgid "`{roberto}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1104
#, no-wrap
msgid "`{rodrigc}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1107
#, no-wrap
msgid "`{ler}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1110
#, no-wrap
msgid "`{leres}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1113
#, no-wrap
msgid "`{robak}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1116
#, no-wrap
msgid "`{guido}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1119
#, no-wrap
msgid "`{rea}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1122
#, no-wrap
msgid "`{ray}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1125
#, no-wrap
msgid "`{niklas}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1128
#, no-wrap
msgid "`{salvadore}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1131
#, no-wrap
msgid "`{bsam}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1134
#, no-wrap
msgid "`{marks}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1137
#, no-wrap
msgid "`{bschmidt}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1140
#, no-wrap
msgid "`{wosch}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1143
#, no-wrap
msgid "`{cy}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1146
#, no-wrap
msgid "`{das}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1149
#, no-wrap
msgid "`{scheidell}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1152
#, no-wrap
msgid "`{matthew}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1155
#, no-wrap
msgid "`{tmseck}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1158
#, no-wrap
msgid "`{johans}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1161
#, no-wrap
msgid "`{bakul}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1164
#, no-wrap
msgid "`{gshapiro}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1167
#, no-wrap
msgid "`{wxs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1170
#, no-wrap
msgid "`{nork}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1173
#, no-wrap
msgid "`{syrinx}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1176
#, no-wrap
msgid "`{vanilla}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1179
#, no-wrap
msgid "`{ashish}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1182
#, no-wrap
msgid "`{asiciliano}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1185
#, no-wrap
msgid "`{chs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1188
#, no-wrap
msgid "`{bms}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1191
#, no-wrap
msgid "`{demon}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1194
#, no-wrap
msgid "`{jesper}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1197
#, no-wrap
msgid "`{scop}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1200
#, no-wrap
msgid "`{anray}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1203
#, no-wrap
msgid "`{flo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1206
#, no-wrap
msgid "`{glebius}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1209
#, no-wrap
msgid "`{kensmith}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1212
#, no-wrap
msgid "`{ben}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1215
#, no-wrap
msgid "`{des}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1218
#, no-wrap
msgid "`{sobomax}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1221
#, no-wrap
msgid "`{asomers}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1224
#, no-wrap
msgid "`{brian}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1227
#, no-wrap
msgid "`{sson}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1230
#, no-wrap
msgid "`{nsouch}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1233
#, no-wrap
msgid "`{ssouhlal}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1236
#, no-wrap
msgid "`{loos}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1239
#, no-wrap
msgid "`{brnrd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1242
#, no-wrap
msgid "`{rink}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1245
#, no-wrap
msgid "`{vsevolod}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1248
#, no-wrap
msgid "`{pstef}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1251
#, no-wrap
msgid "`{zi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1254
#, no-wrap
msgid "`{lstewart}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1257
#, no-wrap
msgid "`{murray}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1260
#, no-wrap
msgid "`{vs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1263
#, no-wrap
msgid "`{xride}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1266
#, no-wrap
msgid "`{marius}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1269
#, no-wrap
msgid "`{cs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1272
#, no-wrap
msgid "`{clsung}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1275
#, no-wrap
msgid "`{gsutter}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1278
#, no-wrap
msgid "`{metal}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1281
#, no-wrap
msgid "`{ryusuke}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1284
#, no-wrap
msgid "`{nyan}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1287
#, no-wrap
msgid "`{sahil}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1290
#, no-wrap
msgid "`{tota}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1293
#, no-wrap
msgid "`{romain}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1296
#, no-wrap
msgid "`{eduardo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1299
#, no-wrap
msgid "`{sylvio}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1302
#, no-wrap
msgid "`{itetcu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1305
#, no-wrap
msgid "`{mi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1308
#, no-wrap
msgid "`{gordon}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1311
#, no-wrap
msgid "`{lth}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1314
#, no-wrap
msgid "`{fabient}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1317
#, no-wrap
msgid "`{thierry}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1320
#, no-wrap
msgid "`{thompsa}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1323
#, no-wrap
msgid "`{flz}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1326
#, no-wrap
msgid "`{jilles}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1329
#, no-wrap
msgid "`{ganbold}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1332
#, no-wrap
msgid "`{tuexen}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1335
#, no-wrap
msgid "`{gonzo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1338
#, no-wrap
msgid "`{ume}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1341
#, no-wrap
msgid "`{ups}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1344
#, no-wrap
msgid "`{fsu}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1347
#, no-wrap
msgid "`{mikael}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1353
#, no-wrap
msgid "`{ram}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1356
#, no-wrap
msgid "`{bryanv}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1359
#, no-wrap
msgid "`{nectar}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1362
#, no-wrap
msgid "`{avilla}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1365
#, no-wrap
msgid "`{nivit}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1368
#, no-wrap
msgid "`{ivoras}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1371
#, no-wrap
msgid "`{stefan}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1374
#, no-wrap
msgid "`{kaiw}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1377
#, no-wrap
msgid "`{adamw}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1380
#, no-wrap
msgid "`{naddy}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1383
#, no-wrap
msgid "`{peter}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1386
#, no-wrap
msgid "`{nwhitehorn}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1389
#, no-wrap
msgid "`{miwi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1392
#, no-wrap
msgid "`{nate}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1395
#, no-wrap
msgid "`{twinterg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1398
#, no-wrap
msgid "`{def}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1401
#, no-wrap
msgid "`{wollman}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1404
#, no-wrap
msgid "`{joerg}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1407
#, no-wrap
msgid "`{ygy}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1410
#, no-wrap
msgid "`{emax}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1413
#, no-wrap
msgid "`{oshogbo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1416
#, no-wrap
msgid "`{riggs}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1419
#, no-wrap
msgid "`{egypcio}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1422
#, no-wrap
msgid "`{bz}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1425
#, no-wrap
msgid "`{dsl}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1428
#, no-wrap
msgid "`{zeising}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1431
#, no-wrap
msgid "`{phantom}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1434
#, no-wrap
msgid "`{tz}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1437
#, no-wrap
msgid "`{rigoletto}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1440
#, no-wrap
msgid "`{kaktus}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1443
#, no-wrap
msgid "`{samm}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1446
#, no-wrap
msgid "`{arrowd}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1449
#, no-wrap
msgid "`{ronald}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1452
#, no-wrap
msgid "`{meta}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:1455
#, no-wrap
msgid "`{rnagy}`"
msgstr ""
+#. type: Title ===
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1458
+#, no-wrap
+msgid "`{vvd}`"
+msgstr ""
+
#. type: Title ==
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1459
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1462
#, no-wrap
msgid "Other Cluster Account Holders"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1461
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1464
#, no-wrap
msgid "`{bk}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1464
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1467
#, no-wrap
msgid "`{deb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1467
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1470
#, no-wrap
msgid "`{debdrup}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1470
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1473
#, no-wrap
msgid "`{dutchdaemon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1473
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1476
#, no-wrap
msgid "`{keymaster}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1476
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1479
#, no-wrap
msgid "`{mwlucas}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1479
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1482
#, no-wrap
msgid "`{dhw}`"
msgstr ""
diff --git a/documentation/content/en/articles/rc-scripting/_index.po b/documentation/content/en/articles/rc-scripting/_index.po
index 5ffc6b104b..f90baeddb2 100644
--- a/documentation/content/en/articles/rc-scripting/_index.po
+++ b/documentation/content/en/articles/rc-scripting/_index.po
@@ -1,1621 +1,1620 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:23-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/rc-scripting/_index.adoc:1
#, no-wrap
msgid "A guide to writing new rc.d scripts and understanding those already written"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/rc-scripting/_index.adoc:1
#: documentation/content/en/articles/rc-scripting/_index.adoc:12
#, no-wrap
msgid "Practical rc.d scripting in BSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:45
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:49
msgid ""
"Beginners may find it difficult to relate the facts from the formal "
"documentation on the BSD [.filename]#rc.d# framework with the practical "
"tasks of [.filename]#rc.d# scripting. In this article, we consider a few "
"typical cases of increasing complexity, show [.filename]#rc.d# features "
"suited for each case, and discuss how they work. Such an examination should "
"provide reference points for further study of the design and efficient "
"application of [.filename]#rc.d#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:51
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:55
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:61
msgid ""
"The historical BSD had a monolithic startup script, [.filename]#/etc/rc#. "
"It was invoked by man:init[8] at system boot time and performed all userland "
"tasks required for multi-user operation: checking and mounting file systems, "
"setting up the network, starting daemons, and so on. The precise list of "
"tasks was not the same in every system; admins needed to customize it. With "
"few exceptions, [.filename]#/etc/rc# had to be modified, and true hackers "
"liked it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:67
msgid ""
"The real problem with the monolithic approach was that it provided no "
"control over the individual components started from [.filename]#/etc/rc#. "
"For instance, [.filename]#/etc/rc# could not restart a single daemon. The "
"system admin had to find the daemon process by hand, kill it, wait until it "
"actually exited, then browse through [.filename]#/etc/rc# for the flags, and "
"finally type the full command line to start the daemon again. The task "
"would become even more difficult and prone to errors if the service to "
"restart consisted of more than one daemon or demanded additional actions. "
"In a few words, the single script failed to fulfil what scripts are for: to "
"make the system admin's life easier."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:74
msgid ""
"Later there was an attempt to split out some parts of [.filename]#/etc/rc# "
"for the sake of starting the most important subsystems separately. The "
"notorious example was [.filename]#/etc/netstart# to bring up networking. It "
"did allow for accessing the network from single-user mode, but it did not "
"integrate well into the automatic startup process because parts of its code "
"needed to interleave with actions essentially unrelated to networking. That "
"was why [.filename]#/etc/netstart# mutated into [.filename]#/etc/rc."
"network#. The latter was no longer an ordinary script; it comprised of "
"large, tangled man:sh[1] functions called from [.filename]#/etc/rc# at "
"different stages of system startup. However, as the startup tasks grew "
"diverse and sophisticated, the \"quasi-modular\" approach became even more "
"of a drag than the monolithic [.filename]#/etc/rc# had been."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:82
msgid ""
"Without a clean and well-designed framework, the startup scripts had to bend "
"over backwards to satisfy the needs of rapidly developing BSD-based "
"operating systems. It became obvious at last that more steps are necessary "
"on the way to a fine-grained and extensible [.filename]#rc# system. Thus "
"BSD [.filename]#rc.d# was born. Its acknowledged fathers were Luke Mewburn "
"and the NetBSD community. Later it was imported into FreeBSD. Its name "
"refers to the location of system scripts for individual services, which is "
"in [.filename]#/etc/rc.d#. Soon we will learn about more components of the "
"[.filename]#rc.d# system and see how the individual scripts are invoked."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:93
msgid ""
"The basic ideas behind BSD [.filename]#rc.d# are _fine modularity_ and "
"__code reuse__. _Fine modularity_ means that each basic \"service\" such as "
"a system daemon or primitive startup task gets its own man:sh[1] script able "
"to start the service, stop it, reload it, check its status. A particular "
"action is chosen by the command-line argument to the script. The [."
"filename]#/etc/rc# script still drives system startup, but now it merely "
"invokes the smaller scripts one by one with the `start` argument. It is "
"easy to perform shutdown tasks as well by running the same set of scripts "
"with the `stop` argument, which is done by [.filename]#/etc/rc.shutdown#. "
"Note how closely this follows the Unix way of having a set of small "
"specialized tools, each fulfilling its task as well as possible. _Code "
"reuse_ means that common operations are implemented as man:sh[1] functions "
"and collected in [.filename]#/etc/rc.subr#. Now a typical script can be "
"just a few lines' worth of man:sh[1] code. Finally, an important part of "
"the [.filename]#rc.d# framework is man:rcorder[8], which helps [.filename]#/"
"etc/rc# to run the small scripts orderly with respect to dependencies "
"between them. It can help [.filename]#/etc/rc.shutdown#, too, because the "
"proper order for the shutdown sequence is opposite to that of startup."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:101
msgid ""
"The BSD [.filename]#rc.d# design is described in <<lukem, the original "
"article by Luke Mewburn>>, and the [.filename]#rc.d# components are "
"documented in great detail in <<manpages, the respective manual pages>>. "
"However, it might not appear obvious to an [.filename]#rc.d# newbie how to "
-"tie the numerous bits and pieces together in order to create a well-styled "
-"script for a particular task. Therefore this article will try a different "
-"approach to describe [.filename]#rc.d#. It will show which features should "
-"be used in a number of typical cases, and why. Note that this is not a how-"
-"to document because our aim is not at giving ready-made recipes, but at "
-"showing a few easy entrances into the [.filename]#rc.d# realm. Neither is "
-"this article a replacement for the relevant manual pages. Do not hesitate "
-"to refer to them for more formal and complete documentation while reading "
-"this article."
+"tie the numerous bits and pieces together to create a well-styled script for "
+"a particular task. Therefore this article will try a different approach to "
+"describe [.filename]#rc.d#. It will show which features should be used in a "
+"number of typical cases, and why. Note that this is not a how-to document "
+"because our aim is not at giving ready-made recipes, but at showing a few "
+"easy entrances into the [.filename]#rc.d# realm. Neither is this article a "
+"replacement for the relevant manual pages. Do not hesitate to refer to them "
+"for more formal and complete documentation while reading this article."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:105
msgid ""
"There are prerequisites to understanding this article. First of all, you "
-"should be familiar with the man:sh[1] scripting language in order to master "
-"[.filename]#rc.d#. In addition, you should know how the system performs "
+"should be familiar with the man:sh[1] scripting language to master [."
+"filename]#rc.d#. In addition, you should know how the system performs "
"userland startup and shutdown tasks, which is described in man:rc[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:108
msgid ""
"This article focuses on the FreeBSD branch of [.filename]#rc.d#. "
"Nevertheless, it may be useful to NetBSD developers, too, because the two "
"branches of BSD [.filename]#rc.d# not only share the same design but also "
"stay similar in their aspects visible to script authors."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:110
#, no-wrap
msgid "Outlining the task"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:114
msgid ""
-"A little consideration before starting `$EDITOR` will not hurt. In order to "
-"write a well-tempered [.filename]#rc.d# script for a system service, we "
-"should be able to answer the following questions first:"
+"A little consideration before starting `$EDITOR` will not hurt. To write a "
+"well-tempered [.filename]#rc.d# script for a system service, we should be "
+"able to answer the following questions first:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:116
msgid "Is the service mandatory or optional?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:117
msgid ""
"Will the script serve a single program, e.g., a daemon, or perform more "
"complex actions?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:118
msgid "Which other services will our service depend on, and vice versa?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:120
msgid ""
"From the examples that follow we will see why it is important to know the "
"answers to these questions."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:122
#, no-wrap
msgid "A dummy script"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:125
msgid ""
"The following script just emits a message each time the system boots up:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:129
#, no-wrap
msgid "#!/bin/sh <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:131
#, no-wrap
msgid ". /etc/rc.subr <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:135
#, no-wrap
msgid ""
"name=\"dummy\" <.>\n"
"start_cmd=\"${name}_start\" <.>\n"
"stop_cmd=\":\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:140
#, no-wrap
msgid ""
"dummy_start() <.>\n"
"{\n"
"\techo \"Nothing started.\"\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:143
#, no-wrap
msgid ""
"load_rc_config $name <.>\n"
"run_rc_command \"$1\" <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:146
msgid "Things to note are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:152
msgid ""
"&#10122; An interpreted script should begin with the magic \"shebang\" "
"line. That line specifies the interpreter program for the script. Due to "
"the shebang line, the script can be invoked exactly like a binary program "
"provided that it has the execute bit set. (See man:chmod[1].) For example, "
"a system admin can run our script manually, from the command line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:156
#, no-wrap
msgid "# /etc/rc.d/dummy start\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:162
msgid ""
-"In order to be properly managed by the [.filename]#rc.d# framework, its "
-"scripts need to be written in the man:sh[1] language. If you have a service "
-"or port that uses a binary control utility or a startup routine written in "
-"another language, install that element in [.filename]#/usr/sbin# (for the "
-"system) or [.filename]#/usr/local/sbin# (for ports) and call it from a man:"
-"sh[1] script in the appropriate [.filename]#rc.d# directory."
+"To be properly managed by the [.filename]#rc.d# framework, its scripts need "
+"to be written in the man:sh[1] language. If you have a service or port that "
+"uses a binary control utility or a startup routine written in another "
+"language, install that element in [.filename]#/usr/sbin# (for the system) or "
+"[.filename]#/usr/local/sbin# (for ports) and call it from a man:sh[1] script "
+"in the appropriate [.filename]#rc.d# directory."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:167
msgid ""
"If you would like to learn the details of why [.filename]#rc.d# scripts must "
"be written in the man:sh[1] language, see how [.filename]#/etc/rc# invokes "
"them by means of `run_rc_script`, then study the implementation of "
"`run_rc_script` in [.filename]#/etc/rc.subr#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:173
msgid ""
"&#10123; In [.filename]#/etc/rc.subr#, a number of man:sh[1] functions are "
"defined for an [.filename]#rc.d# script to use. The functions are "
"documented in man:rc.subr[8]. While it is theoretically possible to write "
"an [.filename]#rc.d# script without ever using man:rc.subr[8], its functions "
"prove extremely handy and make the job an order of magnitude easier. So it "
"is no surprise that everybody resorts to man:rc.subr[8] in [.filename]#rc.d# "
"scripts. We are not going to be an exception."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:176
msgid ""
"An [.filename]#rc.d# script must \"source\"[.filename]#/etc/rc.subr# "
"(include it using \"`.`\") _before_ it calls man:rc.subr[8] functions so "
"that man:sh[1] has an opportunity to learn the functions. The preferred "
"style is to source [.filename]#/etc/rc.subr# first of all."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:180
msgid ""
"Some useful functions related to networking are provided by another include "
"file, [.filename]#/etc/network.subr#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:185
msgid ""
"&#10124; [[name-var]]The mandatory variable `name` specifies the name of our "
"script. It is required by man:rc.subr[8]. That is, each [.filename]#rc.d# "
"script _must_ set `name` before it calls man:rc.subr[8] functions."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:189
msgid ""
"Now it is the right time to choose a unique name for our script once and for "
"all. We will use it in a number of places while developing the script. For "
"a start, let us give the same name to the script file, too."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:196
msgid ""
"The current style of [.filename]#rc.d# scripting is to enclose values "
"assigned to variables in double quotes. Keep in mind that it is just a "
"style issue that may not always be applicable. You can safely omit quotes "
"from around simple words without man:sh[1] metacharacters in them, while in "
"certain cases you will need single quotes to prevent any interpretation of "
"the value by man:sh[1]. A programmer should be able to tell the language "
"syntax from style conventions and use both of them wisely."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:202
msgid ""
"&#10125; The main idea behind man:rc.subr[8] is that an [.filename]#rc.d# "
"script provides handlers, or methods, for man:rc.subr[8] to invoke. In "
"particular, `start`, `stop`, and other arguments to an [.filename]#rc.d# "
"script are handled this way. A method is a man:sh[1] expression stored in a "
"variable named `argument_cmd`, where _argument_ corresponds to what can be "
"specified on the script's command line. We will see later how man:rc."
"subr[8] provides default methods for the standard arguments."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:207
msgid ""
-"To make the code in [.filename]#rc.d# more uniform, it is common to use `"
-"${name}` wherever appropriate. Thus a number of lines can be just copied "
+"To make the code in [.filename]#rc.d# more uniform, it is common to use "
+"`${name}` wherever appropriate. Thus a number of lines can be just copied "
"from one script to another."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:211
msgid ""
"&#10126; We should keep in mind that man:rc.subr[8] provides default methods "
"for the standard arguments. Consequently, we must override a standard "
"method with a no-op man:sh[1] expression if we want it to do nothing."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:214
msgid ""
"&#10127; The body of a sophisticated method can be implemented as a "
"function. It is a good idea to make the function name meaningful."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:218
msgid ""
"It is strongly recommended to add the prefix `${name}` to the names of all "
"functions defined in our script so they never clash with the functions from "
"man:rc.subr[8] or another common include file."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:222
msgid ""
"&#10128; This call to man:rc.subr[8] loads man:rc.conf[5] variables. Our "
"script makes no use of them yet, but it still is recommended to load man:rc."
"conf[5] because there can be man:rc.conf[5] variables controlling man:rc."
"subr[8] itself."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:225
msgid ""
"&#10129; Usually this is the last command in an [.filename]#rc.d# script. "
"It invokes the man:rc.subr[8] machinery to perform the requested action "
"using the variables and methods our script has provided."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:227
#, no-wrap
msgid "A configurable dummy script"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:237
msgid ""
"Now let us add some controls to our dummy script. As you may know, [."
"filename]#rc.d# scripts are controlled with man:rc.conf[5]. Fortunately, "
"man:rc.subr[8] hides all the complications from us. The following script "
"uses man:rc.conf[5] via man:rc.subr[8] to see whether it is enabled in the "
"first place, and to fetch a message to show at boot time. These two tasks "
"in fact are independent. On the one hand, an [.filename]#rc.d# script can "
"just support enabling and disabling its service. On the other hand, a "
"mandatory [.filename]#rc.d# script can have configuration variables. We "
"will do both things in the same script though:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:241
#: documentation/content/en/articles/rc-scripting/_index.adoc:332
#: documentation/content/en/articles/rc-scripting/_index.adoc:389
#: documentation/content/en/articles/rc-scripting/_index.adoc:621
#: documentation/content/en/articles/rc-scripting/_index.adoc:752
#, no-wrap
msgid "#!/bin/sh\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:243
#: documentation/content/en/articles/rc-scripting/_index.adoc:334
#: documentation/content/en/articles/rc-scripting/_index.adoc:391
#: documentation/content/en/articles/rc-scripting/_index.adoc:628
#: documentation/content/en/articles/rc-scripting/_index.adoc:754
#, no-wrap
msgid ". /etc/rc.subr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:246
#, no-wrap
msgid ""
"name=dummy\n"
"rcvar=dummy_enable <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:249
#, no-wrap
msgid ""
"start_cmd=\"${name}_start\"\n"
"stop_cmd=\":\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:253
#, no-wrap
msgid ""
"load_rc_config $name <.>\n"
": ${dummy_enable:=no} <.>\n"
": ${dummy_msg=\"Nothing started.\"} <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:258
#, no-wrap
msgid ""
"dummy_start()\n"
"{\n"
"\techo \"$dummy_msg\" <.>\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:260
#, no-wrap
msgid "run_rc_command \"$1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:263
msgid "What changed in this example?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:265
msgid ""
"&#10122; The variable `rcvar` specifies the name of the ON/OFF knob variable."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:267
msgid ""
"&#10123; Now `load_rc_config` is invoked earlier in the script, before any "
"man:rc.conf[5] variables are accessed."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:273
msgid ""
"While examining [.filename]#rc.d# scripts, keep in mind that man:sh[1] "
"defers the evaluation of expressions in a function until the latter is "
"called. Therefore it is not an error to invoke `load_rc_config` as late as "
"just before `run_rc_command` and still access man:rc.conf[5] variables from "
"the method functions exported to `run_rc_command`. This is because the "
"method functions are to be called by `run_rc_command`, which is invoked "
"_after_ `load_rc_config`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:279
msgid ""
"&#10124; A warning will be emitted by `run_rc_command` if `rcvar` itself is "
"set, but the indicated knob variable is unset. If your [.filename]#rc.d# "
"script is for the base system, you should add a default setting for the knob "
"to [.filename]#/etc/defaults/rc.conf# and document it in man:rc.conf[5]. "
"Otherwise it is your script that should provide a default setting for the "
"knob. The canonical approach to the latter case is shown in the example."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:286
msgid ""
"You can make man:rc.subr[8] act as though the knob is set to `ON`, "
"irrespective of its current setting, by prefixing the argument to the script "
"with `one` or `force`, as in `onestart` or `forcestop`. Keep in mind though "
"that `force` has other dangerous effects we will touch upon below, while "
"`one` just overrides the ON/OFF knob. E.g., assume that `dummy_enable` is "
"`OFF`. The following command will run the `start` method in spite of the "
"setting:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:290
#, no-wrap
msgid "# /etc/rc.d/dummy onestart\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:297
msgid ""
"&#10125; Now the message to be shown at boot time is no longer hard-coded in "
"the script. It is specified by an man:rc.conf[5] variable named "
"`dummy_msg`. This is a trivial example of how man:rc.conf[5] variables can "
"control an [.filename]#rc.d# script."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:302
msgid ""
"The names of all man:rc.conf[5] variables used exclusively by our script "
"_must_ have the same prefix: `${name}_`. For example: `dummy_mode`, "
"`dummy_state_file`, and so on."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:307
msgid ""
"While it is possible to use a shorter name internally, e.g., just `msg`, "
"adding the unique prefix `${name}_` to all global names introduced by our "
"script will save us from possible collisions with the man:rc.subr[8] "
"namespace."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:310
msgid ""
"As a rule, [.filename]#rc.d# scripts of the base system need not provide "
"defaults for their man:rc.conf[5] variables because the defaults should be "
"set in [.filename]#/etc/defaults/rc.conf# instead. On the other hand, [."
"filename]#rc.d# scripts for ports should provide the defaults as shown in "
"the example."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:314
msgid ""
"&#10126; Here we use `dummy_msg` to actually control our script, i.e., to "
"emit a variable message. Use of a shell function is overkill here, since it "
"only runs a single command; an equally valid alternative is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:318
#, no-wrap
msgid "start_cmd=\"echo \\\"$dummy_msg\\\"\"\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:321
#, no-wrap
msgid "Startup and shutdown of a simple daemon"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:328
msgid ""
"We said earlier that man:rc.subr[8] could provide default methods. "
"Obviously, such defaults cannot be too general. They are suited for the "
"common case of starting and shutting down a simple daemon program. Let us "
"assume now that we need to write an [.filename]#rc.d# script for such a "
"daemon called `mumbled`. Here it is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:337
#: documentation/content/en/articles/rc-scripting/_index.adoc:394
#: documentation/content/en/articles/rc-scripting/_index.adoc:631
#, no-wrap
msgid ""
"name=mumbled\n"
"rcvar=mumbled_enable\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:339
#, no-wrap
msgid "command=\"/usr/sbin/${name}\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:342
#: documentation/content/en/articles/rc-scripting/_index.adoc:440
#: documentation/content/en/articles/rc-scripting/_index.adoc:646
#, no-wrap
msgid ""
"load_rc_config $name\n"
"run_rc_command \"$1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:346
msgid ""
"Pleasingly simple, isn't it? Let us examine our little script. The only new "
"thing to note is as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:350
msgid ""
"&#10122; The `command` variable is meaningful to man:rc.subr[8]. If it is "
"set, man:rc.subr[8] will act according to the scenario of serving a "
"conventional daemon. In particular, the default methods will be provided "
"for such arguments: `start`, `stop`, `restart`, `poll`, and `status`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:359
msgid ""
"The daemon will be started by running `$command` with command-line flags "
"specified by `$mumbled_flags`. Thus all the input data for the default "
"`start` method are available in the variables set by our script. Unlike "
"`start`, other methods may require additional information about the process "
"started. For instance, `stop` must know the PID of the process to terminate "
"it. In the present case, man:rc.subr[8] will scan through the list of all "
"processes, looking for a process with its name equal to `procname`. The "
"latter is another variable of meaning to man:rc.subr[8], and its value "
"defaults to that of `command`. In other words, when we set `command`, "
"`procname` is effectively set to the same value. This enables our script to "
"kill the daemon and to check if it is running in the first place."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:366
msgid ""
"Some programs are in fact executable scripts. The system runs such a script "
"by starting its interpreter and passing the name of the script to it as a "
"command-line argument. This is reflected in the list of processes, which "
"can confuse man:rc.subr[8]. You should additionally set "
"`command_interpreter` to let man:rc.subr[8] know the actual name of the "
"process if `$command` is a script."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:371
msgid ""
"For each [.filename]#rc.d# script, there is an optional man:rc.conf[5] "
"variable that takes precedence over `command`. Its name is constructed as "
"follows: `${name}_program`, where `name` is the mandatory variable we "
"discussed <<name-var, earlier>>. E.g., in this case it will be "
"`mumbled_program`. It is man:rc.subr[8] that arranges `${name}_program` to "
"override `command`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:375
msgid ""
"Of course, man:sh[1] will permit you to set `${name}_program` from man:rc."
"conf[5] or the script itself even if `command` is unset. In that case, the "
"special properties of `${name}_program` are lost, and it becomes an ordinary "
"variable your script can use for its own purposes. However, the sole use of "
"`${name}_program` is discouraged because using it together with `command` "
"became an idiom of [.filename]#rc.d# scripting."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:378
msgid ""
"For more detailed information on default methods, refer to man:rc.subr[8]."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:380
#, no-wrap
msgid "Startup and shutdown of an advanced daemon"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:385
msgid ""
"Let us add some meat onto the bones of the previous script and make it more "
"complex and featureful. The default methods can do a good job for us, but "
"we may need some of their aspects tweaked. Now we will learn how to tune "
"the default methods to our needs."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:397
#, no-wrap
msgid ""
"command=\"/usr/sbin/${name}\"\n"
"command_args=\"mock arguments > /dev/null 2>&1\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:399
#, no-wrap
msgid "pidfile=\"/var/run/${name}.pid\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:401
#, no-wrap
msgid "required_files=\"/etc/${name}.conf /usr/share/misc/${name}.rules\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:403
#, no-wrap
msgid "sig_reload=\"USR1\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:406
#, no-wrap
msgid ""
"start_precmd=\"${name}_prestart\" <.>\n"
"stop_postcmd=\"echo Bye-bye\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:408
#, no-wrap
msgid "extra_commands=\"reload plugh xyzzy\" <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:411
#, no-wrap
msgid ""
"plugh_cmd=\"mumbled_plugh\" <.>\n"
"xyzzy_cmd=\"echo 'Nothing happens.'\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:432
#, no-wrap
msgid ""
"mumbled_prestart()\n"
"{\n"
"\tif checkyesno mumbled_smart; then <.>\n"
"\t\trc_flags=\"-o smart ${rc_flags}\" <.>\n"
"\tfi\n"
"\tcase \"$mumbled_mode\" in\n"
"\tfoo)\n"
"\t\trc_flags=\"-frotz ${rc_flags}\"\n"
"\t\t;;\n"
"\tbar)\n"
"\t\trc_flags=\"-baz ${rc_flags}\"\n"
"\t\t;;\n"
"\t*)\n"
"\t\twarn \"Invalid value for mumbled_mode\" <.>\n"
"\t\treturn 1 <.>\n"
"\t\t;;\n"
"\tesac\n"
"\trun_rc_command xyzzy <.>\n"
"\treturn 0\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:437
#, no-wrap
msgid ""
"mumbled_plugh() <.>\n"
"{\n"
"\techo 'A hollow voice says \"plugh\".'\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:445
msgid ""
"&#10122; Additional arguments to `$command` can be passed in "
-"`command_args`. They will be added to the command line after `"
-"$mumbled_flags`. Since the final command line is passed to `eval` for its "
+"`command_args`. They will be added to the command line after "
+"`$mumbled_flags`. Since the final command line is passed to `eval` for its "
"actual execution, input and output redirections can be specified in "
"`command_args`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:452
msgid ""
"_Never_ include dashed options, like `-X` or `--foo`, in `command_args`. "
"The contents of `command_args` will appear at the end of the final command "
"line, hence they are likely to follow arguments present in `${name}_flags`; "
"but most commands will not recognize dashed options after ordinary "
"arguments. A better way of passing additional options to `$command` is to "
"add them to the beginning of `${name}_flags`. Another way is to modify "
"`rc_flags` <<rc-flags, as shown later>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:456
msgid ""
"&#10123; A good-mannered daemon should create a _pidfile_ so that its "
"process can be found more easily and reliably. The variable `pidfile`, if "
"set, tells man:rc.subr[8] where it can find the pidfile for its default "
"methods to use."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:461
msgid ""
"In fact, man:rc.subr[8] will also use the pidfile to see if the daemon is "
"already running before starting it. This check can be skipped by using the "
"`faststart` argument."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:466
msgid ""
"&#10124; If the daemon cannot run unless certain files exist, just list them "
"in `required_files`, and man:rc.subr[8] will check that those files do exist "
"before starting the daemon. There also are `required_dirs` and "
"`required_vars` for directories and environment variables, respectively. "
"They all are described in detail in man:rc.subr[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:470
msgid ""
"The default method from man:rc.subr[8] can be forced to skip the "
"prerequisite checks by using `forcestart` as the argument to the script."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:476
msgid ""
"&#10125; We can customize signals to send to the daemon in case they differ "
"from the well-known ones. In particular, `sig_reload` specifies the signal "
"that makes the daemon reload its configuration; it is SIGHUP by default. "
"Another signal is sent to stop the daemon process; the default is SIGTERM, "
"but this can be changed by setting `sig_stop` appropriately."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:481
msgid ""
"The signal names should be specified to man:rc.subr[8] without the `SIG` "
"prefix, as it is shown in the example. The FreeBSD version of man:kill[1] "
"can recognize the `SIG` prefix, but the versions from other OS types may not."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:486
msgid ""
"&#10126;&#10127; Performing additional tasks before or after the default "
"methods is easy. For each command-argument supported by our script, we can "
"define `argument_precmd` and `argument_postcmd`. These man:sh[1] commands "
"are invoked before and after the respective method, as it is evident from "
"their names."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:492
msgid ""
"Overriding a default method with a custom `argument_cmd` still does not "
"prevent us from making use of `argument_precmd` or `argument_postcmd` if we "
"need to. In particular, the former is good for checking custom, "
"sophisticated conditions that should be met before performing the command "
"itself. Using `argument_precmd` along with `argument_cmd` lets us logically "
"separate the checks from the action."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:495
msgid ""
"Do not forget that you can cram any valid man:sh[1] expressions into the "
"methods, pre-, and post-commands you define. Just invoking a function that "
"makes the real job is a good style in most cases, but never let style limit "
"your understanding of what is going on behind the curtain."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:498
msgid ""
"&#10128; If we would like to implement custom arguments, which can also be "
"thought of as _commands_ to our script, we need to list them in "
"`extra_commands` and provide methods to handle them."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:506
msgid ""
"The `reload` command is special. On the one hand, it has a preset method in "
"man:rc.subr[8]. On the other hand, `reload` is not offered by default. The "
"reason is that not all daemons use the same reload mechanism and some have "
"nothing to reload at all. So we need to ask explicitly that the builtin "
"functionality be provided. We can do so via `extra_commands`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:510
msgid ""
"What do we get from the default method for `reload`? Quite often daemons "
"reload their configuration upon reception of a signal - typically, SIGHUP. "
"Therefore man:rc.subr[8] attempts to reload the daemon by sending a signal "
"to it. The signal is preset to SIGHUP but can be customized via "
"`sig_reload` if necessary."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:515
msgid ""
"&#10129;&#9454; Our script supports two non-standard commands, `plugh` and "
"`xyzzy`. We saw them listed in `extra_commands`, and now it is time to "
"provide methods for them. The method for `xyzzy` is just inlined while that "
"for `plugh` is implemented as the `mumbled_plugh` function."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:519
msgid ""
"Non-standard commands are not invoked during startup or shutdown. Usually "
"they are for the system admin's convenience. They can also be used from "
"other subsystems, e.g., man:devd[8] if specified in man:devd.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:522
msgid ""
"The full list of available commands can be found in the usage line printed "
"by man:rc.subr[8] when the script is invoked without arguments. For "
"example, here is the usage line from the script under study:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:527
#, no-wrap
msgid ""
"# /etc/rc.d/mumbled\n"
"Usage: /etc/rc.d/mumbled [fast|force|one](start|stop|restart|rcvar|reload|plugh|xyzzy|status|poll)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:534
msgid ""
"&#9453; A script can invoke its own standard or non-standard commands if "
"needed. This may look similar to calling functions, but we know that "
"commands and shell functions are not always the same thing. For instance, "
"`xyzzy` is not implemented as a function here. In addition, there can be a "
"pre-command and post-command, which should be invoked orderly. So the "
"proper way for a script to run its own command is by means of man:rc."
"subr[8], as shown in the example."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:540
msgid ""
"&#10130; A handy function named `checkyesno` is provided by man:rc.subr[8]. "
"It takes a variable name as its argument and returns a zero exit code if and "
"only if the variable is set to `YES`, or `TRUE`, or `ON`, or `1`, case "
"insensitive; a non-zero exit code is returned otherwise. In the latter "
"case, the function tests the variable for being set to `NO`, `FALSE`, `OFF`, "
"or `0`, case insensitive; it prints a warning message if the variable "
"contains anything else, i.e., junk."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:542
msgid ""
"Keep in mind that for man:sh[1] a zero exit code means true and a non-zero "
"exit code means false."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:547
msgid ""
"The `checkyesno` function takes a __variable name__. Do not pass the "
"expanded _value_ of a variable to it; it will not work as expected."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:549
msgid "The following is the correct usage of `checkyesno`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:555
#, no-wrap
msgid ""
"if checkyesno mumbled_enable; then\n"
" foo\n"
"fi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:558
msgid ""
"On the contrary, calling `checkyesno` as shown below will not work - at "
"least not as expected:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:564
#, no-wrap
msgid ""
"if checkyesno \"${mumbled_enable}\"; then\n"
" foo\n"
"fi\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:569
msgid ""
"&#10131; [[rc-flags]]We can affect the flags to be passed to `$command` by "
"modifying `rc_flags` in `$start_precmd`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:573
msgid ""
"&#9451; In certain cases we may need to emit an important message that "
"should go to `syslog` as well. This can be done easily with the following "
"man:rc.subr[8] functions: `debug`, `info`, `warn`, and `err`. The latter "
"function then exits the script with the code specified."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:577
msgid ""
"&#9452; The exit codes from methods and their pre-commands are not just "
"ignored by default. If `argument_precmd` returns a non-zero exit code, the "
"main method will not be performed. In turn, `argument_postcmd` will not be "
"invoked unless the main method returns a zero exit code."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:581
msgid ""
"However, man:rc.subr[8] can be instructed from the command line to ignore "
"those exit codes and invoke all commands anyway by prefixing an argument "
"with `force`, as in `forcestart`."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:584
#, no-wrap
msgid "Connecting a script to the rc.d framework"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:591
msgid ""
"After a script has been written, it needs to be integrated into [."
"filename]#rc.d#. The crucial step is to install the script in [.filename]#/"
"etc/rc.d# (for the base system) or [.filename]#/usr/local/etc/rc.d# (for "
"ports). Both [.filename]#bsd.prog.mk# and [.filename]#bsd.port.mk# provide "
"convenient hooks for that, and usually you do not have to worry about the "
"proper ownership and mode. System scripts should be installed from [."
"filename]#src/libexec/rc/rc.d# through the [.filename]#Makefile# found "
"there. Port scripts can be installed using `USE_RC_SUBR` as described "
"extref:{porters-handbook}[in the Porter's Handbook, rc-scripts]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:596
msgid ""
"However, we should consider beforehand the place of our script in the system "
"startup sequence. The service handled by our script is likely to depend on "
"other services. For instance, a network daemon cannot function without the "
"network interfaces and routing up and running. Even if a service seems to "
"demand nothing, it can hardly start before the basic filesystems have been "
"checked and mounted."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:602
msgid ""
"We mentioned man:rcorder[8] already. Now it is time to have a close look at "
"it. In a nutshell, man:rcorder[8] takes a set of files, examines their "
"contents, and prints a dependency-ordered list of files from the set to "
"`stdout`. The point is to keep dependency information _inside_ the files so "
"that each file can speak for itself only. A file can specify the following "
"information:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:604
msgid ""
"the names of the \"conditions\" (which means services to us) it __provides__;"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:605
msgid "the names of the \"conditions\" it __requires__;"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:606
msgid "the names of the \"conditions\" this file should run __before__;"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:607
msgid ""
"additional _keywords_ that can be used to select a subset from the whole set "
"of files (man:rcorder[8] can be instructed via options to include or omit "
"the files having particular keywords listed.)"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:612
msgid ""
"It is no surprise that man:rcorder[8] can handle only text files with a "
"syntax close to that of man:sh[1]. That is, special lines understood by man:"
"rcorder[8] look like man:sh[1] comments. The syntax of such special lines "
"is rather rigid to simplify their processing. See man:rcorder[8] for "
"details."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:615
msgid ""
"Besides using man:rcorder[8] special lines, a script can insist on its "
"dependency upon another service by just starting it forcibly. This can be "
"needed when the other service is optional and will not start by itself "
"because the system admin has disabled it mistakenly in man:rc.conf[5]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:617
msgid ""
"With this general knowledge in mind, let us consider the simple daemon "
"script enhanced with dependency stuff:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:626
#, no-wrap
msgid ""
"# PROVIDE: mumbled oldmumble <.>\n"
"# REQUIRE: DAEMON cleanvar frotz <.>\n"
"# BEFORE: LOGIN <.>\n"
"# KEYWORD: nojail shutdown <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:634
#, no-wrap
msgid ""
"command=\"/usr/sbin/${name}\"\n"
"start_precmd=\"${name}_prestart\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:643
#, no-wrap
msgid ""
"mumbled_prestart()\n"
"{\n"
"\tif ! checkyesno frotz_enable && \\\n"
"\t ! /etc/rc.d/frotz forcestatus 1>/dev/null 2>&1; then\n"
"\t\tforce_depend frotz || return 1 <.>\n"
"\tfi\n"
"\treturn 0\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:649
msgid "As before, detailed analysis follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:652
msgid ""
"&#10122; That line declares the names of \"conditions\" our script "
"provides. Now other scripts can record a dependency on our script by those "
"names."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:657
msgid ""
"Usually a script specifies a single condition provided. However, nothing "
"prevents us from listing several conditions there, e.g., for compatibility "
"reasons."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:659
msgid ""
"In any case, the name of the main, or the only, `PROVIDE:` condition should "
"be the same as `${name}`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:663
msgid ""
"&#10123;&#10124; So our script indicates which \"conditions\" provided by "
"other scripts it depends on. According to the lines, our script asks man:"
"rcorder[8] to put it after the script(s) providing [.filename]#DAEMON# and [."
"filename]#cleanvar#, but before that providing [.filename]#LOGIN#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:669
msgid ""
"The `BEFORE:` line should not be abused to work around an incomplete "
"dependency list in the other script. The appropriate case for using `BEFORE:"
"` is when the other script does not care about ours, but our script can do "
"its task better if run before the other one. A typical real-life example is "
"the network interfaces vs. the firewall: While the interfaces do not depend "
"on the firewall in doing their job, the system security will benefit from "
"the firewall being ready before there is any network traffic."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:673
msgid ""
"Besides conditions corresponding to a single service each, there are meta-"
"conditions and their \"placeholder\" scripts used to ensure that certain "
"groups of operations are performed before others. These are denoted by [."
"filename]#UPPERCASE# names. Their list and purposes can be found in man:"
"rc[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:679
msgid ""
"Keep in mind that putting a service name in the `REQUIRE:` line does not "
"guarantee that the service will actually be running by the time our script "
"starts. The required service may fail to start or just be disabled in man:"
"rc.conf[5]. Obviously, man:rcorder[8] cannot track such details, and man:"
"rc[8] will not do that either. Consequently, the application started by our "
"script should be able to cope with any required services being unavailable. "
"In certain cases, we can help it as discussed <<forcedep, below>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:684
msgid ""
"[[keywords]]&#10125; As we remember from the above text, man:rcorder[8] "
"keywords can be used to select or leave out some scripts. Namely any man:"
"rcorder[8] consumer can specify through `-k` and `-s` options which keywords "
"are on the \"keep list\" and \"skip list\", respectively. From all the "
"files to be dependency sorted, man:rcorder[8] will pick only those having a "
"keyword from the keep list (unless empty) and not having a keyword from the "
"skip list."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:687
msgid ""
"In FreeBSD, man:rcorder[8] is used by [.filename]#/etc/rc# and [.filename]#/"
"etc/rc.shutdown#. These two scripts define the standard list of FreeBSD [."
"filename]#rc.d# keywords and their meanings as follows:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/rc-scripting/_index.adoc:688
#, no-wrap
msgid "nojail"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:690
msgid ""
"The service is not for man:jail[8] environment. The automatic startup and "
"shutdown procedures will ignore the script if inside a jail."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/rc-scripting/_index.adoc:691
#, no-wrap
msgid "nostart"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:694
msgid ""
"The service is to be started manually or not started at all. The automatic "
"startup procedure will ignore the script. In conjunction with the [."
"filename]#shutdown# keyword, this can be used to write scripts that do "
"something only at system shutdown."
msgstr ""
#. type: Labeled list
#: documentation/content/en/articles/rc-scripting/_index.adoc:695
#, no-wrap
msgid "shutdown"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:696
msgid ""
"This keyword is to be listed __explicitly__ if the service needs to be "
"stopped before system shutdown."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:709
msgid ""
"When the system is going to shut down, [.filename]#/etc/rc.shutdown# runs. "
"It assumes that most [.filename]#rc.d# scripts have nothing to do at that "
"time. Therefore [.filename]#/etc/rc.shutdown# selectively invokes [."
"filename]#rc.d# scripts with the [.filename]#shutdown# keyword, effectively "
"ignoring the rest of the scripts. For even faster shutdown, [.filename]#/"
"etc/rc.shutdown# passes the [.filename]#faststop# command to the scripts it "
"runs so that they skip preliminary checks, e.g., the pidfile check. As "
"dependent services should be stopped before their prerequisites, [."
"filename]#/etc/rc.shutdown# runs the scripts in reverse dependency order. "
"If writing a real [.filename]#rc.d# script, you should consider whether it "
"is relevant at system shutdown time. E.g., if your script does its work in "
"response to the [.filename]#start# command only, then you need not to "
"include this keyword. However, if your script manages a service, it is "
"probably a good idea to stop it before the system proceeds to the final "
"stage of its shutdown sequence described in man:halt[8]. In particular, a "
"service should be stopped explicitly if it needs considerable time or "
"special actions to shut down cleanly. A typical example of such a service "
"is a database engine."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:713
msgid ""
"[[forcedep]]&#10126; To begin with, `force_depend` should be used with much "
"care. It is generally better to revise the hierarchy of configuration "
"variables for your [.filename]#rc.d# scripts if they are interdependent."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:722
msgid ""
"If you still cannot do without `force_depend`, the example offers an idiom "
"of how to invoke it conditionally. In the example, our `mumbled` daemon "
"requires that another one, `frotz`, be started in advance. However, `frotz` "
"is optional, too; and man:rcorder[8] knows nothing about such details. "
"Fortunately, our script has access to all man:rc.conf[5] variables. If "
"`frotz_enable` is true, we hope for the best and rely on [.filename]#rc.d# "
"to have started `frotz`. Otherwise we forcibly check the status of "
"`frotz`. Finally, we enforce our dependency on `frotz` if it is found to be "
"not running. A warning message will be emitted by `force_depend` because it "
"should be invoked only if a misconfiguration has been detected."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:724
#, no-wrap
msgid "Giving more flexibility to an rc.d script"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:733
msgid ""
"When invoked during startup or shutdown, an [.filename]#rc.d# script is "
"supposed to act on the entire subsystem it is responsible for. E.g., [."
"filename]#/etc/rc.d/netif# should start or stop all network interfaces "
"described by man:rc.conf[5]. Either task can be uniquely indicated by a "
"single command argument such as `start` or `stop`. Between startup and "
"shutdown, [.filename]#rc.d# scripts help the admin to control the running "
"system, and it is when the need for more flexibility and precision arises. "
"For instance, the admin may want to add the settings of a new network "
"interface to man:rc.conf[5] and then to start it without interfering with "
"the operation of the existing interfaces. Next time the admin may need to "
"shut down a single network interface. In the spirit of the command line, "
"the respective [.filename]#rc.d# script calls for an extra argument, the "
"interface name."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:736
msgid ""
"Fortunately, man:rc.subr[8] allows for passing any number of arguments to "
"script's methods (within the system limits). Due to that, the changes in "
"the script itself can be minimal."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:741
msgid ""
"How can man:rc.subr[8] gain access to the extra command-line arguments. "
"Should it just grab them directly? Not by any means. Firstly, an man:sh[1] "
"function has no access to the positional parameters of its caller, but man:"
"rc.subr[8] is just a sack of such functions. Secondly, the good manner of [."
"filename]#rc.d# dictates that it is for the main script to decide which "
"arguments are to be passed to its methods."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:745
msgid ""
"So the approach adopted by man:rc.subr[8] is as follows: `run_rc_command` "
"passes on all its arguments but the first one to the respective method "
"verbatim. The first, omitted, argument is the name of the method itself: "
"`start`, `stop`, etc. It will be shifted out by `run_rc_command`, so what "
"is `$2` in the original command line will be presented as `$1` to the "
"method, and so on."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:748
msgid ""
"To illustrate this opportunity, let us modify the primitive dummy script so "
"that its messages depend on the additional arguments supplied. Here we go:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:760
#, no-wrap
msgid ""
"name=\"dummy\"\n"
"start_cmd=\"${name}_start\"\n"
"stop_cmd=\":\"\n"
"kiss_cmd=\"${name}_kiss\"\n"
"extra_commands=\"kiss\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:769
#, no-wrap
msgid ""
"dummy_start()\n"
"{\n"
" if [ $# -gt 0 ]; then <.>\n"
" echo \"Greeting message: $*\"\n"
" else\n"
" echo \"Nothing started.\"\n"
" fi\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:785
#, no-wrap
msgid ""
"dummy_kiss()\n"
"{\n"
" echo -n \"A ghost gives you a kiss\"\n"
" if [ $# -gt 0 ]; then <.>\n"
" echo -n \" and whispers: $*\"\n"
" fi\n"
" case \"$*\" in\n"
" *[.!?])\n"
" echo\n"
" ;;\n"
" *)\n"
" echo .\n"
" ;;\n"
" esac\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:788
#, no-wrap
msgid ""
"load_rc_config $name\n"
"run_rc_command \"$@\" <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:791
msgid "What essential changes can we notice in the script?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:796
msgid ""
"&#10122; All arguments you type after `start` can end up as positional "
"parameters to the respective method. We can use them in any way according "
"to our task, skills, and fancy. In the current example, we just pass all of "
"them to man:echo[1] as one string in the next line - note `$*` within the "
"double quotes. Here is how the script can be invoked now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:801
#, no-wrap
msgid ""
"# /etc/rc.d/dummy start\n"
"Nothing started.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:804
#, no-wrap
msgid ""
"# /etc/rc.d/dummy start Hello world!\n"
"Greeting message: Hello world!\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:808
msgid ""
"&#10123; The same applies to any method our script provides, not only to a "
"standard one. We have added a custom method named `kiss`, and it can take "
"advantage of the extra arguments not less than `start` does. E.g.:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:813
#, no-wrap
msgid ""
"# /etc/rc.d/dummy kiss\n"
"A ghost gives you a kiss.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:816
#, no-wrap
msgid ""
"# /etc/rc.d/dummy kiss Once I was Etaoin Shrdlu...\n"
"A ghost gives you a kiss and whispers: Once I was Etaoin Shrdlu...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:819
msgid ""
"&#10124; If we want just to pass all extra arguments to any method, we can "
"merely substitute `\"$@\"` for `\"$1\"` in the last line of our script, "
"where we invoke `run_rc_command`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:825
msgid ""
-"An man:sh[1] programmer ought to understand the subtle difference between `"
-"$*` and `$@` as the ways to designate all positional parameters. For its in-"
-"depth discussion, refer to a good handbook on man:sh[1] scripting. _Do not_ "
-"use the expressions until you fully understand them because their misuse "
-"will result in buggy and insecure scripts."
+"An man:sh[1] programmer ought to understand the subtle difference between "
+"`$*` and `$@` as the ways to designate all positional parameters. For its "
+"in-depth discussion, refer to a good handbook on man:sh[1] scripting. _Do "
+"not_ use the expressions until you fully understand them because their "
+"misuse will result in buggy and insecure scripts."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/rc-scripting/_index.adoc:832
msgid ""
"Currently `run_rc_command` may have a bug that prevents it from keeping the "
"original boundaries between arguments. That is, arguments with embedded "
"whitespace may not be processed correctly. The bug stems from `$*` misuse."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/rc-scripting/_index.adoc:835
#, no-wrap
msgid "Further reading"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:839
msgid ""
"[[lukem]]http://www.mewburn.net/luke/papers/rc.d.pdf[The original article by "
"Luke Mewburn] offers a general overview of [.filename]#rc.d# and detailed "
"rationale for its design decisions. It provides insight on the whole [."
"filename]#rc.d# framework and its place in a modern BSD operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:842
msgid ""
"[[manpages]]The manual pages man:rc[8], man:rc.subr[8], and man:rcorder[8] "
"document the [.filename]#rc.d# components in great detail. You cannot fully "
"use the [.filename]#rc.d# power without studying the manual pages and "
"referring to them while writing your own scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/rc-scripting/_index.adoc:846
msgid ""
"The major source of working, real-life examples is [.filename]#/etc/rc.d# in "
"a live system. Its contents are easy and pleasant to read because most "
"rough corners are hidden deep in man:rc.subr[8]. Keep in mind though that "
"the [.filename]#/etc/rc.d# scripts were not written by angels, so they might "
"suffer from bugs and suboptimal design decisions. Now you can improve them!"
msgstr ""
diff --git a/documentation/content/en/articles/remote-install/_index.po b/documentation/content/en/articles/remote-install/_index.po
index 16b230bb06..ebd348bd77 100644
--- a/documentation/content/en/articles/remote-install/_index.po
+++ b/documentation/content/en/articles/remote-install/_index.po
@@ -1,780 +1,779 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:21-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/remote-install/_index.adoc:1
#, no-wrap
msgid "Describes the remote installation of the FreeBSD operating system when the console of the remote system is unavailable"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/remote-install/_index.adoc:1
#: documentation/content/en/articles/remote-install/_index.adoc:12
#, no-wrap
msgid "Remote Installation of the FreeBSD Operating System Without a Remote Console"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:45
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:48
msgid ""
"This article documents the remote installation of the FreeBSD operating "
"system when the console of the remote system is unavailable. The main idea "
"behind this article is the result of a collaboration with `{mm}` with "
"valuable input provided by `{pjd}`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:50
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/remote-install/_index.adoc:54
#, no-wrap
msgid "Background"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:58
msgid ""
"There are many server hosting providers in the world, but very few of them "
"are officially supporting FreeBSD. They usually provide support for a "
"Linux(R) distribution to be installed on the servers they offer."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:62
msgid ""
"In some cases, these companies will install your preferred Linux(R) "
"distribution if you request it. Using this option, we will attempt to "
"install FreeBSD. In other cases, they may offer a rescue system which would "
"be used in an emergency. It is possible to use this for our purposes as "
"well."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:64
msgid ""
"This article covers the basic installation and configuration steps required "
"to bootstrap a remote installation of FreeBSD with RAID-1 and ZFS "
"capabilities."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/remote-install/_index.adoc:66
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:70
msgid ""
"This section will summarize the purpose of this article and better explain "
"what is covered herein. The instructions included in this article will "
"benefit those using services provided by colocation facilities not "
"supporting FreeBSD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/remote-install/_index.adoc:74
msgid ""
"As we have mentioned in the <<background>> section, many of the reputable "
"server hosting companies provide some kind of rescue system, which is booted "
-"from their LAN and accessible over SSH. They usually provide this support in "
-"order to help their customers fix broken operating systems. As this article "
-"will explain, it is possible to install FreeBSD with the help of these "
-"rescue systems."
+"from their LAN and accessible over SSH. They usually provide this support to "
+"help their customers fix broken operating systems. As this article will "
+"explain, it is possible to install FreeBSD with the help of these rescue "
+"systems."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/remote-install/_index.adoc:76
msgid ""
"The next section of this article will describe how to configure, and build "
"minimalistic FreeBSD on the local machine. That version will eventually be "
"running on the remote machine from a ramdisk, which will allow us to install "
"a complete FreeBSD operating system from an FTP mirror using the sysinstall "
"utility."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/remote-install/_index.adoc:77
msgid ""
"The rest of this article will describe the installation procedure itself, as "
"well as the configuration of the ZFS file system."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/remote-install/_index.adoc:80
#, no-wrap
msgid "Requirements"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:83
msgid "To continue successfully, you must:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:85
msgid "Have a network accessible operating system with SSH access"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:86
msgid "Understand the FreeBSD installation process"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:87
msgid "Be familiar with the man:sysinstall[8] utility"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:88
msgid "Have the FreeBSD installation SO image or CD handy"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/remote-install/_index.adoc:90
#, no-wrap
msgid "Preparation - mfsBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:94
msgid ""
"Before FreeBSD may be installed on the target system, it is necessary to "
"build the minimal FreeBSD operating system image which will boot from the "
"hard drive. This way the new system can be accessed from the network, and "
"the rest of the installation can be done without remote access to the system "
"console."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:99
msgid ""
"The mfsBSD tool-set can be used to build a tiny FreeBSD image. As the name "
"of mfsBSD suggests (\"mfs\" means \"memory file system\"), the resulting "
"image runs entirely from a ramdisk. Thanks to this feature, the "
"manipulation of hard drives will not be limited, therefore it will be "
"possible to install a complete FreeBSD operating system. The mfsBSD http://"
"mfsbsd.vx.sk/[home page] includes pointers to the latest release of the "
"toolset."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:102
msgid ""
"Please note that the internals of mfsBSD and how it all fits together is "
"beyond the scope of this article. The interested reader should consult the "
"original documentation of mfsBSD for more details."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:104
msgid ""
"Download and extract the latest mfsBSD release and change your working "
"directory to the directory where the mfsBSD scripts will reside:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:110
#, no-wrap
msgid ""
"# fetch http://mfsbsd.vx.sk/release/mfsbsd-2.1.tar.gz\n"
"# tar xvzf mfsbsd-2.1.tar.gz\n"
"# cd mfsbsd-2.1/\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/remote-install/_index.adoc:113
#, no-wrap
msgid "Configuration of mfsBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:119
msgid ""
"Before booting mfsBSD, a few important configuration options have to be "
"set. The most important that we have to get right is, naturally, the "
"network setup. The most suitable method to configure networking options "
"depends on whether we know beforehand the type of the network interface we "
"will use, and the network interface driver to be loaded for our hardware. "
"We will see how mfsBSD can be configured in either case."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:123
msgid ""
"Another important thing to set is the `root` password. This can be done by "
"editing [.filename]#conf/loader.conf#. Please see the included comments."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/remote-install/_index.adoc:124
#, no-wrap
msgid "The [.filename]#conf/interfaces.conf# method"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:128
msgid ""
"When the installed network interface card is unknown, it is possible to use "
"the auto-detection features of mfsBSD. The startup scripts of mfsBSD can "
"detect the correct driver to use, based on the MAC address of the interface, "
"if we set the following options in [.filename]#conf/interfaces.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:134
#, no-wrap
msgid ""
"mac_interfaces=\"ext1\"\n"
"ifconfig_ext1_mac=\"00:00:00:00:00:00\"\n"
"ifconfig_ext1=\"inet 192.168.0.2/24\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:137
msgid ""
"Do not forget to add the `defaultrouter` information to [.filename]#conf/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:141
#, no-wrap
msgid "defaultrouter=\"192.168.0.1\"\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/remote-install/_index.adoc:143
#, no-wrap
msgid "The [.filename]#conf/rc.conf# Method"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:147
msgid ""
"When the network interface driver is known, it is more convenient to use [."
"filename]#conf/rc.conf# for networking options. The syntax of this file is "
"the same as the one used in the standard man:rc.conf[5] file of FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:149
msgid ""
"For example, if you know that a man:re[4] network interface is going to be "
"available, you can set the following options in [.filename]#conf/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:154
#, no-wrap
msgid ""
"defaultrouter=\"192.168.0.1\"\n"
"ifconfig_re0=\"inet 192.168.0.2/24\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/remote-install/_index.adoc:157
#, no-wrap
msgid "Building an mfsBSD Image"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:160
msgid "The process of building an mfsBSD image is pretty straightforward."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:164
msgid ""
"The first step is to mount the FreeBSD installation CD, or the installation "
"ISO image to [.filename]#/cdrom#. For the sake of example, in this article "
"we will assume that you have downloaded the FreeBSD 10.1-RELEASE ISO. "
"Mounting this ISO image to the [.filename]#/cdrom# directory is easy with "
"the man:mdconfig[8] utility:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:169
#, no-wrap
msgid ""
"# mdconfig -a -t vnode -u 10 -f FreeBSD-10.1-RELEASE-amd64-disc1.iso\n"
"# mount_cd9660 /dev/md10 /cdrom\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:172
msgid ""
"Since the recent FreeBSD releases do not contain regular distribution sets, "
"it is required to extract the FreeBSD distribution files from the "
"distribution archives located on the ISO image:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:178
#, no-wrap
msgid ""
"# mkdir DIST\n"
"# tar -xvf /cdrom/usr/freebsd-dist/base.txz -C DIST\n"
"# tar -xvf /cdrom/usr/freebsd-dist/kernel.txz -C DIST\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:181
msgid "Next, build the bootable mfsBSD image:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:185
#, no-wrap
msgid "# make BASE=DIST\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/remote-install/_index.adoc:190
msgid ""
"The above `make` has to be run from the top level of the mfsBSD directory "
"tree, for example [.filename]#~/mfsbsd-2.1/#."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/remote-install/_index.adoc:192
#, no-wrap
msgid "Booting mfsBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:196
msgid ""
"Now that the mfsBSD image is ready, it must be uploaded to the remote system "
"running a live rescue system or pre-installed Linux(R) distribution. The "
"most suitable tool for this task is scp:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:200
#, no-wrap
msgid "# scp disk.img root@192.168.0.2:.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:204
msgid ""
"To boot mfsBSD image properly, it must be placed on the first (bootable) "
"device of the given machine. This may be accomplished using this example "
"providing that [.filename]#sda# is the first bootable disk device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:208
#, no-wrap
msgid "# dd if=/root/disk.img of=/dev/sda bs=1m\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:213
msgid ""
"If all went well, the image should now be in the MBR of the first device and "
"the machine can be rebooted. Watch for the machine to boot up properly with "
"the man:ping[8] tool. Once it has came back on-line, it should be possible "
"to access it over man:ssh[1] as user `root` with the configured password."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/remote-install/_index.adoc:215
#, no-wrap
msgid "Installation of the FreeBSD Operating System"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:219
msgid ""
"The mfsBSD has been successfully booted and it should be possible to log in "
"through man:ssh[1]. This section will describe how to create and label "
"slices, set up `gmirror` for RAID-1, and how to use `sysinstall` to install "
"a minimal distribution of the FreeBSD operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/remote-install/_index.adoc:220
#, no-wrap
msgid "Preparation of Hard Drives"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:225
msgid ""
"The first task is to allocate disk space for FreeBSD, i.e.: to create slices "
"and partitions. Obviously, the currently running system is fully loaded in "
"system memory and therefore there will be no problems with manipulating hard "
"drives. To complete this task, it is possible to use either `sysinstall` or "
"man:fdisk[8] in conjunction to man:bsdlabel[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:228
msgid ""
"At the start, mark all system disks as empty. Repeat the following command "
"for each hard drive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:232
#, no-wrap
msgid "# dd if=/dev/zero of=/dev/ad0 count=2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:240
msgid ""
"Next, create slices and label them with your preferred tool. While it is "
"considered easier to use `sysinstall`, a powerful and also probably less "
"buggy method will be to use standard text-based UNIX(R) tools, such as man:"
"fdisk[8] and man:bsdlabel[8], which will also be covered in this section. "
"The former option is well documented in the extref:{handbook}[Installing "
"FreeBSD, install-steps] chapter of the FreeBSD Handbook. As it was "
"mentioned in the introduction, this article will present how to set up a "
"system with RAID-1 and ZFS capabilities. Our set up will consist of a small "
"man:gmirror[8] mirrored [.filename]#/# (root), [.filename]#/usr# and [."
"filename]#/var# dataset, and the rest of the disk space will be allocated "
"for a man:zpool[8] mirrored ZFS file system. Please note, that the ZFS file "
"system will be configured after the FreeBSD operating system is successfully "
"installed and booted."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:242
msgid ""
"The following example will describe how to create slices and labels, "
"initialize man:gmirror[8] on each partition and how to create a UFS2 file "
"system in each mirrored partition:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:258
#, no-wrap
msgid ""
"# fdisk -BI /dev/ad0 <.>\n"
"# fdisk -BI /dev/ad1\n"
"# bsdlabel -wB /dev/ad0s1 <.>\n"
"# bsdlabel -wB /dev/ad1s1\n"
"# bsdlabel -e /dev/ad0s1 <.>\n"
"# bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /dev/ad1s1 /tmp/bsdlabel.txt <.>\n"
"# gmirror label root /dev/ad[01]s1a <.>\n"
"# gmirror label var /dev/ad[01]s1d\n"
"# gmirror label usr /dev/ad[01]s1e\n"
"# gmirror label -F swap /dev/ad[01]s1b <.>\n"
"# newfs /dev/mirror/root <.>\n"
"# newfs /dev/mirror/var\n"
"# newfs /dev/mirror/usr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:261
msgid ""
"Create a slice covering the entire disk and initialize the boot code "
"contained in sector 0 of the given disk. Repeat this command for all hard "
"drives in the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:263
msgid "Write a standard label for each disk including the bootstrap code."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:265
msgid ""
"Now, manually edit the label of the given disk. Refer to the man:bsdlabel[8] "
-"manual page in order to find out how to create partitions. Create partitions "
-"`a` for [.filename]#/# (root) file system, `b` for swap, `d` for [."
-"filename]#/var#, `e` for [.filename]#/usr# and finally `f` which will later "
-"be used for ZFS."
+"manual page to find out how to create partitions. Create partitions `a` for "
+"[.filename]#/# (root) file system, `b` for swap, `d` for [.filename]#/var#, "
+"`e` for [.filename]#/usr# and finally `f` which will later be used for ZFS."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:267
msgid ""
"Import the recently created label for the second hard drive, so both hard "
"drives will be labeled in the same way."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:269
msgid "Initialize man:gmirror[8] on each partition."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:271
msgid ""
"Note that `-F` is used for the swap partition. This instructs man:gmirror[8] "
"to assume that the device is in the consistent state after the power/system "
"failure."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:273
msgid "Create a UFS2 file system on each mirrored partition."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/remote-install/_index.adoc:274
#, no-wrap
msgid "System Installation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:279
msgid ""
"This is the most important part. This section will describe how to actually "
"install the minimal distribution of FreeBSD on the hard drives that we have "
"prepared in the previous section. To accomplish this goal, all file systems "
"need to be mounted so `sysinstall` may write the contents of FreeBSD to the "
"hard drives:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:286
#, no-wrap
msgid ""
"# mount /dev/mirror/root /mnt\n"
"# mkdir /mnt/var /mnt/usr\n"
"# mount /dev/mirror/var /mnt/var\n"
"# mount /dev/mirror/usr /mnt/usr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:293
msgid ""
"When you are done, start man:sysinstall[8]. Select the [."
"guimenuitem]#Custom# installation from the main menu. Select [."
"guimenuitem]#Options# and press kbd:[Enter]. With the help of arrow keys, "
"move the cursor on the `Install Root` item, press kbd:[Space] and change it "
"to [.filename]#/mnt#. Press kbd:[Enter] to submit your changes and exit the "
"[.guimenuitem]#Options# menu by pressing kbd:[q]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/remote-install/_index.adoc:297
msgid ""
"Note that this step is very important and if skipped, `sysinstall` will be "
"unable to install FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:302
msgid ""
"Go to the [.guimenuitem]#Distributions# menu, move the cursor with the arrow "
"keys to `Minimal`, and check it by pressing kbd:[Space]. This article uses "
-"the Minimal distribution in order to save network traffic, because the "
-"system itself will be installed over ftp. Exit this menu by choosing `Exit`."
+"the Minimal distribution to save network traffic, because the system itself "
+"will be installed over ftp. Exit this menu by choosing `Exit`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/remote-install/_index.adoc:306
msgid ""
"The [.guimenuitem]#Partition# and [.guimenuitem]#Label# menus will be "
"skipped, as these are useless now."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:311
msgid ""
"In the [.guimenuitem]#Media# menu, select `FTP`. Select the nearest mirror "
"and let `sysinstall` assume that the network is already configured. You "
"will be returned back to the [.guimenuitem]#Custom# menu."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:314
msgid ""
"Finally, perform the system installation by selecting the last option, [."
"guimenuitem]#Commit#. Exit `sysinstall` when it finishes the installation."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/remote-install/_index.adoc:315
#, no-wrap
msgid "Post Installation Steps"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:319
msgid ""
"The FreeBSD operating system should be installed now; however, the process "
"is not finished yet. It is necessary to perform some post installation "
-"steps in order to allow FreeBSD to boot in the future and to be able to log "
-"in to the system."
+"steps to allow FreeBSD to boot in the future and to be able to log in to the "
+"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:322
msgid ""
-"You must now man:chroot[8] into the freshly installed system in order to "
-"finish the installation. Use the following command:"
+"You must now man:chroot[8] into the freshly installed system to finish the "
+"installation. Use the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:326
#, no-wrap
msgid "# chroot /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:329
msgid "To complete our goal, perform these steps:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:331
msgid "Copy the `GENERIC` kernel to the [.filename]#/boot/kernel# directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:335
#, no-wrap
msgid "# cp -Rp /boot/GENERIC/* /boot/kernel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:338
msgid ""
"Create the [.filename]#/etc/rc.conf#, [.filename]#/etc/resolv.conf# and [."
"filename]#/etc/fstab# files. Do not forget to properly set the network "
"information and to enable sshd in [.filename]#/etc/rc.conf#. The contents of "
"[.filename]#/etc/fstab# will be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:347
#, no-wrap
msgid ""
"# Device Mountpoint FStype Options Dump Pass#\n"
"/dev/mirror/swap none swap sw 0 0\n"
"/dev/mirror/root / ufs rw 1 1\n"
"/dev/mirror/usr /usr ufs rw 2 2\n"
"/dev/mirror/var /var ufs rw 2 2\n"
"/dev/cd0 /cdrom cd9660 ro,noauto 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:349
msgid "Create [.filename]#/boot/loader.conf# with the following contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:354
#, no-wrap
msgid ""
"geom_mirror_load=\"YES\"\n"
"zfs_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:356
msgid ""
"Perform the following command, which will make ZFS available on the next "
"boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:360
#, no-wrap
msgid "# sysrc zfs_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:363
msgid ""
"Add additional users to the system using the man:adduser[8] tool. Do not "
"forget to add a user to the `wheel` group so you may obtain root access "
"after the reboot."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:364
msgid "Double-check all your settings."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:367
msgid ""
"The system should now be ready for the next boot. Use the man:reboot[8] "
"command to reboot your system."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/remote-install/_index.adoc:369
#, no-wrap
msgid "ZFS"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:373
msgid ""
"If your system survived the reboot, it should now be possible to log in. "
"Welcome to the fresh FreeBSD installation, performed remotely without the "
"use of a remote console!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:376
msgid ""
"The only remaining step is to configure man:zpool[8] and create some man:"
"zfs[8] file systems. Creating and administering ZFS is very "
"straightforward. First, create a mirrored pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:380
#, no-wrap
msgid "# zpool create tank mirror /dev/ad[01]s1f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:383
msgid "Next, create some file systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/remote-install/_index.adoc:392
#, no-wrap
msgid ""
"# zfs create tank/ports\n"
"# zfs create tank/src\n"
"# zfs set compression=gzip tank/ports\n"
"# zfs set compression=on tank/src\n"
"# zfs set mountpoint=/usr/ports tank/ports\n"
"# zfs set mountpoint=/usr/src tank/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/remote-install/_index.adoc:395
msgid ""
"That is all. If you are interested in more details about ZFS on FreeBSD, "
"please refer to the https://wiki.freebsd.org/ZFS[ZFS] section of the FreeBSD "
"Wiki."
msgstr ""
diff --git a/documentation/content/en/articles/vinum/_index.po b/documentation/content/en/articles/vinum/_index.po
index 1545842687..ed9a0c336e 100644
--- a/documentation/content/en/articles/vinum/_index.po
+++ b/documentation/content/en/articles/vinum/_index.po
@@ -1,1655 +1,1652 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 10:28-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/vinum/_index.adoc:1
#, no-wrap
msgid "The vinum Volume Manager in FreeBSD"
msgstr ""
#. The Vinum Volume Manager
#. By Greg Lehey (grog at lemis dot com)
#. Added to the Handbook by Hiten Pandya <hmp@FreeBSD.org>
#. and Tom Rhodes <trhodes@FreeBSD.org>
#. For the FreeBSD Documentation Project
#. type: Title =
#: documentation/content/en/articles/vinum/_index.adoc:1
#: documentation/content/en/articles/vinum/_index.adoc:19
#, no-wrap
msgid "The vinum Volume Manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:51
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:55
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:62
msgid ""
"No matter the type of disks, there are always potential problems. The disks "
"can be too small, too slow, or too unreliable to meet the system's "
"requirements. While disks are getting bigger, so are data storage "
"requirements. Often a file system is needed that is bigger than a disk's "
"capacity. Various solutions to these problems have been proposed and "
"implemented."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:66
msgid ""
"One method is through the use of multiple, and sometimes redundant, disks. "
"In addition to supporting various cards and controllers for hardware "
"Redundant Array of Independent Disks RAID systems, the base FreeBSD system "
"includes the [.filename]#vinum# volume manager, a block device driver that "
"implements virtual disk drives and addresses these three problems. [."
"filename]#vinum# provides more flexibility, performance, and reliability "
"than traditional disk storage and implements `RAID`-0, `RAID`-1, and "
"`RAID`-5 models, both individually and in combination."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:68
msgid ""
"This chapter provides an overview of potential problems with traditional "
"disk storage, and an introduction to the [.filename]#vinum# volume manager."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/vinum/_index.adoc:76
msgid ""
-"Starting with FreeBSD 5, [.filename]#vinum# has been rewritten in order to "
-"fit into the extref:{handbook}[GEOM architecture, geom], while retaining the "
-"original ideas, terminology, and on-disk metadata. This rewrite is called "
-"_gvinum_ (for _GEOM vinum_). While this chapter uses the term [."
-"filename]#vinum#, any command invocations should be performed with "
-"`gvinum`. The name of the kernel module has changed from the original [."
-"filename]#vinum.ko# to [.filename]#geom_vinum.ko#, and all device nodes "
-"reside under [.filename]#/dev/gvinum# instead of [.filename]#/dev/vinum#. "
-"As of FreeBSD 6, the original [.filename]#vinum# implementation is no longer "
-"available in the code base."
+"Starting with FreeBSD 5, [.filename]#vinum# has been rewritten to fit into "
+"the extref:{handbook}[GEOM architecture, geom], while retaining the original "
+"ideas, terminology, and on-disk metadata. This rewrite is called _gvinum_ "
+"(for _GEOM vinum_). While this chapter uses the term [.filename]#vinum#, "
+"any command invocations should be performed with `gvinum`. The name of the "
+"kernel module has changed from the original [.filename]#vinum.ko# to [."
+"filename]#geom_vinum.ko#, and all device nodes reside under [.filename]#/dev/"
+"gvinum# instead of [.filename]#/dev/vinum#. As of FreeBSD 6, the original [."
+"filename]#vinum# implementation is no longer available in the code base."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:79
#, no-wrap
msgid "Access Bottlenecks"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:83
msgid ""
"Modern systems frequently need to access data in a highly concurrent "
"manner. For example, large FTP or HTTP servers can maintain thousands of "
"concurrent sessions and have multiple 100 Mbit/s connections to the outside "
"world, well beyond the sustained transfer rate of most disks."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:87
msgid ""
"Current disk drives can transfer data sequentially at up to 70 MB/s, but "
"this value is of little importance in an environment where many independent "
"processes access a drive, and where they may achieve only a fraction of "
"these values. In such cases, it is more interesting to view the problem "
"from the viewpoint of the disk subsystem. The important parameter is the "
"load that a transfer places on the subsystem, or the time for which a "
"transfer occupies the drives involved in the transfer."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:90
msgid ""
"In any disk transfer, the drive must first position the heads, wait for the "
"first sector to pass under the read head, and then perform the transfer. "
"These actions can be considered to be atomic as it does not make any sense "
"to interrupt them."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:95
msgid ""
"[[vinum-latency]] Consider a typical transfer of about 10 kB: the current "
"generation of high-performance disks can position the heads in an average of "
"3.5 ms. The fastest drives spin at 15,000 rpm, so the average rotational "
"latency (half a revolution) is 2 ms. At 70 MB/s, the transfer itself takes "
"about 150 μs, almost nothing compared to the positioning time. In such a "
"case, the effective transfer rate drops to a little over 1 MB/s and is "
"clearly highly dependent on the transfer size."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:98
msgid ""
-"The traditional and obvious solution to this bottleneck is \"more spindles"
-"\": rather than using one large disk, use several smaller disks with the "
-"same aggregate storage space. Each disk is capable of positioning and "
+"The traditional and obvious solution to this bottleneck is \"more "
+"spindles\": rather than using one large disk, use several smaller disks with "
+"the same aggregate storage space. Each disk is capable of positioning and "
"transferring independently, so the effective throughput increases by a "
"factor close to the number of disks used."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:102
msgid ""
"The actual throughput improvement is smaller than the number of disks "
"involved. Although each drive is capable of transferring in parallel, there "
"is no way to ensure that the requests are evenly distributed across the "
"drives. Inevitably the load on one drive will be higher than on another."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:110
msgid ""
"The evenness of the load on the disks is strongly dependent on the way the "
"data is shared across the drives. In the following discussion, it is "
"convenient to think of the disk storage as a large number of data sectors "
"which are addressable by number, rather like the pages in a book. The most "
"obvious method is to divide the virtual disk into groups of consecutive "
"sectors the size of the individual physical disks and store them in this "
"manner, rather like taking a large book and tearing it into smaller "
"sections. This method is called _concatenation_ and has the advantage that "
"the disks are not required to have any specific size relationships. It "
"works well when the access to the virtual disk is spread evenly about its "
"address space. When access is concentrated on a smaller area, the "
"improvement is less marked. <<vinum-concat, Concatenated Organization>> "
"illustrates the sequence in which storage units are allocated in a "
"concatenated organization."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:112
#, no-wrap
msgid "Concatenated Organization"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vinum/_index.adoc:113
#, no-wrap
msgid "vinum-concat.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:119
msgid ""
"An alternative mapping is to divide the address space into smaller, equal-"
"sized components and store them sequentially on different devices. For "
"example, the first 256 sectors may be stored on the first disk, the next 256 "
"sectors on the next disk and so on. After filling the last disk, the "
"process repeats until the disks are full. This mapping is called _striping_ "
"or RAID-0."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:123
msgid ""
"`RAID` offers various forms of fault tolerance, though RAID-0 is somewhat "
"misleading as it provides no redundancy. Striping requires somewhat more "
"effort to locate the data, and it can cause additional I/O load where a "
"transfer is spread over multiple disks, but it can also provide a more "
"constant load across the disks. <<vinum-striped, Striped Organization>> "
"illustrates the sequence in which storage units are allocated in a striped "
"organization."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:125
#, no-wrap
msgid "Striped Organization"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vinum/_index.adoc:126
#, no-wrap
msgid "vinum-striped.png"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:129
#, no-wrap
msgid "Data Integrity"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:134
msgid ""
"The final problem with disks is that they are unreliable. Although "
"reliability has increased tremendously over the last few years, disk drives "
"are still the most likely core component of a server to fail. When they do, "
"the results can be catastrophic and replacing a failed disk drive and "
"restoring data can result in server downtime."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:137
msgid ""
"One approach to this problem is _mirroring_, or `RAID-1`, which keeps two "
"copies of the data on different physical hardware. Any write to the volume "
"writes to both disks; a read can be satisfied from either, so if one drive "
"fails, the data is still available on the other drive."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:139
msgid "Mirroring has two problems:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:141
msgid "It requires twice as much disk storage as a non-redundant solution."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:142
msgid ""
"Writes must be performed to both drives, so they take up twice the bandwidth "
"of a non-mirrored volume. Reads do not suffer from a performance penalty and "
"can even be faster."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:149
msgid ""
"An alternative solution is _parity_, implemented in `RAID` levels 2, 3, 4 "
"and 5. Of these, `RAID-5` is the most interesting. As implemented in [."
"filename]#vinum#, it is a variant on a striped organization which dedicates "
"one block of each stripe to parity one of the other blocks. As implemented "
"by [.filename]#vinum#, a `RAID-5` plex is similar to a striped plex, except "
"that it implements `RAID-5` by including a parity block in each stripe. As "
"required by `RAID-5`, the location of this parity block changes from one "
"stripe to the next. The numbers in the data blocks indicate the relative "
"block numbers."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:151
#, no-wrap
msgid "`RAID`-5 Organization"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vinum/_index.adoc:152
#, no-wrap
msgid "vinum-raid5-org.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:157
msgid ""
"Compared to mirroring, `RAID-5` has the advantage of requiring significantly "
"less storage space. Read access is similar to that of striped "
"organizations, but write access is significantly slower, approximately 25% "
"of the read performance. If one drive fails, the array can continue to "
"operate in degraded mode where a read from one of the remaining accessible "
"drives continues normally, but a read from the failed drive is recalculated "
"from the corresponding block from all the remaining drives."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:159
#, no-wrap
msgid "[.filename]#vinum# Objects"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:162
msgid ""
-"In order to address these problems, [.filename]#vinum# implements a four-"
-"level hierarchy of objects:"
+"To address these problems, [.filename]#vinum# implements a four-level "
+"hierarchy of objects:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:164
msgid ""
"The most visible object is the virtual disk, called a _volume_. Volumes have "
"essentially the same properties as a UNIX(R) disk drive, though there are "
"some minor differences. For one, they have no size limitations."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:165
msgid ""
"Volumes are composed of _plexes_, each of which represent the total address "
"space of a volume. This level in the hierarchy provides redundancy. Think of "
"plexes as individual disks in a mirrored array, each containing the same "
"data."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:166
msgid ""
"Since [.filename]#vinum# exists within the UNIX(R) disk storage framework, "
"it would be possible to use UNIX(R) partitions as the building block for "
"multi-disk plexes. In fact, this turns out to be too inflexible as UNIX(R) "
"disks can have only a limited number of partitions. Instead, [."
"filename]#vinum# subdivides a single UNIX(R) partition, the _drive_, into "
"contiguous areas called _subdisks_, which are used as building blocks for "
"plexes."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:167
msgid ""
"Subdisks reside on [.filename]#vinum#_drives_, currently UNIX(R) partitions. "
"[.filename]#vinum# drives can contain any number of subdisks. With the "
"exception of a small area at the beginning of the drive, which is used for "
"storing configuration and state information, the entire drive is available "
"for data storage."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:169
msgid ""
"The following sections describe the way these objects provide the "
"functionality required of [.filename]#vinum#."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:170
#, no-wrap
msgid "Volume Size Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:174
msgid ""
"Plexes can include multiple subdisks spread over all drives in the [."
"filename]#vinum# configuration. As a result, the size of an individual "
"drive does not limit the size of a plex or a volume."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:175
#, no-wrap
msgid "Redundant Data Storage"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:180
msgid ""
"[.filename]#vinum# implements mirroring by attaching multiple plexes to a "
"volume. Each plex is a representation of the data in a volume. A volume "
"may contain between one and eight plexes."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:183
msgid ""
"Although a plex represents the complete data of a volume, it is possible for "
"parts of the representation to be physically missing, either by design (by "
"not defining a subdisk for parts of the plex) or by accident (as a result of "
"the failure of a drive). As long as at least one plex can provide the data "
"for the complete address range of the volume, the volume is fully functional."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:184
#, no-wrap
msgid "Which Plex Organization?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:187
msgid ""
"[.filename]#vinum# implements both concatenation and striping at the plex "
"level:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:189
msgid ""
"A _concatenated plex_ uses the address space of each subdisk in turn. "
"Concatenated plexes are the most flexible as they can contain any number of "
"subdisks, and the subdisks may be of different length. The plex may be "
"extended by adding additional subdisks. They require less CPU time than "
"striped plexes, though the difference in CPU overhead is not measurable. On "
"the other hand, they are most susceptible to hot spots, where one disk is "
"very active and others are idle."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:190
msgid ""
"A _striped plex_ stripes the data across each subdisk. The subdisks must all "
-"be the same size and there must be at least two subdisks in order to "
-"distinguish it from a concatenated plex. The greatest advantage of striped "
-"plexes is that they reduce hot spots. By choosing an optimum sized stripe, "
-"about 256 kB, the load can be evened out on the component drives. Extending "
-"a plex by adding new subdisks is so complicated that [.filename]#vinum# does "
-"not implement it."
+"be the same size and there must be at least two subdisks to distinguish it "
+"from a concatenated plex. The greatest advantage of striped plexes is that "
+"they reduce hot spots. By choosing an optimum sized stripe, about 256 kB, "
+"the load can be evened out on the component drives. Extending a plex by "
+"adding new subdisks is so complicated that [.filename]#vinum# does not "
+"implement it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:192
msgid ""
"<<vinum-comparison, [.filename]#vinum# Plex Organizations>> summarizes the "
"advantages and disadvantages of each plex organization."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:194
#, no-wrap
msgid "[.filename]#vinum# Plex Organizations"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:198
#, no-wrap
msgid "Plex type"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:199
#, no-wrap
msgid "Minimum subdisks"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:200
#, no-wrap
msgid "Can add subdisks"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:201
#, no-wrap
msgid "Must be equal size"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:203
#, no-wrap
msgid "Application"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:204
#, no-wrap
msgid "concatenated"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:205
#, no-wrap
msgid "1"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:206
#: documentation/content/en/articles/vinum/_index.adoc:213
#, no-wrap
msgid "yes"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:207
#: documentation/content/en/articles/vinum/_index.adoc:212
#, no-wrap
msgid "no"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:209
#, no-wrap
msgid "Large data storage with maximum placement flexibility and moderate performance"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:210
#, no-wrap
msgid "striped"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:211
#, no-wrap
msgid "2"
msgstr ""
#. type: Table
#: documentation/content/en/articles/vinum/_index.adoc:214
#, no-wrap
msgid "High performance in combination with highly concurrent access"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:217
#, no-wrap
msgid "Some Examples"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:223
msgid ""
"[.filename]#vinum# maintains a _configuration database_ which describes the "
"objects known to an individual system. Initially, the user creates the "
"configuration database from one or more configuration files using man:"
"gvinum[8]. [.filename]#vinum# stores a copy of its configuration database "
"on each disk _device_ under its control. This database is updated on each "
"state change, so that a restart accurately restores the state of each [."
"filename]#vinum# object."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:224
#, no-wrap
msgid "The Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:228
msgid ""
"The configuration file describes individual [.filename]#vinum# objects. The "
"definition of a simple volume might be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:235
#, no-wrap
msgid ""
" drive a device /dev/da3h\n"
" volume myvol\n"
" plex org concat\n"
" sd length 512m drive a\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:238
msgid "This file describes four [.filename]#vinum# objects:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:240
msgid ""
"The _drive_ line describes a disk partition (_drive_) and its location "
"relative to the underlying hardware. It is given the symbolic name _a_. This "
"separation of symbolic names from device names allows disks to be moved from "
"one location to another without confusion."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:241
msgid ""
"The _volume_ line describes a volume. The only required attribute is the "
"name, in this case _myvol_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:242
msgid ""
"The _plex_ line defines a plex. The only required parameter is the "
"organization, in this case _concat_. No name is necessary as the system "
"automatically generates a name from the volume name by adding the suffix _."
"px_, where _x_ is the number of the plex in the volume. Thus this plex will "
"be called _myvol.p0_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:243
msgid ""
"The _sd_ line describes a subdisk. The minimum specifications are the name "
"of a drive on which to store it, and the length of the subdisk. No name is "
"necessary as the system automatically assigns names derived from the plex "
"name by adding the suffix _.sx_, where _x_ is the number of the subdisk in "
"the plex. Thus [.filename]#vinum# gives this subdisk the name _myvol.p0.s0_."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:245
msgid ""
"After processing this file, man:gvinum[8] produces the following output:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:255
#, no-wrap
msgid ""
"# gvinum -> create config1\n"
"Configuration summary\n"
"Drives: 1 (4 configured)\n"
"Volumes: 1 (4 configured)\n"
"Plexes: 1 (8 configured)\n"
"Subdisks: 1 (16 configured)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:257
#, no-wrap
msgid " D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:259
#, no-wrap
msgid " V myvol State: up Plexes: 1 Size: 512 MB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:261
#, no-wrap
msgid " P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:263
#, no-wrap
msgid " S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:267
msgid ""
"This output shows the brief listing format of man:gvinum[8]. It is "
"represented graphically in <<vinum-simple-vol, A Simple [.filename]#vinum# "
"Volume>>."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:269
#, no-wrap
msgid "A Simple [.filename]#vinum# Volume"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vinum/_index.adoc:270
#, no-wrap
msgid "vinum-simple-vol.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:274
msgid ""
"This figure, and the ones which follow, represent a volume, which contains "
"the plexes, which in turn contains the subdisks. In this example, the "
"volume contains one plex, and the plex contains one subdisk."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:279
msgid ""
"This particular volume has no specific advantage over a conventional disk "
"partition. It contains a single plex, so it is not redundant. The plex "
"contains a single subdisk, so there is no difference in storage allocation "
"from a conventional disk partition. The following sections illustrate "
"various more interesting configuration methods."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:280
#, no-wrap
msgid "Increased Resilience: Mirroring"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:285
msgid ""
"The resilience of a volume can be increased by mirroring. When laying out a "
"mirrored volume, it is important to ensure that the subdisks of each plex "
"are on different drives, so that a drive failure will not take down both "
"plexes. The following configuration mirrors a volume:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:294
#, no-wrap
msgid ""
"\tdrive b device /dev/da4h\n"
"\tvolume mirror\n"
" plex org concat\n"
" sd length 512m drive a\n"
"\t plex org concat\n"
"\t sd length 512m drive b\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:298
msgid ""
"In this example, it was not necessary to specify a definition of drive _a_ "
"again, since [.filename]#vinum# keeps track of all objects in its "
"configuration database. After processing this definition, the configuration "
"looks like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:306
#, no-wrap
msgid ""
"\tDrives: 2 (4 configured)\n"
"\tVolumes: 2 (4 configured)\n"
"\tPlexes: 3 (8 configured)\n"
"\tSubdisks: 3 (16 configured)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:309
#, no-wrap
msgid ""
"\tD a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)\n"
"\tD b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:312
#, no-wrap
msgid ""
" V myvol State: up Plexes: 1 Size: 512 MB\n"
" V mirror State: up Plexes: 2 Size: 512 MB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:316
#, no-wrap
msgid ""
" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n"
" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n"
" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:320
#, no-wrap
msgid ""
" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n"
"\tS mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n"
"\tS mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:323
msgid ""
"<<vinum-mirrored-vol, A Mirrored [.filename]#vinum# Volume>> shows the "
"structure graphically."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:325
#, no-wrap
msgid "A Mirrored [.filename]#vinum# Volume"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vinum/_index.adoc:326
#, no-wrap
msgid "vinum-mirrored-vol.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:330
msgid ""
"In this example, each plex contains the full 512 MB of address space. As in "
"the previous example, each plex contains only a single subdisk."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:331
#, no-wrap
msgid "Optimizing Performance"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:336
msgid ""
"The mirrored volume in the previous example is more resistant to failure "
"than an unmirrored volume, but its performance is less as each write to the "
"volume requires a write to both drives, using up a greater proportion of the "
"total disk bandwidth. Performance considerations demand a different "
"approach: instead of mirroring, the data is striped across as many disk "
"drives as possible. The following configuration shows a volume with a plex "
"striped across four disk drives:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:347
#, no-wrap
msgid ""
" drive c device /dev/da5h\n"
"\tdrive d device /dev/da6h\n"
"\tvolume stripe\n"
"\tplex org striped 512k\n"
"\t sd length 128m drive a\n"
"\t sd length 128m drive b\n"
"\t sd length 128m drive c\n"
"\t sd length 128m drive d\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:351
msgid ""
"As before, it is not necessary to define the drives which are already known "
"to [.filename]#vinum#. After processing this definition, the configuration "
"looks like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:359
#, no-wrap
msgid ""
"\tDrives: 4 (4 configured)\n"
"\tVolumes: 3 (4 configured)\n"
"\tPlexes: 4 (8 configured)\n"
"\tSubdisks: 7 (16 configured)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:364
#, no-wrap
msgid ""
" D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)\n"
" D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)\n"
" D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)\n"
" D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:368
#, no-wrap
msgid ""
" V myvol State: up Plexes: 1 Size: 512 MB\n"
" V mirror State: up Plexes: 2 Size: 512 MB\n"
" V striped State: up Plexes: 1 Size: 512 MB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:373
#, no-wrap
msgid ""
" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n"
" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n"
" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n"
" P striped.p1 State: up Subdisks: 1 Size: 512 MB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:381
#, no-wrap
msgid ""
" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n"
" S mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n"
" S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n"
" S striped.p0.s0 State: up PO: 0 B Size: 128 MB\n"
" S striped.p0.s1 State: up PO: 512 kB Size: 128 MB\n"
" S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB\n"
" S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB\n"
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:384
#, no-wrap
msgid "A Striped [.filename]#vinum# Volume"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vinum/_index.adoc:385
#, no-wrap
msgid "vinum-striped-vol.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:389
msgid ""
"This volume is represented in <<vinum-striped-vol, A Striped [."
"filename]#vinum# Volume>>. The darkness of the stripes indicates the "
"position within the plex address space, where the lightest stripes come "
"first and the darkest last."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:390
#, no-wrap
msgid "Resilience and Performance"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:394
msgid ""
"[[vinum-resilience]]With sufficient hardware, it is possible to build "
"volumes which show both increased resilience and increased performance "
"compared to standard UNIX(R) partitions. A typical configuration file might "
"be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:410
#, no-wrap
msgid ""
"\tvolume raid10\n"
" plex org striped 512k\n"
" sd length 102480k drive a\n"
" sd length 102480k drive b\n"
" sd length 102480k drive c\n"
" sd length 102480k drive d\n"
" sd length 102480k drive e\n"
" plex org striped 512k\n"
" sd length 102480k drive c\n"
" sd length 102480k drive d\n"
" sd length 102480k drive e\n"
" sd length 102480k drive a\n"
" sd length 102480k drive b\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:414
msgid ""
"The subdisks of the second plex are offset by two drives from those of the "
"first plex. This helps to ensure that writes do not go to the same subdisks "
"even if a transfer goes over two drives."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:416
msgid ""
"<<vinum-raid10-vol, A Mirrored, Striped [.filename]#vinum# Volume>> "
"represents the structure of this volume."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/vinum/_index.adoc:418
#, no-wrap
msgid "A Mirrored, Striped [.filename]#vinum# Volume"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vinum/_index.adoc:419
#, no-wrap
msgid "vinum-raid10-vol.png"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:422
#, no-wrap
msgid "Object Naming"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:426
msgid ""
"[.filename]#vinum# assigns default names to plexes and subdisks, although "
"they may be overridden. Overriding the default names is not recommended as "
"it does not bring a significant advantage and it can cause confusion."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:429
msgid ""
"Names may contain any non-blank character, but it is recommended to restrict "
"them to letters, digits and the underscore characters. The names of "
"volumes, plexes, and subdisks may be up to 64 characters long, and the names "
"of drives may be up to 32 characters long."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:432
msgid ""
"[.filename]#vinum# objects are assigned device nodes in the hierarchy [."
"filename]#/dev/gvinum#. The configuration shown above would cause [."
"filename]#vinum# to create the following device nodes:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:434
msgid ""
"Device entries for each volume. These are the main devices used by [."
"filename]#vinum#. The configuration above would include the devices [."
"filename]#/dev/gvinum/myvol#, [.filename]#/dev/gvinum/mirror#, [.filename]#/"
"dev/gvinum/striped#, [.filename]#/dev/gvinum/raid5# and [.filename]#/dev/"
"gvinum/raid10#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:435
msgid "All volumes get direct entries under [.filename]#/dev/gvinum/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:436
msgid ""
"The directories [.filename]#/dev/gvinum/plex#, and [.filename]#/dev/gvinum/"
"sd#, which contain device nodes for each plex and for each subdisk, "
"respectively."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:438
msgid "For example, consider the following configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:451
#, no-wrap
msgid ""
"\tdrive drive1 device /dev/sd1h\n"
"\tdrive drive2 device /dev/sd2h\n"
"\tdrive drive3 device /dev/sd3h\n"
"\tdrive drive4 device /dev/sd4h\n"
" volume s64 setupstate\n"
" plex org striped 64k\n"
" sd length 100m drive drive1\n"
" sd length 100m drive drive2\n"
" sd length 100m drive drive3\n"
" sd length 100m drive drive4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:454
msgid ""
"After processing this file, man:gvinum[8] creates the following structure in "
"[.filename]#/dev/gvinum#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:461
#, no-wrap
msgid ""
"\tdrwxr-xr-x 2 root wheel 512 Apr 13\n"
"16:46 plex\n"
"\tcrwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64\n"
"\tdrwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:465
#, no-wrap
msgid ""
" /dev/vinum/plex:\n"
" total 0\n"
" crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:472
#, no-wrap
msgid ""
" /dev/vinum/sd:\n"
" total 0\n"
" crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0\n"
" crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1\n"
" crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2\n"
" crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:477
msgid ""
"Although it is recommended that plexes and subdisks should not be allocated "
"specific names, [.filename]#vinum# drives must be named. This makes it "
"possible to move a drive to a different location and still recognize it "
"automatically. Drive names may be up to 32 characters long."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:478
#, no-wrap
msgid "Creating File Systems"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:486
msgid ""
"Volumes appear to the system to be identical to disks, with one exception. "
"Unlike UNIX(R) drives, [.filename]#vinum# does not partition volumes, which "
"thus do not contain a partition table. This has required modification to "
"some disk utilities, notably man:newfs[8], so that it does not try to "
"interpret the last letter of a [.filename]#vinum# volume name as a partition "
"identifier. For example, a disk drive may have a name like [.filename]#/dev/"
"ad0a# or [.filename]#/dev/da2h#. These names represent the first partition "
"([.filename]#a#) on the first (0) IDE disk ([.filename]#ad#) and the eighth "
"partition ([.filename]#h#) on the third (2) SCSI disk ([.filename]#da#) "
"respectively. By contrast, a [.filename]#vinum# volume might be called [."
"filename]#/dev/gvinum/concat#, which has no relationship with a partition "
"name."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:488
-msgid "In order to create a file system on this volume, use man:newfs[8]:"
+msgid "To create a file system on this volume, use man:newfs[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:492
#, no-wrap
msgid "# newfs /dev/gvinum/concat\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:495
#, no-wrap
msgid "Configuring [.filename]#vinum#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:501
msgid ""
"The [.filename]#GENERIC# kernel does not contain [.filename]#vinum#. It is "
"possible to build a custom kernel which includes [.filename]#vinum#, but "
"this is not recommended. The standard way to start [.filename]#vinum# is as "
"a kernel module. man:kldload[8] is not needed because when man:gvinum[8] "
"starts, it checks whether the module has been loaded, and if it is not, it "
"loads it automatically."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:502
#, no-wrap
msgid "Startup"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:507
msgid ""
"[.filename]#vinum# stores configuration information on the disk slices in "
"essentially the same form as in the configuration files. When reading from "
"the configuration database, [.filename]#vinum# recognizes a number of "
"keywords which are not allowed in the configuration files. For example, a "
"disk configuration might contain the following text:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:529
#, no-wrap
msgid ""
"volume myvol state up\n"
"volume bigraid state down\n"
"plex name myvol.p0 state up org concat vol myvol\n"
"plex name myvol.p1 state up org concat vol myvol\n"
"plex name myvol.p2 state init org striped 512b vol myvol\n"
"plex name bigraid.p0 state initializing org raid5 512b vol bigraid\n"
"sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b\n"
"sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b\n"
"sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b\n"
"sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b\n"
"sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b\n"
"sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b\n"
"sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b\n"
"sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b\n"
"sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b\n"
"sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b\n"
"sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b\n"
"sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b\n"
"sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:535
msgid ""
"The obvious differences here are the presence of explicit location "
"information and naming, both of which are allowed but discouraged, and the "
"information on the states. [.filename]#vinum# does not store information "
"about drives in the configuration information. It finds the drives by "
"scanning the configured disk drives for partitions with a [.filename]#vinum# "
"label. This enables [.filename]#vinum# to identify drives correctly even if "
"they have been assigned different UNIX(R) drive IDs."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/vinum/_index.adoc:537
#, no-wrap
msgid "Automatic Startup"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:541
msgid ""
"_Gvinum_ always features an automatic startup once the kernel module is "
"loaded, via man:loader.conf[5]. To load the _Gvinum_ module at boot time, "
"add `geom_vinum_load=\"YES\"` to [.filename]#/boot/loader.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:546
msgid ""
"When [.filename]#vinum# is started with `gvinum start`, [.filename]#vinum# "
"reads the configuration database from one of the [.filename]#vinum# drives. "
"Under normal circumstances, each drive contains an identical copy of the "
"configuration database, so it does not matter which drive is read. After a "
"crash, however, [.filename]#vinum# must determine which drive was updated "
"most recently and read the configuration from this drive. It then updates "
"the configuration, if necessary, from progressively older drives."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vinum/_index.adoc:548
#, no-wrap
msgid "Using [.filename]#vinum# for the Root File System"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:552
msgid ""
"For a machine that has fully-mirrored file systems using [.filename]#vinum#, "
"it is desirable to also mirror the root file system. Setting up such a "
"configuration is less trivial than mirroring an arbitrary file system "
"because:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:554
msgid ""
"The root file system must be available very early during the boot process, "
"so the [.filename]#vinum# infrastructure must already be available at this "
"time."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:555
msgid ""
"The volume containing the root file system also contains the system "
"bootstrap and the kernel. These must be read using the host system's native "
"utilities, such as the BIOS, which often cannot be taught about the details "
"of [.filename]#vinum#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:557
msgid ""
"In the following sections, the term \"root volume\" is generally used to "
"describe the [.filename]#vinum# volume that contains the root file system."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:558
#, no-wrap
msgid "Starting up [.filename]#vinum# Early Enough for the Root File System"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:562
msgid ""
"[.filename]#vinum# must be available early in the system boot as man:"
"loader[8] must be able to load the vinum kernel module before starting the "
"kernel. This can be accomplished by putting this line in [.filename]#/boot/"
"loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:566
#, no-wrap
msgid "geom_vinum_load=\"YES\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:568
#, no-wrap
msgid "Making a [.filename]#vinum#-based Root Volume Accessible to the Bootstrap"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:573
msgid ""
"The current FreeBSD bootstrap is only 7.5 KB of code and does not understand "
"the internal [.filename]#vinum# structures. This means that it cannot parse "
"the [.filename]#vinum# configuration data or figure out the elements of a "
"boot volume. Thus, some workarounds are necessary to provide the bootstrap "
"code with the illusion of a standard `a` partition that contains the root "
"file system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:575
msgid ""
"For this to be possible, the following requirements must be met for the root "
"volume:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:577
msgid "The root volume must not be a stripe or `RAID`-5."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:578
msgid ""
"The root volume must not contain more than one concatenated subdisk per plex."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:584
msgid ""
"Note that it is desirable and possible to use multiple plexes, each "
"containing one replica of the root file system. The bootstrap process will "
"only use one replica for finding the bootstrap and all boot files, until the "
"kernel mounts the root file system. Each single subdisk within these plexes "
"needs its own `a` partition illusion, for the respective device to be "
"bootable. It is not strictly needed that each of these faked `a` partitions "
"is located at the same offset within its device, compared with other devices "
"containing plexes of the root volume. However, it is probably a good idea "
"to create the [.filename]#vinum# volumes that way so the resulting mirrored "
"devices are symmetric, to avoid confusion."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:586
msgid ""
-"In order to set up these `a` partitions for each device containing part of "
-"the root volume, the following is required:"
+"To set up these `a` partitions for each device containing part of the root "
+"volume, the following is required:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/vinum/_index.adoc:590
msgid ""
"The location, offset from the beginning of the device, and size of this "
"device's subdisk that is part of the root volume needs to be examined, using "
"the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:594
#, no-wrap
msgid "# gvinum l -rv root\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:598
msgid ""
"[.filename]#vinum# offsets and sizes are measured in bytes. They must be "
-"divided by 512 in order to obtain the block numbers that are to be used by "
-"`bsdlabel`."
+"divided by 512 to obtain the block numbers that are to be used by `bsdlabel`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:599
msgid "Run this command for each device that participates in the root volume:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:603
#, no-wrap
msgid "# bsdlabel -e devname\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:606
msgid ""
"_devname_ must be either the name of the disk, like [.filename]#da0# for "
"disks without a slice table, or the name of the slice, like [."
"filename]#ad0s1#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:609
msgid ""
"If there is already an `a` partition on the device from a pre-[."
"filename]#vinum# root file system, it should be renamed to something else so "
"that it remains accessible (just in case), but will no longer be used by "
"default to bootstrap the system. A currently mounted root file system "
"cannot be renamed, so this must be executed either when being booted from a "
"\"Fixit\" media, or in a two-step process where, in a mirror, the disk that "
"is not been currently booted is manipulated first."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:615
msgid ""
"The offset of the [.filename]#vinum# partition on this device (if any) must "
"be added to the offset of the respective root volume subdisk on this "
"device. The resulting value will become the `offset` value for the new `a` "
"partition. The `size` value for this partition can be taken verbatim from "
"the calculation above. The `fstype` should be `4.2BSD`. The `fsize`, "
"`bsize`, and `cpg` values should be chosen to match the actual file system, "
"though they are fairly unimportant within this context."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:618
msgid ""
"That way, a new `a` partition will be established that overlaps the [."
"filename]#vinum# partition on this device. `bsdlabel` will only allow for "
"this overlap if the [.filename]#vinum# partition has properly been marked "
"using the `vinum` fstype."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:619
msgid ""
"A faked `a` partition now exists on each device that has one replica of the "
"root volume. It is highly recommendable to verify the result using a command "
"like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:623
#, no-wrap
msgid "# fsck -n /dev/devnamea\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/vinum/_index.adoc:628
msgid ""
"It should be remembered that all files containing control information must "
"be relative to the root file system in the [.filename]#vinum# volume which, "
"when setting up a new [.filename]#vinum# root volume, might not match the "
"root file system that is currently active. So in particular, [.filename]#/"
"etc/fstab# and [.filename]#/boot/loader.conf# need to be taken care of."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/vinum/_index.adoc:631
msgid ""
"At next reboot, the bootstrap should figure out the appropriate control "
"information from the new [.filename]#vinum#-based root file system, and act "
"accordingly. At the end of the kernel initialization process, after all "
"devices have been announced, the prominent notice that shows the success of "
"this setup is a message like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:635
#, no-wrap
msgid "Mounting root from ufs:/dev/gvinum/root\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:637
#, no-wrap
msgid "Example of a [.filename]#vinum#-based Root Setup"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:640
msgid ""
"After the [.filename]#vinum# root volume has been set up, the output of "
"`gvinum l -rv root` could look like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:649
#, no-wrap
msgid ""
"...\n"
"Subdisk root.p0.s0:\n"
"\t\tSize: 125829120 bytes (120 MB)\n"
"\t\tState: up\n"
"\t\tPlex root.p0 at offset 0 (0 B)\n"
"\t\tDrive disk0 (/dev/da0h) at offset 135680 (132 kB)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:655
#, no-wrap
msgid ""
"Subdisk root.p1.s0:\n"
"\t\tSize: 125829120 bytes (120 MB)\n"
"\t\tState: up\n"
"\t\tPlex root.p1 at offset 0 (0 B)\n"
"\t\tDrive disk1 (/dev/da1h) at offset 135680 (132 kB)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:661
msgid ""
"The values to note are `135680` for the offset, relative to partition [."
"filename]#/dev/da0h#. This translates to 265 512-byte disk blocks in "
"`bsdlabel`'s terms. Likewise, the size of this root volume is 245760 512-"
"byte blocks. [.filename]#/dev/da1h#, containing the second replica of this "
"root volume, has a symmetric setup."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:663
msgid "The bsdlabel for these devices might look like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vinum/_index.adoc:672
#, no-wrap
msgid ""
"...\n"
"8 partitions:\n"
"# size offset fstype [fsize bsize bps/cpg]\n"
" a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)\n"
" c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)\n"
" h: 71771672 16 vinum # (Cyl. 0*- 4467*)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:677
msgid ""
"It can be observed that the `size` parameter for the faked `a` partition "
"matches the value outlined above, while the `offset` parameter is the sum of "
"the offset within the [.filename]#vinum# partition `h`, and the offset of "
"this partition within the device or slice. This is a typical setup that is "
"necessary to avoid the problem described in <<vinum-root-panic, Nothing "
"Boots, the Bootstrap Panics>>. The entire `a` partition is completely "
"within the `h` partition containing all the [.filename]#vinum# data for this "
"device."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:679
msgid ""
"In the above example, the entire device is dedicated to [.filename]#vinum# "
"and there is no leftover pre-[.filename]#vinum# root partition."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vinum/_index.adoc:680
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:683
msgid "The following list contains a few known pitfalls and solutions."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/vinum/_index.adoc:684
#, no-wrap
msgid "System Bootstrap Loads, but System Does Not Boot"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:688
msgid ""
"If for any reason the system does not continue to boot, the bootstrap can be "
"interrupted by pressing kbd:[space] at the 10-seconds warning. The loader "
"variable `vinum.autostart` can be examined by typing `show` and manipulated "
"using `set` or `unset`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:690
msgid ""
"If the [.filename]#vinum# kernel module was not yet in the list of modules "
"to load automatically, type `load geom_vinum`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:693
msgid ""
"When ready, the boot process can be continued by typing `boot -as` which `-"
"as` requests the kernel to ask for the root file system to mount (`-a`) and "
"make the boot process stop in single-user mode (`-s`), where the root file "
"system is mounted read-only. That way, even if only one plex of a multi-"
"plex volume has been mounted, no data inconsistency between plexes is being "
"risked."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:699
msgid ""
"At the prompt asking for a root file system to mount, any device that "
"contains a valid root file system can be entered. If [.filename]#/etc/"
"fstab# is set up correctly, the default should be something like `ufs:/dev/"
"gvinum/root`. A typical alternate choice would be something like `ufs:da0d` "
"which could be a hypothetical partition containing the pre-[."
"filename]#vinum# root file system. Care should be taken if one of the alias "
"`a` partitions is entered here, that it actually references the subdisks of "
"the [.filename]#vinum# root device, because in a mirrored setup, this would "
"only mount one piece of a mirrored root device. If this file system is to "
"be mounted read-write later on, it is necessary to remove the other plex(es) "
"of the [.filename]#vinum# root volume since these plexes would otherwise "
"carry inconsistent data."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/vinum/_index.adoc:700
#, no-wrap
msgid "Only Primary Bootstrap Loads"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:705
msgid ""
"If [.filename]#/boot/loader# fails to load, but the primary bootstrap still "
"loads (visible by a single dash in the left column of the screen right after "
"the boot process starts), an attempt can be made to interrupt the primary "
"bootstrap by pressing kbd:[space]. This will make the bootstrap stop in "
"extref:{handbook}[stage two, boot-boot1]. An attempt can be made here to "
"boot off an alternate partition, like the partition containing the previous "
"root file system that has been moved away from `a`."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/vinum/_index.adoc:707
#, no-wrap
msgid "Nothing Boots, the Bootstrap Panics"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:713
msgid ""
"This situation will happen if the bootstrap had been destroyed by the [."
"filename]#vinum# installation. Unfortunately, [.filename]#vinum# "
"accidentally leaves only 4 KB at the beginning of its partition free before "
"starting to write its [.filename]#vinum# header information. However, the "
"stage one and two bootstraps plus the bsdlabel require 8 KB. So if a [."
"filename]#vinum# partition was started at offset 0 within a slice or disk "
"that was meant to be bootable, the [.filename]#vinum# setup will trash the "
"bootstrap."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vinum/_index.adoc:716
msgid ""
"Similarly, if the above situation has been recovered, by booting from a "
"\"Fixit\" media, and the bootstrap has been re-installed using `bsdlabel -B` "
"as described in extref:{handbook}[stage two, boot-boot1], the bootstrap will "
"trash the [.filename]#vinum# header, and [.filename]#vinum# will no longer "
"find its disk(s). Though no actual [.filename]#vinum# configuration data or "
"data in [.filename]#vinum# volumes will be trashed, and it would be possible "
"to recover all the data by entering exactly the same [.filename]#vinum# "
"configuration data again, the situation is hard to fix. It is necessary to "
-"move the entire [.filename]#vinum# partition by at least 4 KB, in order to "
-"have the [.filename]#vinum# header and the system bootstrap no longer "
-"collide."
+"move the entire [.filename]#vinum# partition by at least 4 KB, to have the [."
+"filename]#vinum# header and the system bootstrap no longer collide."
msgstr ""
diff --git a/documentation/content/en/articles/vm-design/_index.po b/documentation/content/en/articles/vm-design/_index.po
index afa3c007ac..efe522cb4f 100644
--- a/documentation/content/en/articles/vm-design/_index.po
+++ b/documentation/content/en/articles/vm-design/_index.po
@@ -1,1013 +1,1012 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:23-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/vm-design/_index.adoc:1
#, no-wrap
msgid "An easy to follow description of the design of the FreeBSD virtual memory system"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/vm-design/_index.adoc:1
#: documentation/content/en/articles/vm-design/_index.adoc:11
#, no-wrap
msgid "Design elements of the FreeBSD VM system"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:44
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:51
msgid ""
"The title is really just a fancy way of saying that I am going to attempt to "
"describe the whole VM enchilada, hopefully in a way that everyone can "
"follow. For the last year I have concentrated on a number of major kernel "
"subsystems within FreeBSD, with the VM and Swap subsystems being the most "
"interesting and NFS being \"a necessary chore\". I rewrote only small "
"portions of the code. In the VM arena the only major rewrite I have done is "
"to the swap subsystem. Most of my work was cleanup and maintenance, with "
"only moderate code rewriting and no major algorithmic adjustments within the "
"VM subsystem. The bulk of the VM subsystem's theoretical base remains "
"unchanged and a lot of the credit for the modernization effort in the last "
"few years belongs to John Dyson and David Greenman. Not being a historian "
"like Kirk I will not attempt to tag all the various features with peoples "
"names, since I will invariably get it wrong."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:53
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:57
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:73
msgid ""
"Before moving along to the actual design let's spend a little time on the "
"necessity of maintaining and modernizing any long-living codebase. In the "
"programming world, algorithms tend to be more important than code and it is "
"precisely due to BSD's academic roots that a great deal of attention was "
"paid to algorithm design from the beginning. More attention paid to the "
"design generally leads to a clean and flexible codebase that can be fairly "
"easily modified, extended, or replaced over time. While BSD is considered "
"an \"old\" operating system by some people, those of us who work on it tend "
"to view it more as a \"mature\" codebase which has various components "
"modified, extended, or replaced with modern code. It has evolved, and "
"FreeBSD is at the bleeding edge no matter how old some of the code might "
"be. This is an important distinction to make and one that is unfortunately "
"lost to many people. The biggest error a programmer can make is to not "
"learn from history, and this is precisely the error that many other modern "
"operating systems have made. Windows NT(R) is the best example of this, and "
"the consequences have been dire. Linux also makes this mistake to some "
"degree-enough that we BSD folk can make small jokes about it every once in a "
"while, anyway. Linux's problem is simply one of a lack of experience and "
"history to compare ideas against, a problem that is easily and rapidly being "
"addressed by the Linux community in the same way it has been addressed in "
"the BSD community-by continuous code development. The Windows NT(R) folk, "
"on the other hand, repeatedly make the same mistakes solved by UNIX(R) "
"decades ago and then spend years fixing them. Over and over again. They "
"have a severe case of \"not designed here\" and \"we are always right "
"because our marketing department says so\". I have little tolerance for "
"anyone who cannot learn from history."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:78
msgid ""
"Much of the apparent complexity of the FreeBSD design, especially in the VM/"
"Swap subsystem, is a direct result of having to solve serious performance "
"issues that occur under various conditions. These issues are not due to bad "
"algorithmic design but instead rise from environmental factors. In any "
"direct comparison between platforms, these issues become most apparent when "
"system resources begin to get stressed. As I describe FreeBSD's VM/Swap "
"subsystem the reader should always keep two points in mind:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:80
msgid ""
"The most important aspect of performance design is what is known as "
"\"Optimizing the Critical Path\". It is often the case that performance "
-"optimizations add a little bloat to the code in order to make the critical "
-"path perform better."
+"optimizations add a little bloat to the code to make the critical path "
+"perform better."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:81
msgid ""
"A solid, generalized design outperforms a heavily-optimized design over the "
"long run. While a generalized design may end up being slower than an heavily-"
"optimized design when they are first implemented, the generalized design "
"tends to be easier to adapt to changing conditions and the heavily-optimized "
"design winds up having to be thrown away."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:85
msgid ""
"Any codebase that will survive and be maintainable for years must therefore "
"be designed properly from the beginning even if it costs some performance. "
"Twenty years ago people were still arguing that programming in assembly was "
"better than programming in a high-level language because it produced code "
"that was ten times as fast. Today, the fallibility of that argument is "
"obvious - as are the parallels to algorithmic design and code generalization."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:87
#, no-wrap
msgid "VM Objects"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:97
msgid ""
"The best way to begin describing the FreeBSD VM system is to look at it from "
"the perspective of a user-level process. Each user process sees a single, "
"private, contiguous VM address space containing several types of memory "
"objects. These objects have various characteristics. Program code and "
"program data are effectively a single memory-mapped file (the binary file "
"being run), but program code is read-only while program data is copy-on-"
"write. Program BSS is just memory allocated and filled with zeros on "
"demand, called demand zero page fill. Arbitrary files can be memory-mapped "
"into the address space as well, which is how the shared library mechanism "
"works. Such mappings can require modifications to remain private to the "
"process making them. The fork system call adds an entirely new dimension to "
"the VM management problem on top of the complexity already given."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:103
msgid ""
"A program binary data page (which is a basic copy-on-write page) illustrates "
"the complexity. A program binary contains a preinitialized data section "
"which is initially mapped directly from the program file. When a program is "
"loaded into a process's VM space, this area is initially memory-mapped and "
"backed by the program binary itself, allowing the VM system to free/reuse "
"the page and later load it back in from the binary. The moment a process "
"modifies this data, however, the VM system must make a private copy of the "
"page for that process. Since the private copy has been modified, the VM "
"system may no longer free it, because there is no longer any way to restore "
"it later on."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:110
msgid ""
"You will notice immediately that what was originally a simple file mapping "
"has become much more complex. Data may be modified on a page-by-page basis "
"whereas the file mapping encompasses many pages at once. The complexity "
"further increases when a process forks. When a process forks, the result is "
"two processes-each with their own private address spaces, including any "
"modifications made by the original process prior to the call to `fork()`. "
"It would be silly for the VM system to make a complete copy of the data at "
"the time of the `fork()` because it is quite possible that at least one of "
"the two processes will only need to read from that page from then on, "
"allowing the original page to continue to be used. What was a private page "
"is made copy-on-write again, since each process (parent and child) expects "
"their own personal post-fork modifications to remain private to themselves "
"and not affect the other."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:119
msgid ""
"FreeBSD manages all of this with a layered VM Object model. The original "
"binary program file winds up being the lowest VM Object layer. A copy-on-"
"write layer is pushed on top of that to hold those pages which had to be "
"copied from the original file. If the program modifies a data page "
"belonging to the original file the VM system takes a fault and makes a copy "
"of the page in the higher layer. When a process forks, additional VM Object "
"layers are pushed on. This might make a little more sense with a fairly "
"basic example. A `fork()` is a common operation for any *BSD system, so "
"this example will consider a program that starts up, and forks. When the "
"process starts, the VM system creates an object layer, let's call this A:"
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/articles/vm-design/_index.adoc:120
#, no-wrap
msgid "A picture"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vm-design/_index.adoc:120
#, no-wrap
msgid "fig1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:125
msgid ""
"A represents the file-pages may be paged in and out of the file's physical "
"media as necessary. Paging in from the disk is reasonable for a program, "
"but we really do not want to page back out and overwrite the executable. "
"The VM system therefore creates a second layer, B, that will be physically "
"backed by swap space:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vm-design/_index.adoc:126
#, no-wrap
msgid "fig2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:131
msgid ""
"On the first write to a page after this, a new page is created in B, and its "
"contents are initialized from A. All pages in B can be paged in or out to a "
"swap device. When the program forks, the VM system creates two new object "
"layers-C1 for the parent, and C2 for the child-that rest on top of B:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vm-design/_index.adoc:132
#, no-wrap
msgid "fig3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:143
msgid ""
"In this case, let's say a page in B is modified by the original parent "
"process. The process will take a copy-on-write fault and duplicate the page "
"in C1, leaving the original page in B untouched. Now, let's say the same "
"page in B is modified by the child process. The process will take a copy-on-"
"write fault and duplicate the page in C2. The original page in B is now "
"completely hidden since both C1 and C2 have a copy and B could theoretically "
"be destroyed if it does not represent a \"real\" file; however, this sort of "
"optimization is not trivial to make because it is so fine-grained. FreeBSD "
"does not make this optimization. Now, suppose (as is often the case) that "
"the child process does an `exec()`. Its current address space is usually "
"replaced by a new address space representing a new file. In this case, the "
"C2 layer is destroyed:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/articles/vm-design/_index.adoc:144
#, no-wrap
msgid "fig4.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:150
msgid ""
"In this case, the number of children of B drops to one, and all accesses to "
"B now go through C1. This means that B and C1 can be collapsed together. "
"Any pages in B that also exist in C1 are deleted from B during the "
"collapse. Thus, even though the optimization in the previous step could not "
"be made, we can recover the dead pages when either of the processes exit or "
"`exec()`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:157
msgid ""
"This model creates a number of potential problems. The first is that you "
"can wind up with a relatively deep stack of layered VM Objects which can "
"cost scanning time and memory when you take a fault. Deep layering can "
"occur when processes fork and then fork again (either parent or child). The "
"second problem is that you can wind up with dead, inaccessible pages deep in "
"the stack of VM Objects. In our last example if both the parent and child "
"processes modify the same page, they both get their own private copies of "
"the page and the original page in B is no longer accessible by anyone. That "
"page in B can be freed."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:168
msgid ""
"FreeBSD solves the deep layering problem with a special optimization called "
"the \"All Shadowed Case\". This case occurs if either C1 or C2 take "
"sufficient COW faults to completely shadow all pages in B. Lets say that C1 "
"achieves this. C1 can now bypass B entirely, so rather then have C1->B->A "
"and C2->B->A we now have C1->A and C2->B->A. But look what also happened-"
"now B has only one reference (C2), so we can collapse B and C2 together. "
"The end result is that B is deleted entirely and we have C1->A and C2->A. "
"It is often the case that B will contain a large number of pages and neither "
"C1 nor C2 will be able to completely overshadow it. If we fork again and "
"create a set of D layers, however, it is much more likely that one of the D "
"layers will eventually be able to completely overshadow the much smaller "
"dataset represented by C1 or C2. The same optimization will work at any "
"point in the graph and the grand result of this is that even on a heavily "
"forked machine VM Object stacks tend to not get much deeper then 4. This is "
"true of both the parent and the children and true whether the parent is "
"doing the forking or whether the children cascade forks."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:172
msgid ""
"The dead page problem still exists in the case where C1 or C2 do not "
"completely overshadow B. Due to our other optimizations this case does not "
"represent much of a problem and we simply allow the pages to be dead. If "
"the system runs low on memory it will swap them out, eating a little swap, "
"but that is it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:176
msgid ""
"The advantage to the VM Object model is that `fork()` is extremely fast, "
"since no real data copying need take place. The disadvantage is that you "
"can build a relatively complex VM Object layering that slows page fault "
"handling down a little, and you spend memory managing the VM Object "
"structures. The optimizations FreeBSD makes proves to reduce the problems "
"enough that they can be ignored, leaving no real disadvantage."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:178
#, no-wrap
msgid "SWAP Layers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:186
msgid ""
"Private data pages are initially either copy-on-write or zero-fill pages. "
"When a change, and therefore a copy, is made, the original backing object "
"(usually a file) can no longer be used to save a copy of the page when the "
"VM system needs to reuse it for other purposes. This is where SWAP comes "
"in. SWAP is allocated to create backing store for memory that does not "
"otherwise have it. FreeBSD allocates the swap management structure for a VM "
"Object only when it is actually needed. However, the swap management "
"structure has had problems historically:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:188
msgid ""
"Under FreeBSD 3.X the swap management structure preallocates an array that "
"encompasses the entire object requiring swap backing store-even if only a "
"few pages of that object are swap-backed. This creates a kernel memory "
"fragmentation problem when large objects are mapped, or processes with large "
"runsizes (RSS) fork."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:189
msgid ""
-"Also, in order to keep track of swap space, a \"list of holes\" is kept in "
-"kernel memory, and this tends to get severely fragmented as well. Since the "
-"\"list of holes\" is a linear list, the swap allocation and freeing "
-"performance is a non-optimal O(n)-per-page."
+"Also, to keep track of swap space, a \"list of holes\" is kept in kernel "
+"memory, and this tends to get severely fragmented as well. Since the \"list "
+"of holes\" is a linear list, the swap allocation and freeing performance is "
+"a non-optimal O(n)-per-page."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:190
msgid ""
"It requires kernel memory allocations to take place during the swap freeing "
"process, and that creates low memory deadlock problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:191
msgid ""
"The problem is further exacerbated by holes created due to the interleaving "
"algorithm."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:192
msgid ""
"Also, the swap block map can become fragmented fairly easily resulting in "
"non-contiguous allocations."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:193
msgid ""
"Kernel memory must also be allocated on the fly for additional swap "
"management structures when a swapout occurs."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:196
msgid ""
"It is evident from that list that there was plenty of room for improvement. "
"For FreeBSD 4.X, I completely rewrote the swap subsystem:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:198
msgid ""
"Swap management structures are allocated through a hash table rather than a "
"linear array giving them a fixed allocation size and much finer granularity."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:199
msgid ""
"Rather then using a linearly linked list to keep track of swap space "
"reservations, it now uses a bitmap of swap blocks arranged in a radix tree "
"structure with free-space hinting in the radix node structures. This "
"effectively makes swap allocation and freeing an O(1) operation."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:200
msgid ""
-"The entire radix tree bitmap is also preallocated in order to avoid having "
-"to allocate kernel memory during critical low memory swapping operations. "
-"After all, the system tends to swap when it is low on memory so we should "
-"avoid allocating kernel memory at such times in order to avoid potential "
-"deadlocks."
+"The entire radix tree bitmap is also preallocated to avoid having to "
+"allocate kernel memory during critical low memory swapping operations. After "
+"all, the system tends to swap when it is low on memory so we should avoid "
+"allocating kernel memory at such times to avoid potential deadlocks."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:201
msgid ""
"To reduce fragmentation the radix tree is capable of allocating large "
"contiguous chunks at once, skipping over smaller fragmented chunks."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:203
msgid ""
"I did not take the final step of having an \"allocating hint pointer\" that "
-"would trundle through a portion of swap as allocations were made in order to "
-"further guarantee contiguous allocations or at least locality of reference, "
-"but I ensured that such an addition could be made."
+"would trundle through a portion of swap as allocations were made to further "
+"guarantee contiguous allocations or at least locality of reference, but I "
+"ensured that such an addition could be made."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:205
#, no-wrap
msgid "When to free a page"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:210
msgid ""
"Since the VM system uses all available memory for disk caching, there are "
"usually very few truly-free pages. The VM system depends on being able to "
"properly choose pages which are not in use to reuse for new allocations. "
"Selecting the optimal pages to free is possibly the single-most important "
"function any VM system can perform because if it makes a poor selection, the "
"VM system may be forced to unnecessarily retrieve pages from disk, seriously "
"degrading system performance."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:213
msgid ""
"How much overhead are we willing to suffer in the critical path to avoid "
"freeing the wrong page? Each wrong choice we make will cost us hundreds of "
"thousands of CPU cycles and a noticeable stall of the affected processes, so "
-"we are willing to endure a significant amount of overhead in order to be "
-"sure that the right page is chosen. This is why FreeBSD tends to outperform "
-"other systems when memory resources become stressed."
+"we are willing to endure a significant amount of overhead to be sure that "
+"the right page is chosen. This is why FreeBSD tends to outperform other "
+"systems when memory resources become stressed."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:216
msgid ""
"The free page determination algorithm is built upon a history of the use of "
"memory pages. To acquire this history, the system takes advantage of a page-"
"used bit feature that most hardware page tables have."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:222
msgid ""
"In any case, the page-used bit is cleared and at some later point the VM "
"system comes across the page again and sees that the page-used bit has been "
"set. This indicates that the page is still being actively used. If the bit "
"is still clear it is an indication that the page is not being actively "
"used. By testing this bit periodically, a use history (in the form of a "
"counter) for the physical page is developed. When the VM system later needs "
"to free up some pages, checking this history becomes the cornerstone of "
"determining the best candidate page to reuse."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:227
msgid ""
"For those platforms that do not have this feature, the system actually "
"emulates a page-used bit. It unmaps or protects a page, forcing a page "
"fault if the page is accessed again. When the page fault is taken, the "
"system simply marks the page as having been used and unprotects the page so "
"that it may be used. While taking such page faults just to determine if a "
"page is being used appears to be an expensive proposition, it is much less "
"expensive than reusing the page for some other purpose only to find that a "
"process needs it back and then have to go to disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:237
msgid ""
"FreeBSD makes use of several page queues to further refine the selection of "
"pages to reuse as well as to determine when dirty pages must be flushed to "
"their backing store. Since page tables are dynamic entities under FreeBSD, "
"it costs virtually nothing to unmap a page from the address space of any "
"processes using it. When a page candidate has been chosen based on the page-"
"use counter, this is precisely what is done. The system must make a "
"distinction between clean pages which can theoretically be freed up at any "
"time, and dirty pages which must first be written to their backing store "
"before being reusable. When a page candidate has been found it is moved to "
"the inactive queue if it is dirty, or the cache queue if it is clean. A "
"separate algorithm based on the dirty-to-clean page ratio determines when "
"dirty pages in the inactive queue must be flushed to disk. Once this is "
"accomplished, the flushed pages are moved from the inactive queue to the "
"cache queue. At this point, pages in the cache queue can still be "
"reactivated by a VM fault at relatively low cost. However, pages in the "
"cache queue are considered to be \"immediately freeable\" and will be reused "
"in an LRU (least-recently used) fashion when the system needs to allocate "
"new memory."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:241
msgid ""
"It is important to note that the FreeBSD VM system attempts to separate "
"clean and dirty pages for the express reason of avoiding unnecessary flushes "
"of dirty pages (which eats I/O bandwidth), nor does it move pages between "
"the various page queues gratuitously when the memory subsystem is not being "
"stressed. This is why you will see some systems with very low cache queue "
"counts and high active queue counts when doing a `systat -vm` command. As "
"the VM system becomes more stressed, it makes a greater effort to maintain "
"the various page queues at the levels determined to be the most effective."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:245
msgid ""
"An urban myth has circulated for years that Linux did a better job avoiding "
"swapouts than FreeBSD, but this in fact is not true. What was actually "
-"occurring was that FreeBSD was proactively paging out unused pages in order "
-"to make room for more disk cache while Linux was keeping unused pages in "
-"core and leaving less memory available for cache and process pages. I do "
-"not know whether this is still true today."
+"occurring was that FreeBSD was proactively paging out unused pages to make "
+"room for more disk cache while Linux was keeping unused pages in core and "
+"leaving less memory available for cache and process pages. I do not know "
+"whether this is still true today."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:247
#, no-wrap
msgid "Pre-Faulting and Zeroing Optimizations"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:257
msgid ""
"Taking a VM fault is not expensive if the underlying page is already in core "
"and can simply be mapped into the process, but it can become expensive if "
"you take a whole lot of them on a regular basis. A good example of this is "
"running a program such as man:ls[1] or man:ps[1] over and over again. If "
"the program binary is mapped into memory but not mapped into the page table, "
"then all the pages that will be accessed by the program will have to be "
"faulted in every time the program is run. This is unnecessary when the "
"pages in question are already in the VM Cache, so FreeBSD will attempt to "
"pre-populate a process's page tables with those pages that are already in "
"the VM Cache. One thing that FreeBSD does not yet do is pre-copy-on-write "
"certain pages on exec. For example, if you run the man:ls[1] program while "
"running `vmstat 1` you will notice that it always takes a certain number of "
"page faults, even when you run it over and over again. These are zero-fill "
"faults, not program code faults (which were pre-faulted in already). Pre-"
"copying pages on exec or fork is an area that could use more study."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:266
msgid ""
"A large percentage of page faults that occur are zero-fill faults. You can "
"usually see this by observing the `vmstat -s` output. These occur when a "
"process accesses pages in its BSS area. The BSS area is expected to be "
"initially zero but the VM system does not bother to allocate any memory at "
"all until the process actually accesses it. When a fault occurs the VM "
"system must not only allocate a new page, it must zero it as well. To "
"optimize the zeroing operation the VM system has the ability to pre-zero "
"pages and mark them as such, and to request pre-zeroed pages when zero-fill "
"faults occur. The pre-zeroing occurs whenever the CPU is idle but the "
-"number of pages the system pre-zeros is limited in order to avoid blowing "
-"away the memory caches. This is an excellent example of adding complexity "
-"to the VM system in order to optimize the critical path."
+"number of pages the system pre-zeros is limited to avoid blowing away the "
+"memory caches. This is an excellent example of adding complexity to the VM "
+"system to optimize the critical path."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:268
#, no-wrap
msgid "Page Table Optimizations"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:278
msgid ""
"The page table optimizations make up the most contentious part of the "
"FreeBSD VM design and they have shown some strain with the advent of serious "
"use of `mmap()`. I think this is actually a feature of most BSDs though I "
"am not sure when it was first introduced. There are two major "
"optimizations. The first is that hardware page tables do not contain "
"persistent state but instead can be thrown away at any time with only a "
"minor amount of management overhead. The second is that every active page "
"table entry in the system has a governing `pv_entry` structure which is tied "
"into the `vm_page` structure. FreeBSD can simply iterate through those "
"mappings that are known to exist while Linux must check all page tables that "
"_might_ contain a specific mapping to see if it does, which can achieve "
"O(n^2) overhead in certain situations. It is because of this that FreeBSD "
"tends to make better choices on which pages to reuse or swap when memory is "
"stressed, giving it better performance under load. However, FreeBSD "
"requires kernel tuning to accommodate large-shared-address-space situations "
"such as those that can occur in a news system because it may run out of "
"`pv_entry` structures."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:283
msgid ""
"Both Linux and FreeBSD need work in this area. FreeBSD is trying to "
"maximize the advantage of a potentially sparse active-mapping model (not all "
"processes need to map all pages of a shared library, for example), whereas "
"Linux is trying to simplify its algorithms. FreeBSD generally has the "
"performance advantage here at the cost of wasting a little extra memory, but "
"FreeBSD breaks down in the case where a large file is massively shared "
"across hundreds of processes. Linux, on the other hand, breaks down in the "
"case where many processes are sparsely-mapping the same shared library and "
"also runs non-optimally when trying to determine whether a page can be "
"reused or not."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:285
#, no-wrap
msgid "Page Coloring"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:295
msgid ""
"We will end with the page coloring optimizations. Page coloring is a "
"performance optimization designed to ensure that accesses to contiguous "
"pages in virtual memory make the best use of the processor cache. In "
"ancient times (i.e. 10+ years ago) processor caches tended to map virtual "
"memory rather than physical memory. This led to a huge number of problems "
"including having to clear the cache on every context switch in some cases, "
"and problems with data aliasing in the cache. Modern processor caches map "
"physical memory precisely to solve those problems. This means that two side-"
"by-side pages in a processes address space may not correspond to two side-by-"
"side pages in the cache. In fact, if you are not careful side-by-side pages "
"in virtual memory could wind up using the same page in the processor cache-"
"leading to cacheable data being thrown away prematurely and reducing CPU "
"performance. This is true even with multi-way set-associative caches "
"(though the effect is mitigated somewhat)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:302
msgid ""
"FreeBSD's memory allocation code implements page coloring optimizations, "
"which means that the memory allocation code will attempt to locate free "
"pages that are contiguous from the point of view of the cache. For example, "
"if page 16 of physical memory is assigned to page 0 of a process's virtual "
"memory and the cache can hold 4 pages, the page coloring code will not "
"assign page 20 of physical memory to page 1 of a process's virtual memory. "
"It would, instead, assign page 21 of physical memory. The page coloring "
"code attempts to avoid assigning page 20 because this maps over the same "
"cache memory as page 16 and would result in non-optimal caching. This code "
"adds a significant amount of complexity to the VM memory allocation "
"subsystem as you can well imagine, but the result is well worth the effort. "
"Page Coloring makes VM memory as deterministic as physical memory in regards "
"to cache performance."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:304
#, no-wrap
msgid "Conclusion"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:309
msgid ""
"Virtual memory in modern operating systems must address a number of "
"different issues efficiently and for many different usage patterns. The "
"modular and algorithmic approach that BSD has historically taken allows us "
"to study and understand the current implementation as well as relatively "
"cleanly replace large sections of the code. There have been a number of "
"improvements to the FreeBSD VM system in the last several years, and work is "
"ongoing."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/vm-design/_index.adoc:311
#, no-wrap
msgid "Bonus QA session by Allen Briggs"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vm-design/_index.adoc:313
#, no-wrap
msgid "What is the interleaving algorithm that you refer to in your listing of the ills of the FreeBSD 3.X swap arrangements?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:319
msgid ""
"FreeBSD uses a fixed swap interleave which defaults to 4. This means that "
"FreeBSD reserves space for four swap areas even if you only have one, two, "
"or three. Since swap is interleaved the linear address space representing "
"the \"four swap areas\" will be fragmented if you do not actually have four "
"swap areas. For example, if you have two swap areas A and B FreeBSD's "
"address space representation for that swap area will be interleaved in "
"blocks of 16 pages:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/vm-design/_index.adoc:322
#, no-wrap
msgid "A B C D A B C D A B C D A B C D\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:329
msgid ""
"FreeBSD 3.X uses a \"sequential list of free regions\" approach to "
"accounting for the free swap areas. The idea is that large blocks of free "
"linear space can be represented with a single list node ([.filename]#kern/"
"subr_rlist.c#). But due to the fragmentation the sequential list winds up "
"being insanely fragmented. In the above example, completely unused swap "
"will have A and B shown as \"free\" and C and D shown as \"all allocated\". "
"Each A-B sequence requires a list node to account for because C and D are "
"holes, so the list node cannot be combined with the next A-B sequence."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:331
msgid ""
"Why do we interleave our swap space instead of just tack swap areas onto the "
"end and do something fancier? It is a whole lot easier to allocate linear "
"swaths of an address space and have the result automatically be interleaved "
"across multiple disks than it is to try to put that sophistication elsewhere."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:336
msgid ""
"The fragmentation causes other problems. Being a linear list under 3.X, and "
"having such a huge amount of inherent fragmentation, allocating and freeing "
"swap winds up being an O(N) algorithm instead of an O(1) algorithm. "
"Combined with other factors (heavy swapping) and you start getting into "
"O(N^2) and O(N^3) levels of overhead, which is bad. The 3.X system may also "
"need to allocate KVM during a swap operation to create a new list node which "
"can lead to a deadlock if the system is trying to pageout pages in a low-"
"memory situation."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:341
msgid ""
"Under 4.X we do not use a sequential list. Instead we use a radix tree and "
"bitmaps of swap blocks rather than ranged list nodes. We take the hit of "
"preallocating all the bitmaps required for the entire swap area up front but "
"it winds up wasting less memory due to the use of a bitmap (one bit per "
"block) instead of a linked list of nodes. The use of a radix tree instead "
"of a sequential list gives us nearly O(1) performance no matter how "
"fragmented the tree becomes."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vm-design/_index.adoc:342
#, no-wrap
msgid "How is the separation of clean and dirty (inactive) pages related to the situation where you see low cache queue counts and high active queue counts in systat -vm? Do the systat stats roll the active and dirty pages together for the active queue count?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:347
msgid ""
"Yes, that is confusing. The relationship is \"goal\" verses \"reality\". "
"Our goal is to separate the pages but the reality is that if we are not in a "
"memory crunch, we do not really have to."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:349
msgid ""
"What this means is that FreeBSD will not try very hard to separate out dirty "
"pages (inactive queue) from clean pages (cache queue) when the system is not "
"being stressed, nor will it try to deactivate pages (active queue -> "
"inactive queue) when the system is not being stressed, even if they are not "
"being used."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vm-design/_index.adoc:350
#, no-wrap
msgid "In man:ls[1] the / vmstat 1 example, would not some of the page faults be data page faults (COW from executable file to private page)? I.e., I would expect the page faults to be some zero-fill and some program data. Or are you implying that FreeBSD does do pre-COW for the program data?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:356
msgid ""
"A COW fault can be either zero-fill or program-data. The mechanism is the "
"same either way because the backing program-data is almost certainly already "
"in the cache. I am indeed lumping the two together. FreeBSD does not pre-"
"COW program data or zero-fill, but it _does_ pre-map pages that exist in its "
"cache."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vm-design/_index.adoc:357
#, no-wrap
msgid "In your section on page table optimizations, can you give a little more detail about pv_entry and vm_page (or should vm_page be vm_pmap-as in 4.4, cf. pp. 180-181 of McKusick, Bostic, Karel, Quarterman)? Specifically, what kind of operation/reaction would require scanning the mappings?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:361
msgid ""
"A `vm_page` represents an (object,index#) tuple. A `pv_entry` represents a "
"hardware page table entry (pte). If you have five processes sharing the "
"same physical page, and three of those processes's page tables actually map "
"the page, that page will be represented by a single `vm_page` structure and "
"three `pv_entry` structures."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:364
msgid ""
"`pv_entry` structures only represent pages mapped by the MMU (one `pv_entry` "
"represents one pte). This means that when we need to remove all hardware "
-"references to a `vm_page` (in order to reuse the page for something else, "
-"page it out, clear it, dirty it, and so forth) we can simply scan the linked "
-"list of pv_entry's associated with that vm_page to remove or modify the "
-"pte's from their page tables."
+"references to a `vm_page` (to reuse the page for something else, page it "
+"out, clear it, dirty it, and so forth) we can simply scan the linked list of "
+"pv_entry's associated with that vm_page to remove or modify the pte's from "
+"their page tables."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:371
msgid ""
-"Under Linux there is no such linked list. In order to remove all the "
-"hardware page table mappings for a `vm_page` linux must index into every VM "
-"object that _might_ have mapped the page. For example, if you have 50 "
-"processes all mapping the same shared library and want to get rid of page X "
-"in that library, you need to index into the page table for each of those 50 "
+"Under Linux there is no such linked list. To remove all the hardware page "
+"table mappings for a `vm_page` linux must index into every VM object that "
+"_might_ have mapped the page. For example, if you have 50 processes all "
+"mapping the same shared library and want to get rid of page X in that "
+"library, you need to index into the page table for each of those 50 "
"processes even if only 10 of them have actually mapped the page. So Linux "
"is trading off the simplicity of its design against performance. Many VM "
"algorithms which are O(1) or (small N) under FreeBSD wind up being O(N), "
"O(N^2), or worse under Linux. Since the pte's representing a particular "
"page in an object tend to be at the same offset in all the page tables they "
"are mapped in, reducing the number of accesses into the page tables at the "
"same pte offset will often avoid blowing away the L1 cache line for that "
"offset, which can lead to better performance."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:373
msgid ""
-"FreeBSD has added complexity (the `pv_entry` scheme) in order to increase "
-"performance (to limit page table accesses to _only_ those pte's that need to "
-"be modified)."
+"FreeBSD has added complexity (the `pv_entry` scheme) to increase performance "
+"(to limit page table accesses to _only_ those pte's that need to be "
+"modified)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:377
msgid ""
"But FreeBSD has a scaling problem that Linux does not in that there are a "
"limited number of `pv_entry` structures and this causes problems when you "
"have massive sharing of data. In this case you may run out of `pv_entry` "
"structures even though there is plenty of free memory available. This can "
"be fixed easily enough by bumping up the number of `pv_entry` structures in "
"the kernel config, but we really need to find a better way to do it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:381
msgid ""
"In regards to the memory overhead of a page table verses the `pv_entry` "
"scheme: Linux uses \"permanent\" page tables that are not throw away, but "
"does not need a `pv_entry` for each potentially mapped pte. FreeBSD uses "
"\"throw away\" page tables but adds in a `pv_entry` structure for each "
"actually-mapped pte. I think memory utilization winds up being about the "
"same, giving FreeBSD an algorithmic advantage with its ability to throw away "
"page tables at will with very low overhead."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/vm-design/_index.adoc:382
#, no-wrap
msgid "Finally, in the page coloring section, it might help to have a little more description of what you mean here. I did not quite follow it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:387
msgid ""
"Do you know how an L1 hardware memory cache works? I will explain: Consider "
"a machine with 16MB of main memory but only 128K of L1 cache. Generally the "
"way this cache works is that each 128K block of main memory uses the _same_ "
"128K of cache. If you access offset 0 in main memory and then offset 128K "
"in main memory you can wind up throwing away the cached data you read from "
"offset 0!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:393
msgid ""
"Now, I am simplifying things greatly. What I just described is what is "
"called a \"direct mapped\" hardware memory cache. Most modern caches are "
"what are called 2-way-set-associative or 4-way-set-associative caches. The "
"set-associatively allows you to access up to N different memory regions that "
"overlap the same cache memory without destroying the previously cached "
"data. But only N."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:396
msgid ""
"So if I have a 4-way set associative cache I can access offset 0, offset "
"128K, 256K and offset 384K and still be able to access offset 0 again and "
"have it come from the L1 cache. If I then access offset 512K, however, one "
"of the four previously cached data objects will be thrown away by the cache."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:400
msgid ""
"It is extremely important... _extremely_ important for most of a processor's "
"memory accesses to be able to come from the L1 cache, because the L1 cache "
"operates at the processor frequency. The moment you have an L1 cache miss "
"and have to go to the L2 cache or to main memory, the processor will stall "
"and potentially sit twiddling its fingers for _hundreds_ of instructions "
"worth of time waiting for a read from main memory to complete. Main memory "
"(the dynamic ram you stuff into a computer) is __slow__, when compared to "
"the speed of a modern processor core."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:404
msgid ""
"Ok, so now onto page coloring: All modern memory caches are what are known "
"as _physical_ caches. They cache physical memory addresses, not virtual "
"memory addresses. This allows the cache to be left alone across a process "
"context switch, which is very important."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:409
msgid ""
"But in the UNIX(R) world you are dealing with virtual address spaces, not "
"physical address spaces. Any program you write will see the virtual address "
"space given to it. The actual _physical_ pages underlying that virtual "
"address space are not necessarily physically contiguous! In fact, you might "
"have two pages that are side by side in a processes address space which wind "
"up being at offset 0 and offset 128K in _physical_ memory."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:413
msgid ""
"A program normally assumes that two side-by-side pages will be optimally "
"cached. That is, that you can access data objects in both pages without "
"having them blow away each other's cache entry. But this is only true if "
"the physical pages underlying the virtual address space are contiguous "
"(insofar as the cache is concerned)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:417
msgid ""
"This is what Page coloring does. Instead of assigning _random_ physical "
"pages to virtual addresses, which may result in non-optimal cache "
"performance, Page coloring assigns _reasonably-contiguous_ physical pages to "
"virtual addresses. Thus programs can be written under the assumption that "
"the characteristics of the underlying hardware cache are the same for their "
"virtual address space as they would be if the program had been run directly "
"in a physical address space."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/vm-design/_index.adoc:421
msgid ""
-"Note that I say \"reasonably\" contiguous rather than simply \"contiguous"
-"\". From the point of view of a 128K direct mapped cache, the physical "
-"address 0 is the same as the physical address 128K. So two side-by-side "
-"pages in your virtual address space may wind up being offset 128K and offset "
-"132K in physical memory, but could also easily be offset 128K and offset 4K "
-"in physical memory and still retain the same cache performance "
+"Note that I say \"reasonably\" contiguous rather than simply "
+"\"contiguous\". From the point of view of a 128K direct mapped cache, the "
+"physical address 0 is the same as the physical address 128K. So two side-by-"
+"side pages in your virtual address space may wind up being offset 128K and "
+"offset 132K in physical memory, but could also easily be offset 128K and "
+"offset 4K in physical memory and still retain the same cache performance "
"characteristics. So page-coloring does _not_ have to assign truly "
"contiguous pages of physical memory to contiguous pages of virtual memory, "
"it just needs to make sure it assigns contiguous pages from the point of "
"view of cache performance and operation."
msgstr ""
diff --git a/documentation/content/en/books/arch-handbook/mac/_index.po b/documentation/content/en/books/arch-handbook/mac/_index.po
index b198edda73..27b55eeaac 100644
--- a/documentation/content/en/books/arch-handbook/mac/_index.po
+++ b/documentation/content/en/books/arch-handbook/mac/_index.po
@@ -1,8145 +1,8170 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 10:28-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Title =
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:18
#, no-wrap
msgid "The TrustedBSD MAC Framework"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1
#, no-wrap
msgid "Chapter 6. The TrustedBSD MAC Framework"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:56
#, no-wrap
msgid "MAC Documentation Copyright"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:59
msgid ""
"This documentation was developed for the FreeBSD Project by Chris Costello "
"at Safeport Network Services and Network Associates Laboratories, the "
"Security Research Division of Network Associates, Inc. under DARPA/SPAWAR "
"contract N66001-01-C-8035 (\"CBOSS\"), as part of the DARPA CHATS research "
"program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:61
msgid ""
"Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, "
"HTML, PDF, PostScript, RTF and so forth) with or without modification, are "
"permitted provided that the following conditions are met:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:63
msgid ""
"Redistributions of source code (SGML DocBook) must retain the above "
"copyright notice, this list of conditions and the following disclaimer as "
"the first lines of this file unmodified."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:64
msgid ""
"Redistributions in compiled form (transformed to other DTDs, converted to "
"PDF, PostScript, RTF and other formats) 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."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:68
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:69
msgid ""
"THIS DOCUMENTATION IS PROVIDED BY THE NETWORKS ASSOCIATES TECHNOLOGY, INC "
"\"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 NETWORKS ASSOCIATES TECHNOLOGY, "
+"PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NETWORKS ASSOCIATES TECHNOLOGY, "
"INC 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 DOCUMENTATION, EVEN IF ADVISED OF "
"THE POSSIBILITY OF SUCH DAMAGE."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:71
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:72
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:74
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:77
msgid ""
"FreeBSD includes experimental support for several mandatory access control "
"policies, as well as a framework for kernel security extensibility, the "
-"TrustedBSD MAC Framework. The MAC Framework is a pluggable access control "
+"TrustedBSD MAC Framework. The MAC Framework is a pluggable access control "
"framework, permitting new security policies to be easily linked into the "
-"kernel, loaded at boot, or loaded dynamically at run-time. The framework "
+"kernel, loaded at boot, or loaded dynamically at run-time. The framework "
"provides a variety of features to make it easier to implement new security "
"policies, including the ability to easily tag security labels (such as "
"confidentiality information) onto system objects."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:76
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:79
msgid ""
"This chapter introduces the MAC policy framework and provides documentation "
"for a sample MAC policy module."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:78
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:81
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:81
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:87
msgid ""
"The TrustedBSD MAC framework provides a mechanism to allow the compile-time "
-"or run-time extension of the kernel access control model. New system "
+"or run-time extension of the kernel access control model. New system "
"policies may be implemented as kernel modules and linked to the kernel; if "
-"multiple policy modules are present, their results will be composed. The MAC "
-"Framework provides a variety of access control infrastructure services to "
-"assist policy writers, including support for transient and persistent policy-"
-"agnostic object security labels. This support is currently considered "
-"experimental."
+"multiple policy modules are present, their results will be composed. The "
+"MAC Framework provides a variety of access control infrastructure services "
+"to assist policy writers, including support for transient and persistent "
+"policy-agnostic object security labels. This support is currently "
+"considered experimental."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:83
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:89
msgid ""
"This chapter provides information appropriate for developers of policy "
"modules, as well as potential consumers of MAC-enabled environments, to "
"learn about how the MAC Framework supports access control extension of the "
"kernel."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:85
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:91
#, no-wrap
msgid "Policy Background"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:88
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:98
msgid ""
"Mandatory Access Control (MAC), refers to a set of access control policies "
-"that are mandatorily enforced on users by the operating system. MAC policies "
-"may be contrasted with Discretionary Access Control (DAC) protections, by "
-"which non-administrative users may (at their discretion) protect objects. In "
-"traditional UNIX systems, DAC protections include file permissions and "
-"access control lists; MAC protections include process controls preventing "
-"inter-user debugging and firewalls. A variety of MAC policies have been "
-"formulated by operating system designers and security researches, including "
-"the Multi-Level Security (MLS) confidentiality policy, the Biba integrity "
-"policy, Role-Based Access Control (RBAC), Domain and Type Enforcement (DTE), "
-"and Type Enforcement (TE). Each model bases decisions on a variety of "
-"factors, including user identity, role, and security clearance, as well as "
-"security labels on objects representing concepts such as data sensitivity "
-"and integrity."
+"that are mandatorily enforced on users by the operating system. MAC "
+"policies may be contrasted with Discretionary Access Control (DAC) "
+"protections, by which non-administrative users may (at their discretion) "
+"protect objects. In traditional UNIX systems, DAC protections include file "
+"permissions and access control lists; MAC protections include process "
+"controls preventing inter-user debugging and firewalls. A variety of MAC "
+"policies have been formulated by operating system designers and security "
+"researches, including the Multi-Level Security (MLS) confidentiality policy, "
+"the Biba integrity policy, Role-Based Access Control (RBAC), Domain and Type "
+"Enforcement (DTE), and Type Enforcement (TE). Each model bases decisions on "
+"a variety of factors, including user identity, role, and security clearance, "
+"as well as security labels on objects representing concepts such as data "
+"sensitivity and integrity."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:90
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:101
msgid ""
"The TrustedBSD MAC Framework is capable of supporting policy modules that "
"implement all of these policies, as well as a broad class of system "
"hardening policies, which may use existing security attributes, such as user "
"and group IDs, as well as extended attributes on files, and other system "
-"properties. In addition, despite the name, the MAC Framework can also be "
+"properties. In addition, despite the name, the MAC Framework can also be "
"used to implement purely discretionary policies, as policy modules are given "
"substantial flexibility in how they authorize protections."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:92
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:103
#, no-wrap
msgid "MAC Framework Kernel Architecture"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:95
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:107
msgid ""
"The TrustedBSD MAC Framework permits kernel modules to extend the operating "
"system security policy, as well as providing infrastructure functionality "
-"required by many access control modules. If multiple policies are "
+"required by many access control modules. If multiple policies are "
"simultaneously loaded, the MAC Framework will usefully (for some definition "
"of useful) compose the results of the policies."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:97
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:109
#, no-wrap
msgid "Kernel Elements"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:100
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:112
msgid "The MAC Framework contains a number of kernel elements:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:102
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:114
msgid "Framework management interfaces"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:103
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:115
msgid "Concurrency and synchronization primitives."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:104
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:116
msgid "Policy registration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:105
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:117
msgid "Extensible security label for kernel objects"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:106
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:118
msgid "Policy entry point composition operators"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:107
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:119
msgid "Label management primitives"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:108
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:120
msgid "Entry point API invoked by kernel services"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:109
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:121
msgid "Entry point API to policy modules"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:110
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:122
msgid ""
"Entry points implementations (policy life cycle, object life cycle/label "
"management, access control checks)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:111
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:123
msgid "Policy-agnostic label-management system calls"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:112
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:124
msgid "`mac_syscall()` multiplex system call"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:113
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:125
msgid "Various security policies implemented as MAC policy modules"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:115
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:127
#, no-wrap
msgid "Framework Management Interfaces"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:118
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:130
msgid ""
"The TrustedBSD MAC Framework may be directly managed using sysctl's, loader "
"tunables, and system calls."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:120
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:135
msgid ""
"In most cases, sysctl's and loader tunables of the same name modify the same "
"parameters, and control behavior such as enforcement of protections relating "
-"to various kernel subsystems. In addition, if MAC debugging support is "
+"to various kernel subsystems. In addition, if MAC debugging support is "
"compiled into the kernel, several counters will be maintained tracking label "
-"allocation. It is generally advisable that per-subsystem enforcement "
+"allocation. It is generally advisable that per-subsystem enforcement "
"controls not be used to control policy behavior in production environments, "
-"as they broadly impact the operation of all active policies. Instead, per-"
+"as they broadly impact the operation of all active policies. Instead, per-"
"policy controls should be preferred, as they provide greater granularity and "
"greater operational consistency for policy modules."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:122
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:137
msgid ""
"Loading and unloading of policy modules is performed using the system module "
"management system calls and other system interfaces, including boot loader "
"variables; policy modules will have the opportunity to influence load and "
"unload events, including preventing undesired unloading of the policy."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:124
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:139
#, no-wrap
msgid "Policy List Concurrency and Synchronization"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:127
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:146
msgid ""
"As the set of active policies may change at run-time, and the invocation of "
"entry points is non-atomic, synchronization is required to prevent loading "
"or unloading of policies while an entry point invocation is in progress, "
-"freezing the set of active policies for the duration. This is accomplished "
+"freezing the set of active policies for the duration. This is accomplished "
"by means of a framework busy count: whenever an entry point is entered, the "
"busy count is incremented; whenever it is exited, the busy count is "
-"decremented. While the busy count is elevated, policy list changes are not "
+"decremented. While the busy count is elevated, policy list changes are not "
"permitted, and threads attempting to modify the policy list will sleep until "
-"the list is not busy. The busy count is protected by a mutex, and a "
+"the list is not busy. The busy count is protected by a mutex, and a "
"condition variable is used to wake up sleepers waiting on policy list "
-"modifications. One side effect of this synchronization model is that "
+"modifications. One side effect of this synchronization model is that "
"recursion into the MAC Framework from within a policy module is permitted, "
"although not generally used."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:129
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:149
msgid ""
"Various optimizations are used to reduce the overhead of the busy count, "
"including avoiding the full cost of incrementing and decrementing if the "
"list is empty or contains only static entries (policies that are loaded "
-"before the system starts, and cannot be unloaded). A compile-time option is "
+"before the system starts, and cannot be unloaded). A compile-time option is "
"also provided which prevents any change in the set of loaded policies at run-"
"time, which eliminates the mutex locking costs associated with supporting "
"dynamically loaded and unloaded policies as synchronization is no longer "
"required."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:131
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:151
msgid ""
"As the MAC Framework is not permitted to block in some entry points, a "
"normal sleep lock cannot be used; as a result, it is possible for the load "
"or unload attempt to block for a substantial period of time waiting for the "
"framework to become idle."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:133
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:153
#, no-wrap
msgid "Label Synchronization"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:136
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:160
msgid ""
"As kernel objects of interest may generally be accessed from more than one "
"thread at a time, and simultaneous entry of more than one thread into the "
"MAC Framework is permitted, security attribute storage maintained by the MAC "
-"Framework is carefully synchronized. In general, existing kernel "
+"Framework is carefully synchronized. In general, existing kernel "
"synchronization on kernel object data is used to protect MAC Framework "
"security labels on the object: for example, MAC labels on sockets are "
-"protected using the existing socket mutex. Likewise, semantics for "
+"protected using the existing socket mutex. Likewise, semantics for "
"concurrent access are generally identical to those of the container objects: "
"for credentials, copy-on-write semantics are maintained for label contents "
-"as with the remainder of the credential structure. The MAC Framework asserts "
-"necessary locks on objects when invoked with an object reference. Policy "
-"authors must be aware of these synchronization semantics, as they will "
-"sometimes limit the types of accesses permitted on labels: for example, when "
-"a read-only reference to a credential is passed to a policy via an entry "
-"point, only read operations are permitted on the label state attached to the "
-"credential."
+"as with the remainder of the credential structure. The MAC Framework "
+"asserts necessary locks on objects when invoked with an object reference. "
+"Policy authors must be aware of these synchronization semantics, as they "
+"will sometimes limit the types of accesses permitted on labels: for example, "
+"when a read-only reference to a credential is passed to a policy via an "
+"entry point, only read operations are permitted on the label state attached "
+"to the credential."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:138
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:162
#, no-wrap
msgid "Policy Synchronization and Concurrency"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:141
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:168
msgid ""
"Policy modules must be written to assume that many kernel threads may "
"simultaneously enter one more policy entry points due to the parallel and "
-"preemptive nature of the FreeBSD kernel. If the policy module makes use of "
+"preemptive nature of the FreeBSD kernel. If the policy module makes use of "
"mutable state, this may require the use of synchronization primitives within "
"the policy to prevent inconsistent views on that state resulting in "
-"incorrect operation of the policy. Policies will generally be able to make "
+"incorrect operation of the policy. Policies will generally be able to make "
"use of existing FreeBSD synchronization primitives for this purpose, "
"including mutexes, sleep locks, condition variables, and counting "
-"semaphores. However, policies should be written to employ these primitives "
+"semaphores. However, policies should be written to employ these primitives "
"carefully, respecting existing kernel lock orders, and recognizing that some "
"entry points are not permitted to sleep, limiting the use of primitives in "
"those entry points to mutexes and wakeup operations."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:143
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:171
msgid ""
"When policy modules call out to other kernel subsystems, they will generally "
"need to release any in-policy locks in order to avoid violating the kernel "
-"lock order or risking lock recursion. This will maintain policy locks as "
+"lock order or risking lock recursion. This will maintain policy locks as "
"leaf locks in the global lock order, helping to avoid deadlock."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:145
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:173
#, no-wrap
msgid "Policy Registration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:148
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:180
msgid ""
"The MAC Framework maintains two lists of active policies: a static list, and "
-"a dynamic list. The lists differ only with regards to their locking "
+"a dynamic list. The lists differ only with regards to their locking "
"semantics: an elevated reference count is not required to make use of the "
-"static list. When kernel modules containing MAC Framework policies are "
+"static list. When kernel modules containing MAC Framework policies are "
"loaded, the policy module will use `SYSINIT` to invoke a registration "
"function; when a policy module is unloaded, `SYSINIT` will likewise invoke a "
-"de-registration function. Registration may fail if a policy module is loaded "
-"more than once, if insufficient resources are available for the registration "
-"(for example, the policy might require labeling and insufficient labeling "
-"state might be available), or other policy prerequisites might not be met "
-"(some policies may only be loaded prior to boot). Likewise, de-registration "
-"may fail if a policy is flagged as not unloadable."
+"de-registration function. Registration may fail if a policy module is "
+"loaded more than once, if insufficient resources are available for the "
+"registration (for example, the policy might require labeling and "
+"insufficient labeling state might be available), or other policy "
+"prerequisites might not be met (some policies may only be loaded prior to "
+"boot). Likewise, de-registration may fail if a policy is flagged as not "
+"unloadable."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:150
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:182
#, no-wrap
msgid "Entry Points"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:153
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:189
msgid ""
"Kernel services interact with the MAC Framework in two ways: they invoke a "
"series of APIs to notify the framework of relevant events, and they provide "
-"a policy-agnostic label structure pointer in security-relevant objects. The "
+"a policy-agnostic label structure pointer in security-relevant objects. The "
"label pointer is maintained by the MAC Framework via label management entry "
"points, and permits the Framework to offer a labeling service to policy "
"modules through relatively non-invasive changes to the kernel subsystem "
-"maintaining the object. For example, label pointers have been added to "
+"maintaining the object. For example, label pointers have been added to "
"processes, process credentials, sockets, pipes, vnodes, Mbufs, network "
"interfaces, IP reassembly queues, and a variety of other security-relevant "
-"structures. Kernel services also invoke the MAC Framework when they perform "
+"structures. Kernel services also invoke the MAC Framework when they perform "
"important security decisions, permitting policy modules to augment those "
"decisions based on their own criteria (possibly including data stored in "
-"security labels). Most of these security critical decisions will be explicit "
-"access control checks; however, some affect more general decision functions "
-"such as packet matching for sockets and label transition at program "
-"execution."
+"security labels). Most of these security critical decisions will be "
+"explicit access control checks; however, some affect more general decision "
+"functions such as packet matching for sockets and label transition at "
+"program execution."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:155
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:191
#, no-wrap
msgid "Policy Composition"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:158
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:199
msgid ""
"When more than one policy module is loaded into the kernel at a time, the "
"results of the policy modules will be composed by the framework using a "
-"composition operator. This operator is currently hard-coded, and requires "
-"that all active policies must approve a request for it to return success. As "
-"policies may return a variety of error conditions (success, access denied, "
-"object does not exist, ...), a precedence operator selects the resulting "
-"error from the set of errors returned by policies. In general, errors "
-"indicating that an object does not exist will be preferred to errors "
-"indicating that access to an object is denied. While it is not guaranteed "
+"composition operator. This operator is currently hard-coded, and requires "
+"that all active policies must approve a request for it to return success. "
+"As policies may return a variety of error conditions (success, access "
+"denied, object does not exist, ...), a precedence operator selects the "
+"resulting error from the set of errors returned by policies. In general, "
+"errors indicating that an object does not exist will be preferred to errors "
+"indicating that access to an object is denied. While it is not guaranteed "
"that the resulting composition will be useful or secure, we have found that "
-"it is for many useful selections of policies. For example, traditional "
+"it is for many useful selections of policies. For example, traditional "
"trusted systems often ship with two or more policies using a similar "
"composition."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:160
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:201
#, no-wrap
msgid "Labeling Support"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:163
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:207
msgid ""
"As many interesting access control extensions rely on security labels on "
"objects, the MAC Framework provides a set of policy-agnostic label "
-"management system calls covering a variety of user-exposed objects. Common "
+"management system calls covering a variety of user-exposed objects. Common "
"label types include partition identifiers, sensitivity labels, integrity "
-"labels, compartments, domains, roles, and types. By policy agnostic, we mean "
-"that policy modules are able to completely define the semantics of meta-data "
-"associated with an object. Policy modules participate in the internalization "
-"and externalization of string-based labels provides by user applications, "
-"and can expose multiple label elements to applications if desired."
+"labels, compartments, domains, roles, and types. By policy agnostic, we "
+"mean that policy modules are able to completely define the semantics of meta-"
+"data associated with an object. Policy modules participate in the "
+"internalization and externalization of string-based labels provides by user "
+"applications, and can expose multiple label elements to applications if "
+"desired."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:165
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:215
msgid ""
"In-memory labels are stored in slab-allocated `struct label`, which consists "
"of a fixed-length array of unions, each holding a `void *` pointer and a "
-"`long`. Policies registering for label storage will be assigned a \"slot\" "
-"identifier, which may be used to dereference the label storage. The "
+"`long`. Policies registering for label storage will be assigned a \"slot\" "
+"identifier, which may be used to dereference the label storage. The "
"semantics of the storage are left entirely up to the policy module: modules "
"are provided with a variety of entry points associated with the kernel "
"object life cycle, including initialization, association/creation, and "
-"destruction. Using these interfaces, it is possible to implement reference "
-"counting and other storage models. Direct access to the object structure is "
+"destruction. Using these interfaces, it is possible to implement reference "
+"counting and other storage models. Direct access to the object structure is "
"generally not required by policy modules to retrieve a label, as the MAC "
"Framework generally passes both a pointer to the object and a direct pointer "
-"to the object's label into entry points. The primary exception to this rule "
+"to the object's label into entry points. The primary exception to this rule "
"is the process credential, which must be manually dereferenced to access the "
-"credential label. This may change in future revisions of the MAC Framework."
+"credential label. This may change in future revisions of the MAC Framework."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:167
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:222
msgid ""
"Initialization entry points frequently include a sleeping disposition flag "
"indicating whether or not an initialization is permitted to sleep; if "
"sleeping is not permitted, a failure may be returned to cancel allocation of "
-"the label (and hence object). This may occur, for example, in the network "
+"the label (and hence object). This may occur, for example, in the network "
"stack during interrupt handling, where sleeping is not permitted, or while "
-"the caller holds a mutex. Due to the performance cost of maintaining labels "
+"the caller holds a mutex. Due to the performance cost of maintaining labels "
"on in-flight network packets (Mbufs), policies must specifically declare a "
-"requirement that Mbuf labels be allocated. Dynamically loaded policies "
+"requirement that Mbuf labels be allocated. Dynamically loaded policies "
"making use of labels must be able to handle the case where their init "
"function has not been called on an object, as objects may already exist when "
-"the policy is loaded. The MAC Framework guarantees that uninitialized label "
+"the policy is loaded. The MAC Framework guarantees that uninitialized label "
"slots will hold a 0 or NULL value, which policies may use to detect "
-"uninitialized values. However, as allocation of Mbuf labels is conditional, "
+"uninitialized values. However, as allocation of Mbuf labels is conditional, "
"policies must also be able to handle a NULL label pointer for Mbufs if they "
"have been loaded dynamically."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:169
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:228
msgid ""
"In the case of file system labels, special support is provided for the "
-"persistent storage of security labels in extended attributes. Where "
+"persistent storage of security labels in extended attributes. Where "
"available, extended attribute transactions are used to permit consistent "
"compound updates of security labels on vnodes--currently this support is "
-"present only in the UFS2 file system. Policy authors may choose to implement "
-"multilabel file system object labels using one (or more) extended "
-"attributes. For efficiency reasons, the vnode label (`v_label`) is a cache "
+"present only in the UFS2 file system. Policy authors may choose to "
+"implement multilabel file system object labels using one (or more) extended "
+"attributes. For efficiency reasons, the vnode label (`v_label`) is a cache "
"of any on-disk label; policies are able to load values into the cache when "
-"the vnode is instantiated, and update the cache as needed. As a result, the "
+"the vnode is instantiated, and update the cache as needed. As a result, the "
"extended attribute need not be directly accessed with every access control "
"check."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:173
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:232
msgid ""
"Currently, if a labeled policy permits dynamic unloading, its state slot "
"cannot be reclaimed, which places a strict (and relatively low) bound on the "
"number of unload-reload operations for labeled policies."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:176
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:235
#, no-wrap
msgid "System Calls"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:179
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:238
msgid ""
"The MAC Framework implements a number of system calls: most of these calls "
"support the policy-agnostic label retrieval and manipulation APIs exposed to "
"user applications."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:181
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:244
msgid ""
"The label management calls accept a label description structure, `struct "
-"mac`, which contains a series of MAC label elements. Each element contains a "
-"character string name, and character string value. Each policy will be given "
-"the chance to claim a particular element name, permitting policies to expose "
-"multiple independent elements if desired. Policy modules perform the "
+"mac`, which contains a series of MAC label elements. Each element contains "
+"a character string name, and character string value. Each policy will be "
+"given the chance to claim a particular element name, permitting policies to "
+"expose multiple independent elements if desired. Policy modules perform the "
"internalization and externalization between kernel labels and user-provided "
-"labels via entry points, permitting a variety of semantics. Label management "
-"system calls are generally wrapped by user library functions to perform "
-"memory allocation and error handling, simplifying user applications that "
-"must manage labels."
+"labels via entry points, permitting a variety of semantics. Label "
+"management system calls are generally wrapped by user library functions to "
+"perform memory allocation and error handling, simplifying user applications "
+"that must manage labels."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:183
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:246
msgid ""
"The following MAC-related system calls are present in the FreeBSD kernel:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:185
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:248
msgid ""
"`mac_get_proc()` may be used to retrieve the label of the current process."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:186
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:249
msgid ""
"`mac_set_proc()` may be used to request a change in the label of the current "
"process."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:187
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:250
msgid ""
"`mac_get_fd()` may be used to retrieve the label of an object (file, socket, "
"pipe, ...) referenced by a file descriptor."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:188
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:251
msgid ""
"`mac_get_file()` may be used to retrieve the label of an object referenced "
"by a file system path."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:189
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:252
msgid ""
"`mac_set_fd()` may be used to request a change in the label of an object "
"(file, socket, pipe, ...) referenced by a file descriptor."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:190
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:253
msgid ""
"`mac_set_file()` may be used to request a change in the label of an object "
"referenced by a file system path."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:191
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:254
msgid ""
"`mac_syscall()` permits policy modules to create new system calls without "
"modifying the system call table; it accepts a target policy name, operation "
"number, and opaque argument for use by the policy."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:192
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:255
msgid ""
"`mac_get_pid()` may be used to request the label of another process by "
"process id."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:193
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:256
msgid ""
"`mac_get_link()` is identical to `mac_get_file()`, only it will not follow a "
"symbolic link if it is the final entry in the path, so may be used to "
"retrieve the label on a symlink."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:194
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:257
msgid ""
"`mac_set_link()` is identical to `mac_set_file()`, only it will not follow a "
"symbolic link if it is the final entry in a path, so may be used to "
"manipulate the label on a symlink."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:195
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:259
msgid ""
"`mac_execve()` is identical to the `execve()` system call, only it also "
"accepts a requested label to set the process label to when beginning "
-"execution of a new program. This change in label on execution is referred to "
-"as a \"transition\"."
+"execution of a new program. This change in label on execution is referred "
+"to as a \"transition\"."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:196
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:260
msgid ""
"`mac_get_peer()`, actually implemented via a socket option, retrieves the "
"label of a remote peer on a socket, if available."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:198
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:262
msgid ""
"In addition to these system calls, the `SIOCSIGMAC` and `SIOCSIFMAC` network "
"interface ioctls permit the labels on network interfaces to be retrieved and "
"set."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:200
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:264
#, no-wrap
msgid "MAC Policy Architecture"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:203
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:269
msgid ""
"Security policies are either linked directly into the kernel, or compiled "
"into loadable kernel modules that may be loaded at boot, or dynamically "
-"using the module loading system calls at runtime. Policy modules interact "
+"using the module loading system calls at runtime. Policy modules interact "
"with the system through a set of declared entry points, providing access to "
"a stream of system events and permitting the policy to influence access "
-"control decisions. Each policy contains a number of elements:"
+"control decisions. Each policy contains a number of elements:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:205
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:271
msgid "Optional configuration parameters for policy."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:206
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:272
msgid "Centralized implementation of the policy logic and parameters."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:207
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:273
msgid ""
"Optional implementation of policy life cycle events, such as initialization "
"and destruction."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:208
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:274
msgid ""
"Optional support for initializing, maintaining, and destroying labels on "
"selected kernel objects."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:209
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:275
msgid ""
"Optional support for user process inspection and modification of labels on "
"selected objects."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:210
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:276
msgid ""
"Implementation of selected access control entry points that are of interest "
"to the policy."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:211
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:277
msgid ""
"Declaration of policy identity, module entry points, and policy properties."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:213
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:279
#, no-wrap
msgid "Policy Declaration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:216
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:282
msgid ""
"Modules may be declared using the `MAC_POLICY_SET()` macro, which names the "
"policy, provides a reference to the MAC entry point vector, provides load-"
"time flags determining how the policy framework should handle the policy, "
"and optionally requests the allocation of label state by the framework."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:230
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:296
#, no-wrap
msgid ""
"static struct mac_policy_ops mac_policy_ops =\n"
"{\n"
" .mpo_destroy = mac_policy_destroy,\n"
" .mpo_init = mac_policy_init,\n"
" .mpo_init_bpfdesc_label = mac_policy_init_bpfdesc_label,\n"
" .mpo_init_cred_label = mac_policy_init_label,\n"
"/* ... */\n"
" .mpo_check_vnode_setutimes = mac_policy_check_vnode_setutimes,\n"
" .mpo_check_vnode_stat = mac_policy_check_vnode_stat,\n"
" .mpo_check_vnode_write = mac_policy_check_vnode_write,\n"
"};\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:233
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:301
msgid ""
"The MAC policy entry point vector, `mac__policy__ops` in this example, "
-"associates functions defined in the module with specific entry points. A "
+"associates functions defined in the module with specific entry points. A "
"complete listing of available entry points and their prototypes may be found "
-"in the MAC entry point reference section. Of specific interest during module "
-"registration are the .mpo_destroy and .mpo_init entry points. .mpo_init will "
-"be invoked once a policy is successfully registered with the module "
-"framework but prior to any other entry points becoming active. This permits "
-"the policy to perform any policy-specific allocation and initialization, "
-"such as initialization of any data or locks. .mpo_destroy will be invoked "
-"when a policy module is unloaded to permit releasing of any allocated memory "
-"and destruction of locks. Currently, these two entry points are invoked with "
-"the MAC policy list mutex held to prevent any other entry points from being "
-"invoked: this will be changed, but in the mean time, policies should be "
-"careful about what kernel primitives they invoke so as to avoid lock "
-"ordering or sleeping problems."
+"in the MAC entry point reference section. Of specific interest during "
+"module registration are the .mpo_destroy and .mpo_init entry points."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:301
+#, no-wrap
+msgid "mpo_init will be invoked once a policy is successfully registered with the module framework but prior to any other entry points becoming active."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:235
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:303
+msgid ""
+"This permits the policy to perform any policy-specific allocation and "
+"initialization, such as initialization of any data or locks."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:303
+#, no-wrap
+msgid "mpo_destroy will be invoked when a policy module is unloaded to permit releasing of any allocated memory and destruction of locks."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:305
+msgid ""
+"Currently, these two entry points are invoked with the MAC policy list mutex "
+"held to prevent any other entry points from being invoked: this will be "
+"changed, but in the mean time, policies should be careful about what kernel "
+"primitives they invoke so as to avoid lock ordering or sleeping problems."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:309
msgid ""
"The policy declaration's module name field exists so that the module may be "
-"uniquely identified for the purposes of module dependencies. An appropriate "
-"string should be selected. The full string name of the policy is displayed "
+"uniquely identified for the purposes of module dependencies. An appropriate "
+"string should be selected. The full string name of the policy is displayed "
"to the user via the kernel log during load and unload events, and also "
"exported when providing status information to userland processes."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:237
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:311
#, no-wrap
msgid "Policy Flags"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:240
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:315
msgid ""
"The policy declaration flags field permits the module to provide the "
"framework with information about its capabilities at the time the module is "
-"loaded. Currently, three flags are defined:"
+"loaded. Currently, three flags are defined:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:241
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:316
#, no-wrap
msgid "MPC_LOADTIME_FLAG_UNLOADOK"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:243
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:320
msgid ""
-"This flag indicates that the policy module may be unloaded. If this flag is "
+"This flag indicates that the policy module may be unloaded. If this flag is "
"not provided, then the policy framework will reject requests to unload the "
-"module. This flag might be used by modules that allocate label state and are "
-"unable to free that state at runtime."
+"module. This flag might be used by modules that allocate label state and "
+"are unable to free that state at runtime."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:244
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:321
#, no-wrap
msgid "MPC_LOADTIME_FLAG_NOTLATE"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:246
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:325
msgid ""
"This flag indicates that the policy module must be loaded and initialized "
-"early in the boot process. If the flag is specified, attempts to register "
-"the module following boot will be rejected. The flag may be used by policies "
-"that require pervasive labeling of all system objects, and cannot handle "
-"objects that have not been properly initialized by the policy."
+"early in the boot process. If the flag is specified, attempts to register "
+"the module following boot will be rejected. The flag may be used by "
+"policies that require pervasive labeling of all system objects, and cannot "
+"handle objects that have not been properly initialized by the policy."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:247
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:326
#, no-wrap
msgid "MPC_LOADTIME_FLAG_LABELMBUFS"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:249
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:331
msgid ""
"This flag indicates that the policy module requires labeling of Mbufs, and "
-"that memory should always be allocated for the storage of Mbuf labels. By "
+"that memory should always be allocated for the storage of Mbuf labels. By "
"default, the MAC Framework will not allocate label storage for Mbufs unless "
-"at least one loaded policy has this flag set. This measurably improves "
-"network performance when policies do not require Mbuf labeling. A kernel "
+"at least one loaded policy has this flag set. This measurably improves "
+"network performance when policies do not require Mbuf labeling. A kernel "
"option, `MAC_ALWAYS_LABEL_MBUF`, exists to force the MAC Framework to "
"allocate Mbuf label storage regardless of the setting of this flag, and may "
"be useful in some environments."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:253
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:337
msgid ""
"Policies using the `MPC_LOADTIME_FLAG_LABELMBUFS` without the "
"`MPC_LOADTIME_FLAG_NOTLATE` flag set must be able to correctly handle `NULL` "
-"Mbuf label pointers passed into entry points. This is necessary as in-flight "
-"Mbufs without label storage may persist after a policy enabling Mbuf "
-"labeling has been loaded. If a policy is loaded before the network subsystem "
-"is active (i.e., the policy is not being loaded late), then all Mbufs are "
-"guaranteed to have label storage."
+"Mbuf label pointers passed into entry points. This is necessary as in-"
+"flight Mbufs without label storage may persist after a policy enabling Mbuf "
+"labeling has been loaded. If a policy is loaded before the network "
+"subsystem is active (i.e., the policy is not being loaded late), then all "
+"Mbufs are guaranteed to have label storage."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:256
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:340
#, no-wrap
msgid "Policy Entry Points"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:259
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:344
msgid ""
"Four classes of entry points are offered to policies registered with the "
"framework: entry points associated with the registration and management of "
"policies, entry points denoting initialization, creation, destruction, and "
"other life cycle events for kernel objects, events associated with access "
"control decisions that the policy module may influence, and calls associated "
-"with the management of labels on objects. In addition, a `mac_syscall()` "
+"with the management of labels on objects. In addition, a `mac_syscall()` "
"entry point is provided so that policies may extend the kernel interface "
"without registering new system calls."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:261
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:349
msgid ""
"Policy module writers should be aware of the kernel locking strategy, as "
-"well as what object locks are available during which entry points. Writers "
+"well as what object locks are available during which entry points. Writers "
"should attempt to avoid deadlock scenarios by avoiding grabbing non-leaf "
"locks inside of entry points, and also follow the locking protocol for "
-"object access and modification. In particular, writers should be aware that "
+"object access and modification. In particular, writers should be aware that "
"while necessary locks to access objects and their labels are generally held, "
"sufficient locks to modify an object or its label may not be present for all "
-"entry points. Locking information for arguments is documented in the MAC "
+"entry points. Locking information for arguments is documented in the MAC "
"framework entry point document."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:263
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:353
msgid ""
"Policy entry points will pass a reference to the object label along with the "
-"object itself. This permits labeled policies to be unaware of the internals "
-"of the object yet still make decisions based on the label. The exception to "
+"object itself. This permits labeled policies to be unaware of the internals "
+"of the object yet still make decisions based on the label. The exception to "
"this is the process credential, which is assumed to be understood by "
"policies as a first class security object in the kernel."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:265
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:355
#, no-wrap
msgid "MAC Policy Entry Point Reference"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:268
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:358
#, no-wrap
msgid "General-Purpose Module Entry Points"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:271
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:361
#, no-wrap
msgid "`mpo_init`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:277
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:367
#, no-wrap
msgid ""
-"void mpo_init(\tconf);\t \n"
+"void mpo_init(\tconf);\n"
"struct mac_policy_conf *conf;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:283
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:306
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:333
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:369
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:395
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:418
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:441
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:464
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:489
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:518
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:547
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:574
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:597
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:622
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:651
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:678
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:701
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:724
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:747
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:770
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:373
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:398
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:426
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:465
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:495
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:519
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:543
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:567
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:593
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:625
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:657
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:685
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:709
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:735
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:765
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:793
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:816
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:839
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:862
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:887
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:914
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:817
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:841
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:865
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:889
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:913
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:937
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:960
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:983
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1006
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1031
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1060
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1089
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1122
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1163
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1204
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1245
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1286
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1327
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1368
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1409
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1450
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1491
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1532
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1610
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1659
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:961
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:985
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1011
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1039
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1063
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1087
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1111
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1135
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1161
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1190
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1219
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1252
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1298
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1344
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1390
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1436
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1482
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1528
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1571
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1614
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1657
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1700
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1739
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1776
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1817
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1874
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1931
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1972
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1999
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2040
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2081
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2126
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2165
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2200
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2237
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2278
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2319
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2360
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2401
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2443
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2476
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2509
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2550
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2591
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2632
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2673
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2714
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2755
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2800
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2849
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2890
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2931
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2972
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3012
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3046
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3085
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3116
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3139
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3164
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3224
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1794
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1843
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1887
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1926
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1964
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2006
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2063
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2122
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2164
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2192
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2233
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2275
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2322
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2362
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2398
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2436
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2477
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2518
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2559
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2601
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2644
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2678
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2712
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2753
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2794
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2835
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2877
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2919
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2961
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3006
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3056
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3098
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3142
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3183
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3223
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3259
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3284
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3313
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3342
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3373
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3404
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3427
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3458
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3501
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3536
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3573
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3612
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3647
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3684
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3723
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3762
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3797
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3830
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3861
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3896
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3937
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3974
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4007
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4046
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4079
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4112
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4151
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4186
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4225
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4274
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4323
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4362
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4399
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4444
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4497
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4546
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4587
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4628
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4665
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4710
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4765
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4816
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4853
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4894
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4933
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3301
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3334
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3357
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3382
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3448
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3484
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3509
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3538
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3567
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3598
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3629
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3652
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3683
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3726
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3761
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3798
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3837
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3872
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3909
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3948
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3989
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4024
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4057
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4091
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4126
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4167
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4204
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4237
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4276
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4312
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4348
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4390
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4427
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4466
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4518
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4571
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4612
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4652
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4699
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4755
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4804
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4845
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4886
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4923
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4968
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5003
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5042
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5091
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5140
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5181
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5224
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5271
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5312
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5345
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5380
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5421
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5468
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5511
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5546
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5577
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5602
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5629
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5656
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5701
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5023
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5075
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5114
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5157
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5198
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5235
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5273
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5314
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5365
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5419
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5462
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5507
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5557
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5600
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5635
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5672
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5715
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5764
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5809
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5846
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5877
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5902
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5929
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5956
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6001
#, no-wrap
msgid "Parameter"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:284
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:307
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:334
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:370
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:396
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:419
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:442
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:465
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:490
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:519
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:548
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:575
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:598
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:623
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:652
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:679
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:702
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:725
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:748
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:771
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:374
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:399
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:427
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:466
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:496
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:520
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:544
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:568
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:594
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:626
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:658
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:686
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:710
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:736
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:766
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:794
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:817
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:840
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:863
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:888
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:915
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:818
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:842
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:866
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:890
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:914
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:938
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:961
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:984
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1007
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1032
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1061
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1090
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1123
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1164
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1205
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1246
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1287
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1328
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1369
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1410
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1451
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1492
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1533
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1611
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1660
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:962
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:986
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1012
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1040
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1064
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1088
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1112
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1136
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1162
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1191
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1220
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1253
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1299
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1345
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1391
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1437
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1483
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1529
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1572
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1615
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1658
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1701
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1740
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1777
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1818
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1875
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1932
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1973
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2000
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2041
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2082
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2127
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2166
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2201
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2238
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2279
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2320
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2361
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2402
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2444
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2477
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2510
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2551
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2592
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2633
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2674
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2715
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2756
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2801
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2850
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2891
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2932
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2973
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3013
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3047
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3086
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3117
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3140
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3165
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3225
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1795
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1844
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1888
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1927
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1965
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2007
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2064
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2123
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2165
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2193
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2234
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2276
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2323
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2363
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2399
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2437
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2478
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2519
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2560
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2602
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2645
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2679
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2713
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2754
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2795
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2836
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2878
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2920
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2962
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3007
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3057
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3099
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3143
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3184
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3224
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3260
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3285
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3314
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3343
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3374
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3405
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3428
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3459
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3502
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3537
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3574
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3613
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3648
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3685
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3724
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3763
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3798
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3831
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3862
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3897
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3938
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3975
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4008
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4047
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4080
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4113
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4152
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4187
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4226
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4275
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4324
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4363
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4400
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4445
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4498
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4547
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4588
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4629
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4666
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4711
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4766
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4817
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4854
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4895
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4934
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3302
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3335
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3358
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3383
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3449
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3485
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3510
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3539
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3568
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3599
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3630
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3653
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3684
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3727
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3762
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3799
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3838
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3873
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3910
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3949
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3990
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4025
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4058
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4092
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4127
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4168
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4205
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4238
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4277
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4313
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4349
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4391
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4428
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4467
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4519
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4572
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4613
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4653
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4700
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4756
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4805
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4846
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4887
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4924
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4969
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5004
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5043
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5092
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5141
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5182
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5225
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5272
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5313
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5346
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5381
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5422
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5469
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5512
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5547
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5578
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5603
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5630
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5657
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5702
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5024
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5076
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5115
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5158
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5199
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5236
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5274
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5315
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5366
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5420
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5463
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5508
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5558
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5601
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5636
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5673
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5716
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5765
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5810
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5847
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5878
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5903
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5930
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5957
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6002
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:286
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:309
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:336
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:372
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:398
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:421
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:444
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:467
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:492
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:521
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:550
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:577
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:600
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:625
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:654
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:681
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:704
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:727
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:750
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:773
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:376
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:401
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:429
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:468
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:498
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:522
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:546
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:570
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:596
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:628
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:660
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:688
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:712
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:738
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:768
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:796
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:819
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:842
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:865
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:890
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:917
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:820
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:844
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:868
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:892
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:916
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:940
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:963
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:986
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1009
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1034
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1063
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1092
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1125
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1166
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1207
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1248
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1289
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1330
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1371
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1412
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1453
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1494
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1535
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1613
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1662
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:964
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:988
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1014
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1042
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1066
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1090
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1114
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1138
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1164
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1193
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1222
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1255
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1301
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1347
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1393
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1439
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1485
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1531
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1574
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1617
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1660
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1703
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1742
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1779
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1820
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1877
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1934
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1975
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2002
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2043
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2084
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2129
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2168
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2203
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2240
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2281
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2322
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2363
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2404
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2446
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2479
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2512
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2553
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2594
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2635
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2676
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2717
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2758
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2803
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2852
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2893
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2934
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2975
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3015
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3049
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3088
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3119
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3142
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3167
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3227
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1797
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1846
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1890
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1929
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1967
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2009
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2066
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2125
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2167
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2195
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2236
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2278
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2325
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2365
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2401
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2439
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2480
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2521
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2562
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2604
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2647
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2681
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2715
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2756
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2797
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2838
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2880
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2922
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2964
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3009
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3059
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3101
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3145
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3186
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3226
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3262
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3287
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3316
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3345
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3376
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3407
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3430
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3461
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3504
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3539
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3576
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3615
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3650
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3687
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3726
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3765
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3800
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3833
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3864
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3899
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3940
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3977
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4010
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4049
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4082
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4115
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4154
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4189
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4228
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4277
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4326
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4365
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4402
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4447
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4500
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4549
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4590
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4631
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4668
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4713
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4768
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4819
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4856
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4897
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4936
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3304
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3337
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3360
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3385
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3451
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3487
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3512
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3541
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3570
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3601
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3632
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3655
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3686
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3729
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3764
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3801
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3840
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3875
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3912
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3951
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3992
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4027
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4060
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4094
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4129
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4170
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4207
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4240
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4279
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4315
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4351
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4393
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4430
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4469
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4521
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4574
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4615
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4655
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4702
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4758
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4807
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4848
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4889
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4926
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4971
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5006
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5045
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5094
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5143
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5184
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5227
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5274
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5315
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5348
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5383
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5424
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5471
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5514
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5549
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5580
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5605
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5632
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5659
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5704
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5026
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5078
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5117
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5160
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5201
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5238
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5276
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5317
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5368
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5422
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5465
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5510
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5560
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5603
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5638
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5675
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5718
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5767
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5812
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5849
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5880
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5905
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5932
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5959
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6004
#, no-wrap
msgid "Locking"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:287
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:310
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:377
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:402
#, no-wrap
msgid "`conf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:288
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:311
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:378
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:403
#, no-wrap
msgid "MAC policy definition"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:292
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:384
msgid ""
-"Policy load event. The policy list mutex is held, so sleep operations cannot "
-"be performed, and calls out to other kernel subsystems must be made with "
-"caution. If potentially sleeping memory allocations are required during "
-"policy initialization, they should be made using a separate module SYSINIT()."
+"Policy load event. The policy list mutex is held, so sleep operations "
+"cannot be performed, and calls out to other kernel subsystems must be made "
+"with caution. If potentially sleeping memory allocations are required "
+"during policy initialization, they should be made using a separate module "
+"SYSINIT()."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:294
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:386
#, no-wrap
msgid "`mpo_destroy`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:300
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:392
#, no-wrap
msgid ""
-"void mpo_destroy(\tconf);\t \n"
+"void mpo_destroy(\tconf);\n"
"struct mac_policy_conf *conf;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:315
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:408
msgid ""
-"Policy load event. The policy list mutex is held, so caution should be "
+"Policy load event. The policy list mutex is held, so caution should be "
"applied."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:317
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:410
#, no-wrap
msgid "`mpo_syscall`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:327
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:420
#, no-wrap
msgid ""
-"int mpo_syscall(\ttd, \t \n"
-" \tcall, \t \n"
-" \targ);\t \n"
+"int mpo_syscall(\ttd,\n"
+" \tcall,\n"
+" \targ);\n"
"struct thread *td;\n"
"int call;\n"
"void *arg;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:337
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:373
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:430
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:469
#, no-wrap
msgid "`td`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:338
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:431
#, no-wrap
msgid "Calling thread"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:341
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:434
#, no-wrap
msgid "`call`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:342
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:435
#, no-wrap
msgid "Policy-specific syscall number"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:345
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:438
#, no-wrap
msgid "`arg`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:346
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:439
#, no-wrap
msgid "Pointer to syscall arguments"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:350
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:446
msgid ""
"This entry point provides a policy-multiplexed system call so that policies "
"may provide additional services to user processes without registering "
-"specific system calls. The policy name provided during registration is used "
-"to demux calls from userland, and the arguments will be forwarded to this "
-"entry point. When implementing new services, security modules should be sure "
-"to invoke appropriate access control checks from the MAC framework as "
-"needed. For example, if a policy implements an augmented signal "
+"specific system calls. The policy name provided during registration is used "
+"to demultiplexer calls from userland, and the arguments will be forwarded to "
+"this entry point. When implementing new services, security modules should "
+"be sure to invoke appropriate access control checks from the MAC framework "
+"as needed. For example, if a policy implements an augmented signal "
"functionality, it should call the necessary signal access control checks to "
"invoke the MAC framework and other registered policies."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:354
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:450
msgid ""
"Modules must currently perform the `copyin()` of the syscall data on their "
"own."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:357
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:453
#, no-wrap
msgid "`mpo_thread_userret`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:363
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:459
#, no-wrap
msgid ""
-"void mpo_thread_userret(\ttd);\t \n"
+"void mpo_thread_userret(\ttd);\n"
"struct thread *td;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:374
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:470
#, no-wrap
msgid "Returning thread"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:378
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:478
msgid ""
"This entry point permits policy modules to perform MAC-related events when a "
"thread returns to user space, via a system call return, trap return, or "
-"otherwise. This is required for policies that have floating process labels, "
+"otherwise. This is required for policies that have floating process labels, "
"as it is not always possible to acquire the process lock at arbitrary points "
"in the stack during system call processing; process labels might represent "
-"traditional authentication data, process history information, or other data. "
-"To employ this mechanism, intended changes to the process credential label "
-"may be stored in the `p_label` protected by a per-policy spin lock, and then "
-"set the per-thread `TDF_ASTPENDING` flag and per-process `PS_MACPENDM` flag "
-"to schedule a call to the userret entry point. From this entry point, the "
-"policy may create a replacement credential with less concern about the "
-"locking context. Policy writers are cautioned that event ordering relating "
-"to scheduling an AST and the AST being performed may be complex and "
-"interlaced in multithreaded applications."
+"traditional authentication data, process history information, or other "
+"data. To employ this mechanism, intended changes to the process credential "
+"label may be stored in the `p_label` protected by a per-policy spin lock, "
+"and then set the per-thread `TDF_ASTPENDING` flag and per-process "
+"`PS_MACPENDM` flag to schedule a call to the `userret` entry point. From "
+"this entry point, the policy may create a replacement credential with less "
+"concern about the locking context. Policy writers are cautioned that event "
+"ordering relating to scheduling an AST and the AST being performed may be "
+"complex and interlaced in multithreaded applications."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:380
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:480
#, no-wrap
msgid "Label Operations"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:383
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:483
#, no-wrap
msgid "`mpo_init_bpfdesc_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:389
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:489
#, no-wrap
msgid ""
-"void mpo_init_bpfdesc_label(\tlabel);\t \n"
+"void mpo_init_bpfdesc_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:399
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:422
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:445
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:468
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:493
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:526
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:578
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:601
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:626
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:655
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:682
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:705
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:728
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:751
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:774
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:499
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:523
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:547
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:571
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:597
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:633
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:689
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:713
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:739
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:769
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:797
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:820
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:843
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:866
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:918
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:964
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:987
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1010
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1126
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1167
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1208
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1249
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1290
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1331
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1372
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1413
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1454
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1495
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1536
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1751
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1886
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4124
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4294
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4335
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4374
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4411
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4456
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4517
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4558
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4599
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4681
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4730
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4785
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4906
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4980
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5015
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5054
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5103
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5152
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5193
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5236
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5283
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5392
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:821
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:845
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:869
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:893
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:917
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:941
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:965
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:989
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1043
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1091
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1115
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1139
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1256
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1302
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1348
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1394
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1440
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1486
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1532
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1575
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1618
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1661
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1704
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1938
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2075
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4360
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4538
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4583
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4624
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4664
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4711
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4775
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4816
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4857
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4939
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4988
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5043
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5169
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5247
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5285
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5326
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5377
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5431
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5474
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5519
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5569
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5684
#, no-wrap
msgid "`label`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:400
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:446
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:469
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:494
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:500
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:548
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:572
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:598
#, no-wrap
msgid "New label to apply"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:404
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:505
msgid ""
-"Initialize the label on a newly instantiated bpfdesc (BPF descriptor). "
+"Initialize the label on a newly instantiated bpfdesc (BPF descriptor). "
"Sleeping is permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:406
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:507
#, no-wrap
msgid "`mpo_init_cred_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:412
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:513
#, no-wrap
msgid ""
-"void mpo_init_cred_label(\tlabel);\t \n"
+"void mpo_init_cred_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:423
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:627
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:656
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:683
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:706
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:524
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:740
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:770
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:798
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:822
#, no-wrap
msgid "New label to initialize"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:427
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:529
msgid ""
-"Initialize the label for a newly instantiated user credential. Sleeping is "
+"Initialize the label for a newly instantiated user credential. Sleeping is "
"permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:429
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:531
#, no-wrap
msgid "`mpo_init_devfsdirent_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:435
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:537
#, no-wrap
msgid ""
-"void mpo_init_devfsdirent_label(\tlabel);\t \n"
+"void mpo_init_devfsdirent_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:450
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:553
msgid ""
-"Initialize the label on a newly instantiated devfs entry. Sleeping is "
+"Initialize the label on a newly instantiated devfs entry. Sleeping is "
"permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:452
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:555
#, no-wrap
msgid "`mpo_init_ifnet_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:458
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:561
#, no-wrap
msgid ""
-"void mpo_init_ifnet_label(\tlabel);\t \n"
+"void mpo_init_ifnet_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:473
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:577
msgid ""
-"Initialize the label on a newly instantiated network interface. Sleeping is "
+"Initialize the label on a newly instantiated network interface. Sleeping is "
"permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:475
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:579
#, no-wrap
msgid "`mpo_init_ipq_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:483
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:587
#, no-wrap
msgid ""
-"void mpo_init_ipq_label(\tlabel, \t \n"
-" \tflag);\t \n"
+"void mpo_init_ipq_label(\tlabel,\n"
+" \tflag);\n"
"struct label *label;\n"
"int flag;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:497
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:522
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:630
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:659
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:601
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:629
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:743
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:773
#, no-wrap
msgid "`flag`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:498
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:523
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:602
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:630
#, no-wrap
msgid "Sleeping/non-sleeping man:malloc[9]; see below"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:502
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:609
msgid ""
-"Initialize the label on a newly instantiated IP fragment reassembly queue. "
+"Initialize the label on a newly instantiated IP fragment reassembly queue. "
"The `flag` field may be one of M_WAITOK and M_NOWAIT, and should be employed "
"to avoid performing a sleeping man:malloc[9] during this initialization "
-"call. IP fragment reassembly queue allocation frequently occurs in "
+"call. IP fragment reassembly queue allocation frequently occurs in "
"performance sensitive environments, and the implementation should be careful "
-"to avoid sleeping or long-lived operations. This entry point is permitted to "
-"fail resulting in the failure to allocate the IP fragment reassembly queue."
+"to avoid sleeping or long-lived operations. This entry point is permitted "
+"to fail resulting in the failure to allocate the IP fragment reassembly "
+"queue."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:504
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:611
#, no-wrap
msgid "`mpo_init_mbuf_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:512
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:619
#, no-wrap
msgid ""
-"void mpo_init_mbuf_label(\tflag, \t \n"
-" \tlabel);\t \n"
+"void mpo_init_mbuf_label(\tflag,\n"
+" \tlabel);\n"
"int flag;\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:527
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:634
#, no-wrap
msgid "Policy label to initialize"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:531
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:641
msgid ""
-"Initialize the label on a newly instantiated mbuf packet header (`mbuf`). "
+"Initialize the label on a newly instantiated mbuf packet header (`mbuf`). "
"The `flag` field may be one of M_WAITOK and M_NOWAIT, and should be employed "
"to avoid performing a sleeping man:malloc[9] during this initialization "
-"call. Mbuf allocation frequently occurs in performance sensitive "
+"call. Mbuf allocation frequently occurs in performance sensitive "
"environments, and the implementation should be careful to avoid sleeping or "
-"long-lived operations. This entry point is permitted to fail resulting in "
+"long-lived operations. This entry point is permitted to fail resulting in "
"the failure to allocate the mbuf header."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:533
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:643
#, no-wrap
msgid "`mpo_init_mount_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:541
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:651
#, no-wrap
msgid ""
-"void mpo_init_mount_label(\tmntlabel, \t \n"
-" \tfslabel);\t \n"
+"void mpo_init_mount_label(\tmntlabel,\n"
+" \tfslabel);\n"
"struct label *mntlabel;\n"
"struct label *fslabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:551
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:891
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1943
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:661
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1015
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2134
#, no-wrap
msgid "`mntlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:552
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:662
#, no-wrap
msgid "Policy label to be initialized for the mount itself"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:555
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:895
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1618
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1667
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1708
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1947
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:665
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1019
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1802
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1851
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1895
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2138
#, no-wrap
msgid "`fslabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:556
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:666
#, no-wrap
msgid "Policy label to be initialized for the file system"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:560
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:671
msgid ""
-"Initialize the labels on a newly instantiated mount point. Sleeping is "
+"Initialize the labels on a newly instantiated mount point. Sleeping is "
"permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:562
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:673
#, no-wrap
msgid "`mpo_init_mount_fs_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:568
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:679
#, no-wrap
msgid ""
-"void mpo_init_mount_fs_label(\tlabel);\t \n"
+"void mpo_init_mount_fs_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:579
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:690
#, no-wrap
msgid "Label to be initialized"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:583
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:695
msgid ""
-"Initialize the label on a newly mounted file system. Sleeping is permitted"
+"Initialize the label on a newly mounted file system. Sleeping is permitted"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:585
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:697
#, no-wrap
msgid "`mpo_init_pipe_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:591
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:703
#, no-wrap
msgid ""
-"void mpo_init_pipe_label(\tlabel);\t \n"
+"void mpo_init_pipe_label(\tlabel);\n"
"struct label*label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:602
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1373
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1414
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1455
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1496
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1537
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:714
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1533
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1576
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1619
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1662
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1705
#, no-wrap
msgid "Label to be filled in"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:606
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:719
msgid ""
-"Initialize a label for a newly instantiated pipe. Sleeping is permitted."
+"Initialize a label for a newly instantiated pipe. Sleeping is permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:608
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:721
#, no-wrap
msgid "`mpo_init_socket_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:616
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:729
#, no-wrap
msgid ""
-"void mpo_init_socket_label(\tlabel, \t \n"
-" \tflag);\t \n"
+"void mpo_init_socket_label(\tlabel,\n"
+" \tflag);\n"
"struct label *label;\n"
"int flag;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:631
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:660
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:744
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:774
#, no-wrap
msgid "man:malloc[9] flags"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:635
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:749
msgid ""
-"Initialize a label for a newly instantiated socket. The `flag` field may be "
+"Initialize a label for a newly instantiated socket. The `flag` field may be "
"one of M_WAITOK and M_NOWAIT, and should be employed to avoid performing a "
"sleeping man:malloc[9] during this initialization call."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:637
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:751
#, no-wrap
msgid "`mpo_init_socket_peer_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:645
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:759
#, no-wrap
msgid ""
-"void mpo_init_socket_peer_label(\tlabel, \t \n"
-" \tflag);\t \n"
+"void mpo_init_socket_peer_label(\tlabel,\n"
+" \tflag);\n"
"struct label *label;\n"
"int flag;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:664
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:779
msgid ""
-"Initialize the peer label for a newly instantiated socket. The `flag` field "
+"Initialize the peer label for a newly instantiated socket. The `flag` field "
"may be one of M_WAITOK and M_NOWAIT, and should be employed to avoid "
"performing a sleeping man:malloc[9] during this initialization call."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:666
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:781
#, no-wrap
msgid "`mpo_init_proc_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:672
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:787
#, no-wrap
msgid ""
-"void mpo_init_proc_label(\tlabel);\t \n"
+"void mpo_init_proc_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:687
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:803
msgid ""
-"Initialize the label for a newly instantiated process. Sleeping is permitted."
+"Initialize the label for a newly instantiated process. Sleeping is "
+"permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:689
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:805
#, no-wrap
msgid "`mpo_init_vnode_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:695
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:811
#, no-wrap
msgid ""
-"void mpo_init_vnode_label(\tlabel);\t \n"
+"void mpo_init_vnode_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:710
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:827
msgid ""
-"Initialize the label on a newly instantiated vnode. Sleeping is permitted."
+"Initialize the label on a newly instantiated vnode. Sleeping is permitted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:712
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:829
#, no-wrap
msgid "`mpo_destroy_bpfdesc_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:718
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:835
#, no-wrap
msgid ""
-"void mpo_destroy_bpfdesc_label(\tlabel);\t \n"
+"void mpo_destroy_bpfdesc_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:729
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:846
#, no-wrap
msgid "bpfdesc label"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:733
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:851
msgid ""
-"Destroy the label on a BPF descriptor. In this entry point a policy should "
+"Destroy the label on a BPF descriptor. In this entry point a policy should "
"free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:735
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:853
#, no-wrap
msgid "`mpo_destroy_cred_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:741
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:859
#, no-wrap
msgid ""
-"void mpo_destroy_cred_label(\tlabel);\t \n"
+"void mpo_destroy_cred_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:752
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:775
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:798
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:821
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:844
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:870
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:894
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:918
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:942
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:966
#, no-wrap
msgid "Label being destroyed"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:756
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:875
msgid ""
-"Destroy the label on a credential. In this entry point, a policy module "
+"Destroy the label on a credential. In this entry point, a policy module "
"should free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:758
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:877
#, no-wrap
msgid "`mpo_destroy_devfsdirent_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:764
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:883
#, no-wrap
msgid ""
-"void mpo_destroy_devfsdirent_label(\tlabel);\t \n"
+"void mpo_destroy_devfsdirent_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:779
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:899
msgid ""
-"Destroy the label on a devfs entry. In this entry point, a policy module "
+"Destroy the label on a devfs entry. In this entry point, a policy module "
"should free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:781
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:901
#, no-wrap
msgid "`mpo_destroy_ifnet_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:787
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:907
#, no-wrap
msgid ""
-"void mpo_destroy_ifnet_label(\tlabel);\t \n"
+"void mpo_destroy_ifnet_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:802
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:923
msgid ""
-"Destroy the label on a removed interface. In this entry point, a policy "
+"Destroy the label on a removed interface. In this entry point, a policy "
"module should free any internal storage associated with `label` so that it "
"may be destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:804
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:925
#, no-wrap
msgid "`mpo_destroy_ipq_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:810
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:931
#, no-wrap
msgid ""
-"void mpo_destroy_ipq_label(\tlabel);\t \n"
+"void mpo_destroy_ipq_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:825
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:947
msgid ""
-"Destroy the label on an IP fragment queue. In this entry point, a policy "
+"Destroy the label on an IP fragment queue. In this entry point, a policy "
"module should free any internal storage associated with `label` so that it "
"may be destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:827
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:949
#, no-wrap
msgid "`mpo_destroy_mbuf_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:833
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:955
#, no-wrap
msgid ""
-"void mpo_destroy_mbuf_label(\tlabel);\t \n"
+"void mpo_destroy_mbuf_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:848
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:971
msgid ""
-"Destroy the label on an mbuf header. In this entry point, a policy module "
+"Destroy the label on an mbuf header. In this entry point, a policy module "
"should free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:850
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:873
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:973
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:997
#, no-wrap
msgid "`mpo_destroy_mount_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:856
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:979
#, no-wrap
msgid ""
-"void mpo_destroy_mount_label(\tlabel);\t \n"
+"void mpo_destroy_mount_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:867
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:892
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:990
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1016
#, no-wrap
msgid "Mount point label being destroyed"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:871
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:995
msgid ""
-"Destroy the labels on a mount point. In this entry point, a policy module "
+"Destroy the labels on a mount point. In this entry point, a policy module "
"should free the internal storage associated with `mntlabel` so that they may "
"be destroyed."
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:881
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1005
#, no-wrap
msgid ""
-"void mpo_destroy_mount_label(\tmntlabel, \t \n"
-" \tfslabel);\t \n"
+"void mpo_destroy_mount_label(\tmntlabel,\n"
+" \tfslabel);\n"
"struct label *mntlabel;\n"
"struct label *fslabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:896
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1020
#, no-wrap
msgid "File system label being destroyed>"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:900
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1025
msgid ""
-"Destroy the labels on a mount point. In this entry point, a policy module "
+"Destroy the labels on a mount point. In this entry point, a policy module "
"should free the internal storage associated with `mntlabel` and `fslabel` so "
"that they may be destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:902
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1027
#, no-wrap
msgid "`mpo_destroy_socket_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:908
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1033
#, no-wrap
msgid ""
-"void mpo_destroy_socket_label(\tlabel);\t \n"
+"void mpo_destroy_socket_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:919
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1044
#, no-wrap
msgid "Socket label being destroyed"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:923
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1049
msgid ""
-"Destroy the label on a socket. In this entry point, a policy module should "
+"Destroy the label on a socket. In this entry point, a policy module should "
"free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:925
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1051
#, no-wrap
msgid "`mpo_destroy_socket_peer_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:931
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1057
#, no-wrap
msgid ""
-"void mpo_destroy_socket_peer_label(\tpeerlabel);\t \n"
+"void mpo_destroy_socket_peer_label(\tpeerlabel);\n"
"struct label *peerlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:941
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1067
#, no-wrap
msgid "`peerlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:942
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1068
#, no-wrap
msgid "Socket peer label being destroyed"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:946
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1073
msgid ""
-"Destroy the peer label on a socket. In this entry point, a policy module "
+"Destroy the peer label on a socket. In this entry point, a policy module "
"should free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:948
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1075
#, no-wrap
msgid "`mpo_destroy_pipe_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:954
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1081
#, no-wrap
msgid ""
-"void mpo_destroy_pipe_label(\tlabel);\t \n"
+"void mpo_destroy_pipe_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:965
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1092
#, no-wrap
msgid "Pipe label"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:969
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1097
msgid ""
-"Destroy the label on a pipe. In this entry point, a policy module should "
+"Destroy the label on a pipe. In this entry point, a policy module should "
"free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:971
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1099
#, no-wrap
msgid "`mpo_destroy_proc_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:977
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1105
#, no-wrap
msgid ""
-"void mpo_destroy_proc_label(\tlabel);\t \n"
+"void mpo_destroy_proc_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:988
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1011
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1116
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1140
#, no-wrap
msgid "Process label"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:992
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1121
msgid ""
-"Destroy the label on a process. In this entry point, a policy module should "
+"Destroy the label on a process. In this entry point, a policy module should "
"free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:994
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1123
#, no-wrap
msgid "`mpo_destroy_vnode_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1000
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1129
#, no-wrap
msgid ""
-"void mpo_destroy_vnode_label(\tlabel);\t \n"
+"void mpo_destroy_vnode_label(\tlabel);\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1015
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1145
msgid ""
-"Destroy the label on a vnode. In this entry point, a policy module should "
+"Destroy the label on a vnode. In this entry point, a policy module should "
"free any internal storage associated with `label` so that it may be "
"destroyed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1017
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1147
#, no-wrap
msgid "`mpo_copy_mbuf_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1025
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1155
#, no-wrap
msgid ""
-"void mpo_copy_mbuf_label(\tsrc, \t \n"
-" \tdest);\t \n"
+"void mpo_copy_mbuf_label(\tsrc,\n"
+" \tdest);\n"
"struct label *src;\n"
"struct label *dest;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1035
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1064
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1093
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1165
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1194
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1223
#, no-wrap
msgid "`src`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1036
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1065
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1094
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1166
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1195
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1224
#, no-wrap
msgid "Source label"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1039
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1068
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1097
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1169
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1198
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1227
#, no-wrap
msgid "`dest`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1040
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1069
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1098
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1170
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1199
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1228
#, no-wrap
msgid "Destination label"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1044
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1073
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1102
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1174
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1203
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1232
msgid "Copy the label information in `src` into `dest`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1046
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1176
#, no-wrap
msgid "`mpo_copy_pipe_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1054
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1184
#, no-wrap
msgid ""
-"void mpo_copy_pipe_label(\tsrc, \t \n"
-" \tdest);\t \n"
+"void mpo_copy_pipe_label(\tsrc,\n"
+" \tdest);\n"
"struct label *src;\n"
"struct label *dest;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1075
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1205
#, no-wrap
msgid "`mpo_copy_vnode_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1083
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1213
#, no-wrap
msgid ""
-"void mpo_copy_vnode_label(\tsrc, \t \n"
-" \tdest);\t \n"
+"void mpo_copy_vnode_label(\tsrc,\n"
+" \tdest);\n"
"struct label *src;\n"
"struct label *dest;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1104
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1234
#, no-wrap
msgid "`mpo_externalize_cred_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1116
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1246
#, no-wrap
msgid ""
-"int mpo_externalize_cred_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \tsb, \t \n"
-" \t*claimed);\t \n"
+"int mpo_externalize_cred_label(\tlabel,\n"
+" \telement_name,\n"
+" \tsb,\n"
+" \t*claimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"struct sbuf *sb;\n"
"int *claimed;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1127
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1168
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1209
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1250
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1291
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1332
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1257
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1303
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1349
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1395
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1441
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1487
#, no-wrap
msgid "Label to be externalized"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1130
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1171
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1212
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1253
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1294
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1335
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1376
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1417
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1458
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1499
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1540
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1260
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1306
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1352
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1398
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1444
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1490
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1536
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1579
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1622
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1665
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1708
#, no-wrap
msgid "`element_name`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1131
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1172
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1213
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1254
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1295
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1336
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1261
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1307
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1353
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1399
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1445
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1491
#, no-wrap
msgid "Name of the policy whose label should be externalized"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1134
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1175
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1216
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1257
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1298
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1339
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1264
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1310
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1356
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1402
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1448
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1494
#, no-wrap
msgid "`sb`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1135
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1176
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1217
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1258
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1299
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1340
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1265
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1311
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1357
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1403
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1449
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1495
#, no-wrap
msgid "String buffer to be filled with a text representation of label"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1138
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1179
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1220
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1261
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1302
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1343
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1384
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1425
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1466
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1507
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1548
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1268
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1314
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1360
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1406
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1452
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1498
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1544
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1587
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1630
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1673
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1716
#, no-wrap
msgid "`claimed`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1139
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1180
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1221
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1262
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1303
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1344
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1269
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1315
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1361
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1407
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1453
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1499
#, no-wrap
msgid "Should be incremented when `element_data` can be filled in."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1143
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1184
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1225
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1266
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1307
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1348
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1278
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1324
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1370
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1416
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1462
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1508
msgid ""
-"Produce an externalized label based on the label structure passed. An "
+"Produce an externalized label based on the label structure passed. An "
"externalized label consists of a text representation of the label contents "
-"that can be used with userland applications and read by the user. Currently, "
-"all policies' `externalize` entry points will be called, so the "
+"that can be used with userland applications and read by the user. "
+"Currently, all policies' `externalize` entry points will be called, so the "
"implementation should check the contents of `element_name` before attempting "
-"to fill in `sb`. If `element_name` does not match the name of your policy, "
-"simply return 0. Only return nonzero if an error occurs while externalizing "
-"the label data. Once the policy fills in `element_data`, `*claimed` should "
+"to fill in `sb`. If `element_name` does not match the name of your policy, "
+"simply return 0. Only return nonzero if an error occurs while externalizing "
+"the label data. Once the policy fills in `element_data`, `*claimed` should "
"be incremented."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1145
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1280
#, no-wrap
msgid "`mpo_externalize_ifnet_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1157
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1292
#, no-wrap
msgid ""
-"int mpo_externalize_ifnet_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \tsb, \t \n"
-" \t*claimed);\t \n"
+"int mpo_externalize_ifnet_label(\tlabel,\n"
+" \telement_name,\n"
+" \tsb,\n"
+" \t*claimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"struct sbuf *sb;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1186
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1326
#, no-wrap
msgid "`mpo_externalize_pipe_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1198
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1338
#, no-wrap
msgid ""
-"int mpo_externalize_pipe_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \tsb, \t \n"
-" \t*claimed);\t \n"
+"int mpo_externalize_pipe_label(\tlabel,\n"
+" \telement_name,\n"
+" \tsb,\n"
+" \t*claimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"struct sbuf *sb;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1227
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1372
#, no-wrap
msgid "`mpo_externalize_socket_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1239
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1384
#, no-wrap
msgid ""
-"int mpo_externalize_socket_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \tsb, \t \n"
-" \t*claimed);\t \n"
+"int mpo_externalize_socket_label(\tlabel,\n"
+" \telement_name,\n"
+" \tsb,\n"
+" \t*claimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"struct sbuf *sb;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1268
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1418
#, no-wrap
msgid "`mpo_externalize_socket_peer_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1280
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1430
#, no-wrap
msgid ""
-"int mpo_externalize_socket_peer_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \tsb, \t \n"
-" \t*claimed);\t \n"
+"int mpo_externalize_socket_peer_label(\tlabel,\n"
+" \telement_name,\n"
+" \tsb,\n"
+" \t*claimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"struct sbuf *sb;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1309
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1464
#, no-wrap
msgid "`mpo_externalize_vnode_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1321
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1476
#, no-wrap
msgid ""
-"int mpo_externalize_vnode_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \tsb, \t \n"
-" \t*claimed);\t \n"
+"int mpo_externalize_vnode_label(\tlabel,\n"
+" \telement_name,\n"
+" \tsb,\n"
+" \t*claimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"struct sbuf *sb;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1350
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1510
#, no-wrap
msgid "`mpo_internalize_cred_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1362
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1522
#, no-wrap
msgid ""
-"int mpo_internalize_cred_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \telement_data, \t \n"
-" \tclaimed);\t \n"
+"int mpo_internalize_cred_label(\tlabel,\n"
+" \telement_name,\n"
+" \telement_data,\n"
+" \tclaimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"char *element_data;\n"
"int *claimed;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1377
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1418
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1459
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1500
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1541
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1537
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1580
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1623
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1666
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1709
#, no-wrap
msgid "Name of the policy whose label should be internalized"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1380
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1421
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1462
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1503
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1544
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1540
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1583
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1626
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1669
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1712
#, no-wrap
msgid "`element_data`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1381
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1422
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1463
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1504
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1545
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1541
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1584
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1627
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1670
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1713
#, no-wrap
msgid "Text data to be internalized"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1385
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1426
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1467
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1508
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1549
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1545
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1588
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1631
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1674
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1717
#, no-wrap
msgid "Should be incremented when data can be successfully internalized."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1389
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1430
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1471
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1512
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1553
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1551
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1594
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1637
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1680
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1723
msgid ""
"Produce an internal label structure based on externalized label data in text "
-"format. Currently, all policies' `internalize` entry points are called when "
+"format. Currently, all policies' `internalize` entry points are called when "
"internalization is requested, so the implementation should compare the "
"contents of `element_name` to its own name in order to be sure it should be "
-"internalizing the data in `element_data`. Just as in the `externalize` entry "
-"points, the entry point should return 0 if `element_name` does not match its "
-"own name, or when data can successfully be internalized, in which case "
-"`*claimed` should be incremented."
+"internalizing the data in `element_data`. Just as in the `externalize` "
+"entry points, the entry point should return 0 if `element_name` does not "
+"match its own name, or when data can successfully be internalized, in which "
+"case `*claimed` should be incremented."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1391
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1553
#, no-wrap
msgid "`mpo_internalize_ifnet_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1403
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1565
#, no-wrap
msgid ""
-"int mpo_internalize_ifnet_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \telement_data, \t \n"
-" \tclaimed);\t \n"
+"int mpo_internalize_ifnet_label(\tlabel,\n"
+" \telement_name,\n"
+" \telement_data,\n"
+" \tclaimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"char *element_data;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1432
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1596
#, no-wrap
msgid "`mpo_internalize_pipe_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1444
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1608
#, no-wrap
msgid ""
-"int mpo_internalize_pipe_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \telement_data, \t \n"
-" \tclaimed);\t \n"
+"int mpo_internalize_pipe_label(\tlabel,\n"
+" \telement_name,\n"
+" \telement_data,\n"
+" \tclaimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"char *element_data;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1473
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1639
#, no-wrap
msgid "`mpo_internalize_socket_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1485
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1651
#, no-wrap
msgid ""
-"int mpo_internalize_socket_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \telement_data, \t \n"
-" \tclaimed);\t \n"
+"int mpo_internalize_socket_label(\tlabel,\n"
+" \telement_name,\n"
+" \telement_data,\n"
+" \tclaimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"char *element_data;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1514
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1682
#, no-wrap
msgid "`mpo_internalize_vnode_label`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1526
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1694
#, no-wrap
msgid ""
-"int mpo_internalize_vnode_label(\tlabel, \t \n"
-" \telement_name, \t \n"
-" \telement_data, \t \n"
-" \tclaimed);\t \n"
+"int mpo_internalize_vnode_label(\tlabel,\n"
+" \telement_name,\n"
+" \telement_data,\n"
+" \tclaimed);\n"
"struct label *label;\n"
"char *element_name;\n"
"char *element_data;\n"
"int *claimed;\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1555
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1725
#, no-wrap
msgid "Label Events"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1558
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1733
msgid ""
"This class of entry points is used by the MAC framework to permit policies "
-"to maintain label information on kernel objects. For each labeled kernel "
+"to maintain label information on kernel objects. For each labeled kernel "
"object of interest to a MAC policy, entry points may be registered for "
-"relevant life cycle events. All objects implement initialization, creation, "
-"and destruction hooks. Some objects will also implement relabeling, allowing "
-"user processes to change the labels on objects. Some objects will also "
-"implement object-specific events, such as label events associated with IP "
-"reassembly. A typical labeled object will have the following life cycle of "
-"entry points:"
+"relevant life cycle events. All objects implement initialization, creation, "
+"and destruction hooks. Some objects will also implement relabeling, "
+"allowing user processes to change the labels on objects. Some objects will "
+"also implement object-specific events, such as label events associated with "
+"IP reassembly. A typical labeled object will have the following life cycle "
+"of entry points:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1570
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1745
#, no-wrap
msgid ""
"Label initialization o\n"
"(object-specific wait) \\\n"
"Label creation o\n"
" \\\n"
"Relabel events, o--<--.\n"
"Various object-specific, | |\n"
"Access control events ~-->--o\n"
" \\\n"
"Label destruction o\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1573
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1749
msgid ""
"Label initialization permits policies to allocate memory and set initial "
-"values for labels without context for the use of the object. The label slot "
+"values for labels without context for the use of the object. The label slot "
"allocated to a policy will be zeroed by default, so some policies may not "
"need to perform initialization."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1575
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1756
msgid ""
"Label creation occurs when the kernel structure is associated with an actual "
-"kernel object. For example, Mbufs may be allocated and remain unused in a "
-"pool until they are required. mbuf allocation causes label initialization on "
-"the mbuf to take place, but mbuf creation occurs when the mbuf is associated "
-"with a datagram. Typically, context will be provided for a creation event, "
-"including the circumstances of the creation, and labels of other relevant "
-"objects in the creation process. For example, when an mbuf is created from a "
-"socket, the socket and its label will be presented to registered policies in "
-"addition to the new mbuf and its label. Memory allocation in creation events "
-"is discouraged, as it may occur in performance sensitive ports of the "
-"kernel; in addition, creation calls are not permitted to fail so a failure "
-"to allocate memory cannot be reported."
+"kernel object. For example, Mbufs may be allocated and remain unused in a "
+"pool until they are required. mbuf allocation causes label initialization "
+"on the mbuf to take place, but mbuf creation occurs when the mbuf is "
+"associated with a datagram. Typically, context will be provided for a "
+"creation event, including the circumstances of the creation, and labels of "
+"other relevant objects in the creation process. For example, when an mbuf "
+"is created from a socket, the socket and its label will be presented to "
+"registered policies in addition to the new mbuf and its label. Memory "
+"allocation in creation events is discouraged, as it may occur in performance "
+"sensitive ports of the kernel; in addition, creation calls are not permitted "
+"to fail so a failure to allocate memory cannot be reported."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1577
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1759
msgid ""
"Object specific events do not generally fall into the other broad classes of "
"label events, but will generally provide an opportunity to modify or update "
-"the label on an object based on additional context. For example, the label "
+"the label on an object based on additional context. For example, the label "
"on an IP fragment reassembly queue may be updated during the MAC_UPDATE_IPQ "
"entry point as a result of the acceptance of an additional mbuf to that "
"queue."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1579
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1761
msgid "Access control events are discussed in detail in the following section."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1581
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1763
msgid ""
"Label destruction permits policies to release storage or state associated "
"with a label during its association with an object so that the kernel data "
"structures supporting the object may be reused or released."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1583
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1767
msgid ""
"In addition to labels associated with specific kernel objects, an additional "
-"class of labels exists: temporary labels. These labels are used to store "
-"update information submitted by user processes. These labels are initialized "
-"and destroyed as with other label types, but the creation event is "
-"MAC_INTERNALIZE, which accepts a user label to be converted to an in-kernel "
-"representation."
+"class of labels exists: temporary labels. These labels are used to store "
+"update information submitted by user processes. These labels are "
+"initialized and destroyed as with other label types, but the creation event "
+"is MAC_INTERNALIZE, which accepts a user label to be converted to an in-"
+"kernel representation."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1585
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1769
#, no-wrap
msgid "File System Object Labeling Event Operations"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1588
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1772
#, no-wrap
msgid "`mpo_associate_vnode_devfs`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1604
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1788
#, no-wrap
msgid ""
-"void mpo_associate_vnode_devfs(\tmp, \t \n"
-" \tfslabel, \t \n"
-" \tde, \t \n"
-" \tdelabel, \t \n"
-" \tvp, \t \n"
-" \tvlabel);\t \n"
+"void mpo_associate_vnode_devfs(\tmp,\n"
+" \tfslabel,\n"
+" \tde,\n"
+" \tdelabel,\n"
+" \tvp,\n"
+" \tvlabel);\n"
"struct mount *mp;\n"
"struct label *fslabel;\n"
"struct devfs_dirent *de;\n"
"struct label *delabel;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1614
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1663
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1704
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1825
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1939
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4054
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1798
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1847
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1891
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2014
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2130
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4284
#, no-wrap
msgid "`mp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1615
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1826
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1799
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2015
#, no-wrap
msgid "Devfs mount point"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1619
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1803
#, no-wrap
msgid "Devfs file system label (`mp->mnt_fslabel`)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1622
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1837
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1806
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2026
#, no-wrap
msgid "`de`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1623
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1807
#, no-wrap
msgid "Devfs directory entry"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1626
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1841
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1810
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2030
#, no-wrap
msgid "`delabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1627
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1811
#, no-wrap
msgid "Policy label associated with `de`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1630
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1671
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1712
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1898
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2007
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2048
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2093
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3058
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3093
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3381
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4015
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4120
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4290
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4331
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4370
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4407
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4452
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4513
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4554
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4595
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4636
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4677
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4726
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4781
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4902
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4976
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5011
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5050
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5099
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5148
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5189
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5232
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5279
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5388
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5554
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5664
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1814
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1855
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1899
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2087
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2200
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2241
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2287
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3271
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3309
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3606
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4245
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4356
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4534
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4579
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4620
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4660
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4707
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4771
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4812
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4853
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4894
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4935
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4984
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5039
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5165
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5243
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5281
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5322
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5373
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5427
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5470
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5515
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5565
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5680
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5854
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5964
#, no-wrap
msgid "`vp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1631
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1815
#, no-wrap
msgid "vnode associated with `de`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1634
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1675
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1716
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1902
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2052
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3385
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5558
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5668
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1818
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1859
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1903
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2091
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2245
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3610
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5858
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5968
#, no-wrap
msgid "`vlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1635
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1676
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1717
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1903
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2053
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4518
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4559
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4682
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4731
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4786
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1819
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1860
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1904
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2092
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2246
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4776
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4817
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4940
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4989
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5044
#, no-wrap
msgid "Policy label associated with `vp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1639
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1823
msgid ""
"Fill in the label (`vlabel`) for a newly created devfs vnode based on the "
"devfs directory entry passed in `de` and its label."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1641
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1825
#, no-wrap
msgid "`mpo_associate_vnode_extattr`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1653
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1837
#, no-wrap
msgid ""
-"int mpo_associate_vnode_extattr(\tmp, \t \n"
-" \tfslabel, \t \n"
-" \tvp, \t \n"
-" \tvlabel);\t \n"
+"int mpo_associate_vnode_extattr(\tmp,\n"
+" \tfslabel,\n"
+" \tvp,\n"
+" \tvlabel);\n"
"struct mount *mp;\n"
"struct label *fslabel;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1664
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1705
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1883
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1848
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1892
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2072
#, no-wrap
msgid "File system mount point"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1668
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1709
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1887
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1852
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1896
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2076
#, no-wrap
msgid "File system label"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1672
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1713
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1856
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1900
#, no-wrap
msgid "Vnode to label"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1680
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1867
msgid ""
"Attempt to retrieve the label for `vp` from the file system extended "
-"attributes. Upon success, the value `0` is returned. Should extended "
+"attributes. Upon success, the value `0` is returned. Should extended "
"attribute retrieval not be supported, an accepted fallback is to copy "
-"`fslabel` into `vlabel`. In the event of an error, an appropriate value for "
+"`fslabel` into `vlabel`. In the event of an error, an appropriate value for "
"`errno` should be returned."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1682
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1869
#, no-wrap
msgid "`mpo_associate_vnode_singlelabel`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1694
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1881
#, no-wrap
msgid ""
-"void mpo_associate_vnode_singlelabel(\tmp, \t \n"
-" \tfslabel, \t \n"
-" \tvp, \t \n"
-" \tvlabel);\t \n"
+"void mpo_associate_vnode_singlelabel(\tmp,\n"
+" \tfslabel,\n"
+" \tvp,\n"
+" \tvlabel);\n"
"struct mount *mp;\n"
"struct label *fslabel;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1721
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1908
msgid ""
"On non-multilabel file systems, this entry point is called to set the policy "
"label for `vp` based on the file system label, `fslabel`."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1723
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1910
#, no-wrap
msgid "`mpo_create_devfs_device`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1733
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1920
#, no-wrap
msgid ""
-"void mpo_create_devfs_device(\tdev, \t \n"
-" \tdevfs_dirent, \t \n"
-" \tlabel);\t \n"
+"void mpo_create_devfs_device(\tdev,\n"
+" \tdevfs_dirent,\n"
+" \tlabel);\n"
"dev_t dev;\n"
"struct devfs_dirent *devfs_dirent;\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1743
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1930
#, no-wrap
msgid "`dev`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1744
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1931
#, no-wrap
msgid "Device corresponding with `devfs_dirent`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1747
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1788
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2085
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1934
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1976
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2279
#, no-wrap
msgid "`devfs_dirent`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1748
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1935
#, no-wrap
msgid "Devfs directory entry to be labeled."
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1752
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1939
#, no-wrap
msgid "Label for `devfs_dirent` to be filled in."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1756
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1944
msgid ""
-"Fill out the label on a devfs_dirent being created for the passed device. "
+"Fill out the label on a devfs_dirent being created for the passed device. "
"This call will be made when the device file system is mounted, regenerated, "
"or a new device is made available."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1758
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1946
#, no-wrap
msgid "`mpo_create_devfs_directory`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1770
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1958
#, no-wrap
msgid ""
-"void mpo_create_devfs_directory(\tdirname, \t \n"
-" \tdirnamelen, \t \n"
-" \tdevfs_dirent, \t \n"
-" \tlabel);\t \n"
+"void mpo_create_devfs_directory(\tdirname,\n"
+" \tdirnamelen,\n"
+" \tdevfs_dirent,\n"
+" \tlabel);\n"
"char *dirname;\n"
"int dirnamelen;\n"
"struct devfs_dirent *devfs_dirent;\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1780
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1968
#, no-wrap
msgid "`dirname`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1781
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1969
#, no-wrap
msgid "Name of directory being created"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1784
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5713
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1972
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6013
#, no-wrap
msgid "`namelen`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1785
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1973
#, no-wrap
msgid "Length of string `dirname`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1789
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1977
#, no-wrap
msgid "Devfs directory entry for directory being created."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1793
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1982
msgid ""
-"Fill out the label on a devfs_dirent being created for the passed directory. "
-"This call will be made when the device file system is mounted, regenerated, "
-"or a new device requiring a specific directory hierarchy is made available."
+"Fill out the label on a devfs_dirent being created for the passed "
+"directory. This call will be made when the device file system is mounted, "
+"regenerated, or a new device requiring a specific directory hierarchy is "
+"made available."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1795
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1984
#, no-wrap
msgid "`mpo_create_devfs_symlink`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1811
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2000
#, no-wrap
msgid ""
-"void mpo_create_devfs_symlink(\tcred, \t \n"
-" \tmp, \t \n"
-" \tdd, \t \n"
-" \tddlabel, \t \n"
-" \tde, \t \n"
-" \tdelabel);\t \n"
+"void mpo_create_devfs_symlink(\tcred,\n"
+" \tmp,\n"
+" \tdd,\n"
+" \tddlabel,\n"
+" \tde,\n"
+" \tdelabel);\n"
"struct ucred *cred;\n"
"struct mount *mp;\n"
"struct devfs_dirent *dd;\n"
"struct label *ddlabel;\n"
"struct devfs_dirent *de;\n"
"struct label *delabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1821
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1878
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1935
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2003
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2044
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2169
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2204
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2282
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2323
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2447
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2935
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3120
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3143
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3168
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3263
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3288
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3317
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3346
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3377
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3408
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3431
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3462
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3505
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3540
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3577
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3616
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3651
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3688
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3727
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3766
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3801
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3865
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3900
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3941
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3978
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4011
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4050
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4083
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4116
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4155
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4190
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4229
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4278
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4327
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4366
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4403
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4448
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4501
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4550
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4591
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4632
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4714
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4769
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4820
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4857
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4898
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4937
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2010
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2067
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2126
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2196
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2237
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2366
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2402
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2481
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2522
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2648
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3146
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3338
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3361
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3386
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3488
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3513
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3542
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3571
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3602
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3633
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3656
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3687
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3730
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3765
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3802
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3841
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3876
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3913
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3952
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3993
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4028
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4095
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4130
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4171
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4208
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4241
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4280
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4316
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4352
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4394
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4431
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4470
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4522
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4575
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4616
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4656
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4703
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4759
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4808
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4849
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4890
#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4972
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5007
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5046
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5095
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5144
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5185
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5228
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5275
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5316
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5349
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5384
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5425
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5472
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5515
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5581
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5606
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5633
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5660
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5705
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5027
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5079
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5118
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5161
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5202
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5239
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5277
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5318
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5369
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5423
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5466
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5511
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5561
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5604
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5639
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5676
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5719
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5768
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5813
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5881
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5906
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5933
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5960
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6005
#, no-wrap
msgid "`cred`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1822
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1879
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1936
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2004
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2045
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2170
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2205
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2283
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2324
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2448
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2936
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3169
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3264
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3289
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3318
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3347
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3378
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3409
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3432
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3463
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3506
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3541
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3578
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3617
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3652
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3689
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3728
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3767
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3802
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3835
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3866
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3901
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3942
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3979
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4012
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4051
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4084
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4117
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4156
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4191
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4230
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4279
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4328
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4367
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4404
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4449
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4502
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4551
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4633
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4670
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4715
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4770
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4821
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4858
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4899
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4938
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4973
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5008
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5047
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5096
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5145
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5186
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5229
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5276
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5317
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5350
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5385
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5426
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5473
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5516
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5551
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5582
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5607
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5634
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5661
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5706
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2011
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2068
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2127
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2197
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2238
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2367
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2403
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2482
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2523
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2649
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3147
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3387
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3489
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3514
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3543
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3572
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3603
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3634
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3657
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3688
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3731
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3766
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3803
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3842
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3877
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3914
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3953
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3994
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4029
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4062
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4096
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4131
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4172
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4209
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4242
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4281
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4317
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4353
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4395
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4432
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4471
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4523
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4576
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4617
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4657
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4704
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4760
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4809
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4891
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4928
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4973
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5028
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5080
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5119
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5162
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5203
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5240
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5278
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5319
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5370
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5424
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5467
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5512
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5562
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5605
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5640
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5677
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5720
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5769
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5814
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5851
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5882
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5907
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5934
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5961
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6006
#, no-wrap
msgid "Subject credential"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1829
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2018
#, no-wrap
msgid "`dd`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1830
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2019
#, no-wrap
msgid "Link destination"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1833
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2022
#, no-wrap
msgid "`ddlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1834
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2023
#, no-wrap
msgid "Label associated with `dd`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1838
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2027
#, no-wrap
msgid "Symlink entry"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1842
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2031
#, no-wrap
msgid "Label associated with `de`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1846
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2035
msgid ""
"Fill in the label (`delabel`) for a newly created man:devfs[5] symbolic link "
"entry."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1848
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2037
#, no-wrap
msgid "`mpo_create_vnode_extattr`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1868
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2057
#, no-wrap
msgid ""
-"int mpo_create_vnode_extattr(\tcred, \t \n"
-" \tmp, \t \n"
-" \tfslabel, \t \n"
-" \tdvp, \t \n"
-" \tdlabel, \t \n"
-" \tvp, \t \n"
-" \tvlabel, \t \n"
-" \tcnp);\t \n"
+"int mpo_create_vnode_extattr(\tcred,\n"
+" \tmp,\n"
+" \tfslabel,\n"
+" \tdvp,\n"
+" \tdlabel,\n"
+" \tvp,\n"
+" \tvlabel,\n"
+" \tcnp);\n"
"struct ucred *cred;\n"
"struct mount *mp;\n"
"struct label *fslabel;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
"struct componentname *cnp;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1882
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2071
#, no-wrap
msgid "`mount`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1890
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4159
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4194
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4233
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4282
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4505
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4718
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4773
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4861
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4941
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2079
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4398
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4435
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4474
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4526
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4763
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4976
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5031
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5122
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5206
#, no-wrap
msgid "`dvp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1891
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4283
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2080
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4527
#, no-wrap
msgid "Parent directory vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1894
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4163
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4198
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4237
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4286
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4509
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4722
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4777
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4865
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4945
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2083
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4402
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4439
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4478
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4530
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4767
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4980
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5035
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5126
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5210
#, no-wrap
msgid "`dlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1895
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2084
#, no-wrap
msgid "Label associated with `dvp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1899
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2088
#, no-wrap
msgid "Newly created vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1906
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4241
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4298
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4521
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4734
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4793
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4869
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2095
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4482
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4542
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4779
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4992
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5051
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5130
#, no-wrap
msgid "`cnp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1907
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4299
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4735
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2096
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4543
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4993
#, no-wrap
msgid "Component name for `vp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1911
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2102
msgid ""
-"Write out the label for `vp` to the appropriate extended attribute. If the "
-"write succeeds, fill in `vlabel` with the label, and return 0. Otherwise, "
+"Write out the label for `vp` to the appropriate extended attribute. If the "
+"write succeeds, fill in `vlabel` with the label, and return 0. Otherwise, "
"return an appropriate error."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1913
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2104
#, no-wrap
msgid "`mpo_create_mount`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1925
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2116
#, no-wrap
msgid ""
-"void mpo_create_mount(\tcred, \t \n"
-" \tmp, \t \n"
-" \tmnt, \t \n"
-" \tfslabel);\t \n"
+"void mpo_create_mount(\tcred,\n"
+" \tmp,\n"
+" \tmnt,\n"
+" \tfslabel);\n"
"struct ucred *cred;\n"
"struct mount *mp;\n"
"struct label *mnt;\n"
"struct label *fslabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1940
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2131
#, no-wrap
msgid "Object; file system being mounted"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1944
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2135
#, no-wrap
msgid "Policy label to be filled in for `mp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1948
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2139
#, no-wrap
msgid "Policy label for the file system `mp` mounts."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1952
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2144
msgid ""
"Fill out the labels on the mount point being created by the passed subject "
-"credential. This call will be made when a new file system is mounted."
+"credential. This call will be made when a new file system is mounted."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1954
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2146
#, no-wrap
msgid "`mpo_create_root_mount`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1966
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2158
#, no-wrap
msgid ""
-"void mpo_create_root_mount(\tcred, \t \n"
-" \tmp, \t \n"
-" \tmntlabel, \t \n"
-" \tfslabel);\t \n"
+"void mpo_create_root_mount(\tcred,\n"
+" \tmp,\n"
+" \tmntlabel,\n"
+" \tfslabel);\n"
"struct ucred *cred;\n"
"struct mount *mp;\n"
"struct label *mntlabel;\n"
"struct label *fslabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1976
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2168
#, no-wrap
msgid "See <<mac-mpo-create-mount>>."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1979
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2172
msgid ""
"Fill out the labels on the mount point being created by the passed subject "
-"credential. This call will be made when the root file system is mounted, "
-"after mpo_create_mount;."
+"credential. This call will be made when the root file system is mounted, "
+"after `mpo_create_mount;`."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1981
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2174
#, no-wrap
msgid "`mpo_relabel_vnode`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:1993
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2186
#, no-wrap
msgid ""
-"void mpo_relabel_vnode(\tcred, \t \n"
-" \tvp, \t \n"
-" \tvnodelabel, \t \n"
-" \tnewlabel);\t \n"
+"void mpo_relabel_vnode(\tcred,\n"
+" \tvp,\n"
+" \tvnodelabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *vnodelabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2008
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2201
#, no-wrap
msgid "vnode to relabel"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2011
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2098
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3062
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3097
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4019
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2204
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2292
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3275
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3313
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4249
#, no-wrap
msgid "`vnodelabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2012
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4020
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2205
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4250
#, no-wrap
msgid "Existing policy label for `vp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2015
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2294
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2335
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2376
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2947
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3172
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3589
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3912
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3953
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3982
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4023
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2208
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2493
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2534
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2575
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3158
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3390
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3814
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4142
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4183
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4212
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4253
#, no-wrap
msgid "`newlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2016
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2209
#, no-wrap
msgid "New, possibly partial label to replace `vnodelabel`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2020
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2213
msgid ""
"Update the label on the passed vnode given the passed update vnode label and "
"the passed subject credential."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2022
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2215
#, no-wrap
msgid "`mpo_setlabel_vnode_extattr`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2034
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2227
#, no-wrap
msgid ""
-"int mpo_setlabel_vnode_extattr(\tcred, \t \n"
-" \tvp, \t \n"
-" \tvlabel, \t \n"
-" \tintlabel);\t \n"
+"int mpo_setlabel_vnode_extattr(\tcred,\n"
+" \tvp,\n"
+" \tvlabel,\n"
+" \tintlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
"struct label *intlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2049
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2242
#, no-wrap
msgid "Vnode for which the label is being written"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2056
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2249
#, no-wrap
msgid "`intlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2057
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2250
#, no-wrap
msgid "Label to write out"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2061
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2255
msgid ""
-"Write out the policy from `intlabel` to an extended attribute. This is "
+"Write out the policy from `intlabel` to an extended attribute. This is "
"called from `vop_stdcreatevnode_ea`."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2063
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2257
#, no-wrap
msgid "`mpo_update_devfsdirent`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2075
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2269
#, no-wrap
msgid ""
-"void mpo_update_devfsdirent(\tdevfs_dirent, \t \n"
-" \tdirentlabel, \t \n"
-" \tvp, \t \n"
-" \tvnodelabel);\t \n"
+"void mpo_update_devfsdirent(\tdevfs_dirent,\n"
+" \tdirentlabel,\n"
+" \tvp,\n"
+" \tvnodelabel);\n"
"struct devfs_dirent *devfs_dirent;\n"
"struct label *direntlabel;\n"
"struct vnode *vp;\n"
"struct label *vnodelabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2086
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2280
#, no-wrap
msgid "Object; devfs directory entry"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2089
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2283
#, no-wrap
msgid "`direntlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2090
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2284
#, no-wrap
msgid "Policy label for `devfs_dirent` to be updated."
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2094
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2288
#, no-wrap
msgid "Parent vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2095
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3061
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4018
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4334
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2289
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3274
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4248
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4582
#, no-wrap
msgid "Locked"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2099
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3063
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3098
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4125
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4295
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4336
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4375
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4412
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4457
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4907
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4981
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5016
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5055
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5104
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5153
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5194
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5237
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5284
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5393
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2293
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3276
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3314
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4361
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4539
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4584
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4625
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4665
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4712
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5170
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5248
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5286
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5327
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5378
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5432
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5475
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5520
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5570
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5685
#, no-wrap
msgid "Policy label for `vp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2103
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2299
msgid ""
-"Update the `devfs_dirent` label from the passed devfs vnode label. This call "
-"will be made when a devfs vnode has been successfully relabeled to commit "
-"the label change such that it lasts even if the vnode is recycled. It will "
-"also be made when a symlink is created in devfs, following a call to "
+"Update the `devfs_dirent` label from the passed devfs vnode label. This "
+"call will be made when a devfs vnode has been successfully relabeled to "
+"commit the label change such that it lasts even if the vnode is recycled. "
+"It will also be made when a symlink is created in devfs, following a call to "
"`mac_vnode_create_from_vnode` to initialize the vnode label."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2105
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2301
#, no-wrap
msgid "IPC Object Labeling Event Operations"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2108
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2304
#, no-wrap
msgid "`mpo_create_mbuf_from_socket`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2120
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2316
#, no-wrap
msgid ""
-"void mpo_create_mbuf_from_socket(\tso, \t \n"
-" \tsocketlabel, \t \n"
-" \tm, \t \n"
-" \tmbuflabel);\t \n"
+"void mpo_create_mbuf_from_socket(\tso,\n"
+" \tsocketlabel,\n"
+" \tm,\n"
+" \tmbuflabel);\n"
"struct socket *so;\n"
"struct label *socketlabel;\n"
"struct mbuf *m;\n"
"struct label *mbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2130
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3692
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3731
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3869
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3945
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4824
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2326
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3917
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3956
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4099
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4175
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5083
#, no-wrap
msgid "`socket`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2131
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3771
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3806
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2327
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3998
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4033
#, no-wrap
msgid "Socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2133
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2329
#, no-wrap
msgid "Socket locking WIP"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2134
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2212
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3696
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3735
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3774
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3809
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3873
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3949
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4828
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5523
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2330
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2410
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3921
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3960
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4001
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4036
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4103
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4179
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5087
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5821
#, no-wrap
msgid "`socketlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2135
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3697
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3736
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3874
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4829
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2331
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3922
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3961
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4104
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5088
#, no-wrap
msgid "Policy label for `socket`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2138
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2334
#, no-wrap
msgid "`m`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2139
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2335
#, no-wrap
msgid "Object; mbuf"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2142
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2368
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2689
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2730
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2771
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2980
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5441
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5488
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2338
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2567
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2893
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2935
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2977
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3191
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5735
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5784
#, no-wrap
msgid "`mbuflabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2143
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2339
#, no-wrap
msgid "Policy label to fill in for `m`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2147
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2344
msgid ""
-"Set the label on a newly created mbuf header from the passed socket label. "
+"Set the label on a newly created mbuf header from the passed socket label. "
"This call is made when a new datagram or message is generated by the socket "
"and stored in the passed mbuf."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2149
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2346
#, no-wrap
msgid "`mpo_create_pipe`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2159
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2356
#, no-wrap
msgid ""
-"void mpo_create_pipe(\tcred, \t \n"
-" \tpipe, \t \n"
-" \tpipelabel);\t \n"
+"void mpo_create_pipe(\tcred,\n"
+" \tpipe,\n"
+" \tpipelabel);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *pipelabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2173
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2286
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3466
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3509
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3544
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3581
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3620
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3655
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2370
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2485
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3691
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3734
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3769
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3806
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3845
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3880
#, no-wrap
msgid "`pipe`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2174
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2287
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3467
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3510
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3545
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3582
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3621
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3656
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2371
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2486
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3692
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3735
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3770
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3807
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3846
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3881
#, no-wrap
msgid "Pipe"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2177
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3470
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3513
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3548
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3585
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3624
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3659
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2374
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3695
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3738
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3773
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3810
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3849
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3884
#, no-wrap
msgid "`pipelabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2178
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3471
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3514
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3549
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3625
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3660
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2375
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3696
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3739
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3774
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3850
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3885
#, no-wrap
msgid "Policy label associated with `pipe`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2182
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2380
msgid ""
-"Set the label on a newly created pipe from the passed subject credential. "
+"Set the label on a newly created pipe from the passed subject credential. "
"This call is made when a new pipe is created."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2184
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2382
#, no-wrap
msgid "`mpo_create_socket`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2194
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2392
#, no-wrap
msgid ""
-"void mpo_create_socket(\tcred, \t \n"
-" \tso, \t \n"
-" \tsocketlabel);\t \n"
+"void mpo_create_socket(\tcred,\n"
+" \tso,\n"
+" \tsocketlabel);\n"
"struct ucred *cred;\n"
"struct socket *so;\n"
"struct label *socketlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2207
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2326
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2450
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3053
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3092
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4014
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4086
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4330
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5518
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2405
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2525
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2651
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3266
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3308
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4244
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4319
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4578
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5816
#, no-wrap
msgid "Immutable"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2208
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2327
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3770
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3805
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5519
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2406
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2526
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3997
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4032
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5817
#, no-wrap
msgid "`so`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2209
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2407
#, no-wrap
msgid "Object; socket to label"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2213
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2411
#, no-wrap
msgid "Label to fill in for `so`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2217
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2416
msgid ""
-"Set the label on a newly created socket from the passed subject credential. "
+"Set the label on a newly created socket from the passed subject credential. "
"This call is made when a socket is created."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2219
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2418
#, no-wrap
msgid "`mpo_create_socket_from_socket`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2231
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2430
#, no-wrap
msgid ""
-"void mpo_create_socket_from_socket(\toldsocket, \t \n"
-" \toldsocketlabel, \t \n"
-" \tnewsocket, \t \n"
-" \tnewsocketlabel);\t \n"
+"void mpo_create_socket_from_socket(\toldsocket,\n"
+" \toldsocketlabel,\n"
+" \tnewsocket,\n"
+" \tnewsocketlabel);\n"
"struct socket *oldsocket;\n"
"struct label *oldsocketlabel;\n"
"struct socket *newsocket;\n"
"struct label *newsocketlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2241
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2405
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2440
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2605
#, no-wrap
msgid "`oldsocket`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2242
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2441
#, no-wrap
msgid "Listening socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2245
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2409
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2444
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2609
#, no-wrap
msgid "`oldsocketlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2246
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2445
#, no-wrap
msgid "Policy label associated with `oldsocket`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2249
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2413
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2448
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2613
#, no-wrap
msgid "`newsocket`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2250
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2449
#, no-wrap
msgid "New socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2253
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2452
#, no-wrap
msgid "`newsocketlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2254
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2453
#, no-wrap
msgid "Policy label associated with `newsocketlabel`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2258
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2457
msgid ""
"Label a socket, `newsocket`, newly man:accept[2]ed, based on the man:"
"listen[2] socket, `oldsocket`."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2260
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2459
#, no-wrap
msgid "`mpo_relabel_pipe`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2272
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2471
#, no-wrap
msgid ""
-"void mpo_relabel_pipe(\tcred, \t \n"
-" \tpipe, \t \n"
-" \toldlabel, \t \n"
-" \tnewlabel);\t \n"
+"void mpo_relabel_pipe(\tcred,\n"
+" \tpipe,\n"
+" \toldlabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *oldlabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2290
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2331
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2372
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2489
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2530
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2571
#, no-wrap
msgid "`oldlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2291
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3586
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2490
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3811
#, no-wrap
msgid "Current policy label associated with `pipe`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2295
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2494
#, no-wrap
msgid "Policy label update to apply to `pipe`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2299
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2498
msgid "Apply a new label, `newlabel`, to `pipe`."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2301
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2500
#, no-wrap
msgid "`mpo_relabel_socket`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2313
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2512
#, no-wrap
msgid ""
-"void mpo_relabel_socket(\tcred, \t \n"
-" \tso, \t \n"
-" \toldlabel, \t \n"
-" \tnewlabel);\t \n"
+"void mpo_relabel_socket(\tcred,\n"
+" \tso,\n"
+" \toldlabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct socket *so;\n"
"struct label *oldlabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2328
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3870
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3946
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4825
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5520
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2527
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4100
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4176
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5084
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5818
#, no-wrap
msgid "Object; socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2332
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2531
#, no-wrap
msgid "Current label for `so`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2336
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2535
#, no-wrap
msgid "Label update for `so`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2340
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2539
msgid "Update the label on a socket from the passed socket label update."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2342
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2541
#, no-wrap
msgid "`mpo_set_socket_peer_from_mbuf`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2354
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2553
#, no-wrap
msgid ""
-"void mpo_set_socket_peer_from_mbuf(\tmbuf, \t \n"
-" \tmbuflabel, \t \n"
-" \toldlabel, \t \n"
-" \tnewlabel);\t \n"
+"void mpo_set_socket_peer_from_mbuf(\tmbuf,\n"
+" \tmbuflabel,\n"
+" \toldlabel,\n"
+" \tnewlabel);\n"
"struct mbuf *mbuf;\n"
"struct label *mbuflabel;\n"
"struct label *oldlabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2364
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2685
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2726
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2767
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2976
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5437
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5484
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2563
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2889
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2931
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2973
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3187
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5731
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5780
#, no-wrap
msgid "`mbuf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2365
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2564
#, no-wrap
msgid "First datagram received over socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2369
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2568
#, no-wrap
msgid "Label for `mbuf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2373
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2572
#, no-wrap
msgid "Current label for the socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2377
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2576
#, no-wrap
msgid "Policy label to be filled out for the socket"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2381
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2581
msgid ""
-"Set the peer label on a stream socket from the passed mbuf label. This call "
+"Set the peer label on a stream socket from the passed mbuf label. This call "
"will be made when the first datagram is received by the stream socket, with "
"the exception of Unix domain sockets."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2383
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2583
#, no-wrap
msgid "`mpo_set_socket_peer_from_socket`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2395
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2595
#, no-wrap
msgid ""
-"void mpo_set_socket_peer_from_socket(\toldsocket, \t \n"
-" \toldsocketlabel, \t \n"
-" \tnewsocket, \t \n"
-" \tnewsocketpeerlabel);\t \n"
+"void mpo_set_socket_peer_from_socket(\toldsocket,\n"
+" \toldsocketlabel,\n"
+" \tnewsocket,\n"
+" \tnewsocketpeerlabel);\n"
"struct socket *oldsocket;\n"
"struct label *oldsocketlabel;\n"
"struct socket *newsocket;\n"
"struct label *newsocketpeerlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2406
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2606
#, no-wrap
msgid "Local socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2410
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2610
#, no-wrap
msgid "Policy label for `oldsocket`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2414
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2614
#, no-wrap
msgid "Peer socket"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2417
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2617
#, no-wrap
msgid "`newsocketpeerlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2418
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2618
#, no-wrap
msgid "Policy label to fill in for `newsocket`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2422
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2623
msgid ""
"Set the peer label on a stream UNIX domain socket from the passed remote "
-"socket endpoint. This call will be made when the socket pair is connected, "
+"socket endpoint. This call will be made when the socket pair is connected, "
"and will be made for both endpoints."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2424
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2625
#, no-wrap
msgid "Network Object Labeling Event Operations"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2427
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2628
#, no-wrap
msgid "`mpo_create_bpfdesc`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2437
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2638
#, no-wrap
msgid ""
-"void mpo_create_bpfdesc(\tcred, \t \n"
-" \tbpf_d, \t \n"
-" \tbpflabel);\t \n"
+"void mpo_create_bpfdesc(\tcred,\n"
+" \tbpf_d,\n"
+" \tbpflabel);\n"
"struct ucred *cred;\n"
"struct bpf_d *bpf_d;\n"
"struct label *bpflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2451
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2718
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3228
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2652
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2923
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3452
#, no-wrap
msgid "`bpf_d`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2452
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2653
#, no-wrap
msgid "Object; bpf descriptor"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2455
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2656
#, no-wrap
msgid "`bpf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2456
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2657
#, no-wrap
msgid "Policy label to be filled in for `bpf_d`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2460
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2662
msgid ""
"Set the label on a newly created BPF descriptor from the passed subject "
-"credential. This call will be made when a BPF device node is opened by a "
+"credential. This call will be made when a BPF device node is opened by a "
"process with the passed subject credential."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2462
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2664
#, no-wrap
msgid "`mpo_create_ifnet`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2470
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2672
#, no-wrap
msgid ""
-"void mpo_create_ifnet(\tifnet, \t \n"
-" \tifnetlabel);\t \n"
+"void mpo_create_ifnet(\tifnet,\n"
+" \tifnetlabel);\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2480
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2677
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2759
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2812
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2939
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3236
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3904
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5429
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5476
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2682
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2881
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2965
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3018
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3150
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3460
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4134
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5723
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5772
#, no-wrap
msgid "`ifnet`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2481
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2678
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2760
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2813
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5430
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5477
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2683
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2882
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2966
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3019
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5724
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5773
#, no-wrap
msgid "Network interface"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2484
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2681
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2763
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2816
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2943
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3240
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3908
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5433
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5480
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2686
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2885
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2969
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3022
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3154
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3464
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4138
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5727
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5776
#, no-wrap
msgid "`ifnetlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2485
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2687
#, no-wrap
msgid "Policy label to fill in for `ifnet`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2489
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2692
msgid ""
-"Set the label on a newly created interface. This call may be made when a new "
-"physical interface becomes available to the system, or when a pseudo-"
+"Set the label on a newly created interface. This call may be made when a "
+"new physical interface becomes available to the system, or when a pseudo-"
"interface is instantiated during the boot or as a result of a user action."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2491
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2694
#, no-wrap
msgid "`mpo_create_ipq`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2503
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2706
#, no-wrap
msgid ""
-"void mpo_create_ipq(\tfragment, \t \n"
-" \tfragmentlabel, \t \n"
-" \tipq, \t \n"
-" \tipqlabel);\t \n"
+"void mpo_create_ipq(\tfragment,\n"
+" \tfragmentlabel,\n"
+" \tipq,\n"
+" \tipqlabel);\n"
"struct mbuf *fragment;\n"
"struct label *fragmentlabel;\n"
"struct ipq *ipq;\n"
"struct label *ipqlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2513
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2603
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2894
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2716
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2806
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3102
#, no-wrap
msgid "`fragment`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2514
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2717
#, no-wrap
msgid "First received IP fragment"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2517
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2607
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2898
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2720
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2810
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3106
#, no-wrap
msgid "`fragmentlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2518
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2899
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2721
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3107
#, no-wrap
msgid "Policy label for `fragment`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2521
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2554
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2902
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2984
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2724
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2757
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3110
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3195
#, no-wrap
msgid "`ipq`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2522
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2725
#, no-wrap
msgid "IP reassembly queue to be labeled"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2525
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2558
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2906
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2988
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2728
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2761
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3114
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3199
#, no-wrap
msgid "`ipqlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2526
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2729
#, no-wrap
msgid "Policy label to be filled in for `ipq`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2530
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2733
msgid ""
"Set the label on a newly created IP fragment reassembly queue from the mbuf "
"header of the first received fragment."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2532
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2735
#, no-wrap
msgid "`mpo_create_datagram_from_ipq`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2544
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2747
#, no-wrap
msgid ""
-"void mpo_create_create_datagram_from_ipq(\tipq, \t \n"
-" \tipqlabel, \t \n"
-" \tdatagram, \t \n"
-" \tdatagramlabel);\t \n"
+"void mpo_create_create_datagram_from_ipq(\tipq,\n"
+" \tipqlabel,\n"
+" \tdatagram,\n"
+" \tdatagramlabel);\n"
"struct ipq *ipq;\n"
"struct label *ipqlabel;\n"
"struct mbuf *datagram;\n"
"struct label *datagramlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2555
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2758
#, no-wrap
msgid "IP reassembly queue"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2559
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2907
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2762
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3115
#, no-wrap
msgid "Policy label for `ipq`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2562
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2595
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2765
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2798
#, no-wrap
msgid "`datagram`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2563
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2766
#, no-wrap
msgid "Datagram to be labeled"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2566
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2599
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2769
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2802
#, no-wrap
msgid "`datagramlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2567
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2770
#, no-wrap
msgid "Policy label to be filled in for `datagramlabel`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2571
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2774
msgid ""
"Set the label on a newly reassembled IP datagram from the IP fragment "
"reassembly queue from which it was generated."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2573
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2776
#, no-wrap
msgid "`mpo_create_fragment`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2585
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2788
#, no-wrap
msgid ""
-"void mpo_create_fragment(\tdatagram, \t \n"
-" \tdatagramlabel, \t \n"
-" \tfragment, \t \n"
-" \tfragmentlabel);\t \n"
+"void mpo_create_fragment(\tdatagram,\n"
+" \tdatagramlabel,\n"
+" \tfragment,\n"
+" \tfragmentlabel);\n"
"struct mbuf *datagram;\n"
"struct label *datagramlabel;\n"
"struct mbuf *fragment;\n"
"struct label *fragmentlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2596
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2799
#, no-wrap
msgid "Datagram"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2600
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2803
#, no-wrap
msgid "Policy label for `datagram`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2604
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2807
#, no-wrap
msgid "Fragment to be labeled"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2608
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2811
#, no-wrap
msgid "Policy label to be filled in for `datagram`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2612
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2815
msgid ""
"Set the label on the mbuf header of a newly created IP fragment from the "
"label on the mbuf header of the datagram it was generate from."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2614
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2817
#, no-wrap
msgid "`mpo_create_mbuf_from_mbuf`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2626
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2829
#, no-wrap
msgid ""
-"void mpo_create_mbuf_from_mbuf(\toldmbuf, \t \n"
-" \toldmbuflabel, \t \n"
-" \tnewmbuf, \t \n"
-" \tnewmbuflabel);\t \n"
+"void mpo_create_mbuf_from_mbuf(\toldmbuf,\n"
+" \toldmbuflabel,\n"
+" \tnewmbuf,\n"
+" \tnewmbuflabel);\n"
"struct mbuf *oldmbuf;\n"
"struct label *oldmbuflabel;\n"
"struct mbuf *newmbuf;\n"
"struct label *newmbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2636
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2804
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2853
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2839
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3010
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3060
#, no-wrap
msgid "`oldmbuf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2637
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2840
#, no-wrap
msgid "Existing (source) mbuf"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2640
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2808
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2857
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2843
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3014
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3064
#, no-wrap
msgid "`oldmbuflabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2641
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2809
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2858
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2844
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3015
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3065
#, no-wrap
msgid "Policy label for `oldmbuf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2644
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2820
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2861
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2847
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3026
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3068
#, no-wrap
msgid "`newmbuf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2645
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2727
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2848
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2932
#, no-wrap
msgid "New mbuf to be labeled"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2648
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2824
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2865
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2851
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3030
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3072
#, no-wrap
msgid "`newmbuflabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2649
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2825
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2852
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3031
#, no-wrap
msgid "Policy label to be filled in for `newmbuf`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2653
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2857
msgid ""
"Set the label on the mbuf header of a newly created datagram from the mbuf "
-"header of an existing datagram. This call may be made in a number of "
+"header of an existing datagram. This call may be made in a number of "
"situations, including when an mbuf is re-allocated for alignment purposes."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2655
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2859
#, no-wrap
msgid "`mpo_create_mbuf_linklayer`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2667
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2871
#, no-wrap
msgid ""
-"void mpo_create_mbuf_linklayer(\tifnet, \t \n"
-" \tifnetlabel, \t \n"
-" \tmbuf, \t \n"
-" \tmbuflabel);\t \n"
+"void mpo_create_mbuf_linklayer(\tifnet,\n"
+" \tifnetlabel,\n"
+" \tmbuf,\n"
+" \tmbuflabel);\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
"struct mbuf *mbuf;\n"
"struct label *mbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2682
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2817
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2944
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3241
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5434
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5481
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2886
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3023
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3155
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3465
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5728
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5777
#, no-wrap
msgid "Policy label for `ifnet`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2686
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2768
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2890
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2974
#, no-wrap
msgid "mbuf header for new datagram"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2690
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2772
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2894
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2978
#, no-wrap
msgid "Policy label to be filled in for `mbuf`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2694
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2899
msgid ""
"Set the label on the mbuf header of a newly created datagram generated for "
-"the purposes of a link layer response for the passed interface. This call "
+"the purposes of a link layer response for the passed interface. This call "
"may be made in a number of situations, including for ARP or ND6 responses in "
"the IPv4 and IPv6 stacks."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2696
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2901
#, no-wrap
msgid "`mpo_create_mbuf_from_bpfdesc`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2708
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2913
#, no-wrap
msgid ""
-"void mpo_create_mbuf_from_bpfdesc(\tbpf_d, \t \n"
-" \tbpflabel, \t \n"
-" \tmbuf, \t \n"
-" \tmbuflabel);\t \n"
+"void mpo_create_mbuf_from_bpfdesc(\tbpf_d,\n"
+" \tbpflabel,\n"
+" \tmbuf,\n"
+" \tmbuflabel);\n"
"struct bpf_d *bpf_d;\n"
"struct label *bpflabel;\n"
"struct mbuf *mbuf;\n"
"struct label *mbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2719
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2924
#, no-wrap
msgid "BPF descriptor"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2722
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3232
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2927
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3456
#, no-wrap
msgid "`bpflabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2723
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2928
#, no-wrap
msgid "Policy label for `bpflabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2731
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2936
#, no-wrap
msgid "Policy label to fill in for `mbuf`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2735
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2941
msgid ""
"Set the label on the mbuf header of a newly created datagram generated using "
-"the passed BPF descriptor. This call is made when a write is performed to "
+"the passed BPF descriptor. This call is made when a write is performed to "
"the BPF device associated with the passed BPF descriptor."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2737
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2943
#, no-wrap
msgid "`mpo_create_mbuf_from_ifnet`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2749
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2955
#, no-wrap
msgid ""
-"void mpo_create_mbuf_from_ifnet(\tifnet, \t \n"
-" \tifnetlabel, \t \n"
-" \tmbuf, \t \n"
-" \tmbuflabel);\t \n"
+"void mpo_create_mbuf_from_ifnet(\tifnet,\n"
+" \tifnetlabel,\n"
+" \tmbuf,\n"
+" \tmbuflabel);\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
"struct mbuf *mbuf;\n"
"struct label *mbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2764
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2970
#, no-wrap
msgid "Policy label for `ifnetlabel`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2776
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2982
msgid ""
"Set the label on the mbuf header of a newly created datagram generated from "
"the passed network interface."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2778
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2984
#, no-wrap
msgid "`mpo_create_mbuf_multicast_encap`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2794
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3000
#, no-wrap
msgid ""
-"void mpo_create_mbuf_multicast_encap(\toldmbuf, \t \n"
-" \toldmbuflabel, \t \n"
-" \tifnet, \t \n"
-" \tifnetlabel, \t \n"
-" \tnewmbuf, \t \n"
-" \tnewmbuflabel);\t \n"
+"void mpo_create_mbuf_multicast_encap(\toldmbuf,\n"
+" \toldmbuflabel,\n"
+" \tifnet,\n"
+" \tifnetlabel,\n"
+" \tnewmbuf,\n"
+" \tnewmbuflabel);\n"
"struct mbuf *oldmbuf;\n"
"struct label *oldmbuflabel;\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
"struct mbuf *newmbuf;\n"
"struct label *newmbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2805
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3011
#, no-wrap
msgid "mbuf header for existing datagram"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2821
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3027
#, no-wrap
msgid "mbuf header to be labeled for new datagram"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2829
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3036
msgid ""
"Set the label on the mbuf header of a newly created datagram generated from "
"the existing passed datagram when it is processed by the passed multicast "
-"encapsulation interface. This call is made when an mbuf is to be delivered "
+"encapsulation interface. This call is made when an mbuf is to be delivered "
"using the virtual interface."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2831
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3038
#, no-wrap
msgid "`mpo_create_mbuf_netlayer`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2843
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3050
#, no-wrap
msgid ""
-"void mpo_create_mbuf_netlayer(\toldmbuf, \t \n"
-" \toldmbuflabel, \t \n"
-" \tnewmbuf, \t \n"
-" \tnewmbuflabel);\t \n"
+"void mpo_create_mbuf_netlayer(\toldmbuf,\n"
+" \toldmbuflabel,\n"
+" \tnewmbuf,\n"
+" \tnewmbuflabel);\n"
"struct mbuf *oldmbuf;\n"
"struct label *oldmbuflabel;\n"
"struct mbuf *newmbuf;\n"
"struct label *newmbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2854
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3061
#, no-wrap
msgid "Received datagram"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2862
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3069
#, no-wrap
msgid "Newly created datagram"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2866
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3073
#, no-wrap
msgid "Policy label for `newmbuf`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2870
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3078
msgid ""
"Set the label on the mbuf header of a newly created datagram generated by "
-"the IP stack in response to an existing received datagram (`oldmbuf`). This "
+"the IP stack in response to an existing received datagram (`oldmbuf`). This "
"call may be made in a number of situations, including when responding to "
"ICMP request datagrams."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2872
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3080
#, no-wrap
msgid "`mpo_fragment_match`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2884
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3092
#, no-wrap
msgid ""
-"int mpo_fragment_match(\tfragment, \t \n"
-" \tfragmentlabel, \t \n"
-" \tipq, \t \n"
-" \tipqlabel);\t \n"
+"int mpo_fragment_match(\tfragment,\n"
+" \tfragmentlabel,\n"
+" \tipq,\n"
+" \tipqlabel);\n"
"struct mbuf *fragment;\n"
"struct label *fragmentlabel;\n"
"struct ipq *ipq;\n"
"struct label *ipqlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2895
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3103
#, no-wrap
msgid "IP datagram fragment"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2903
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2985
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3111
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3196
#, no-wrap
msgid "IP fragment reassembly queue"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2911
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3122
msgid ""
"Determine whether an mbuf header containing an IP datagram (`fragment`) "
"fragment matches the label of the passed IP fragment reassembly queue "
-"(`ipq`). Return (1) for a successful match, or (0) for no match. This call "
+"(`ipq`). Return (1) for a successful match, or (0) for no match. This call "
"is made when the IP stack attempts to find an existing fragment reassembly "
"queue for a newly received fragment; if this fails, a new fragment "
-"reassembly queue may be instantiated for the fragment. Policies may use this "
-"entry point to prevent the reassembly of otherwise matching IP fragments if "
-"policy does not permit them to be reassembled based on the label or other "
-"information."
+"reassembly queue may be instantiated for the fragment. Policies may use "
+"this entry point to prevent the reassembly of otherwise matching IP "
+"fragments if policy does not permit them to be reassembled based on the "
+"label or other information."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2913
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3124
#, no-wrap
msgid "`mpo_relabel_ifnet`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2925
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3136
#, no-wrap
msgid ""
-"void mpo_relabel_ifnet(\tcred, \t \n"
-" \tifnet, \t \n"
-" \tifnetlabel, \t \n"
-" \tnewlabel);\t \n"
+"void mpo_relabel_ifnet(\tcred,\n"
+" \tifnet,\n"
+" \tifnetlabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2940
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3151
#, no-wrap
msgid "Object; Network interface"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2948
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3159
#, no-wrap
msgid "Label update to apply to `ifnet`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2952
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3163
msgid ""
"Update the label of network interface, `ifnet`, based on the passed update "
"label, `newlabel`, and the passed subject credential, `cred`."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2954
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3165
#, no-wrap
msgid "`mpo_update_ipq`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2966
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3177
#, no-wrap
msgid ""
-"void mpo_update_ipq(\tfragment, \t \n"
-" \tfragmentlabel, \t \n"
-" \tipq, \t \n"
-" \tipqlabel);\t \n"
+"void mpo_update_ipq(\tfragment,\n"
+" \tfragmentlabel,\n"
+" \tipq,\n"
+" \tipqlabel);\n"
"struct mbuf *fragment;\n"
"struct label *fragmentlabel;\n"
"struct ipq *ipq;\n"
"struct label *ipqlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2977
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3188
#, no-wrap
msgid "IP fragment"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2981
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5442
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5489
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3192
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5736
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5785
#, no-wrap
msgid "Policy label for `mbuf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2989
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3200
#, no-wrap
msgid "Policy label to be updated for `ipq`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2993
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3204
msgid ""
"Update the label on an IP fragment reassembly queue (`ipq`) based on the "
"acceptance of the passed IP fragment mbuf header (`mbuf`)."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2995
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3206
#, no-wrap
msgid "Process Labeling Event Operations"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:2998
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3209
#, no-wrap
msgid "`mpo_create_cred`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3006
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3217
#, no-wrap
msgid ""
-"void mpo_create_cred(\tparent_cred, \t \n"
-" \tchild_cred);\t \n"
+"void mpo_create_cred(\tparent_cred,\n"
+" \tchild_cred);\n"
"struct ucred *parent_cred;\n"
"struct ucred *child_cred;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3016
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3227
#, no-wrap
msgid "`parent_cred`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3017
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3228
#, no-wrap
msgid "Parent subject credential"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3020
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3231
#, no-wrap
msgid "`child_cred`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3021
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3232
#, no-wrap
msgid "Child subject credential"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3025
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3238
msgid ""
"Set the label of a newly created subject credential from the passed subject "
-"credential. This call will be made when man:crcopy[9] is invoked on a newly "
-"created struct ucred. This call should not be confused with a process "
+"credential. This call will be made when man:crcopy[9] is invoked on a newly "
+"created `struct ucred`. This call should not be confused with a process "
"forking or creation event."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3027
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3240
#, no-wrap
msgid "`mpo_execve_transition`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3039
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3252
#, no-wrap
msgid ""
-"void mpo_execve_transition(\told, \t \n"
-" \tnew, \t \n"
-" \tvp, \t \n"
-" \tvnodelabel);\t \n"
+"void mpo_execve_transition(\told,\n"
+" \tnew,\n"
+" \tvp,\n"
+" \tvnodelabel);\n"
"struct ucred *old;\n"
"struct ucred *new;\n"
"struct vnode *vp;\n"
"struct label *vnodelabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3050
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3089
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5717
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3263
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3305
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6017
#, no-wrap
msgid "`old`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3051
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3264
#, no-wrap
msgid "Existing subject credential"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3054
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5729
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3267
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6029
#, no-wrap
msgid "`new`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3055
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3268
#, no-wrap
msgid "New subject credential to be labeled"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3059
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3094
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3272
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3310
#, no-wrap
msgid "File to execute"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3067
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3283
msgid ""
"Update the label of a newly created subject credential (`new`) from the "
"passed existing subject credential (`old`) based on a label transition "
-"caused by executing the passed vnode (`vp`). This call occurs when a process "
-"executes the passed vnode and one of the policies returns a success from the "
-"`mpo_execve_will_transition` entry point. Policies may choose to implement "
-"this call simply by invoking `mpo_create_cred` and passing the two subject "
-"credentials so as not to implement a transitioning event. Policies should "
-"not leave this entry point unimplemented if they implement "
+"caused by executing the passed vnode (`vp`). This call occurs when a "
+"process executes the passed vnode and one of the policies returns a success "
+"from the `mpo_execve_will_transition` entry point. Policies may choose to "
+"implement this call simply by invoking `mpo_create_cred` and passing the two "
+"subject credentials so as not to implement a transitioning event. Policies "
+"should not leave this entry point unimplemented if they implement "
"`mpo_create_cred`, even if they do not implement "
"`mpo_execve_will_transition`."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3069
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3285
#, no-wrap
msgid "`mpo_execve_will_transition`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3079
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3295
#, no-wrap
msgid ""
-"int mpo_execve_will_transition(\told, \t \n"
-" \tvp, \t \n"
-" \tvnodelabel);\t \n"
+"int mpo_execve_will_transition(\told,\n"
+" \tvp,\n"
+" \tvnodelabel);\n"
"struct ucred *old;\n"
"struct vnode *vp;\n"
"struct label *vnodelabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3090
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3306
#, no-wrap
msgid "Subject credential prior to man:execve[2]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3102
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3320
msgid ""
"Determine whether the policy will want to perform a transition event as a "
"result of the execution of the passed vnode by the passed subject "
-"credential. Return 1 if a transition is required, 0 if not. Even if a policy "
-"returns 0, it should behave correctly in the presence of an unexpected "
-"invocation of `mpo_execve_transition`, as that call may happen as a result "
-"of another policy requesting a transition."
+"credential. Return 1 if a transition is required, 0 if not. Even if a "
+"policy returns 0, it should behave correctly in the presence of an "
+"unexpected invocation of `mpo_execve_transition`, as that call may happen as "
+"a result of another policy requesting a transition."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3104
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3322
#, no-wrap
msgid "`mpo_create_proc0`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3110
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3328
#, no-wrap
msgid ""
-"void mpo_create_proc0(\tcred);\t \n"
+"void mpo_create_proc0(\tcred);\n"
"struct ucred *cred;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3121
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3144
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3339
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3362
#, no-wrap
msgid "Subject credential to be filled in"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3125
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3343
msgid ""
"Create the subject credential of process 0, the parent of all kernel "
"processes."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3127
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3345
#, no-wrap
msgid "`mpo_create_proc1`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3133
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3351
#, no-wrap
msgid ""
-"void mpo_create_proc1(\tcred);\t \n"
+"void mpo_create_proc1(\tcred);\n"
"struct ucred *cred;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3148
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3366
msgid ""
"Create the subject credential of process 1, the parent of all user processes."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3150
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3368
#, no-wrap
msgid "`mpo_relabel_cred`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3158
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3376
#, no-wrap
msgid ""
-"void mpo_relabel_cred(\tcred, \t \n"
-" \tnewlabel);\t \n"
+"void mpo_relabel_cred(\tcred,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3173
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3391
#, no-wrap
msgid "Label update to apply to `cred`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3177
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3395
msgid "Update the label on a subject credential from the passed update label."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3179
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3397
#, no-wrap
msgid "Access Control Checks"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3182
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3405
msgid ""
"Access control entry points permit policy modules to influence access "
-"control decisions made by the kernel. Generally, although not always, "
+"control decisions made by the kernel. Generally, although not always, "
"arguments to an access control entry point will include one or more "
"authorizing credentials, information (possibly including a label) for any "
-"other objects involved in the operation. An access control entry point may "
-"return 0 to permit the operation, or an man:errno[2] error value. The "
+"other objects involved in the operation. An access control entry point may "
+"return 0 to permit the operation, or an man:errno[2] error value. The "
"results of invoking the entry point across various registered policy modules "
"will be composed as follows: if all modules permit the operation to succeed, "
-"success will be returned. If one or modules returns a failure, a failure "
-"will be returned. If more than one module returns a failure, the errno value "
-"to return to the user will be selected using the following precedence, "
+"success will be returned. If one or modules returns a failure, a failure "
+"will be returned. If more than one module returns a failure, the errno "
+"value to return to the user will be selected using the following precedence, "
"implemented by the `error_select()` function in [.filename]#kern_mac.c#:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3188
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3411
#, no-wrap
msgid "Most precedence"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3190
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3413
#, no-wrap
msgid "EDEADLK"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3193
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3416
#, no-wrap
msgid "EINVAL"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3196
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3419
#, no-wrap
msgid "ESRCH"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3199
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3422
#, no-wrap
msgid "EACCES"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3200
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3423
#, no-wrap
msgid "Least precedence"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3201
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3424
#, no-wrap
msgid "EPERM"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3204
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3428
msgid ""
"If none of the error values returned by all modules are listed in the "
"precedence chart then an arbitrarily selected value from the set will be "
-"returned. In general, the rules provide precedence to errors in the "
+"returned. In general, the rules provide precedence to errors in the "
"following order: kernel failures, invalid arguments, object not present, "
"access not permitted, other."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3206
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3430
#, no-wrap
msgid "`mpo_check_bpfdesc_receive`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3218
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3442
#, no-wrap
msgid ""
-"int mpo_check_bpfdesc_receive(\tbpf_d, \t \n"
-" \tbpflabel, \t \n"
-" \tifnet, \t \n"
-" \tifnetlabel);\t \n"
+"int mpo_check_bpfdesc_receive(\tbpf_d,\n"
+" \tbpflabel,\n"
+" \tifnet,\n"
+" \tifnetlabel);\n"
"struct bpf_d *bpf_d;\n"
"struct label *bpflabel;\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3229
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3453
#, no-wrap
msgid "Subject; BPF descriptor"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3233
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3457
#, no-wrap
msgid "Policy label for `bpf_d`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3237
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3905
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3461
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4135
#, no-wrap
msgid "Object; network interface"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3245
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3470
msgid ""
"Determine whether the MAC framework should permit datagrams from the passed "
-"interface to be delivered to the buffers of the passed BPF descriptor. "
+"interface to be delivered to the buffers of the passed BPF descriptor. "
"Return (0) for success, or an `errno` value for failure Suggested failure: "
"EACCES for label mismatches, EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3247
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3472
#, no-wrap
msgid "`mpo_check_kenv_dump`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3253
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3478
#, no-wrap
msgid ""
-"int mpo_check_kenv_dump(\tcred);\t \n"
+"int mpo_check_kenv_dump(\tcred);\n"
"struct ucred *cred;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3268
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3493
msgid ""
"Determine whether the subject should be allowed to retrieve the kernel "
"environment (see man:kenv[2])."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3270
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3495
#, no-wrap
msgid "`mpo_check_kenv_get`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3278
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3503
#, no-wrap
msgid ""
-"int mpo_check_kenv_get(\tcred, \t \n"
-" \tname);\t \n"
+"int mpo_check_kenv_get(\tcred,\n"
+" \tname);\n"
"struct ucred *cred;\n"
"char *name;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3292
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3321
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3350
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4464
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5111
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5709
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3517
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3546
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3575
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4719
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5385
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6009
#, no-wrap
msgid "`name`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3293
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3322
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3351
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3518
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3547
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3576
#, no-wrap
msgid "Kernel environment variable name"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3297
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3522
msgid ""
"Determine whether the subject should be allowed to retrieve the value of the "
"specified kernel environment variable."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3299
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3524
#, no-wrap
msgid "`mpo_check_kenv_set`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3307
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3532
#, no-wrap
msgid ""
-"int mpo_check_kenv_set(\tcred, \t \n"
-" \tname);\t \n"
+"int mpo_check_kenv_set(\tcred,\n"
+" \tname);\n"
"struct ucred *cred;\n"
"char *name;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3326
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3551
msgid ""
"Determine whether the subject should be allowed to set the specified kernel "
"environment variable."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3328
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3553
#, no-wrap
msgid "`mpo_check_kenv_unset`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3336
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3561
#, no-wrap
msgid ""
-"int mpo_check_kenv_unset(\tcred, \t \n"
-" \tname);\t \n"
+"int mpo_check_kenv_unset(\tcred,\n"
+" \tname);\n"
"struct ucred *cred;\n"
"char *name;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3355
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3580
msgid ""
"Determine whether the subject should be allowed to unset the specified "
"kernel environment variable."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3357
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3582
#, no-wrap
msgid "`mpo_check_kld_load`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3367
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3592
#, no-wrap
msgid ""
-"int mpo_check_kld_load(\tcred, \t \n"
-" \tvp, \t \n"
-" \tvlabel);\t \n"
+"int mpo_check_kld_load(\tcred,\n"
+" \tvp,\n"
+" \tvlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3382
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3607
#, no-wrap
msgid "Kernel module vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3386
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5559
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5669
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3611
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5859
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5969
#, no-wrap
msgid "Label associated with `vp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3390
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3615
msgid ""
"Determine whether the subject should be allowed to load the specified module "
"file."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3392
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3617
#, no-wrap
msgid "`mpo_check_kld_stat`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3398
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3623
#, no-wrap
msgid ""
-"int mpo_check_kld_stat(\tcred);\t \n"
+"int mpo_check_kld_stat(\tcred);\n"
"struct ucred *cred;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3413
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3638
msgid ""
"Determine whether the subject should be allowed to retrieve a list of loaded "
"kernel module files and associated statistics."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3415
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3640
#, no-wrap
msgid "`mpo_check_kld_unload`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3421
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3646
#, no-wrap
msgid ""
-"int mpo_check_kld_unload(\tcred);\t \n"
+"int mpo_check_kld_unload(\tcred);\n"
"struct ucred *cred;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3436
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3661
msgid ""
"Determine whether the subject should be allowed to unload a kernel module."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3438
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3663
#, no-wrap
msgid "`mpo_check_pipe_ioctl`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3452
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3677
#, no-wrap
msgid ""
-"int mpo_check_pipe_ioctl(\tcred, \t \n"
-" \tpipe, \t \n"
-" \tpipelabel, \t \n"
-" \tcmd, \t \n"
-" \tdata);\t \n"
+"int mpo_check_pipe_ioctl(\tcred,\n"
+" \tpipe,\n"
+" \tpipelabel,\n"
+" \tcmd,\n"
+" \tdata);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *pipelabel;\n"
"unsigned long cmd;\n"
"void *data;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3474
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3699
#, no-wrap
msgid "`cmd`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3475
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3700
#, no-wrap
msgid "man:ioctl[2] command"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3478
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3703
#, no-wrap
msgid "`data`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3479
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3704
#, no-wrap
msgid "man:ioctl[2] data"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3483
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3708
msgid ""
"Determine whether the subject should be allowed to make the specified man:"
"ioctl[2] call."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3485
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3710
#, no-wrap
msgid "`mpo_check_pipe_poll`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3495
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3720
#, no-wrap
msgid ""
-"int mpo_check_pipe_poll(\tcred, \t \n"
-" \tpipe, \t \n"
-" \tpipelabel);\t \n"
+"int mpo_check_pipe_poll(\tcred,\n"
+" \tpipe,\n"
+" \tpipelabel);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *pipelabel;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3518
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3743
msgid "Determine whether the subject should be allowed to poll `pipe`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3520
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3745
#, no-wrap
msgid "`mpo_check_pipe_read`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3530
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3755
#, no-wrap
msgid ""
-"int mpo_check_pipe_read(\tcred, \t \n"
-" \tpipe, \t \n"
-" \tpipelabel);\t \n"
+"int mpo_check_pipe_read(\tcred,\n"
+" \tpipe,\n"
+" \tpipelabel);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *pipelabel;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3553
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3778
msgid "Determine whether the subject should be allowed read access to `pipe`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3555
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3780
#, no-wrap
msgid "`mpo_check_pipe_relabel`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3567
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3792
#, no-wrap
msgid ""
-"int mpo_check_pipe_relabel(\tcred, \t \n"
-" \tpipe, \t \n"
-" \tpipelabel, \t \n"
-" \tnewlabel);\t \n"
+"int mpo_check_pipe_relabel(\tcred,\n"
+" \tpipe,\n"
+" \tpipelabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *pipelabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3590
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3815
#, no-wrap
msgid "Label update to `pipelabel`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3594
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3819
msgid "Determine whether the subject should be allowed to relabel `pipe`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3596
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3821
#, no-wrap
msgid "`mpo_check_pipe_stat`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3606
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3831
#, no-wrap
msgid ""
-"int mpo_check_pipe_stat(\tcred, \t \n"
-" \tpipe, \t \n"
-" \tpipelabel);\t \n"
+"int mpo_check_pipe_stat(\tcred,\n"
+" \tpipe,\n"
+" \tpipelabel);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *pipelabel;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3629
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3854
msgid ""
"Determine whether the subject should be allowed to retrieve statistics "
"related to `pipe`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3631
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3856
#, no-wrap
msgid "`mpo_check_pipe_write`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3641
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3866
#, no-wrap
msgid ""
-"int mpo_check_pipe_write(\tcred, \t \n"
-" \tpipe, \t \n"
-" \tpipelabel);\t \n"
+"int mpo_check_pipe_write(\tcred,\n"
+" \tpipe,\n"
+" \tpipelabel);\n"
"struct ucred *cred;\n"
"struct pipe *pipe;\n"
"struct label *pipelabel;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3664
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3889
msgid "Determine whether the subject should be allowed to write to `pipe`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3666
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3891
#, no-wrap
msgid "`mpo_check_socket_bind`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3678
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3903
#, no-wrap
msgid ""
-"int mpo_check_socket_bind(\tcred, \t \n"
-" \tsocket, \t \n"
-" \tsocketlabel, \t \n"
-" \tsockaddr);\t \n"
+"int mpo_check_socket_bind(\tcred,\n"
+" \tsocket,\n"
+" \tsocketlabel,\n"
+" \tsockaddr);\n"
"struct ucred *cred;\n"
"struct socket *socket;\n"
"struct label *socketlabel;\n"
"struct sockaddr *sockaddr;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3693
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3918
#, no-wrap
msgid "Socket to be bound"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3700
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3739
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3925
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3964
#, no-wrap
msgid "`sockaddr`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3701
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3740
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3926
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3965
#, no-wrap
msgid "Address of `socket`"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3705
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3930
#, no-wrap
msgid "`mpo_check_socket_connect`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3717
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3942
#, no-wrap
msgid ""
-"int mpo_check_socket_connect(\tcred, \t \n"
-" \tsocket, \t \n"
-" \tsocketlabel, \t \n"
-" \tsockaddr);\t \n"
+"int mpo_check_socket_connect(\tcred,\n"
+" \tsocket,\n"
+" \tsocketlabel,\n"
+" \tsockaddr);\n"
"struct ucred *cred;\n"
"struct socket *socket;\n"
"struct label *socketlabel;\n"
"struct sockaddr *sockaddr;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3732
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3957
#, no-wrap
msgid "Socket to be connected"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3744
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3971
msgid ""
"Determine whether the subject credential (`cred`) can connect the passed "
-"socket (`socket`) to the passed socket address (`sockaddr`). Return 0 for "
-"success, or an `errno` value for failure. Suggested failure: EACCES for "
+"socket (`socket`) to the passed socket address (`sockaddr`). Return 0 for "
+"success, or an `errno` value for failure. Suggested failure: EACCES for "
"label mismatches, EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3746
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3973
#, no-wrap
msgid "`mpo_check_socket_receive`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3756
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3983
#, no-wrap
msgid ""
-"int mpo_check_socket_receive(\tcred, \t \n"
-" \tso, \t \n"
-" \tsocketlabel);\t \n"
+"int mpo_check_socket_receive(\tcred,\n"
+" \tso,\n"
+" \tsocketlabel);\n"
"struct ucred *cred;\n"
"struct socket *so;\n"
"struct label *socketlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3775
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3810
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4002
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4037
#, no-wrap
msgid "Policy label associated with `so`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3779
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4006
msgid ""
"Determine whether the subject should be allowed to receive information from "
"the socket `so`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3781
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4008
#, no-wrap
msgid "`mpo_check_socket_send`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3791
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4018
#, no-wrap
msgid ""
-"int mpo_check_socket_send(\tcred, \t \n"
-" \tso, \t \n"
-" \tsocketlabel);\t \n"
+"int mpo_check_socket_send(\tcred,\n"
+" \tso,\n"
+" \tsocketlabel);\n"
"struct ucred *cred;\n"
"struct socket *so;\n"
"struct label *socketlabel;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3814
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4041
msgid ""
"Determine whether the subject should be allowed to send information across "
"the socket `so`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3816
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4043
#, no-wrap
msgid "`mpo_check_cred_visible`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3824
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4051
#, no-wrap
msgid ""
-"int mpo_check_cred_visible(\tu1, \t \n"
-" \tu2);\t \n"
+"int mpo_check_cred_visible(\tu1,\n"
+" \tu2);\n"
"struct ucred *u1;\n"
"struct ucred *u2;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3834
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4061
#, no-wrap
msgid "`u1`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3838
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4065
#, no-wrap
msgid "`u2`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3839
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4066
#, no-wrap
msgid "Object credential"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3843
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4073
msgid ""
"Determine whether the subject credential `u1` can \"see\" other subjects "
-"with the passed subject credential `u2`. Return 0 for success, or an `errno` "
-"value for failure. Suggested failure: EACCES for label mismatches, EPERM for "
-"lack of privilege, or ESRCH to hide visibility. This call may be made in a "
-"number of situations, including inter-process status sysctl's used by `ps`, "
-"and in procfs lookups."
+"with the passed subject credential `u2`. Return 0 for success, or an "
+"`errno` value for failure. Suggested failure: EACCES for label mismatches, "
+"EPERM for lack of privilege, or ESRCH to hide visibility. This call may be "
+"made in a number of situations, including inter-process status sysctl's used "
+"by `ps`, and in procfs lookups."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3845
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5495
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4075
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5793
#, no-wrap
msgid "`mpo_check_socket_visible`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3855
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4085
#, no-wrap
msgid ""
-"int mpo_check_socket_visible(\tcred, \t \n"
-" \tsocket, \t \n"
-" \tsocketlabel);\t \n"
+"int mpo_check_socket_visible(\tcred,\n"
+" \tsocket,\n"
+" \tsocketlabel);\n"
"struct ucred *cred;\n"
"struct socket *socket;\n"
"struct label *socketlabel;\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3878
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4108
#, no-wrap
msgid "`mpo_check_ifnet_relabel`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3890
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4120
#, no-wrap
msgid ""
-"int mpo_check_ifnet_relabel(\tcred, \t \n"
-" \tifnet, \t \n"
-" \tifnetlabel, \t \n"
-" \tnewlabel);\t \n"
+"int mpo_check_ifnet_relabel(\tcred,\n"
+" \tifnet,\n"
+" \tifnetlabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3909
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4139
#, no-wrap
msgid "Existing policy label for `ifnet`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3913
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4143
#, no-wrap
msgid "Policy label update to later be applied to `ifnet`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3917
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4147
msgid ""
"Determine whether the subject credential can relabel the passed network "
"interface to the passed label update."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3919
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4149
#, no-wrap
msgid "`mpo_check_socket_relabel`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3931
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4161
#, no-wrap
msgid ""
-"int mpo_check_socket_relabel(\tcred, \t \n"
-" \tsocket, \t \n"
-" \tsocketlabel, \t \n"
-" \tnewlabel);\t \n"
+"int mpo_check_socket_relabel(\tcred,\n"
+" \tsocket,\n"
+" \tsocketlabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct socket *socket;\n"
"struct label *socketlabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3950
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4180
#, no-wrap
msgid "Existing policy label for `socket`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3954
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4184
#, no-wrap
msgid "Label update to later be applied to `socketlabel`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3958
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4188
msgid ""
"Determine whether the subject credential can relabel the passed socket to "
"the passed label update."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3960
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4190
#, no-wrap
msgid "`mpo_check_cred_relabel`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3968
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4198
#, no-wrap
msgid ""
-"int mpo_check_cred_relabel(\tcred, \t \n"
-" \tnewlabel);\t \n"
+"int mpo_check_cred_relabel(\tcred,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3983
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4213
#, no-wrap
msgid "Label update to later be applied to `cred`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3987
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4217
msgid ""
"Determine whether the subject credential can relabel itself to the passed "
"label update."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:3989
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4219
#, no-wrap
msgid "`mpo_check_vnode_relabel`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4001
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4231
#, no-wrap
msgid ""
-"int mpo_check_vnode_relabel(\tcred, \t \n"
-" \tvp, \t \n"
-" \tvnodelabel, \t \n"
-" \tnewlabel);\t \n"
+"int mpo_check_vnode_relabel(\tcred,\n"
+" \tvp,\n"
+" \tvnodelabel,\n"
+" \tnewlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *vnodelabel;\n"
"struct label *newlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4016
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4121
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4234
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4332
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4408
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4453
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4862
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4903
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4977
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5012
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5051
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5100
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5149
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5190
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5233
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5389
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4246
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4357
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4475
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4580
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4661
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4708
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5123
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5166
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5244
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5282
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5323
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5374
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5428
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5471
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5516
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5681
#, no-wrap
msgid "Object; vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4024
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4254
#, no-wrap
msgid "Policy label update to later be applied to `vp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4028
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4258
msgid ""
"Determine whether the subject credential can relabel the passed vnode to the "
"passed label update."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4030
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4260
#, no-wrap
msgid "`mpo_check_mount_stat`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4040
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4270
#, no-wrap
msgid ""
-"int mpo_check_mount_stat(\tcred, \t \n"
-" \tmp, \t \n"
-" \tmountlabel);\t \n"
+"int mpo_check_mount_stat(\tcred,\n"
+" \tmp,\n"
+" \tmountlabel);\n"
"struct ucred *cred;\n"
"struct mount *mp;\n"
"struct label *mountlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4055
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4285
#, no-wrap
msgid "Object; file system mount"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4058
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4288
#, no-wrap
msgid "`mountlabel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4059
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4289
#, no-wrap
msgid "Policy label for `mp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4063
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4296
msgid ""
"Determine whether the subject credential can see the results of a statfs "
-"performed on the file system. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatches or EPERM for lack of "
-"privilege. This call may be made in a number of situations, including during "
-"invocations of man:statfs[2] and related calls, as well as to determine what "
-"file systems to exclude from listings of file systems, such as when man:"
-"getfsstat[2] is invoked."
+"performed on the file system. Return 0 for success, or an `errno` value for "
+"failure. Suggested failure: EACCES for label mismatches or EPERM for lack "
+"of privilege. This call may be made in a number of situations, including "
+"during invocations of man:statfs[2] and related calls, as well as to "
+"determine what file systems to exclude from listings of file systems, such "
+"as when man:getfsstat[2] is invoked."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4065
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4298
#, no-wrap
msgid "`mpo_check_proc_debug`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4073
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4306
#, no-wrap
msgid ""
-"int mpo_check_proc_debug(\tcred, \t \n"
-" \tproc);\t \n"
+"int mpo_check_proc_debug(\tcred,\n"
+" \tproc);\n"
"struct ucred *cred;\n"
"struct proc *proc;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4087
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5320
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5353
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4320
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5608
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5643
#, no-wrap
msgid "`proc`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4088
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5321
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5354
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4321
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5609
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5644
#, no-wrap
msgid "Object; process"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4092
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4328
msgid ""
-"Determine whether the subject credential can debug the passed process. "
-"Return 0 for success, or an `errno` value for failure. Suggested failure: "
+"Determine whether the subject credential can debug the passed process. "
+"Return 0 for success, or an `errno` value for failure. Suggested failure: "
"EACCES for label mismatch, EPERM for lack of privilege, or ESRCH to hide "
-"visibility of the target. This call may be made in a number of situations, "
+"visibility of the target. This call may be made in a number of situations, "
"including use of the man:ptrace[2] and man:ktrace[2] APIs, as well as for "
"some types of procfs operations."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4094
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4330
#, no-wrap
msgid "`mpo_check_vnode_access`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4106
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4342
#, no-wrap
msgid ""
-"int mpo_check_vnode_access(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tflags);\t \n"
+"int mpo_check_vnode_access(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tflags);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int flags;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4128
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5156
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4364
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5435
#, no-wrap
msgid "`flags`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4129
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4365
#, no-wrap
msgid "man:access[2] flags"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4133
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4372
msgid ""
"Determine how invocations of man:access[2] and related calls by the subject "
"credential should return when performed on the passed vnode using the passed "
-"access flags. This should generally be implemented using the same semantics "
-"used in `mpo_check_vnode_open`. Return 0 for success, or an `errno` value "
-"for failure. Suggested failure: EACCES for label mismatches or EPERM for "
+"access flags. This should generally be implemented using the same semantics "
+"used in `mpo_check_vnode_open`. Return 0 for success, or an `errno` value "
+"for failure. Suggested failure: EACCES for label mismatches or EPERM for "
"lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4135
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4374
#, no-wrap
msgid "`mpo_check_vnode_chdir`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4145
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4384
#, no-wrap
msgid ""
-"int mpo_check_vnode_chdir(\tcred, \t \n"
-" \tdvp, \t \n"
-" \tdlabel);\t \n"
+"int mpo_check_vnode_chdir(\tcred,\n"
+" \tdvp,\n"
+" \tdlabel);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4160
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4399
#, no-wrap
msgid "Object; vnode to man:chdir[2] into"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4164
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4238
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4287
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4866
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4946
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4403
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4479
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4531
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5127
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5211
#, no-wrap
msgid "Policy label for `dvp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4168
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4409
msgid ""
"Determine whether the subject credential can change the process working "
-"directory to the passed vnode. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
-"privilege."
+"directory to the passed vnode. Return 0 for success, or an `errno` value "
+"for failure. Suggested failure: EACCES for label mismatch, or EPERM for "
+"lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4170
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4411
#, no-wrap
msgid "`mpo_check_vnode_chroot`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4180
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4421
#, no-wrap
msgid ""
-"int mpo_check_vnode_chroot(\tcred, \t \n"
-" \tdvp, \t \n"
-" \tdlabel);\t \n"
+"int mpo_check_vnode_chroot(\tcred,\n"
+" \tdvp,\n"
+" \tdlabel);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4195
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4506
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4719
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4774
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4436
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4764
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4977
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5032
#, no-wrap
msgid "Directory vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4199
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4510
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4723
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4778
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4440
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4768
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4981
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5036
#, no-wrap
msgid "Policy label associated with `dvp`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4203
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4444
msgid ""
"Determine whether the subject should be allowed to man:chroot[2] into the "
"specified directory (`dvp`)."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4205
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4446
#, no-wrap
msgid "`mpo_check_vnode_create`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4219
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4460
#, no-wrap
msgid ""
-"int mpo_check_vnode_create(\tcred, \t \n"
-" \tdvp, \t \n"
-" \tdlabel, \t \n"
-" \tcnp, \t \n"
-" \tvap);\t \n"
+"int mpo_check_vnode_create(\tcred,\n"
+" \tdvp,\n"
+" \tdlabel,\n"
+" \tcnp,\n"
+" \tvap);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
"struct componentname *cnp;\n"
"struct vattr *vap;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4242
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4483
#, no-wrap
msgid "Component name for `dvp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4245
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4486
#, no-wrap
msgid "`vap`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4246
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4487
#, no-wrap
msgid "vnode attributes for `vap`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4250
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4494
msgid ""
"Determine whether the subject credential can create a vnode with the passed "
-"parent directory, passed name information, and passed attribute information. "
-"Return 0 for success, or an `errno` value for failure. Suggested failure: "
-"EACCES for label mismatch, or EPERM for lack of privilege. This call may be "
-"made in a number of situations, including as a result of calls to man:"
-"open[2] with O_CREAT, man:mkfifo[2], and others."
+"parent directory, passed name information, and passed attribute "
+"information. Return 0 for success, or an `errno` value for failure. "
+"Suggested failure: EACCES for label mismatch, or EPERM for lack of "
+"privilege. This call may be made in a number of situations, including as a "
+"result of calls to man:open[2] with O_CREAT, man:mkfifo[2], and others."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4252
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4496
#, no-wrap
msgid "`mpo_check_vnode_delete`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4268
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4512
#, no-wrap
msgid ""
-"int mpo_check_vnode_delete(\tcred, \t \n"
-" \tdvp, \t \n"
-" \tdlabel, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tcnp);\t \n"
+"int mpo_check_vnode_delete(\tcred,\n"
+" \tdvp,\n"
+" \tdlabel,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tcnp);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
"struct vnode *vp;\n"
"void *label;\n"
"struct componentname *cnp;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4291
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4535
#, no-wrap
msgid "Object; vnode to delete"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4303
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4551
msgid ""
"Determine whether the subject credential can delete a vnode from the passed "
-"parent directory and passed name information. Return 0 for success, or an "
-"`errno` value for failure. Suggested failure: EACCES for label mismatch, or "
-"EPERM for lack of privilege. This call may be made in a number of "
+"parent directory and passed name information. Return 0 for success, or an "
+"`errno` value for failure. Suggested failure: EACCES for label mismatch, or "
+"EPERM for lack of privilege. This call may be made in a number of "
"situations, including as a result of calls to man:unlink[2] and man:"
-"rmdir[2]. Policies implementing this entry point should also implement "
+"rmdir[2]. Policies implementing this entry point should also implement "
"`mpo_check_rename_to` to authorize deletion of objects as a result of being "
"the target of a rename."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4305
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4553
#, no-wrap
msgid "`mpo_check_vnode_deleteacl`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4317
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4565
#, no-wrap
msgid ""
-"int mpo_check_vnode_deleteacl(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \ttype);\t \n"
+"int mpo_check_vnode_deleteacl(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \ttype);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"acl_type_t type;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4339
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4415
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5058
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4587
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4668
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5330
#, no-wrap
msgid "`type`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4340
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4416
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5059
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4588
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4669
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5331
#, no-wrap
msgid "ACL type"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4344
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4594
msgid ""
"Determine whether the subject credential can delete the ACL of passed type "
-"from the passed vnode. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
+"from the passed vnode. Return 0 for success, or an `errno` value for "
+"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
"privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4346
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4596
#, no-wrap
msgid "`mpo_check_vnode_exec`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4356
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4606
#, no-wrap
msgid ""
-"int mpo_check_vnode_exec(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel);\t \n"
+"int mpo_check_vnode_exec(\tcred,\n"
+" \tvp,\n"
+" \tlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4371
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4621
#, no-wrap
msgid "Object; vnode to execute"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4379
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4632
msgid ""
-"Determine whether the subject credential can execute the passed vnode. "
+"Determine whether the subject credential can execute the passed vnode. "
"Determination of execute privilege is made separately from decisions about "
-"any transitioning event. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
+"any transitioning event. Return 0 for success, or an `errno` value for "
+"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
"privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4381
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4634
#, no-wrap
msgid "`mpo_check_vnode_getacl`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4393
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4646
#, no-wrap
msgid ""
-"int mpo_check_vnode_getacl(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \ttype);\t \n"
+"int mpo_check_vnode_getacl(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \ttype);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"acl_type_t type;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4420
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4675
msgid ""
"Determine whether the subject credential can retrieve the ACL of passed type "
-"from the passed vnode. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
+"from the passed vnode. Return 0 for success, or an `errno` value for "
+"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
"privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4422
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4677
#, no-wrap
msgid "`mpo_check_vnode_getextattr`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4438
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4693
#, no-wrap
msgid ""
-"int mpo_check_vnode_getextattr(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tattrnamespace, \t \n"
-" \tname, \t \n"
-" \tuio);\t \n"
+"int mpo_check_vnode_getextattr(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tattrnamespace,\n"
+" \tname,\n"
+" \tuio);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int attrnamespace;\n"
"const char *name;\n"
"struct uio *uio;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4460
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5107
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4715
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5381
#, no-wrap
msgid "`attrnamespace`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4461
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5108
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4716
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5382
#, no-wrap
msgid "Extended attribute namespace"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4465
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5112
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4720
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5386
#, no-wrap
msgid "Extended attribute name"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4468
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5115
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4723
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5389
#, no-wrap
msgid "`uio`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4469
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5116
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4724
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5390
#, no-wrap
msgid "I/O structure pointer; see man:uio[9]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4473
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4731
msgid ""
"Determine whether the subject credential can retrieve the extended attribute "
-"with the passed namespace and name from the passed vnode. Policies "
+"with the passed namespace and name from the passed vnode. Policies "
"implementing labeling using extended attributes may be interested in special "
-"handling of operations on those extended attributes. Return 0 for success, "
-"or an `errno` value for failure. Suggested failure: EACCES for label "
+"handling of operations on those extended attributes. Return 0 for success, "
+"or an `errno` value for failure. Suggested failure: EACCES for label "
"mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4475
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4733
#, no-wrap
msgid "`mpo_check_vnode_link`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4491
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4749
#, no-wrap
msgid ""
-"int mpo_check_vnode_link(\tcred, \t \n"
-" \tdvp, \t \n"
-" \tdlabel, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tcnp);\t \n"
+"int mpo_check_vnode_link(\tcred,\n"
+" \tdvp,\n"
+" \tdlabel,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tcnp);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"struct componentname *cnp;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4514
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4772
#, no-wrap
msgid "Link destination vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4522
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4780
#, no-wrap
msgid "Component name for the link being created"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4526
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4784
msgid ""
"Determine whether the subject should be allowed to create a link to the "
"vnode `vp` with the name specified by `cnp`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4528
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4786
#, no-wrap
msgid "`mpo_check_vnode_mmap`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4540
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4798
#, no-wrap
msgid ""
-"int mpo_check_vnode_mmap(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tprot);\t \n"
+"int mpo_check_vnode_mmap(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tprot);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int prot;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4555
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4813
#, no-wrap
msgid "Vnode to map"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4562
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4603
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4640
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4820
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4861
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4898
#, no-wrap
msgid "`prot`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4563
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4821
#, no-wrap
msgid "Mmap protections (see man:mmap[2])"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4567
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4825
msgid ""
"Determine whether the subject should be allowed to map the vnode `vp` with "
"the protections specified in `prot`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4569
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4827
#, no-wrap
msgid "`mpo_check_vnode_mmap_downgrade`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4581
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4839
#, no-wrap
msgid ""
-"void mpo_check_vnode_mmap_downgrade(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tprot);\t \n"
+"void mpo_check_vnode_mmap_downgrade(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tprot);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int *prot;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4592
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4850
#, no-wrap
msgid "See <<mac-mpo-check-vnode-mmap>>."
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4604
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4862
#, no-wrap
msgid "Mmap protections to be downgraded"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4608
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4866
msgid "Downgrade the mmap protections based on the subject and object labels."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4610
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4868
#, no-wrap
msgid "`mpo_check_vnode_mprotect`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4622
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4880
#, no-wrap
msgid ""
-"int mpo_check_vnode_mprotect(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tprot);\t \n"
+"int mpo_check_vnode_mprotect(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tprot);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int prot;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4637
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4895
#, no-wrap
msgid "Mapped vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4641
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4899
#, no-wrap
msgid "Memory protections"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4645
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4903
msgid ""
"Determine whether the subject should be allowed to set the specified memory "
"protections on memory mapped from the vnode `vp`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4647
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4905
#, no-wrap
msgid "`mpo_check_vnode_poll`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4659
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4917
#, no-wrap
msgid ""
-"int mpo_check_vnode_poll(\tactive_cred, \t \n"
-" \tfile_cred, \t \n"
-" \tvp, \t \n"
-" \tlabel);\t \n"
+"int mpo_check_vnode_poll(\tactive_cred,\n"
+" \tfile_cred,\n"
+" \tvp,\n"
+" \tlabel);\n"
"struct ucred *active_cred;\n"
"struct ucred *file_cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4669
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4927
#, no-wrap
msgid "`active_cred`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4673
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4931
#, no-wrap
msgid "`file_cred`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4674
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4932
#, no-wrap
msgid "Credential associated with the struct file"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4678
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4936
#, no-wrap
msgid "Polled vnode"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4686
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4944
msgid "Determine whether the subject should be allowed to poll the vnode `vp`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4688
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4946
#, no-wrap
msgid "`mpo_check_vnode_rename_from`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4704
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4962
#, no-wrap
msgid ""
-"int mpo_vnode_rename_from(\tcred, \t \n"
-" \tdvp, \t \n"
-" \tdlabel, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tcnp);\t \n"
+"int mpo_vnode_rename_from(\tcred,\n"
+" \tdvp,\n"
+" \tdlabel,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tcnp);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"struct componentname *cnp;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4727
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4985
#, no-wrap
msgid "Vnode to be renamed"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4739
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4997
msgid ""
"Determine whether the subject should be allowed to rename the vnode `vp` to "
"something else."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4741
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4999
#, no-wrap
msgid "`mpo_check_vnode_rename_to`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4759
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5017
#, no-wrap
msgid ""
-"int mpo_check_vnode_rename_to(\tcred, \t \n"
-" \tdvp, \t \n"
-" \tdlabel, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tsamedir, \t \n"
-" \tcnp);\t \n"
+"int mpo_check_vnode_rename_to(\tcred,\n"
+" \tdvp,\n"
+" \tdlabel,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tsamedir,\n"
+" \tcnp);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int samedir;\n"
"struct componentname *cnp;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4782
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5040
#, no-wrap
msgid "Overwritten vnode"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4789
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5047
#, no-wrap
msgid "`samedir`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4790
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5048
#, no-wrap
msgid "Boolean; `1` if the source and destination directories are the same"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4794
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5052
#, no-wrap
msgid "Destination component name"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4798
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5057
msgid ""
"Determine whether the subject should be allowed to rename to the vnode `vp`, "
-"into the directory `dvp`, or to the name represented by `cnp`. If there is "
+"into the directory `dvp`, or to the name represented by `cnp`. If there is "
"no existing file to overwrite, `vp` and `label` will be NULL."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4800
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5059
#, no-wrap
msgid "`mpo_check_socket_listen`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4810
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5069
#, no-wrap
msgid ""
-"int mpo_check_socket_listen(\tcred, \t \n"
-" \tsocket, \t \n"
-" \tsocketlabel);\t \n"
+"int mpo_check_socket_listen(\tcred,\n"
+" \tsocket,\n"
+" \tsocketlabel);\n"
"struct ucred *cred;\n"
"struct socket *socket;\n"
"struct label *socketlabel;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4833
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5094
msgid ""
-"Determine whether the subject credential can listen on the passed socket. "
-"Return 0 for success, or an `errno` value for failure. Suggested failure: "
+"Determine whether the subject credential can listen on the passed socket. "
+"Return 0 for success, or an `errno` value for failure. Suggested failure: "
"EACCES for label mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4835
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5096
#, no-wrap
msgid "`mpo_check_vnode_lookup`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4847
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5108
#, no-wrap
msgid ""
-"int mpo_check_vnode_lookup(\t, \t \n"
-" \t, \t \n"
-" \t, \t \n"
-" \tcnp);\t \n"
+"int mpo_check_vnode_lookup(\t,\n"
+" \t,\n"
+" \t,\n"
+" \tcnp);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
"struct componentname *cnp;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4870
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5131
#, no-wrap
msgid "Component name being looked up"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4874
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5137
msgid ""
"Determine whether the subject credential can perform a lookup in the passed "
-"directory vnode for the passed name. Return 0 for success, or an `errno` "
-"value for failure. Suggested failure: EACCES for label mismatch, or EPERM "
+"directory vnode for the passed name. Return 0 for success, or an `errno` "
+"value for failure. Suggested failure: EACCES for label mismatch, or EPERM "
"for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4876
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5139
#, no-wrap
msgid "`mpo_check_vnode_open`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4888
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5151
#, no-wrap
msgid ""
-"int mpo_check_vnode_open(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tacc_mode);\t \n"
+"int mpo_check_vnode_open(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tacc_mode);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int acc_mode;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4910
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5173
#, no-wrap
msgid "`acc_mode`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4911
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5174
#, no-wrap
msgid "man:open[2] access mode"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4915
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5180
msgid ""
"Determine whether the subject credential can perform an open operation on "
-"the passed vnode with the passed access mode. Return 0 for success, or an "
-"errno value for failure. Suggested failure: EACCES for label mismatch, or "
+"the passed vnode with the passed access mode. Return 0 for success, or an "
+"errno value for failure. Suggested failure: EACCES for label mismatch, or "
"EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4917
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5182
#, no-wrap
msgid "`mpo_check_vnode_readdir`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4927
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5192
#, no-wrap
msgid ""
-"int mpo_check_vnode_readdir(\t, \t \n"
-" \t, \t \n"
-" \t);\t \n"
+"int mpo_check_vnode_readdir(\t,\n"
+" \t,\n"
+" \t);\n"
"struct ucred *cred;\n"
"struct vnode *dvp;\n"
"struct label *dlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4942
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5207
#, no-wrap
msgid "Object; directory vnode"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4950
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5217
msgid ""
"Determine whether the subject credential can perform a `readdir` operation "
-"on the passed directory vnode. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
-"privilege."
+"on the passed directory vnode. Return 0 for success, or an `errno` value "
+"for failure. Suggested failure: EACCES for label mismatch, or EPERM for "
+"lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4952
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5219
#, no-wrap
msgid "`mpo_check_vnode_readlink`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4962
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5229
#, no-wrap
msgid ""
-"int mpo_check_vnode_readlink(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel);\t \n"
+"int mpo_check_vnode_readlink(\tcred,\n"
+" \tvp,\n"
+" \tlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4985
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5255
msgid ""
"Determine whether the subject credential can perform a `readlink` operation "
-"on the passed symlink vnode. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
-"privilege. This call may be made in a number of situations, including an "
+"on the passed symlink vnode. Return 0 for success, or an `errno` value for "
+"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
+"privilege. This call may be made in a number of situations, including an "
"explicit `readlink` call by the user process, or as a result of an implicit "
"`readlink` during a name lookup by the process."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4987
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5257
#, no-wrap
msgid "`mpo_check_vnode_revoke`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:4997
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5267
#, no-wrap
msgid ""
-"int mpo_check_vnode_revoke(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel);\t \n"
+"int mpo_check_vnode_revoke(\tcred,\n"
+" \tvp,\n"
+" \tlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5020
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5292
msgid ""
"Determine whether the subject credential can revoke access to the passed "
-"vnode. Return 0 for success, or an `errno` value for failure. Suggested "
+"vnode. Return 0 for success, or an `errno` value for failure. Suggested "
"failure: EACCES for label mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5022
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5294
#, no-wrap
msgid "`mpo_check_vnode_setacl`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5036
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5308
#, no-wrap
msgid ""
-"int mpo_check_vnode_setacl(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \ttype, \t \n"
-" \tacl);\t \n"
+"int mpo_check_vnode_setacl(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \ttype,\n"
+" \tacl);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"acl_type_t type;\n"
"struct acl *acl;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5062
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5334
#, no-wrap
msgid "`acl`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5063
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5335
#, no-wrap
msgid "ACL"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5067
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5341
msgid ""
"Determine whether the subject credential can set the passed ACL of passed "
-"type on the passed vnode. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
+"type on the passed vnode. Return 0 for success, or an `errno` value for "
+"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
"privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5069
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5343
#, no-wrap
msgid "`mpo_check_vnode_setextattr`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5085
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5359
#, no-wrap
msgid ""
-"int mpo_check_vnode_setextattr(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tattrnamespace, \t \n"
-" \tname, \t \n"
-" \tuio);\t \n"
+"int mpo_check_vnode_setextattr(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tattrnamespace,\n"
+" \tname,\n"
+" \tuio);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"int attrnamespace;\n"
"const char *name;\n"
"struct uio *uio;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5120
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5399
msgid ""
"Determine whether the subject credential can set the extended attribute of "
-"passed name and passed namespace on the passed vnode. Policies implementing "
+"passed name and passed namespace on the passed vnode. Policies implementing "
"security labels backed into extended attributes may want to provide "
-"additional protections for those attributes. Additionally, policies should "
+"additional protections for those attributes. Additionally, policies should "
"avoid making decisions based on the data referenced from `uio`, as there is "
-"a potential race condition between this check and the actual operation. The "
-"`uio` may also be `NULL` if a delete operation is being performed. Return 0 "
-"for success, or an `errno` value for failure. Suggested failure: EACCES for "
+"a potential race condition between this check and the actual operation. The "
+"`uio` may also be `NULL` if a delete operation is being performed. Return 0 "
+"for success, or an `errno` value for failure. Suggested failure: EACCES for "
"label mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5122
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5401
#, no-wrap
msgid "`mpo_check_vnode_setflags`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5134
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5413
#, no-wrap
msgid ""
-"int mpo_check_vnode_setflags(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tflags);\t \n"
+"int mpo_check_vnode_setflags(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tflags);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"u_long flags;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5157
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5436
#, no-wrap
msgid "File flags; see man:chflags[2]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5161
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5442
msgid ""
"Determine whether the subject credential can set the passed flags on the "
-"passed vnode. Return 0 for success, or an `errno` value for failure. "
+"passed vnode. Return 0 for success, or an `errno` value for failure. "
"Suggested failure: EACCES for label mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5163
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5444
#, no-wrap
msgid "`mpo_check_vnode_setmode`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5175
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5456
#, no-wrap
msgid ""
-"int mpo_check_vnode_setmode(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tmode);\t \n"
+"int mpo_check_vnode_setmode(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tmode);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"mode_t mode;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5197
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5478
#, no-wrap
msgid "`mode`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5198
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5479
#, no-wrap
msgid "File mode; see man:chmod[2]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5202
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5485
msgid ""
"Determine whether the subject credential can set the passed mode on the "
-"passed vnode. Return 0 for success, or an `errno` value for failure. "
+"passed vnode. Return 0 for success, or an `errno` value for failure. "
"Suggested failure: EACCES for label mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5204
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5487
#, no-wrap
msgid "`mpo_check_vnode_setowner`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5218
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5501
#, no-wrap
msgid ""
-"int mpo_check_vnode_setowner(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel, \t \n"
-" \tuid, \t \n"
-" \tgid);\t \n"
+"int mpo_check_vnode_setowner(\tcred,\n"
+" \tvp,\n"
+" \tlabel,\n"
+" \tuid,\n"
+" \tgid);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"uid_t uid;\n"
"gid_t gid;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5240
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5523
#, no-wrap
msgid "`uid`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5241
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5524
#, no-wrap
msgid "User ID"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5244
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5527
#, no-wrap
msgid "`gid`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5245
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5528
#, no-wrap
msgid "Group ID"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5249
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5535
msgid ""
"Determine whether the subject credential can set the passed uid and passed "
-"gid as file uid and file gid on the passed vnode. The IDs may be set to "
-"(`-1`) to request no update. Return 0 for success, or an `errno` value for "
-"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
+"gid as file uid and file gid on the passed vnode. The IDs may be set to "
+"(`-1`) to request no update. Return 0 for success, or an `errno` value for "
+"failure. Suggested failure: EACCES for label mismatch, or EPERM for lack of "
"privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5251
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5537
#, no-wrap
msgid "`mpo_check_vnode_setutimes`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5265
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5551
#, no-wrap
msgid ""
-"int mpo_check_vnode_setutimes(\t, \t \n"
-" \t, \t \n"
-" \t, \t \n"
-" \t, \t \n"
-" \t);\t \n"
+"int mpo_check_vnode_setutimes(\t,\n"
+" \t,\n"
+" \t,\n"
+" \t,\n"
+" \t);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
"struct timespec atime;\n"
"struct timespec mtime;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5280
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5566
#, no-wrap
msgid "Object; vp"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5287
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5573
#, no-wrap
msgid "`atime`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5288
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5574
#, no-wrap
msgid "Access time; see man:utimes[2]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5291
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5577
#, no-wrap
msgid "`mtime`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5292
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5578
#, no-wrap
msgid "Modification time; see man:utimes[2]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5296
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5584
msgid ""
"Determine whether the subject credential can set the passed access "
-"timestamps on the passed vnode. Return 0 for success, or an `errno` value "
-"for failure. Suggested failure: EACCES for label mismatch, or EPERM for lack "
-"of privilege."
+"timestamps on the passed vnode. Return 0 for success, or an `errno` value "
+"for failure. Suggested failure: EACCES for label mismatch, or EPERM for "
+"lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5298
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5586
#, no-wrap
msgid "`mpo_check_proc_sched`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5306
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5594
#, no-wrap
msgid ""
-"int mpo_check_proc_sched(\tucred, \t \n"
-" \tproc);\t \n"
+"int mpo_check_proc_sched(\tucred,\n"
+" \tproc);\n"
"struct ucred *ucred;\n"
"struct proc *proc;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5325
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5615
msgid ""
"Determine whether the subject credential can change the scheduling "
-"parameters of the passed process. Return 0 for success, or an `errno` value "
-"for failure. Suggested failure: EACCES for label mismatch, EPERM for lack of "
-"privilege, or ESRCH to limit visibility."
+"parameters of the passed process. Return 0 for success, or an `errno` value "
+"for failure. Suggested failure: EACCES for label mismatch, EPERM for lack "
+"of privilege, or ESRCH to limit visibility."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5327
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5617
msgid "See man:setpriority[2] for more information."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5329
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5619
#, no-wrap
msgid "`mpo_check_proc_signal`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5339
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5629
#, no-wrap
msgid ""
-"int mpo_check_proc_signal(\tcred, \t \n"
-" \tproc, \t \n"
-" \tsignal);\t \n"
+"int mpo_check_proc_signal(\tcred,\n"
+" \tproc,\n"
+" \tsignal);\n"
"struct ucred *cred;\n"
"struct proc *proc;\n"
"int signal;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5357
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5647
#, no-wrap
msgid "`signal`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5358
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5648
#, no-wrap
msgid "Signal; see man:kill[2]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5362
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5654
msgid ""
"Determine whether the subject credential can deliver the passed signal to "
-"the passed process. Return 0 for success, or an `errno` value for failure. "
+"the passed process. Return 0 for success, or an `errno` value for failure. "
"Suggested failure: EACCES for label mismatch, EPERM for lack of privilege, "
"or ESRCH to limit visibility."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5364
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5656
#, no-wrap
msgid "`mpo_check_vnode_stat`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5374
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5666
#, no-wrap
msgid ""
-"int mpo_check_vnode_stat(\tcred, \t \n"
-" \tvp, \t \n"
-" \tlabel);\t \n"
+"int mpo_check_vnode_stat(\tcred,\n"
+" \tvp,\n"
+" \tlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *label;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5397
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5691
msgid ""
-"Determine whether the subject credential can `stat` the passed vnode. Return "
-"0 for success, or an `errno` value for failure. Suggested failure: EACCES "
-"for label mismatch, or EPERM for lack of privilege."
+"Determine whether the subject credential can `stat` the passed vnode. "
+"Return 0 for success, or an `errno` value for failure. Suggested failure: "
+"EACCES for label mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5399
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5693
msgid "See man:stat[2] for more information."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5401
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5695
#, no-wrap
msgid "`mpo_check_ifnet_transmit`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5415
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5709
#, no-wrap
msgid ""
-"int mpo_check_ifnet_transmit(\tcred, \t \n"
-" \tifnet, \t \n"
-" \tifnetlabel, \t \n"
-" \tmbuf, \t \n"
-" \tmbuflabel);\t \n"
+"int mpo_check_ifnet_transmit(\tcred,\n"
+" \tifnet,\n"
+" \tifnetlabel,\n"
+" \tmbuf,\n"
+" \tmbuflabel);\n"
"struct ucred *cred;\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
"struct mbuf *mbuf;\n"
"struct label *mbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5438
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5732
#, no-wrap
msgid "Object; mbuf to be sent"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5446
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5742
msgid ""
-"Determine whether the network interface can transmit the passed mbuf. Return "
-"0 for success, or an `errno` value for failure. Suggested failure: EACCES "
-"for label mismatch, or EPERM for lack of privilege."
+"Determine whether the network interface can transmit the passed mbuf. "
+"Return 0 for success, or an `errno` value for failure. Suggested failure: "
+"EACCES for label mismatch, or EPERM for lack of privilege."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5448
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5744
#, no-wrap
msgid "`mpo_check_socket_deliver`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5462
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5758
#, no-wrap
msgid ""
-"int mpo_check_socket_deliver(\tcred, \t \n"
-" \tifnet, \t \n"
-" \tifnetlabel, \t \n"
-" \tmbuf, \t \n"
-" \tmbuflabel);\t \n"
+"int mpo_check_socket_deliver(\tcred,\n"
+" \tifnet,\n"
+" \tifnetlabel,\n"
+" \tmbuf,\n"
+" \tmbuflabel);\n"
"struct ucred *cred;\n"
"struct ifnet *ifnet;\n"
"struct label *ifnetlabel;\n"
"struct mbuf *mbuf;\n"
"struct label *mbuflabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5485
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5781
#, no-wrap
msgid "Object; mbuf to be delivered"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5493
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5791
msgid ""
"Determine whether the socket may receive the datagram stored in the passed "
-"mbuf header. Return 0 for success, or an `errno` value for failure. "
+"mbuf header. Return 0 for success, or an `errno` value for failure. "
"Suggested failures: EACCES for label mismatch, or EPERM for lack of "
"privilege."
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5505
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5803
#, no-wrap
msgid ""
-"int mpo_check_socket_visible(\tcred, \t \n"
-" \tso, \t \n"
-" \tsocketlabel);\t \n"
+"int mpo_check_socket_visible(\tcred,\n"
+" \tso,\n"
+" \tsocketlabel);\n"
"struct ucred *cred;\n"
"struct socket *so;\n"
"struct label *socketlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5524
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5822
#, no-wrap
msgid "Policy label for `so`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5528
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5828
msgid ""
"Determine whether the subject credential cred can \"see\" the passed socket "
"(`socket`) using system monitoring functions, such as those employed by man:"
-"netstat[8] and man:sockstat[1]. Return 0 for success, or an `errno` value "
-"for failure. Suggested failure: EACCES for label mismatches, EPERM for lack "
+"netstat[8] and man:sockstat[1]. Return 0 for success, or an `errno` value "
+"for failure. Suggested failure: EACCES for label mismatches, EPERM for lack "
"of privilege, or ESRCH to hide visibility."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5530
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5830
#, no-wrap
msgid "`mpo_check_system_acct`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5540
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5840
#, no-wrap
msgid ""
-"int mpo_check_system_acct(\tucred, \t \n"
-" \tvp, \t \n"
-" \tvlabel);\t \n"
+"int mpo_check_system_acct(\tucred,\n"
+" \tvp,\n"
+" \tvlabel);\n"
"struct ucred *ucred;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5550
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5850
#, no-wrap
msgid "`ucred`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5555
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5855
#, no-wrap
msgid "Accounting file; man:acct[5]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5563
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5863
msgid ""
"Determine whether the subject should be allowed to enable accounting, based "
"on its label and the label of the accounting log file."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5565
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5865
#, no-wrap
msgid "`mpo_check_system_nfsd`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5571
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5871
#, no-wrap
msgid ""
-"int mpo_check_system_nfsd(\tcred);\t \n"
+"int mpo_check_system_nfsd(\tcred);\n"
"struct ucred *cred;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5586
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5886
msgid "Determine whether the subject should be allowed to call man:nfssvc[2]."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5588
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5888
#, no-wrap
msgid "`mpo_check_system_reboot`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5596
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5896
#, no-wrap
msgid ""
-"int mpo_check_system_reboot(\tcred, \t \n"
-" \thowto);\t \n"
+"int mpo_check_system_reboot(\tcred,\n"
+" \thowto);\n"
"struct ucred *cred;\n"
"int howto;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5610
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5910
#, no-wrap
msgid "`howto`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5611
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5911
#, no-wrap
msgid "`howto` parameter from man:reboot[2]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5615
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5915
msgid ""
"Determine whether the subject should be allowed to reboot the system in the "
"specified manner."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5617
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5917
#, no-wrap
msgid "`mpo_check_system_settime`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5623
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5923
#, no-wrap
msgid ""
-"int mpo_check_system_settime(\tcred);\t \n"
+"int mpo_check_system_settime(\tcred);\n"
"struct ucred *cred;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5638
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5938
msgid "Determine whether the user should be allowed to set the system clock."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5640
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5940
#, no-wrap
msgid "`mpo_check_system_swapon`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5650
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5950
#, no-wrap
msgid ""
-"int mpo_check_system_swapon(\tcred, \t \n"
-" \tvp, \t \n"
-" \tvlabel);\t \n"
+"int mpo_check_system_swapon(\tcred,\n"
+" \tvp,\n"
+" \tvlabel);\n"
"struct ucred *cred;\n"
"struct vnode *vp;\n"
"struct label *vlabel;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5665
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5965
#, no-wrap
msgid "Swap device"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5673
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5973
msgid ""
"Determine whether the subject should be allowed to add `vp` as a swap device."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5675
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5975
#, no-wrap
msgid "`mpo_check_system_sysctl`"
msgstr ""
#. type: delimited block - 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5695
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5995
#, no-wrap
msgid ""
-"int mpo_check_system_sysctl(\tcred, \t \n"
-" \tname, \t \n"
-" \tnamelen, \t \n"
-" \told, \t \n"
-" \toldlenp, \t \n"
-" \tinkernel, \t \n"
-" \tnew, \t \n"
-" \tnewlen);\t \n"
+"int mpo_check_system_sysctl(\tcred,\n"
+" \tname,\n"
+" \tnamelen,\n"
+" \told,\n"
+" \toldlenp,\n"
+" \tinkernel,\n"
+" \tnew,\n"
+" \tnewlen);\n"
"struct ucred *cred;\n"
"int *name;\n"
"u_int *namelen;\n"
"void *old;\n"
"size_t *oldlenp;\n"
"int inkernel;\n"
"void *new;\n"
"size_t newlen;\n"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5710
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5730
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6010
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6030
#, no-wrap
msgid "See man:sysctl[3]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5721
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6021
#, no-wrap
msgid "`oldlenp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5725
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6025
#, no-wrap
msgid "`inkernel`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5726
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6026
#, no-wrap
msgid "Boolean; `1` if called from kernel"
msgstr ""
#. type: Table
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5733
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6033
#, no-wrap
msgid "`newlen`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5738
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6038
msgid ""
"Determine whether the subject should be allowed to make the specified man:"
"sysctl[3] transaction."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5740
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6040
#, no-wrap
msgid "Label Management Calls"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5743
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6046
msgid ""
"Relabel events occur when a user process has requested that the label on an "
-"object be modified. A two-phase update occurs: first, an access control "
+"object be modified. A two-phase update occurs: first, an access control "
"check will be performed to determine if the update is both valid and "
"permitted, and then the update itself is performed via a separate entry "
-"point. Relabel entry points typically accept the object, object label "
-"reference, and an update label submitted by the process. Memory allocation "
+"point. Relabel entry points typically accept the object, object label "
+"reference, and an update label submitted by the process. Memory allocation "
"during relabel is discouraged, as relabel calls are not permitted to fail "
"(failure should be reported earlier in the relabel check)."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5745
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6048
#, no-wrap
msgid "Userland Architecture"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5748
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6052
msgid ""
"The TrustedBSD MAC Framework includes a number of policy-agnostic elements, "
"including MAC library interfaces for abstractly managing labels, "
"modifications to the system credential management and login libraries to "
"support the assignment of MAC labels to users, and a set of tools to monitor "
-"and modify labels on processes, files, and network interfaces. More details "
+"and modify labels on processes, files, and network interfaces. More details "
"on the user architecture will be added to this section in the near future."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5750
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6054
#, no-wrap
msgid "APIs for Policy-Agnostic Label Management"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5753
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6061
msgid ""
"The TrustedBSD MAC Framework provides a number of library and system calls "
"permitting applications to manage MAC labels on objects using a policy-"
-"agnostic interface. This permits applications to manipulate labels for a "
-"variety of policies without being written to support specific policies. "
+"agnostic interface. This permits applications to manipulate labels for a "
+"variety of policies without being written to support specific policies. "
"These interfaces are used by general-purpose tools such as man:ifconfig[8], "
"man:ls[1] and man:ps[1] to view labels on network interfaces, files, and "
-"processes. The APIs also support MAC management tools including man:"
+"processes. The APIs also support MAC management tools including man:"
"getfmac[8], man:getpmac[8], man:setfmac[8], man:setfsmac[8], and man:"
-"setpmac[8]. The MAC APIs are documented in man:mac[3]."
+"setpmac[8]. The MAC APIs are documented in man:mac[3]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5755
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6069
msgid ""
"Applications handle MAC labels in two forms: an internalized form used to "
"return and set labels on processes and objects (`mac_t`), and externalized "
"form based on C strings appropriate for storage in configuration files, "
-"display to the user, or input from the user. Each MAC label contains a "
-"number of elements, each consisting of a name and value pair. Policy modules "
-"in the kernel bind to specific names and interpret the values in policy-"
-"specific ways. In the externalized string form, labels are represented by a "
-"comma-delimited list of name and value pairs separated by the `/` character. "
-"Labels may be directly converted to and from text using provided APIs; when "
-"retrieving labels from the kernel, internalized label storage must first be "
-"prepared for the desired label element set. Typically, this is done in one "
-"of two ways: using man:mac_prepare[3] and an arbitrary list of desired label "
-"elements, or one of the variants of the call that loads a default element "
-"set from the man:mac.conf[5] configuration file. Per-object defaults permit "
-"application writers to usefully display labels associated with objects "
-"without being aware of the policies present in the system."
+"display to the user, or input from the user. Each MAC label contains a "
+"number of elements, each consisting of a name and value pair. Policy "
+"modules in the kernel bind to specific names and interpret the values in "
+"policy-specific ways. In the externalized string form, labels are "
+"represented by a comma-delimited list of name and value pairs separated by "
+"the `/` character. Labels may be directly converted to and from text using "
+"provided APIs; when retrieving labels from the kernel, internalized label "
+"storage must first be prepared for the desired label element set. "
+"Typically, this is done in one of two ways: using man:mac_prepare[3] and an "
+"arbitrary list of desired label elements, or one of the variants of the call "
+"that loads a default element set from the man:mac.conf[5] configuration "
+"file. Per-object defaults permit application writers to usefully display "
+"labels associated with objects without being aware of the policies present "
+"in the system."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5759
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6074
msgid ""
"Currently, direct manipulation of label elements other than by conversion to "
"a text string, string editing, and conversion back to an internalized label "
-"is not supported by the MAC library. Such interfaces may be added in the "
+"is not supported by the MAC library. Such interfaces may be added in the "
"future if they prove necessary for application writers."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5762
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6077
#, no-wrap
msgid "Binding of Labels to Users"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5765
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6081
msgid ""
"The standard user context management interface, man:setusercontext[3], has "
"been modified to retrieve MAC labels associated with a user's class from man:"
-"login.conf[5]. These labels are then set along with other user context when "
+"login.conf[5]. These labels are then set along with other user context when "
"either `LOGIN_SETALL` is specified, or when `LOGIN_SETMAC` is explicitly "
"specified."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5769
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6086
msgid ""
"It is expected that, in a future version of FreeBSD, the MAC label database "
"will be separated from the [.filename]#login.conf# user class abstraction, "
-"and be maintained in a separate database. However, the man:setusercontext[3] "
-"API should remain the same following such a change."
+"and be maintained in a separate database. However, the man:"
+"setusercontext[3] API should remain the same following such a change."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5772
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6089
#, no-wrap
msgid "Conclusion"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/arch-handbook/mac/_index.adoc:5774
+#: documentation/content/en/books/arch-handbook/mac/_index.adoc:6094
msgid ""
"The TrustedBSD MAC framework permits kernel modules to augment the system "
-"security policy in a highly integrated manner. They may do this based on "
+"security policy in a highly integrated manner. They may do this based on "
"existing object properties, or based on label data that is maintained with "
-"the assistance of the MAC framework. The framework is sufficiently flexible "
+"the assistance of the MAC framework. The framework is sufficiently flexible "
"to implement a variety of policy types, including information flow security "
"policies such as MLS and Biba, as well as policies based on existing BSD "
-"credentials or file protections. Policy authors may wish to consult this "
+"credentials or file protections. Policy authors may wish to consult this "
"documentation as well as existing security modules when implementing a new "
"security service."
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/working-copy/_index.po b/documentation/content/en/books/fdp-primer/working-copy/_index.po
index df8858d4be..2cbe791b89 100644
--- a/documentation/content/en/books/fdp-primer/working-copy/_index.po
+++ b/documentation/content/en/books/fdp-primer/working-copy/_index.po
@@ -1,263 +1,264 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:20-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/fdp-primer/working-copy/_index.adoc:1
#, no-wrap
msgid "How to get a working copy of the FreeBSD Documentation Project"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:1
#, no-wrap
msgid "Chapter 3. The Working Copy"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:13
#, no-wrap
msgid "The Working Copy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:52
msgid ""
"The _working copy_ is a copy of the FreeBSD repository documentation tree "
"downloaded onto the local computer. Changes are made to the local working "
"copy, tested, and then submitted as patches to be committed to the main "
"repository."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:55
msgid ""
"A full copy of the documentation tree can occupy 550 megabytes of disk "
"space. Allow for a full gigabyte of space to have room for temporary files "
"and test versions of various output formats."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:58
msgid ""
"link:https://git-scm.com/[Git] is used to manage the FreeBSD documentation "
-"files. It is obtained by installing the Git package:"
+"files. It is obtained by installing the package:devel/git[] package, which "
+"also has a lighter flavor called git-lite:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:62
#, no-wrap
msgid "# pkg install git-lite\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:65
#, no-wrap
msgid "Documentation and Manual Pages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:71
msgid ""
"FreeBSD documentation is not just books and articles. Manual pages for all "
"the commands and configuration files are also part of the documentation, and "
"part of the FDP's territory. Two repositories are involved: `doc` for the "
"books and articles, and `src` for the operating system and manual pages. To "
"edit manual pages, the `src` repository must be checked out separately."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:74
msgid ""
"Repositories may contain multiple versions of documentation and source "
"code. New modifications are almost always made only to the latest version, "
"called `main`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:76
#, no-wrap
msgid "Choosing a Directory"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:81
msgid ""
"FreeBSD documentation is traditionally stored in [.filename]#/usr/doc/#, and "
"system source code with manual pages in [.filename]#/usr/src/#. These "
"directory trees are relocatable, and users may want to put the working "
"copies in other locations to avoid interfering with existing information in "
"the main directories. The examples that follow use [.filename]#~/doc# and [."
"filename]#~/src#, both subdirectories of the user's home directory."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:83
#, no-wrap
msgid "Checking Out a Copy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:87
msgid ""
"A download of a working copy from the repository is called a _clone_, and "
"done with `git clone`. This example clones a copy of the latest version "
"(`main`) of the main documentation tree:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:91
#, no-wrap
msgid "% git clone https://git.FreeBSD.org/doc.git ~/doc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:94
msgid "A checkout of the source code to work on manual pages is very similar:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:98
#, no-wrap
msgid "% git clone https://git.FreeBSD.org/src.git ~/src\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:101
#, no-wrap
msgid "Updating a Working Copy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:107
msgid ""
"The documents and files in the FreeBSD repository change daily. People "
"modify files and commit changes frequently. Even a short time after an "
"initial checkout, there will already be differences between the local "
"working copy and the main FreeBSD repository. To update the local version "
"with the changes that have been made to the main repository, use `git pull` "
"on the directory containing the local working copy:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:112
#, no-wrap
msgid ""
"% cd ~/doc\n"
"% git pull --ff-only\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:117
msgid ""
"Get in the protective habit of using `git pull` before editing document "
"files. Someone else may have edited that file very recently, and the local "
"working copy will not include the latest changes until it has been updated. "
"Editing the newest version of a file is much easier than trying to combine "
"an older, edited local file with the newer version from the repository."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:119
#, no-wrap
msgid "Reverting Changes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:124
msgid ""
"Sometimes it turns out that changes were not necessary after all, or the "
"writer just wants to start over. Files can be \"reset\" to their unchanged "
"form with `git restore`. For example, to erase the edits made to [."
"filename]#_index.adoc# and reset it to unmodified form:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:128
#, no-wrap
msgid "% git restore _index.adoc\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:131
#, no-wrap
msgid "Making a Diff"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:135
msgid ""
"After edits to a file or group of files are completed, the differences "
"between the local working copy and the version on the FreeBSD repository "
"must be collected into a single file for submission. These _diff_ files are "
"produced by redirecting the output of `git diff` into a file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:140
#, no-wrap
msgid ""
"% cd ~/doc\n"
"% git diff > doc-fix-spelling.diff\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:144
msgid ""
"Give the file a meaningful name that identifies the contents. The example "
"above is for spelling fixes to the whole documentation tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:146
msgid ""
"If the diff file is to be submitted with the web \"link:https://bugs.FreeBSD."
"org/bugzilla/enter_bug.cgi[Submit a FreeBSD problem report]\" interface, add "
"a [.filename]#.txt# extension to give the earnest and simple-minded web form "
"a clue that the contents are plain text."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:149
msgid ""
"Be careful: `git diff` includes all changes made in the current directory "
"and any subdirectories. If there are files in the working copy with edits "
"that are not ready to be submitted yet, provide a list of only the files "
"that are to be included:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:154
#, no-wrap
msgid ""
"% cd ~/doc\n"
"% git diff disks/_index.adoc printers/_index.adoc > disks-printers.diff\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:157
#, no-wrap
msgid "Git References"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/working-copy/_index.adoc:160
msgid ""
"These examples show very basic usage of Git. More detail is available in "
"the https://git-scm.com/book/en/v2[Git Book] and the https://git-scm.com/"
"doc[Git documentation]."
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/writing-style/_index.po b/documentation/content/en/books/fdp-primer/writing-style/_index.po
index f5e9fecb74..1e212933fe 100644
--- a/documentation/content/en/books/fdp-primer/writing-style/_index.po
+++ b/documentation/content/en/books/fdp-primer/writing-style/_index.po
@@ -1,857 +1,883 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/fdp-primer/writing-style/_index.adoc:1
#, no-wrap
msgid "Writing Style and some conventions used in the FreeBSD Documentation Project"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:1
#, no-wrap
msgid "Chapter 11. Writing Style"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:13
#, no-wrap
msgid "Writing Style"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:51
#, no-wrap
msgid "Tips"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:56
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:57
msgid ""
"Technical documentation can be improved by consistent use of several "
"principles. Most of these can be classified into three goals: _be clear_, "
-"_be complete_, and _be concise_. These goals can conflict with each other. "
+"_be complete_, and _be concise_. These goals can conflict with each other. "
"Good writing consists of a balance between them."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:58
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:59
#, no-wrap
msgid "Be Clear"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:63
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:64
msgid ""
"Clarity is extremely important. The reader may be a novice, or reading the "
"document in a second language. Strive for simple, uncomplicated text that "
"clearly explains the concepts."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:67
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:68
msgid ""
"Avoid flowery or embellished speech, jokes, or colloquial expressions. "
"Write as simply and clearly as possible. Simple text is easier to "
"understand and translate."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:72
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:73
msgid ""
"Keep explanations as short, simple, and clear as possible. Avoid empty "
"phrases like \"in order to\", which usually just means \"to\". Avoid "
"potentially patronizing words like \"basically\". Avoid Latin terms like "
"\"i.e.,\" or \"cf.\", which may be unknown outside of academic or scientific "
"groups."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:76
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:77
msgid ""
"Write in a formal style. Avoid addressing the reader as \"you\". For "
"example, say \"copy the file to [.filename]#/tmp#\" rather than \"you can "
"copy the file to [.filename]#/tmp#\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:84
msgid ""
"Give clear, correct, _tested_ examples. A trivial example is better than no "
"example. A good example is better yet. Do not give bad examples, "
"identifiable by apologies or sentences like \"but really it should never be "
"done that way\". Bad examples are worse than no examples. Give good "
"examples, because _even when warned not to use the example as shown_, the "
"reader will usually just use the example as shown."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:87
msgid ""
"Avoid _weasel words_ like \"should\", \"might\", \"try\", or \"could\". "
"These words imply that the speaker is unsure of the facts, and create doubt "
"in the reader."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:89
msgid ""
"Similarly, give instructions as imperative commands: not \"you should do "
"this\", but merely \"do this\"."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:91
#, no-wrap
msgid "Be Complete"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:97
msgid ""
"Do not make assumptions about the reader's abilities or skill level. Tell "
"them what they need to know. Give links to other documents to provide "
"background information without having to recreate it. Put yourself in the "
"reader's place, anticipate the questions they will ask, and answer them."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:99
#, no-wrap
msgid "Be Concise"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:107
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:104
msgid ""
"While features should be documented completely, sometimes there is so much "
"information that the reader cannot easily find the specific detail needed. "
"The balance between being complete and being concise is a challenge. One "
"approach is to have an introduction, then a \"quick start\" section that "
"describes the most common situation, followed by an in-depth reference "
"section."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:109
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:106
#, no-wrap
msgid "Guidelines"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:113
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:109
msgid ""
"To promote consistency between the myriad authors of the FreeBSD "
"documentation, some guidelines have been drawn up for authors to follow."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:114
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:110
#, no-wrap
msgid "Use American English Spelling"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:118
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:114
msgid ""
"There are several variants of English, with different spellings for the same "
"word. Where spellings differ, use the American English variant. \"color\", "
"not \"colour\", \"rationalize\", not \"rationalise\", and so on."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:124
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:119
msgid ""
"The use of British English may be accepted in the case of a contributed "
"article, however the spelling must be consistent within the whole document. "
-"The other documents such as books, web site, manual pages, etc. will have to "
-"use American English."
+"The other documents such as books, web site, manual pages, etc. must use "
+"American English."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:126
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:121
#, no-wrap
msgid "Do not use contractions"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:130
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:125
msgid ""
"Do not use contractions. Always spell the phrase out in full. \"Don't use "
"contractions\" is wrong."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:132
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:127
msgid ""
"Avoiding contractions makes for a more formal tone, is more precise, and is "
"slightly easier for translators."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:133
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:128
#, no-wrap
msgid "Use the serial comma"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:136
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:131
msgid ""
"In a list of items within a paragraph, separate each item from the others "
"with a comma. Separate the last item from the others with a comma and the "
"word \"and\"."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:138
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:133
msgid "For example:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:140
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:135
msgid "This is a list of one, two and three items."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:142
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:137
msgid ""
"Is this a list of three items, \"one\", \"two\", and \"three\", or a list of "
"two items, \"one\" and \"two and three\"?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:144
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:139
msgid "It is better to be explicit and include a serial comma:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:146
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:141
msgid "This is a list of one, two, and three items."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:146
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:141
#, no-wrap
msgid "Avoid redundant phrases"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:149
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:144
msgid ""
"Do not use redundant phrases. In particular, \"the command\", \"the file\", "
"and \"man command\" are often redundant."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:151
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:146
msgid "For example, commands:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:153
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:148
msgid "Wrong: Use the `git` command to update sources."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:155
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:150
msgid "Right: Use `git` to update sources."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:157
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:152
msgid "Filenames:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:159
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:154
msgid "Wrong: ... in the filename [.filename]#/etc/rc.local#..."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:161
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:156
msgid "Right: ... in [.filename]#/etc/rc.local#..."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:163
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:158
msgid ""
"Manual page references (the second example uses `citerefentry` with the man:"
-"csh[1] entity):."
+"csh[1] entity):"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:165
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:160
msgid "Wrong: See `man csh` for more information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:167
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:162
msgid "Right: See man:csh[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:169
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:164
msgid ""
"For more information about writing style, see http://www.bartleby.com/141/"
-"[Elements of Style], by William Strunk."
+"[Elements of Style] by William Strunk."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:171
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:166
#, no-wrap
msgid "Style Guide"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:174
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:169
msgid ""
"To keep the source for the documentation consistent when many different "
"people are editing it, please follow these style conventions."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:176
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:171
#, no-wrap
msgid "One sentence per line"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:181
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:176
msgid ""
"Use Semantic Line Breaks in the documentation, a technique called \"one "
"sentence per line\". The idea of this technique is to help the users to "
"write and read documentation. To get more information about this technique "
"read the link:https://sembr.org/[Semantic Line Breaks] page."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:183
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:178
msgid "This is an example which does not use \"one sentence per line\"."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:186
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:181
#, no-wrap
msgid "All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:189
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:184
msgid "And this is an example which uses the technique."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:193
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:188
#, no-wrap
msgid ""
"All human beings are born free and equal in dignity and rights.\n"
"They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.\n"
msgstr ""
-#. type: Title ===
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:196
+#. type: Title ==
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:191
#, no-wrap
msgid "Acronyms"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:201
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:196
msgid ""
"Acronyms should be defined the first time they appear in a document, as in: "
"\"Network Time Protocol (NTP)\". After the acronym has been defined, use "
"the acronym alone unless it makes more sense contextually to use the whole "
"term. Acronyms are usually defined only once per chapter or per document."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:203
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:198
msgid "All acronyms should be enclosed using the ` character."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:205
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:200
#, no-wrap
msgid "Special Character List"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:209
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:204
msgid ""
"This list of special characters shows the correct syntax and the output when "
"used in FreeBSD documentation. If a character is not on this list, ask "
"about it on the {freebsd-doc}."
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:214
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:269
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:209
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:264
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:215
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:210
#, no-wrap
msgid "Syntax"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:218
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:213
#, no-wrap
msgid "Rendered"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:219
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:214
#, no-wrap
msgid "Copyright"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:220
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:215
#, no-wrap
msgid "+(C)+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:222
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:217
#, no-wrap
msgid "(C)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:223
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:218
#, no-wrap
msgid "Registered"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:224
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:219
#, no-wrap
msgid "+(R)+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:226
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:221
#, no-wrap
msgid "(R)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:227
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:222
#, no-wrap
msgid "Trademark"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:228
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:223
#, no-wrap
msgid "+(TM)+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:230
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:225
#, no-wrap
msgid "(TM)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:231
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:226
#, no-wrap
msgid "Em dash"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:232
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:227
#, no-wrap
msgid "+--+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:234
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:229
#, no-wrap
msgid "--"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:235
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:230
#, no-wrap
msgid "Ellipses"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:236
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:231
#, no-wrap
msgid "+...+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:238
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:233
#, no-wrap
msgid "..."
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:239
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:234
#, no-wrap
msgid "Single right arrow"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:240
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:235
#, no-wrap
msgid "+->+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:242
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:237
#, no-wrap
msgid "->"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:243
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:238
#, no-wrap
msgid "Double right arrow"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:244
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:239
#, no-wrap
msgid "+=>+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:246
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:241
#, no-wrap
msgid "=>"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:247
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:242
#, no-wrap
msgid "Single left arrow"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:248
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:243
#, no-wrap
msgid "+<-+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:250
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:245
#, no-wrap
msgid "<-"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:251
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:246
#, no-wrap
msgid "Double left arrow"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:252
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:247
#, no-wrap
msgid "+<=+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:254
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:249
#, no-wrap
msgid "<="
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:257
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:252
#, no-wrap
msgid "Linting with Vale"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:262
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:257
msgid ""
"To maintain clarity and consistency across all documentation and website "
"pages, link:https://vale.sh[Vale] styles have been introduced in the "
"documentation tree. link:https://vale.sh[Vale] is a powerful linter for "
-"writing customized rules and can be used in multiple scenarios. At this "
-"moment link:https://vale.sh[Vale] can be used as a command line tool, for CI/"
-"CD pipeline and integrated into editor of choice."
+"writing customized rules and can be used in multiple scenarios. Currently "
+"link:https://vale.sh[Vale] can be used as a command line tool, for CI/CD "
+"pipelines, and integrated into an editor of choice."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:264
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:259
msgid ""
-"The following table describes the current rule names and respective severity."
+"The following table describes the current rule names and their respective "
+"severity."
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:271
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:266
#, no-wrap
msgid "Severity"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:272
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:267
#, no-wrap
-msgid "BrandTerms"
+msgid "FreeBSD.BrandTerms"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:274
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:295
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:269
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:287
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:293
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:296
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:299
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:302
#, no-wrap
msgid "error"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:275
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:270
#, no-wrap
-msgid "ConsciousLanguage"
+msgid "FreeBSD.ConsciousLanguage"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:277
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:283
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:286
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:289
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:292
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:298
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:301
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:272
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:278
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:281
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:284
#, no-wrap
msgid "warning"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:278
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:273
#, no-wrap
-msgid "Contractions"
+msgid "FreeBSD.Contractions"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:280
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:275
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:290
#, no-wrap
-msgid "suggestions"
+msgid "suggestion"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:281
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:276
#, no-wrap
-msgid "EOLSpacing"
+msgid "FreeBSD.EOLSpacing"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:284
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:279
#, no-wrap
-msgid "Hang"
+msgid "FreeBSD.Hang"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:287
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:282
#, no-wrap
-msgid "Hyphens"
+msgid "FreeBSD.Hyphens"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:290
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:285
#, no-wrap
-msgid "Repetition"
+msgid "FreeBSD.Spacing"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:293
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:288
#, no-wrap
-msgid "Spacing"
+msgid "FreeBSD.SuperfluousOptArgInLinks"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:296
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:291
#, no-wrap
-msgid "Spelling"
+msgid "Vale.Avoid"
msgstr ""
#. type: Table
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:299
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:294
+#, no-wrap
+msgid "Vale.Repetition"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:297
#, no-wrap
-msgid "Weasel"
+msgid "Vale.Spelling"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:300
+#, no-wrap
+msgid "Vale.Terms"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:304
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:305
#, no-wrap
msgid "Current Vale Rules"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:309
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:311
msgid ""
-"BrandTerms: Like The FreeBSD Project every major vendors and Companies have "
-"specific rules on writing their Brand Name. according to the Copyright rules "
-"of The FreeBSD Foundation *freebsd* should be written as *FreeBSD*. Similar "
-"to that care should be taken to be respective to other's brand value and "
-"write PostgreSQL, Node.js, Let's Encrypt etc. Missing brand names should be "
-"added to the [.filename]#.vale/styles/FreeBSD/BrandTerms.yml# in the `doc` "
-"repository."
+"FreeBSD.BrandTerms: According to the copyright rules of The FreeBSD "
+"Foundation, *freebsd* should be written as *FreeBSD*. Similarly, every "
+"major vendor and company has specific rules on writing their brand names and "
+"trademarks. Care should be taken to be respectful to the brand value of "
+"others and to take time to write PostgreSQL, Node.js, Let's Encrypt etc. "
+"Missing brand names should be added to the [.filename]#.vale/styles/FreeBSD/"
+"BrandTerms.yml# in the `doc` repository."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:311
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:313
msgid ""
-"Contractions: Contracted words should not be used. This rule avoids all "
-"contractions and suggests full words."
+"FreeBSD.ConsciousLanguage: This rule proposes use of conscious language so "
+"that sensitive words pointing to the color, age, race, or sexual orientation "
+"of people are avoided where possible."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:314
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:316
msgid ""
-"Hang: `Hang` is often used to convey the meaning that the application has "
-"stopped responding. This rule proposes better wording."
+"FreeBSD.Contractions: Contracted words should not be used. This rule avoids "
+"all contractions and suggests full words."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:317
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:318
msgid ""
-"Repetition: Same words are often typed twice when leaving the keyboard and "
-"rejoining the work again. This rule finds repeated words and warns the "
-"users."
+"FreeBSD.EOLSpacing: In most of the documents EOL spacing is present which is "
+"not the desirable situation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:321
msgid ""
-"Weasel: This rule handles avoiding weasel words. The uses of weasel words "
-"is controversial so at the moment the list of words are being evaluated and "
-"the severity level is marked as warning on. In case a frequently used word "
-"is marked as weasel word it should be removed from [.filename]#.vale/styles/"
-"FreeBSD/Weasel.yml# in the `doc` repository."
+"FreeBSD.Hang: `Hang` is often used to mean that the application has stopped "
+"responding. This rule proposes better wording."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:323
msgid ""
-"ConsciousLanguage: This rule proposes uses of conscious languages like "
-"avoiding the words white/black/master/slave."
+"FreeBSD.Hyphens: Often adverbs ending with 'ly' are added with a hyphen "
+"which is wrong."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:325
msgid ""
-"EOLSpacing: In most of the documents EOL spacing is present which is not the "
-"desirable situation."
+"FreeBSD.Spacing: Often double spaces are hard to catch with the naked eye "
+"and this is addressed here."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:327
msgid ""
-"Hyphens: Often adverbs ending with 'ly' are being added with a hyphen which "
-"is wrong."
+"FreeBSD.SuperfluousOptArgInLinks: Suggest to empty square brackets in `link:"
+"` macros when the displayed text coincides with the URL."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:329
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:331
msgid ""
-"Spacing: Often double spaces are hard to catch on plain eye which is "
-"addressed here."
+"Vale.Avoid: Enforces the *DO NOT USE* vocabulary terms for The FreeBSD "
+"Project. If any word is found that should not be in the documentation, the "
+"word should be added to [.filename]#.vale/styles/Vocab/Terms/reject.txt# in "
+"the `doc` repository. The list is empty at the moment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:334
msgid ""
-"Spelling: At the moment there is a mix of en_US and en_UK spellings in the "
-"documentation and website. A custom dictionary from link:https://wordlist."
-"aspell.net[Aspell] has been added which uses strictly en_US and do not "
-"accept the en_UK variant of any words. It has also an exception list to "
-"ignore the FreeBSD specific terms. At the moment the list is a basic one "
-"with minimal words just as a proof of concept but if any word is found to be "
-"correct and not available in the dictionary the word should be added to the "
-"[.filename]#.vale/styles/FreeBSD/spelling-exceptions.txt# in the `doc` "
-"repository."
+"Vale.Repetition: Same words are often typed twice when leaving the keyboard "
+"and rejoining the work again. This rule finds repeated words and warns the "
+"users."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:337
+msgid ""
+"Vale.Spelling: At the moment there is a mix of en_US and en_GB spellings in "
+"the documentation and website. Vale comes with an in built dictionary from "
+"which uses strictly en_US and do not accept the en_GB variant of any words."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:341
+msgid ""
+"Vale.Terms: Enforces the *PREFERRED* vocabulary terms for The FreeBSD "
+"Project. At the moment the list of terms is empty and the FreeBSD specific "
+"terms will be added gradually. If any word is found to be correct and not "
+"available in the dictionary the word should be added to the [.filename]#."
+"vale/styles/Vocab/Terms/accept.txt# in the `doc` repository."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:336
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:343
msgid ""
"More rules will be introduced in the upcoming days when and where required."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:338
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:345
#, no-wrap
msgid "Using Vale"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:342
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:349
msgid ""
-"link:https://vale.sh[Vale] can be used from command line and from within "
-"editor or IDE. package:textproc/vale[] can be installed as following:"
+"link:https://vale.sh[Vale] can be used from the command line and from within "
+"an editor or IDE. package:textproc/vale[] can be installed as following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:346
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:353
#, no-wrap
msgid "$ pkg install vale\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:349
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:356
#, no-wrap
-msgid "Using Vale in command line"
+msgid "Using Vale on the command line"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:352
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:359
msgid ""
-"Considering the fact that `doc` repository was cloned into [.filename]#~/"
-"doc# the following commands are required to run:"
+"Assuming that the `doc` repository was cloned into [.filename]#~/doc# the "
+"following commands are required to run:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:357
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:364
#, no-wrap
msgid ""
"% cd ~/doc\n"
"% vale .\n"
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:363
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:370
msgid ""
"link:https://vale.sh[Vale] is a CPU and memory intensive program due to the "
"nature of the application and can take a while to show any output on the "
-"screen. Better way to run the application is on specific folders or files "
+"screen. A better way to run the application is on specific folders or files "
"rather than the entire `doc` repository as that is already done in the CI "
"pipeline."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:366
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:373
#, no-wrap
msgid "Using Vale in editors"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:370
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:377
msgid ""
"link:https://vale.sh[Vale] works with major mainstream editors like package:"
"editors/vim[], package:editors/emacs[], package:editors/vscode[]. At the "
-"moment the necessary configurations for package:editors/vim[] is described "
-"in crossref:editor-config[editor-config-vim, Vim]. Necessary configurations "
-"for package:editors/emacs[] is being worked on."
+"moment the necessary configuration for package:editors/vim[] is described in "
+"crossref:editor-config[editor-config-vim, Vim]. A configuration for package:"
+"editors/emacs[] is being worked on."
msgstr ""
diff --git a/documentation/content/en/books/handbook/config/_index.po b/documentation/content/en/books/handbook/config/_index.po
index 1ed5239be1..74efda791d 100644
--- a/documentation/content/en/books/handbook/config/_index.po
+++ b/documentation/content/en/books/handbook/config/_index.po
@@ -1,4025 +1,4024 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/config/_index.adoc:1
#, no-wrap
msgid "This chapter explains much of the FreeBSD configuration process, including some of the parameters which can be set to tune a FreeBSD system."
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/config/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/config/_index.adoc:1
#, no-wrap
msgid "Chapter 13. Configuration and Tuning"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/config/_index.adoc:14
#, no-wrap
msgid "Configuration and Tuning"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:56
msgid ""
"One of the important aspects of FreeBSD is proper system configuration. "
"This chapter explains much of the FreeBSD configuration process, including "
"some of the parameters which can be set to tune a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:58
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:60
msgid ""
"The basics of [.filename]#rc.conf# configuration and [.filename]#/usr/local/"
"etc/rc.d# startup scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:61
msgid "How to configure and test a network card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:62
msgid "How to configure virtual hosts on network devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:63
msgid "How to use the various configuration files in [.filename]#/etc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:64
msgid "How to tune FreeBSD using man:sysctl[8] variables."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:65
msgid "How to tune disk performance and modify kernel limitations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:67
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:69
msgid ""
"Understand UNIX(R) and FreeBSD basics (crossref:basics[basics,FreeBSD "
"Basics])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:70
msgid ""
"Be familiar with the basics of kernel configuration and compilation "
"(crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:72
#, no-wrap
msgid "Starting Services"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:77
msgid ""
"Many users install third party software on FreeBSD from the Ports Collection "
"and require the installed services to be started upon system "
"initialization. Services, such as package:mail/postfix[] or package:www/"
"apache22[] are just two of the many software packages which may be started "
"during system initialization. This section explains the procedures "
"available for starting third party software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:79
msgid ""
"In FreeBSD, most included services, such as man:cron[8], are started through "
"the system startup scripts."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:80
#, no-wrap
msgid "Extended Application Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:85
msgid ""
"Now that FreeBSD includes [.filename]#rc.d#, configuration of application "
"startup is easier and provides more features. Using the key words discussed "
"in <<configtuning-rcd>>, applications can be set to start after certain "
"other services and extra flags can be passed through [.filename]#/etc/rc."
"conf# in place of hard coded flags in the startup script. A basic script "
"may look similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:93
#, no-wrap
msgid ""
"#!/bin/sh\n"
"#\n"
"# PROVIDE: utility\n"
"# REQUIRE: DAEMON\n"
"# KEYWORD: shutdown\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:95
#, no-wrap
msgid ". /etc/rc.subr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:98
#, no-wrap
msgid ""
"name=utility\n"
"rcvar=utility_enable\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:100
#, no-wrap
msgid "command=\"/usr/local/sbin/utility\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:102
#, no-wrap
msgid "load_rc_config $name\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:109
#, no-wrap
msgid ""
"#\n"
"# DO NOT CHANGE THESE DEFAULT VALUES HERE\n"
"# SET THEM IN THE /etc/rc.conf FILE\n"
"#\n"
"utility_enable=${utility_enable-\"NO\"}\n"
"pidfile=${utility_pidfile-\"/var/run/utility.pid\"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:111
#, no-wrap
msgid "run_rc_command \"$1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:115
msgid ""
"This script will ensure that the provided `utility` will be started after "
"the `DAEMON` pseudo-service. It also provides a method for setting and "
"tracking the process ID (PID)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:117
msgid ""
"This application could then have the following line placed in [.filename]#/"
"etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:121
#, no-wrap
msgid "utility_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:124
msgid ""
"This method allows for easier manipulation of command line arguments, "
"inclusion of the default functions provided in [.filename]#/etc/rc.subr#, "
"compatibility with man:rcorder[8], and provides for easier configuration via "
"[.filename]#rc.conf#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:125
#, no-wrap
msgid "Using Services to Start Services"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:129
msgid ""
"Other services can be started using man:inetd[8]. Working with man:inetd[8] "
"and its configuration is described in depth in crossref:network-"
"servers[network-inetd,“The inetd Super-Server”]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:133
msgid ""
"In some cases, it may make more sense to use man:cron[8] to start system "
"services. This approach has a number of advantages as man:cron[8] runs "
"these processes as the owner of the man:crontab[5]. This allows regular "
"users to start and maintain their own applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:136
msgid ""
"The `@reboot` feature of man:cron[8], may be used in place of the time "
"specification. This causes the job to run when man:cron[8] is started, "
"normally during system initialization."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:138
#, no-wrap
msgid "Configuring man:cron[8]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:144
msgid ""
"One of the most useful utilities in FreeBSD is cron. This utility runs in "
"the background and regularly checks [.filename]#/etc/crontab# for tasks to "
"execute and searches [.filename]#/var/cron/tabs# for custom crontab files. "
"These files are used to schedule tasks which cron runs at the specified "
"times. Each entry in a crontab defines a task to run and is known as a "
"_cron job_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:150
msgid ""
"Two different types of configuration files are used: the system crontab, "
"which should not be modified, and user crontabs, which can be created and "
"edited as needed. The format used by these files is documented in man:"
"crontab[5]. The format of the system crontab, [.filename]#/etc/crontab# "
"includes a `who` column which does not exist in user crontabs. In the "
"system crontab, cron runs the command as the user specified in this column. "
"In a user crontab, all commands run as the user who created the crontab."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:153
msgid ""
"User crontabs allow individual users to schedule their own tasks. The "
"`root` user can also have a user [.filename]#crontab# which can be used to "
"schedule tasks that do not exist in the system [.filename]#crontab#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:155
msgid ""
"Here is a sample entry from the system crontab, [.filename]#/etc/crontab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:168
#, no-wrap
msgid ""
"# /etc/crontab - root's crontab for FreeBSD\n"
"#\n"
"# $FreeBSD$\n"
"# <.>\n"
"SHELL=/bin/sh\n"
"PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin <.>\n"
"#\n"
"#minute\thour\tmday\tmonth\twday\twho\tcommand <.>\n"
"#\n"
"*/5\t*\t*\t*\t*\troot\t/usr/libexec/atrun <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:171
msgid ""
"Lines that begin with the `+#+` character are comments. A comment can be "
"placed in the file as a reminder of what and why a desired action is "
"performed. Comments cannot be on the same line as a command or else they "
"will be interpreted as part of the command; they must be on a new line. "
"Blank lines are ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:173
msgid ""
"The equals (`=`) character is used to define any environment settings. In "
"this example, it is used to define the `SHELL` and `PATH`. If the `SHELL` is "
"omitted, cron will use the default Bourne shell. If the `PATH` is omitted, "
"the full path must be given to the command or script to run."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:175
msgid ""
"This line defines the seven fields used in a system crontab: `minute`, "
"`hour`, `mday`, `month`, `wday`, `who`, and `command`. The `minute` field is "
"the time in minutes when the specified command will be run, the `hour` is "
"the hour when the specified command will be run, the `mday` is the day of "
"the month, `month` is the month, and `wday` is the day of the week. These "
"fields must be numeric values, representing the twenty-four hour clock, or a "
"`*`, representing all values for that field. The `who` field only exists in "
"the system crontab and specifies which user the command should be run as. "
"The last field is the command to be executed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:177
msgid ""
"This entry defines the values for this cron job. The `\\*/5`, followed by "
"several more `*` characters, specifies that `/usr/libexec/atrun` is invoked "
"by `root` every five minutes of every hour, of every day and day of the "
"week, of every month.Commands can include any number of switches. However, "
"commands which extend to multiple lines need to be broken with the backslash "
"\"\\\" continuation character."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:179
#, no-wrap
msgid "Creating a User Crontab"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:182
msgid "To create a user crontab, invoke `crontab` in editor mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:186
#, no-wrap
msgid "% crontab -e\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:191
msgid ""
"This will open the user's crontab using the default text editor. The first "
"time a user runs this command, it will open an empty file. Once a user "
"creates a crontab, this command will open that file for editing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:193
msgid ""
"It is useful to add these lines to the top of the crontab file in order to "
"set the environment variables and to remember the meanings of the fields in "
"the crontab:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:200
#, no-wrap
msgid ""
"SHELL=/bin/sh\n"
"PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin\n"
"# Order of crontab fields\n"
"# minute\thour\tmday\tmonth\twday\tcommand\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:205
msgid ""
"Then add a line for each command or script to run, specifying the time to "
"run the command. This example runs the specified custom Bourne shell script "
"every day at two in the afternoon. Since the path to the script is not "
"specified in `PATH`, the full path to the script is given:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:209
#, no-wrap
msgid "0\t14\t*\t*\t*\t/usr/home/dru/bin/mycustomscript.sh\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:216
msgid ""
"Before using a custom script, make sure it is executable and test it with "
"the limited set of environment variables set by cron. To replicate the "
"environment that would be used to run the above cron entry, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:220
#, no-wrap
msgid "env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/dru LOGNAME=dru /usr/home/dru/bin/mycustomscript.sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:224
msgid ""
"The environment set by cron is discussed in man:crontab[5]. Checking that "
"scripts operate correctly in a cron environment is especially important if "
"they include any commands that delete files using wildcards."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:229
msgid ""
"When finished editing the crontab, save the file. It will automatically be "
"installed and cron will read the crontab and run its cron jobs at their "
"specified times. To list the cron jobs in a crontab, use this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:234
#, no-wrap
msgid ""
"% crontab -l\n"
"0\t14\t*\t*\t*\t/usr/home/dru/bin/mycustomscript.sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:237
msgid "To remove all of the cron jobs in a user crontab:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:242
#, no-wrap
msgid ""
"% crontab -r\n"
"remove crontab for dru? y\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:245
#, no-wrap
msgid "Managing Services in FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:250
msgid ""
"FreeBSD uses the man:rc[8] system of startup scripts during system "
"initialization and for managing services. The scripts listed in [."
"filename]#/etc/rc.d# provide basic services which can be controlled with the "
"`start`, `stop`, and `restart` options to man:service[8]. For instance, man:"
"sshd[8] can be restarted with the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:254
#, no-wrap
msgid "# service sshd restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:259
msgid ""
"This procedure can be used to start services on a running system. Services "
"will be started automatically at boot time as specified in man:rc.conf[5]. "
"For example, to enable man:natd[8] at system startup, add the following line "
"to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:263
#, no-wrap
msgid "natd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:267
msgid ""
"If a `natd_enable=\"NO\"` line is already present, change the `NO` to "
"`YES`. The man:rc[8] scripts will automatically load any dependent services "
"during the next boot, as described below."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:272
msgid ""
"Since the man:rc[8] system is primarily intended to start and stop services "
"at system startup and shutdown time, the `start`, `stop` and `restart` "
"options will only perform their action if the appropriate [.filename]#/etc/"
"rc.conf# variable is set. For instance, `sshd restart` will only work if "
"`sshd_enable` is set to `YES` in [.filename]#/etc/rc.conf#. To `start`, "
"`stop` or `restart` a service regardless of the settings in [.filename]#/etc/"
"rc.conf#, these commands should be prefixed with \"one\". For instance, to "
"restart man:sshd[8] regardless of the current [.filename]#/etc/rc.conf# "
"setting, execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:276
#, no-wrap
msgid "# service sshd onerestart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:280
msgid ""
"To check if a service is enabled in [.filename]#/etc/rc.conf#, run the "
"appropriate man:rc[8] script with `rcvar`. This example checks to see if "
"man:sshd[8] is enabled in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:288
#, no-wrap
msgid ""
"# service sshd rcvar\n"
"# sshd\n"
"#\n"
"sshd_enable=\"YES\"\n"
"# (default: \"\")\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:293
msgid ""
"The `# sshd` line is output from the above command, not a `root` console."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:297
msgid ""
"To determine whether or not a service is running, use `status`. For "
"instance, to verify that man:sshd[8] is running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:302
#, no-wrap
msgid ""
"# service sshd status\n"
"sshd is running as pid 433.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:308
msgid ""
"In some cases, it is also possible to `reload` a service. This attempts to "
"send a signal to an individual service, forcing the service to reload its "
"configuration files. In most cases, this means sending the service a "
"`SIGHUP` signal. Support for this feature is not included for every service."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:311
msgid ""
"The man:rc[8] system is used for network services and it also contributes to "
"most of the system initialization. For instance, when the [.filename]#/etc/"
"rc.d/bgfsck# script is executed, it prints out the following message:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:315
#, no-wrap
msgid "Starting background file system checks in 60 seconds.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:318
msgid ""
"This script is used for background file system checks, which occur only "
"during system initialization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:323
msgid ""
"Many system services depend on other services to function properly. For "
"example, man:yp[8] and other RPC-based services may fail to start until "
"after the man:rpcbind[8] service has started. To resolve this issue, "
"information about dependencies and other meta-data is included in the "
"comments at the top of each startup script. The man:rcorder[8] program is "
"used to parse these comments during system initialization to determine the "
"order in which system services should be invoked to satisfy the dependencies."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:325
msgid ""
"The following key word must be included in all startup scripts as it is "
"required by man:rc.subr[8] to \"enable\" the startup script:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:327
msgid "`PROVIDE`: Specifies the services this file provides."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:330
msgid ""
"The following key words may be included at the top of each startup script. "
"They are not strictly necessary, but are useful as hints to man:rcorder[8]:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:332
msgid ""
"`REQUIRE`: Lists services which are required for this service. The script "
"containing this key word will run _after_ the specified services."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:333
msgid ""
"`BEFORE`: Lists services which depend on this service. The script containing "
"this key word will run _before_ the specified services."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:335
msgid ""
"By carefully setting these keywords for each startup script, an "
"administrator has a fine-grained level of control of the startup order of "
"the scripts, without the need for \"runlevels\" used by some UNIX(R) "
"operating systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:338
msgid ""
"Additional information can be found in man:rc[8] and man:rc.subr[8]. Refer "
"to extref:{rc-scripting}[this article] for instructions on how to create "
"custom man:rc[8] scripts."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:340
#, no-wrap
msgid "Managing System-Specific Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:345
msgid ""
"The principal location for system configuration information is [.filename]#/"
"etc/rc.conf#. This file contains a wide range of configuration information "
"and it is read at system startup to configure the system. It provides the "
"configuration information for the [.filename]#rc*# files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:349
msgid ""
"The entries in [.filename]#/etc/rc.conf# override the default settings in [."
"filename]#/etc/defaults/rc.conf#. The file containing the default settings "
"should not be edited. Instead, all system-specific changes should be made "
"to [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:353
msgid ""
"A number of strategies may be applied in clustered applications to separate "
"site-wide configuration from system-specific configuration in order to "
"reduce administration overhead. The recommended approach is to place system-"
"specific configuration into [.filename]#/etc/rc.conf.local#. For example, "
"these entries in [.filename]#/etc/rc.conf# apply to all systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:359
#, no-wrap
msgid ""
"sshd_enable=\"YES\"\n"
"keyrate=\"fast\"\n"
"defaultrouter=\"10.1.1.254\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:362
msgid ""
"Whereas these entries in [.filename]#/etc/rc.conf.local# apply to this "
"system only:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:367
#, no-wrap
msgid ""
"hostname=\"node1.example.org\"\n"
"ifconfig_fxp0=\"inet 10.1.1.1/8\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:370
msgid ""
"Distribute [.filename]#/etc/rc.conf# to every system using an application "
"such as rsync or puppet, while [.filename]#/etc/rc.conf.local# remains "
"unique."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:372
msgid ""
"Upgrading the system will not overwrite [.filename]#/etc/rc.conf#, so system "
"configuration information will not be lost."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:379
msgid ""
"Both [.filename]#/etc/rc.conf# and [.filename]#/etc/rc.conf.local# are "
"parsed by man:sh[1]. This allows system operators to create complex "
"configuration scenarios. Refer to man:rc.conf[5] for further information on "
"this topic."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:382
#, no-wrap
msgid "Setting Up Network Interface Cards"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:385
msgid ""
"Adding and configuring a network interface card (NIC) is a common task for "
"any FreeBSD administrator."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:386
#, no-wrap
msgid "Locating the Correct Driver"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:391
msgid ""
"First, determine the model of the NIC and the chip it uses. FreeBSD "
"supports a wide variety of NICs. Check the Hardware Compatibility List for "
"the FreeBSD release to see if the NIC is supported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:395
msgid ""
"If the NIC is supported, determine the name of the FreeBSD driver for the "
"NIC. Refer to [.filename]#/usr/src/sys/conf/NOTES# and [.filename]#/usr/src/"
"sys/arch/conf/NOTES# for the list of NIC drivers with some information about "
"the supported chipsets. When in doubt, read the manual page of the driver "
"as it will provide more information about the supported hardware and any "
"known limitations of the driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:399
msgid ""
"The drivers for common NICs are already present in the [.filename]#GENERIC# "
"kernel, meaning the NIC should be probed during boot. The system's boot "
"messages can be viewed by typing `more /var/run/dmesg.boot` and using the "
"spacebar to scroll through the text. In this example, two Ethernet NICs "
"using the man:dc[4] driver are present on the system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:416
#, no-wrap
msgid ""
"dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38\n"
"000ff irq 15 at device 11.0 on pci0\n"
"miibus0: <MII bus> on dc0\n"
"bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0\n"
"bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto\n"
"dc0: Ethernet address: 00:a0:cc:da:da:da\n"
"dc0: [ITHREAD]\n"
"dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30\n"
"000ff irq 11 at device 12.0 on pci0\n"
"miibus1: <MII bus> on dc1\n"
"bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1\n"
"bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto\n"
"dc1: Ethernet address: 00:a0:cc:da:da:db\n"
"dc1: [ITHREAD]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:420
msgid ""
"If the driver for the NIC is not present in [.filename]#GENERIC#, but a "
"driver is available, the driver will need to be loaded before the NIC can be "
"configured and used. This may be accomplished in one of two ways:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:422
msgid ""
"The easiest way is to load a kernel module for the NIC using man:kldload[8]. "
"To also automatically load the driver at boot time, add the appropriate line "
"to [.filename]#/boot/loader.conf#. Not all NIC drivers are available as "
"modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:423
msgid ""
"Alternatively, statically compile support for the NIC into a custom kernel. "
"Refer to [.filename]#/usr/src/sys/conf/NOTES#, [.filename]#/usr/src/sys/arch/"
"conf/NOTES# and the manual page of the driver to determine which line to add "
"to the custom kernel configuration file. For more information about "
"recompiling the kernel, refer to crossref:kernelconfig[kernelconfig,"
"Configuring the FreeBSD Kernel]. If the NIC was detected at boot, the kernel "
"does not need to be recompiled."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:425
#, no-wrap
msgid "Using Windows(R) NDIS Drivers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:429
msgid ""
"Unfortunately, there are still many vendors that do not provide schematics "
"for their drivers to the open source community because they regard such "
"information as trade secrets. Consequently, the developers of FreeBSD and "
"other operating systems are left with two choices: develop the drivers by a "
"long and pain-staking process of reverse engineering or using the existing "
"driver binaries available for Microsoft(R) Windows(R) platforms."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:434
msgid ""
"FreeBSD provides \"native\" support for the Network Driver Interface "
"Specification (NDIS). It includes man:ndisgen[8] which can be used to "
"convert a Windows(R) XP driver into a format that can be used on FreeBSD. "
"As the man:ndis[4] driver uses a Windows(R) XP binary, it only runs on "
"i386(TM) and amd64 systems. PCI, CardBus, PCMCIA, and USB devices are "
"supported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:436
msgid "To use man:ndisgen[8], three things are needed:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:438
msgid "FreeBSD kernel sources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:439
msgid "A Windows(R) XP driver binary with a [.filename]#.SYS# extension."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:440
msgid ""
"A Windows(R) XP driver configuration file with a [.filename]#.INF# extension."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:444
msgid ""
"Download the [.filename]#.SYS# and [.filename]#.INF# files for the specific "
"NIC. Generally, these can be found on the driver CD or at the vendor's "
"website. The following examples use [.filename]#W32DRIVER.SYS# and [."
"filename]#W32DRIVER.INF#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:448
msgid ""
"The driver bit width must match the version of FreeBSD. For FreeBSD/i386, "
"use a Windows(R) 32-bit driver. For FreeBSD/amd64, a Windows(R) 64-bit "
"driver is needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:451
msgid ""
"The next step is to compile the driver binary into a loadable kernel "
"module. As `root`, use man:ndisgen[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:455
#, no-wrap
msgid "# ndisgen /path/to/W32DRIVER.INF /path/to/W32DRIVER.SYS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:460
msgid ""
"This command is interactive and prompts for any extra information it "
"requires. A new kernel module will be generated in the current directory. "
"Use man:kldload[8] to load the new module:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:464
#, no-wrap
msgid "# kldload ./W32DRIVER_SYS.ko\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:469
msgid ""
"In addition to the generated kernel module, the [.filename]#ndis.ko# and [."
"filename]#if_ndis.ko# modules must be loaded. This should happen "
"automatically when any module that depends on man:ndis[4] is loaded. If "
"not, load them manually, using the following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:474
#, no-wrap
msgid ""
"# kldload ndis\n"
"# kldload if_ndis\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:477
msgid ""
"The first command loads the man:ndis[4] miniport driver wrapper and the "
"second loads the generated NIC driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:480
msgid ""
"Check man:dmesg[8] to see if there were any load errors. If all went well, "
"the output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:488
#, no-wrap
msgid ""
"ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1\n"
"ndis0: NDIS API version: 5.0\n"
"ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5\n"
"ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps\n"
"ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:491
msgid "From here, [.filename]#ndis0# can be configured like any other NIC."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:494
msgid ""
"To configure the system to load the man:ndis[4] modules at boot time, copy "
"the generated module, [.filename]#W32DRIVER_SYS.ko#, to [.filename]#/boot/"
"modules#. Then, add the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:498
#, no-wrap
msgid "W32DRIVER_SYS_load=\"YES\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:500
#, no-wrap
msgid "Configuring the Network Card"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:504
msgid ""
"Once the right driver is loaded for the NIC, the card needs to be "
"configured. It may have been configured at installation time by man:"
"bsdinstall[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:506
msgid "To display the NIC configuration, enter the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:528
#, no-wrap
msgid ""
"% ifconfig\n"
"dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" options=80008<VLAN_MTU,LINKSTATE>\n"
" ether 00:a0:cc:da:da:da\n"
" inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255\n"
" media: Ethernet autoselect (100baseTX <full-duplex>)\n"
" status: active\n"
"dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" options=80008<VLAN_MTU,LINKSTATE>\n"
" ether 00:a0:cc:da:da:db\n"
" inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255\n"
" media: Ethernet 10baseT/UTP\n"
" status: no carrier\n"
"lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384\n"
" options=3<RXCSUM,TXCSUM>\n"
" inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4\n"
" inet6 ::1 prefixlen 128\n"
" inet 127.0.0.1 netmask 0xff000000\n"
" nd6 options=3<PERFORMNUD,ACCEPT_RTADV>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:531
msgid "In this example, the following devices were displayed:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:533
msgid "[.filename]#dc0#: The first Ethernet interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:534
msgid "[.filename]#dc1#: The second Ethernet interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:535
msgid "[.filename]#lo0#: The loopback device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:538
msgid ""
"FreeBSD uses the driver name followed by the order in which the card is "
"detected at boot to name the NIC. For example, [.filename]#sis2# is the "
"third NIC on the system using the man:sis[4] driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:541
msgid ""
"In this example, [.filename]#dc0# is up and running. The key indicators are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:543
msgid "`UP` means that the card is configured and ready."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:544
msgid "The card has an Internet (`inet`) address, `192.168.1.3`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:545
msgid ""
"It has a valid subnet mask (`netmask`), where `0xffffff00` is the same as "
"`255.255.255.0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:546
msgid "It has a valid broadcast address, `192.168.1.255`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:547
msgid "The MAC address of the card (`ether`) is `00:a0:cc:da:da:da`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:548
msgid ""
"The physical media selection is on autoselection mode (`media: Ethernet "
"autoselect (100baseTX <full-duplex>)`). In this example, [.filename]#dc1# is "
"configured to run with `10baseT/UTP` media. For more information on "
"available media types for a driver, refer to its manual page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:549
msgid ""
"The status of the link (`status`) is `active`, indicating that the carrier "
"signal is detected. For [.filename]#dc1#, the `status: no carrier` status is "
"normal when an Ethernet cable is not plugged into the card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:551
msgid "If the man:ifconfig[8] output had shown something similar to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:559
#, no-wrap
msgid ""
"dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\toptions=80008<VLAN_MTU,LINKSTATE>\n"
"\tether 00:a0:cc:da:da:da\n"
"\tmedia: Ethernet autoselect (100baseTX <full-duplex>)\n"
"\tstatus: active\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:562
msgid "it would indicate the card has not been configured."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:566
msgid ""
"The card must be configured as `root`. The NIC configuration can be "
"performed from the command line with man:ifconfig[8] but will not persist "
"after a reboot unless the configuration is also added to [.filename]#/etc/rc."
"conf#. If a DHCP server is present on the LAN, just add this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:570
#, no-wrap
msgid "ifconfig_dc0=\"DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:573
msgid "Replace _dc0_ with the correct value for the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:575
msgid ""
"The line added, then, follow the instructions given in <<config-network-"
"testing>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:580
msgid ""
"If the network was configured during installation, some entries for the "
"NIC(s) may be already present. Double check [.filename]#/etc/rc.conf# "
"before adding any lines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:584
msgid ""
"If there is no DHCP server, the NIC(s) must be configured manually. Add a "
"line for each NIC present on the system, as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:589
#, no-wrap
msgid ""
"ifconfig_dc0=\"inet 192.168.1.3 netmask 255.255.255.0\"\n"
"ifconfig_dc1=\"inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:593
msgid ""
"Replace [.filename]#dc0# and [.filename]#dc1# and the IP address information "
"with the correct values for the system. Refer to the man page for the "
"driver, man:ifconfig[8], and man:rc.conf[5] for more details about the "
"allowed options and the syntax of [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:596
msgid ""
"If the network is not using DNS, edit [.filename]#/etc/hosts# to add the "
"names and IP addresses of the hosts on the LAN, if they are not already "
"there. For more information, refer to man:hosts[5] and to [.filename]#/usr/"
"share/examples/etc/hosts#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:600
msgid ""
"If there is no DHCP server and access to the Internet is needed, manually "
"configure the default gateway and the nameserver:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:605
#, no-wrap
msgid ""
"# sysrc defaultrouter=\"your_default_router\"\n"
"# echo 'nameserver your_DNS_server' >> /etc/resolv.conf\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:610
#, no-wrap
msgid "Testing and Troubleshooting"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:614
msgid ""
"Once the necessary changes to [.filename]#/etc/rc.conf# are saved, a reboot "
"can be used to test the network configuration and to verify that the system "
"restarts without any configuration errors. Alternatively, apply the "
"settings to the networking system with this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:618
#, no-wrap
msgid "# service netif restart\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:623
msgid ""
"If a default gateway has been set in [.filename]#/etc/rc.conf#, also issue "
"this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:627
#, no-wrap
msgid "# service routing restart\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:632
msgid "Once the networking system has been relaunched, test the NICs."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:633
#, no-wrap
msgid "Testing the Ethernet Card"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:636
msgid ""
"To verify that an Ethernet card is configured correctly, man:ping[8] the "
"interface itself, and then man:ping[8] another machine on the LAN:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:646
#, no-wrap
msgid ""
"% ping -c5 192.168.1.3\n"
"PING 192.168.1.3 (192.168.1.3): 56 data bytes\n"
"64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:650
#, no-wrap
msgid ""
"--- 192.168.1.3 ping statistics ---\n"
"5 packets transmitted, 5 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:661
#, no-wrap
msgid ""
"% ping -c5 192.168.1.2\n"
"PING 192.168.1.2 (192.168.1.2): 56 data bytes\n"
"64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:665
#, no-wrap
msgid ""
"--- 192.168.1.2 ping statistics ---\n"
"5 packets transmitted, 5 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:671
msgid ""
"To test network resolution, use the host name instead of the IP address. If "
"there is no DNS server on the network, [.filename]#/etc/hosts# must first be "
"configured. To this purpose, edit [.filename]#/etc/hosts# to add the names "
"and IP addresses of the hosts on the LAN, if they are not already there. "
"For more information, refer to man:hosts[5] and to [.filename]#/usr/share/"
"examples/etc/hosts#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:672
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:676
+#: documentation/content/en/books/handbook/config/_index.adoc:680
msgid ""
"When troubleshooting hardware and software configurations, check the simple "
"things first. Is the network cable plugged in? Are the network services "
"properly configured? Is the firewall configured correctly? Is the NIC "
"supported by FreeBSD? Before sending a bug report, always check the Hardware "
"Notes, update the version of FreeBSD to the latest STABLE version, check the "
"mailing list archives, and search the Internet."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:679
+#: documentation/content/en/books/handbook/config/_index.adoc:683
msgid ""
"If the card works, yet performance is poor, read through man:tuning[7]. "
"Also, check the network configuration as incorrect network settings can "
"cause slow connections."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:684
+#: documentation/content/en/books/handbook/config/_index.adoc:688
msgid ""
"Some users experience one or two `device timeout` messages, which is normal "
"for some cards. If they continue, or are bothersome, determine if the "
"device is conflicting with another device. Double check the cable "
"connections. Consider trying another card."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:689
+#: documentation/content/en/books/handbook/config/_index.adoc:693
msgid ""
"To resolve `watchdog timeout` errors, first check the network cable. Many "
"cards require a PCI slot which supports bus mastering. On some old "
"motherboards, only one PCI slot allows it, usually slot 0. Check the NIC "
"and the motherboard documentation to determine if that may be the problem."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:694
+#: documentation/content/en/books/handbook/config/_index.adoc:698
msgid ""
"`No route to host` messages occur if the system is unable to route a packet "
"to the destination host. This can happen if no default route is specified "
"or if a cable is unplugged. Check the output of `netstat -rn` and make sure "
"there is a valid route to the host. If there is not, read crossref:advanced-"
"networking[network-routing,“Gateways and Routes”]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:698
+#: documentation/content/en/books/handbook/config/_index.adoc:702
msgid ""
"`ping: sendto: Permission denied` error messages are often caused by a "
"misconfigured firewall. If a firewall is enabled on FreeBSD but no rules "
"have been defined, the default policy is to deny all traffic, even man:"
"ping[8]. Refer to crossref:firewalls[firewalls,Firewalls] for more "
"information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:703
+#: documentation/content/en/books/handbook/config/_index.adoc:707
msgid ""
"Sometimes performance of the card is poor or below average. In these cases, "
"try setting the media selection mode from `autoselect` to the correct media "
"selection. While this works for most hardware, it may or may not resolve "
"the issue. Again, check all the network settings, and refer to man:"
"tuning[7]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:705
+#: documentation/content/en/books/handbook/config/_index.adoc:709
#, no-wrap
msgid "Virtual Hosts"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:709
+#: documentation/content/en/books/handbook/config/_index.adoc:713
msgid ""
"A common use of FreeBSD is virtual site hosting, where one server appears to "
"the network as many servers. This is achieved by assigning multiple network "
"addresses to a single interface."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:712
+#: documentation/content/en/books/handbook/config/_index.adoc:716
msgid ""
"A given network interface has one \"real\" address, and may have any number "
"of \"alias\" addresses. These aliases are normally added by placing alias "
"entries in [.filename]#/etc/rc.conf#, as seen in this example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:716
+#: documentation/content/en/books/handbook/config/_index.adoc:720
#, no-wrap
msgid "ifconfig_fxp0_alias0=\"inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:720
+#: documentation/content/en/books/handbook/config/_index.adoc:724
msgid ""
"Alias entries must start with `alias__0__` using a sequential number such as "
"`alias0`, `alias1`, and so on. The configuration process will stop at the "
"first missing number."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:724
+#: documentation/content/en/books/handbook/config/_index.adoc:728
msgid ""
"The calculation of alias netmasks is important. For a given interface, "
"there must be one address which correctly represents the network's netmask. "
"Any other addresses which fall within this network must have a netmask of "
"all ``1``s, expressed as either `255.255.255.255` or `0xffffffff`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:729
+#: documentation/content/en/books/handbook/config/_index.adoc:733
msgid ""
"For example, consider the case where the [.filename]#fxp0# interface is "
"connected to two networks: `10.1.1.0` with a netmask of `255.255.255.0` and "
"`202.0.75.16` with a netmask of `255.255.255.240`. The system is to be "
"configured to appear in the ranges `10.1.1.1` through `10.1.1.5` and "
"`202.0.75.17` through `202.0.75.20`. Only the first address in a given "
"network range should have a real netmask. All the rest (`10.1.1.2` through "
"`10.1.1.5` and `202.0.75.18` through `202.0.75.20`) must be configured with "
"a netmask of `255.255.255.255`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:731
+#: documentation/content/en/books/handbook/config/_index.adoc:735
msgid ""
"The following [.filename]#/etc/rc.conf# entries configure the adapter "
"correctly for this scenario:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:743
+#: documentation/content/en/books/handbook/config/_index.adoc:747
#, no-wrap
msgid ""
"ifconfig_fxp0=\"inet 10.1.1.1 netmask 255.255.255.0\"\n"
"ifconfig_fxp0_alias0=\"inet 10.1.1.2 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias1=\"inet 10.1.1.3 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias2=\"inet 10.1.1.4 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias3=\"inet 10.1.1.5 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias4=\"inet 202.0.75.17 netmask 255.255.255.240\"\n"
"ifconfig_fxp0_alias5=\"inet 202.0.75.18 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias6=\"inet 202.0.75.19 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias7=\"inet 202.0.75.20 netmask 255.255.255.255\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:747
+#: documentation/content/en/books/handbook/config/_index.adoc:751
msgid ""
"A simpler way to express this is with a space-separated list of IP address "
"ranges. The first address will be given the indicated subnet mask and the "
"additional addresses will have a subnet mask of `255.255.255.255`."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:751
+#: documentation/content/en/books/handbook/config/_index.adoc:755
#, no-wrap
msgid "ifconfig_fxp0_aliases=\"inet 10.1.1.1-5/24 inet 202.0.75.17-20/28\"\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:754
+#: documentation/content/en/books/handbook/config/_index.adoc:758
#, no-wrap
msgid "Configuring System Logging"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:760
+#: documentation/content/en/books/handbook/config/_index.adoc:764
msgid ""
"Generating and reading system logs is an important aspect of system "
"administration. The information in system logs can be used to detect "
"hardware and software issues as well as application and system configuration "
"errors. This information also plays an important role in security auditing "
"and incident response. Most system daemons and applications will generate "
"log entries."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:766
+#: documentation/content/en/books/handbook/config/_index.adoc:770
msgid ""
"FreeBSD provides a system logger, syslogd, to manage logging. By default, "
"syslogd is started when the system boots. This is controlled by the "
"variable `syslogd_enable` in [.filename]#/etc/rc.conf#. There are numerous "
"application arguments that can be set using `syslogd_flags` in [.filename]#/"
"etc/rc.conf#. Refer to man:syslogd[8] for more information on the available "
"arguments."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:768
+#: documentation/content/en/books/handbook/config/_index.adoc:772
msgid ""
"This section describes how to configure the FreeBSD system logger for both "
"local and remote logging and how to perform log rotation and log management."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:769
+#: documentation/content/en/books/handbook/config/_index.adoc:773
#, no-wrap
msgid "Configuring Local Logging"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:776
+#: documentation/content/en/books/handbook/config/_index.adoc:780
msgid ""
"The configuration file, [.filename]#/etc/syslog.conf#, controls what syslogd "
"does with log entries as they are received. There are several parameters to "
"control the handling of incoming events. The _facility_ describes which "
"subsystem generated the message, such as the kernel or a daemon, and the "
"_level_ describes the severity of the event that occurred. This makes it "
"possible to configure if and where a log message is logged, depending on the "
"facility and level. It is also possible to take action depending on the "
"application that sent the message, and in the case of remote logging, the "
"hostname of the machine generating the logging event."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:784
+#: documentation/content/en/books/handbook/config/_index.adoc:788
msgid ""
"This configuration file contains one line per action, where the syntax for "
"each line is a selector field followed by an action field. The syntax of "
"the selector field is _facility.level_ which will match log messages from "
"_facility_ at level _level_ or higher. It is also possible to add an "
"optional comparison flag before the level to specify more precisely what is "
"logged. Multiple selector fields can be used for the same action, and are "
"separated with a semicolon (`;`). Using `*` will match everything. The "
"action field denotes where to send the log message, such as to a file or "
"remote log host. As an example, here is the default [.filename]#syslog."
"conf# from FreeBSD:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:822
+#: documentation/content/en/books/handbook/config/_index.adoc:826
#, no-wrap
msgid ""
"# $FreeBSD$\n"
"#\n"
"# Spaces ARE valid field separators in this file. However,\n"
"# other *nix-like systems still insist on using tabs as field\n"
"# separators. If you are sharing this file between systems, you\n"
"# may want to use only tabs as field separators here.\n"
"# Consult the syslog.conf(5) manpage.\n"
"*.err;kern.warning;auth.notice;mail.crit /dev/console\n"
"*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages\n"
"security.* /var/log/security\n"
"auth.info;authpriv.info /var/log/auth.log\n"
"mail.info /var/log/maillog\n"
"lpr.info /var/log/lpd-errs\n"
"ftp.info /var/log/xferlog\n"
"cron.* /var/log/cron\n"
"!-devd\n"
"*.=debug /var/log/debug.log\n"
"*.emerg *\n"
"# uncomment this to log all writes to /dev/console to /var/log/console.log\n"
"#console.info /var/log/console.log\n"
"# uncomment this to enable logging of all log messages to /var/log/all.log\n"
"# touch /var/log/all.log and chmod it to mode 600 before it will work\n"
"#*.* /var/log/all.log\n"
"# uncomment this to enable logging to a remote loghost named loghost\n"
"#*.* @loghost\n"
"# uncomment these if you're running inn\n"
"# news.crit /var/log/news/news.crit\n"
"# news.err /var/log/news/news.err\n"
"# news.notice /var/log/news/news.notice\n"
"# Uncomment this if you wish to see messages produced by devd\n"
"# !devd\n"
"# *.>=info\n"
"!ppp\n"
"*.* /var/log/ppp.log\n"
"!*\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:825
+#: documentation/content/en/books/handbook/config/_index.adoc:829
msgid "In this example:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:827
+#: documentation/content/en/books/handbook/config/_index.adoc:831
msgid ""
"Line 8 matches all messages with a level of `err` or higher, as well as "
"`kern.warning`, `auth.notice` and `mail.crit`, and sends these log messages "
"to the console ([.filename]#/dev/console#)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:828
+#: documentation/content/en/books/handbook/config/_index.adoc:832
msgid ""
"Line 12 matches all messages from the `mail` facility at level `info` or "
"above and logs the messages to [.filename]#/var/log/maillog#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:829
+#: documentation/content/en/books/handbook/config/_index.adoc:833
msgid ""
"Line 17 uses a comparison flag (`=`) to only match messages at level `debug` "
"and logs them to [.filename]#/var/log/debug.log#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:830
+#: documentation/content/en/books/handbook/config/_index.adoc:834
msgid ""
"Line 33 is an example usage of a program specification. This makes the rules "
"following it only valid for the specified program. In this case, only the "
"messages generated by ppp are logged to [.filename]#/var/log/ppp.log#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:832
+#: documentation/content/en/books/handbook/config/_index.adoc:836
msgid ""
"The available levels, in order from most to least critical are `emerg`, "
"`alert`, `crit`, `err`, `warning`, `notice`, `info`, and `debug`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:835
+#: documentation/content/en/books/handbook/config/_index.adoc:839
msgid ""
"The facilities, in no particular order, are `auth`, `authpriv`, `console`, "
"`cron`, `daemon`, `ftp`, `kern`, `lpr`, `mail`, `mark`, `news`, `security`, "
"`syslog`, `user`, `uucp`, and `local0` through `local7`. Be aware that "
"other operating systems might have different facilities."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:837
+#: documentation/content/en/books/handbook/config/_index.adoc:841
msgid ""
"To log everything of level `notice` and higher to [.filename]#/var/log/"
"daemon.log#, add the following entry:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:841
+#: documentation/content/en/books/handbook/config/_index.adoc:845
#, no-wrap
msgid "daemon.notice /var/log/daemon.log\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:845
+#: documentation/content/en/books/handbook/config/_index.adoc:849
msgid ""
"For more information about the different levels and facilities, refer to man:"
"syslog[3] and man:syslogd[8]. For more information about [.filename]#/etc/"
"syslog.conf#, its syntax, and more advanced usage examples, see man:syslog."
"conf[5]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:846
+#: documentation/content/en/books/handbook/config/_index.adoc:850
#, no-wrap
msgid "Log Management and Rotation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:855
+#: documentation/content/en/books/handbook/config/_index.adoc:859
msgid ""
"Log files can grow quickly, taking up disk space and making it more "
"difficult to locate useful information. Log management attempts to mitigate "
"this. In FreeBSD, newsyslog is used to manage log files. This built-in "
"program periodically rotates and compresses log files, and optionally "
"creates missing log files and signals programs when log files are moved. "
"The log files may be generated by syslogd or by any other program which "
"generates log files. While newsyslog is normally run from man:cron[8], it "
"is not a system daemon. In the default configuration, it runs every hour."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:860
+#: documentation/content/en/books/handbook/config/_index.adoc:864
msgid ""
"To know which actions to take, newsyslog reads its configuration file, [."
"filename]#/etc/newsyslog.conf#. This file contains one line for each log "
"file that newsyslog manages. Each line states the file owner, permissions, "
"when to rotate that file, optional flags that affect log rotation, such as "
"compression, and programs to signal when the log is rotated. Here is the "
"default configuration in FreeBSD:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:902
+#: documentation/content/en/books/handbook/config/_index.adoc:906
#, no-wrap
msgid ""
"# configuration file for newsyslog\n"
"# $FreeBSD$\n"
"#\n"
"# Entries which do not specify the '/pid_file' field will cause the\n"
"# syslogd process to be signalled when that log file is rotated. This\n"
"# action is only appropriate for log files which are written to by the\n"
"# syslogd process (ie, files listed in /etc/syslog.conf). If there\n"
"# is no process which needs to be signalled when a given log file is\n"
"# rotated, then the entry for that file should include the 'N' flag.\n"
"#\n"
"# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.\n"
"#\n"
"# Note: some sites will want to select more restrictive protections than the\n"
"# defaults. In particular, it may be desirable to switch many of the 644\n"
"# entries to 640 or 600. For example, some sites will consider the\n"
"# contents of maillog, messages, and lpd-errs to be confidential. In the\n"
"# future, these defaults may change to more conservative ones.\n"
"#\n"
"# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]\n"
"/var/log/all.log 600 7 * @T00 J\n"
"/var/log/amd.log 644 7 100 * J\n"
"/var/log/auth.log 600 7 100 @0101T JC\n"
"/var/log/console.log 600 5 100 * J\n"
"/var/log/cron 600 3 100 * JC\n"
"/var/log/daily.log 640 7 * @T00 JN\n"
"/var/log/debug.log 600 7 100 * JC\n"
"/var/log/kerberos.log 600 7 100 * J\n"
"/var/log/lpd-errs 644 7 100 * JC\n"
"/var/log/maillog 640 7 * @T00 JC\n"
"/var/log/messages 644 5 100 @0101T JC\n"
"/var/log/monthly.log 640 12 * $M1D0 JN\n"
"/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid\n"
"/var/log/ppp.log root:network 640 3 100 * JC\n"
"/var/log/devd.log 644 3 100 * JC\n"
"/var/log/security 600 10 100 * JC\n"
"/var/log/sendmail.st 640 10 * 168 B\n"
"/var/log/utx.log 644 3 * @01T05 B\n"
"/var/log/weekly.log 640 5 1 $W6D0 JN\n"
"/var/log/xferlog 600 7 100 * JC\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:911
+#: documentation/content/en/books/handbook/config/_index.adoc:915
msgid ""
"Each line starts with the name of the log to be rotated, optionally followed "
"by an owner and group for both rotated and newly created files. The `mode` "
"field sets the permissions on the log file and `count` denotes how many "
"rotated log files should be kept. The `size` and `when` fields tell "
"newsyslog when to rotate the file. A log file is rotated when either its "
"size is larger than the `size` field or when the time in the `when` field "
"has passed. An asterisk (`*`) means that this field is ignored. The "
"_flags_ field gives further instructions, such as how to compress the "
"rotated file or to create the log file if it is missing. The last two "
"fields are optional and specify the name of the Process ID (PID) file of a "
"process and a signal number to send to that process when the file is rotated."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:914
+#: documentation/content/en/books/handbook/config/_index.adoc:918
msgid ""
"For more information on all fields, valid flags, and how to specify the "
"rotation time, refer to man:newsyslog.conf[5]. Since newsyslog is run from "
"man:cron[8], it cannot rotate files more often than it is scheduled to run "
"from man:cron[8]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:916
+#: documentation/content/en/books/handbook/config/_index.adoc:920
#, no-wrap
msgid "Configuring Remote Logging"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:920
+#: documentation/content/en/books/handbook/config/_index.adoc:924
msgid ""
"Monitoring the log files of multiple hosts can become unwieldy as the number "
"of systems increases. Configuring centralized logging can reduce some of "
"the administrative burden of log file administration."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:924
+#: documentation/content/en/books/handbook/config/_index.adoc:928
msgid ""
"In FreeBSD, centralized log file aggregation, merging, and rotation can be "
"configured using syslogd and newsyslog. This section demonstrates an "
"example configuration, where host `A`, named `logserv.example.com`, will "
"collect logging information for the local network. Host `B`, named "
"`logclient.example.com`, will be configured to pass logging information to "
"the logging server."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:925
+#: documentation/content/en/books/handbook/config/_index.adoc:929
#, no-wrap
msgid "Log Server Configuration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:929
+#: documentation/content/en/books/handbook/config/_index.adoc:933
msgid ""
"A log server is a system that has been configured to accept logging "
"information from other hosts. Before configuring a log server, check the "
"following:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:931
+#: documentation/content/en/books/handbook/config/_index.adoc:935
msgid ""
"If there is a firewall between the logging server and any logging clients, "
"ensure that the firewall ruleset allows UDP port 514 for both the clients "
"and the server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:932
+#: documentation/content/en/books/handbook/config/_index.adoc:936
msgid ""
"The logging server and all client machines must have forward and reverse "
"entries in the local DNS. If the network does not have a DNS server, create "
"entries in each system's [.filename]#/etc/hosts#. Proper name resolution is "
"required so that log entries are not rejected by the logging server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:935
+#: documentation/content/en/books/handbook/config/_index.adoc:939
msgid ""
"On the log server, edit [.filename]#/etc/syslog.conf# to specify the name of "
"the client to receive log entries from, the logging facility to be used, and "
"the name of the log to store the host's log entries. This example adds the "
"hostname of `B`, logs all facilities, and stores the log entries in [."
"filename]#/var/log/logclient.log#."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/config/_index.adoc:936
+#: documentation/content/en/books/handbook/config/_index.adoc:940
#, no-wrap
msgid "Sample Log Server Configuration"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:944
+#: documentation/content/en/books/handbook/config/_index.adoc:948
#, no-wrap
msgid ""
"+logclient.example.com\n"
"*.* /var/log/logclient.log\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:950
+#: documentation/content/en/books/handbook/config/_index.adoc:954
msgid ""
"When adding multiple log clients, add a similar two-line entry for each "
"client. More information about the available facilities may be found in man:"
"syslog.conf[5]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:952
+#: documentation/content/en/books/handbook/config/_index.adoc:956
msgid "Next, configure [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:957
+#: documentation/content/en/books/handbook/config/_index.adoc:961
#, no-wrap
msgid ""
"syslogd_enable=\"YES\"\n"
"syslogd_flags=\"-a logclient.example.com -v -v\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:963
+#: documentation/content/en/books/handbook/config/_index.adoc:967
msgid ""
"The first entry starts syslogd at system boot. The second entry allows log "
"entries from the specified client. The `-v -v` increases the verbosity of "
"logged messages. This is useful for tweaking facilities as administrators "
"are able to see what type of messages are being logged under each facility."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:967
+#: documentation/content/en/books/handbook/config/_index.adoc:971
msgid ""
"Multiple `-a` options may be specified to allow logging from multiple "
"clients. IP addresses and whole netblocks may also be specified. Refer to "
"man:syslogd[8] for a full list of possible options."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:969
+#: documentation/content/en/books/handbook/config/_index.adoc:973
msgid "Finally, create the log file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:973
+#: documentation/content/en/books/handbook/config/_index.adoc:977
#, no-wrap
msgid "# touch /var/log/logclient.log\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:976
+#: documentation/content/en/books/handbook/config/_index.adoc:980
msgid "At this point, syslogd should be restarted and verified:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:981
+#: documentation/content/en/books/handbook/config/_index.adoc:985
#, no-wrap
msgid ""
"# service syslogd restart\n"
"# pgrep syslog\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:985
+#: documentation/content/en/books/handbook/config/_index.adoc:989
msgid ""
"If a PID is returned, the server restarted successfully, and client "
"configuration can begin. If the server did not restart, consult [."
"filename]#/var/log/messages# for the error."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:986
+#: documentation/content/en/books/handbook/config/_index.adoc:990
#, no-wrap
msgid "Log Client Configuration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:990
+#: documentation/content/en/books/handbook/config/_index.adoc:994
msgid ""
"A logging client sends log entries to a logging server on the network. The "
"client also keeps a local copy of its own logs."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:992
+#: documentation/content/en/books/handbook/config/_index.adoc:996
msgid ""
"Once a logging server has been configured, edit [.filename]#/etc/rc.conf# on "
"the logging client:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:997
+#: documentation/content/en/books/handbook/config/_index.adoc:1001
#, no-wrap
msgid ""
"syslogd_enable=\"YES\"\n"
"syslogd_flags=\"-s -v -v\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1001
+#: documentation/content/en/books/handbook/config/_index.adoc:1005
msgid ""
"The first entry enables syslogd on boot up. The second entry prevents logs "
"from being accepted by this client from other hosts (`-s`) and increases the "
"verbosity of logged messages."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1004
+#: documentation/content/en/books/handbook/config/_index.adoc:1008
msgid ""
"Next, define the logging server in the client's [.filename]#/etc/syslog."
"conf#. In this example, all logged facilities are sent to a remote system, "
"denoted by the `@` symbol, with the specified hostname:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1008
+#: documentation/content/en/books/handbook/config/_index.adoc:1012
#, no-wrap
msgid "*.*\t\t@logserv.example.com\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1011
+#: documentation/content/en/books/handbook/config/_index.adoc:1015
msgid "After saving the edit, restart syslogd for the changes to take effect:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1015
-#: documentation/content/en/books/handbook/config/_index.adoc:1045
+#: documentation/content/en/books/handbook/config/_index.adoc:1019
+#: documentation/content/en/books/handbook/config/_index.adoc:1049
#, no-wrap
msgid "# service syslogd restart\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1018
+#: documentation/content/en/books/handbook/config/_index.adoc:1022
msgid ""
"To test that log messages are being sent across the network, use man:"
"logger[1] on the client to send a message to syslogd:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1022
+#: documentation/content/en/books/handbook/config/_index.adoc:1026
#, no-wrap
msgid "# logger \"Test message from logclient\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1025
+#: documentation/content/en/books/handbook/config/_index.adoc:1029
msgid ""
"This message should now exist both in [.filename]#/var/log/messages# on the "
"client and [.filename]#/var/log/logclient.log# on the log server."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1026
+#: documentation/content/en/books/handbook/config/_index.adoc:1030
#, no-wrap
msgid "Debugging Log Servers"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1032
+#: documentation/content/en/books/handbook/config/_index.adoc:1036
msgid ""
"If no messages are being received on the log server, the cause is most "
"likely a network connectivity issue, a hostname resolution issue, or a typo "
"in a configuration file. To isolate the cause, ensure that both the logging "
"server and the logging client are able to `ping` each other using the "
"hostname specified in their [.filename]#/etc/rc.conf#. If this fails, check "
"the network cabling, the firewall ruleset, and the hostname entries in the "
"DNS server or [.filename]#/etc/hosts# on both the logging server and "
"clients. Repeat until the `ping` is successful from both hosts."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1036
+#: documentation/content/en/books/handbook/config/_index.adoc:1040
msgid ""
"If the `ping` succeeds on both hosts but log messages are still not being "
"received, temporarily increase logging verbosity to narrow down the "
"configuration issue. In the following example, [.filename]#/var/log/"
"logclient.log# on the logging server is empty and [.filename]#/var/log/"
"messages# on the logging client does not indicate a reason for the failure. "
"To increase debugging output, edit the `syslogd_flags` entry on the logging "
"server and issue a restart:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1040
+#: documentation/content/en/books/handbook/config/_index.adoc:1044
#, no-wrap
msgid "syslogd_flags=\"-d -a logclient.example.com -v -v\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1048
+#: documentation/content/en/books/handbook/config/_index.adoc:1052
msgid ""
"Debugging data similar to the following will flash on the console "
"immediately after the restart:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1059
+#: documentation/content/en/books/handbook/config/_index.adoc:1063
#, no-wrap
msgid ""
"logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart\n"
"syslogd: restarted\n"
"logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel\n"
"Logging to FILE /var/log/messages\n"
"syslogd: kernel boot file is /boot/kernel/kernel\n"
"cvthname(192.168.1.10)\n"
"validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;\n"
"rejected in rule 0 due to name mismatch.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1064
+#: documentation/content/en/books/handbook/config/_index.adoc:1068
msgid ""
"In this example, the log messages are being rejected due to a typo which "
"results in a hostname mismatch. The client's hostname should be "
"`logclient`, not `logclien`. Fix the typo, issue a restart, and verify the "
"results:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1080
+#: documentation/content/en/books/handbook/config/_index.adoc:1084
#, no-wrap
msgid ""
"# service syslogd restart\n"
"logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart\n"
"syslogd: restarted\n"
"logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel\n"
"syslogd: kernel boot file is /boot/kernel/kernel\n"
"logmsg: pri 166, flags 17, from logserv.example.com,\n"
"msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2\n"
"cvthname(192.168.1.10)\n"
"validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;\n"
"accepted in rule 0.\n"
"logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2\n"
"Logging to FILE /var/log/logclient.log\n"
"Logging to FILE /var/log/messages\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1083
+#: documentation/content/en/books/handbook/config/_index.adoc:1087
msgid ""
"At this point, the messages are being properly received and placed in the "
"correct file."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1084
+#: documentation/content/en/books/handbook/config/_index.adoc:1088
#, no-wrap
msgid "Security Considerations"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1090
+#: documentation/content/en/books/handbook/config/_index.adoc:1094
msgid ""
"As with any network service, security requirements should be considered "
"before implementing a logging server. Log files may contain sensitive data "
"about services enabled on the local host, user accounts, and configuration "
"data. Network data sent from the client to the server will not be encrypted "
"or password protected. If a need for encryption exists, consider using "
"package:security/stunnel[], which will transmit the logging data over an "
"encrypted tunnel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1098
+#: documentation/content/en/books/handbook/config/_index.adoc:1102
msgid ""
"Local security is also an issue. Log files are not encrypted during use or "
"after log rotation. Local users may access log files to gain additional "
"insight into system configuration. Setting proper permissions on log files "
"is critical. The built-in log rotator, newsyslog, supports setting "
"permissions on newly created and rotated log files. Setting log files to "
"mode `600` should prevent unwanted access by local users. Refer to man:"
"newsyslog.conf[5] for additional information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:1100
+#: documentation/content/en/books/handbook/config/_index.adoc:1104
#, no-wrap
msgid "Configuration Files"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1102
+#: documentation/content/en/books/handbook/config/_index.adoc:1106
#, no-wrap
msgid "[.filename]#/etc# Layout"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1106
+#: documentation/content/en/books/handbook/config/_index.adoc:1110
msgid ""
"There are a number of directories in which configuration information is "
"kept. These include:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1112
+#: documentation/content/en/books/handbook/config/_index.adoc:1116
#, no-wrap
msgid "[.filename]#/etc#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1114
+#: documentation/content/en/books/handbook/config/_index.adoc:1118
#, no-wrap
msgid "Generic system-specific configuration information."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1115
+#: documentation/content/en/books/handbook/config/_index.adoc:1119
#, no-wrap
msgid "[.filename]#/etc/defaults#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1117
+#: documentation/content/en/books/handbook/config/_index.adoc:1121
#, no-wrap
msgid "Default versions of system configuration files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1118
+#: documentation/content/en/books/handbook/config/_index.adoc:1122
#, no-wrap
msgid "[.filename]#/etc/mail#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1120
+#: documentation/content/en/books/handbook/config/_index.adoc:1124
#, no-wrap
msgid "Extra man:sendmail[8] configuration and other MTA configuration files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1121
+#: documentation/content/en/books/handbook/config/_index.adoc:1125
#, no-wrap
msgid "[.filename]#/etc/ppp#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1123
+#: documentation/content/en/books/handbook/config/_index.adoc:1127
#, no-wrap
msgid "Configuration for both user- and kernel-ppp programs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1124
+#: documentation/content/en/books/handbook/config/_index.adoc:1128
#, no-wrap
msgid "[.filename]#/usr/local/etc#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1126
+#: documentation/content/en/books/handbook/config/_index.adoc:1130
#, no-wrap
msgid "Configuration files for installed applications. May contain per-application subdirectories."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1127
+#: documentation/content/en/books/handbook/config/_index.adoc:1131
#, no-wrap
msgid "[.filename]#/usr/local/etc/rc.d#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1129
+#: documentation/content/en/books/handbook/config/_index.adoc:1133
#, no-wrap
msgid "man:rc[8] scripts for installed applications."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1130
+#: documentation/content/en/books/handbook/config/_index.adoc:1134
#, no-wrap
msgid "[.filename]#/var/db#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1131
+#: documentation/content/en/books/handbook/config/_index.adoc:1135
#, no-wrap
msgid "Automatically generated system-specific database files, such as the package database and the man:locate[1] database."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1133
+#: documentation/content/en/books/handbook/config/_index.adoc:1137
#, no-wrap
msgid "Hostnames"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1135
+#: documentation/content/en/books/handbook/config/_index.adoc:1139
#, no-wrap
msgid "[.filename]#/etc/resolv.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1138
+#: documentation/content/en/books/handbook/config/_index.adoc:1142
msgid ""
"How a FreeBSD system accesses the Internet Domain Name System (DNS) is "
"controlled by man:resolv.conf[5]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1140
+#: documentation/content/en/books/handbook/config/_index.adoc:1144
msgid "The most common entries to [.filename]#/etc/resolv.conf# are:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1146
+#: documentation/content/en/books/handbook/config/_index.adoc:1150
#, no-wrap
msgid "`nameserver`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1148
+#: documentation/content/en/books/handbook/config/_index.adoc:1152
#, no-wrap
msgid "The IP address of a name server the resolver should query. The servers are queried in the order listed with a maximum of three."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1149
+#: documentation/content/en/books/handbook/config/_index.adoc:1153
#, no-wrap
msgid "`search`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1151
+#: documentation/content/en/books/handbook/config/_index.adoc:1155
#, no-wrap
msgid "Search list for hostname lookup. This is normally determined by the domain of the local hostname."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1152
+#: documentation/content/en/books/handbook/config/_index.adoc:1156
#, no-wrap
msgid "`domain`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/config/_index.adoc:1153
+#: documentation/content/en/books/handbook/config/_index.adoc:1157
#, no-wrap
msgid "The local domain name."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1156
+#: documentation/content/en/books/handbook/config/_index.adoc:1160
msgid "A typical [.filename]#/etc/resolv.conf# looks like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1162
+#: documentation/content/en/books/handbook/config/_index.adoc:1166
#, no-wrap
msgid ""
"search example.com\n"
"nameserver 147.11.1.11\n"
"nameserver 147.11.100.30\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1167
+#: documentation/content/en/books/handbook/config/_index.adoc:1171
msgid "Only one of the `search` and `domain` options should be used."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1170
+#: documentation/content/en/books/handbook/config/_index.adoc:1174
msgid ""
"When using DHCP, man:dhclient[8] usually rewrites [.filename]#/etc/resolv."
"conf# with information received from the DHCP server."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1171
+#: documentation/content/en/books/handbook/config/_index.adoc:1175
#, no-wrap
msgid "[.filename]#/etc/hosts#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1176
+#: documentation/content/en/books/handbook/config/_index.adoc:1180
msgid ""
"[.filename]#/etc/hosts# is a simple text database which works in conjunction "
"with DNS and NIS to provide host name to IP address mappings. Entries for "
"local computers connected via a LAN can be added to this file for simplistic "
"naming purposes instead of setting up a man:named[8] server. Additionally, "
"[.filename]#/etc/hosts# can be used to provide a local record of Internet "
"names, reducing the need to query external DNS servers for commonly accessed "
"names."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1211
+#: documentation/content/en/books/handbook/config/_index.adoc:1215
#, no-wrap
msgid ""
"# $FreeBSD$\n"
"#\n"
"#\n"
"# Host Database\n"
"#\n"
"# This file should contain the addresses and aliases for local hosts that\n"
"# share this file. Replace 'my.domain' below with the domainname of your\n"
"# machine.\n"
"#\n"
"# In the presence of the domain name service or NIS, this file may\n"
"# not be consulted at all; see /etc/nsswitch.conf for the resolution order.\n"
"#\n"
"#\n"
"::1\t\t\tlocalhost localhost.my.domain\n"
"127.0.0.1\t\tlocalhost localhost.my.domain\n"
"#\n"
"# Imaginary network.\n"
"#10.0.0.2\t\tmyname.my.domain myname\n"
"#10.0.0.3\t\tmyfriend.my.domain myfriend\n"
"#\n"
"# According to RFC 1918, you can use the following IP networks for\n"
"# private nets which will never be connected to the Internet:\n"
"#\n"
"#\t10.0.0.0\t- 10.255.255.255\n"
"#\t172.16.0.0\t- 172.31.255.255\n"
"#\t192.168.0.0\t- 192.168.255.255\n"
"#\n"
"# In case you want to be able to connect to the Internet, you need\n"
"# real official assigned numbers. Do not try to invent your own network\n"
"# numbers but instead get one from your network provider (if any) or\n"
"# from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)\n"
"#\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1214
+#: documentation/content/en/books/handbook/config/_index.adoc:1218
msgid "The format of [.filename]#/etc/hosts# is as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1218
+#: documentation/content/en/books/handbook/config/_index.adoc:1222
#, no-wrap
msgid "[Internet address] [official hostname] [alias1] [alias2] ...\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1221
+#: documentation/content/en/books/handbook/config/_index.adoc:1225
msgid "For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1225
+#: documentation/content/en/books/handbook/config/_index.adoc:1229
#, no-wrap
msgid "10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1228
+#: documentation/content/en/books/handbook/config/_index.adoc:1232
msgid "Consult man:hosts[5] for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:1230
+#: documentation/content/en/books/handbook/config/_index.adoc:1234
#, no-wrap
msgid "Tuning with man:sysctl[8]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1235
+#: documentation/content/en/books/handbook/config/_index.adoc:1239
msgid ""
"man:sysctl[8] is used to make changes to a running FreeBSD system. This "
"includes many advanced options of the TCP/IP stack and virtual memory system "
"that can dramatically improve performance for an experienced system "
"administrator. Over five hundred system variables can be read and set using "
"man:sysctl[8]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1237
+#: documentation/content/en/books/handbook/config/_index.adoc:1241
msgid ""
"At its core, man:sysctl[8] serves two functions: to read and to modify "
"system settings."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1239
+#: documentation/content/en/books/handbook/config/_index.adoc:1243
msgid "To view all readable variables:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1243
+#: documentation/content/en/books/handbook/config/_index.adoc:1247
#, no-wrap
msgid "% sysctl -a\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1246
+#: documentation/content/en/books/handbook/config/_index.adoc:1250
msgid "To read a particular variable, specify its name:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1251
+#: documentation/content/en/books/handbook/config/_index.adoc:1255
#, no-wrap
msgid ""
"% sysctl kern.maxproc\n"
"kern.maxproc: 1044\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1254
+#: documentation/content/en/books/handbook/config/_index.adoc:1258
msgid "To set a particular variable, use the _variable_=_value_ syntax:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1259
+#: documentation/content/en/books/handbook/config/_index.adoc:1263
#, no-wrap
msgid ""
"# sysctl kern.maxfiles=5000\n"
"kern.maxfiles: 2088 -> 5000\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1262
+#: documentation/content/en/books/handbook/config/_index.adoc:1266
msgid ""
"Settings of sysctl variables are usually either strings, numbers, or "
"booleans, where a boolean is `1` for yes or `0` for no."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1265
+#: documentation/content/en/books/handbook/config/_index.adoc:1269
msgid ""
"To automatically set some variables each time the machine boots, add them to "
"[.filename]#/etc/sysctl.conf#. For more information, refer to man:sysctl."
"conf[5] and <<configtuning-sysctlconf>>."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1267
+#: documentation/content/en/books/handbook/config/_index.adoc:1271
#, no-wrap
msgid "[.filename]#sysctl.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1273
+#: documentation/content/en/books/handbook/config/_index.adoc:1277
msgid ""
"The configuration file for man:sysctl[8], [.filename]#/etc/sysctl.conf#, "
"looks much like [.filename]#/etc/rc.conf#. Values are set in a "
"`variable=value` form. The specified values are set after the system goes "
"into multi-user mode. Not all variables are settable in this mode."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1275
+#: documentation/content/en/books/handbook/config/_index.adoc:1279
msgid ""
"For example, to turn off logging of fatal signal exits and prevent users "
"from seeing processes started by other users, the following tunables can be "
"set in [.filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1280
+#: documentation/content/en/books/handbook/config/_index.adoc:1284
#, no-wrap
msgid ""
"# Do not log fatal signal exits (e.g., sig 11)\n"
"kern.logsigexit=0\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1284
+#: documentation/content/en/books/handbook/config/_index.adoc:1288
#, no-wrap
msgid ""
"# Prevent users from seeing information about processes that\n"
"# are being run under another UID.\n"
"security.bsd.see_other_uids=0\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1287
+#: documentation/content/en/books/handbook/config/_index.adoc:1291
#, no-wrap
msgid "man:sysctl[8] Read-only"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1290
+#: documentation/content/en/books/handbook/config/_index.adoc:1294
msgid ""
"In some cases it may be desirable to modify read-only man:sysctl[8] values, "
"which will require a reboot of the system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1292
+#: documentation/content/en/books/handbook/config/_index.adoc:1296
msgid ""
"For instance, on some laptop models the man:cardbus[4] device will not probe "
"memory ranges and will fail with errors similar to:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1297
+#: documentation/content/en/books/handbook/config/_index.adoc:1301
#, no-wrap
msgid ""
"cbb0: Could not map register memory\n"
"device_probe_and_attach: cbb0 attach returned 12\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1302
+#: documentation/content/en/books/handbook/config/_index.adoc:1306
msgid ""
"The fix requires the modification of a read-only man:sysctl[8] setting. Add "
"`hw.pci.allow_unsupported_io_range=1` to [.filename]#/boot/loader.conf# and "
"reboot. Now man:cardbus[4] should work properly."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:1304
+#: documentation/content/en/books/handbook/config/_index.adoc:1308
#, no-wrap
msgid "Tuning Disks"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1311
+#: documentation/content/en/books/handbook/config/_index.adoc:1315
msgid ""
"The following section will discuss various tuning mechanisms and options "
"which may be applied to disk devices. In many cases, disks with mechanical "
"parts, such as SCSI drives, will be the bottleneck driving down the overall "
"system performance. While a solution is to install a drive without "
"mechanical parts, such as a solid state drive, mechanical drives are not "
"going away anytime in the near future. When tuning disks, it is advisable "
"to utilize the features of the man:iostat[8] command to test various changes "
"to the system. This command will allow the user to obtain valuable "
"information on system IO."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1312
+#: documentation/content/en/books/handbook/config/_index.adoc:1316
#, no-wrap
msgid "Sysctl Variables"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1314
+#: documentation/content/en/books/handbook/config/_index.adoc:1318
#, no-wrap
msgid "`vfs.vmiodirenable`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1325
+#: documentation/content/en/books/handbook/config/_index.adoc:1329
msgid ""
"The `vfs.vmiodirenable` man:sysctl[8] variable may be set to either `0` "
"(off) or `1` (on). It is set to `1` by default. This variable controls how "
"directories are cached by the system. Most directories are small, using "
"just a single fragment (typically 1 K) in the file system and typically 512 "
"bytes in the buffer cache. With this variable turned off, the buffer cache "
"will only cache a fixed number of directories, even if the system has a huge "
"amount of memory. When turned on, this man:sysctl[8] allows the buffer "
"cache to use the VM page cache to cache the directories, making all the "
"memory available for caching directories. However, the minimum in-core "
"memory used to cache a directory is the physical page size (typically 4 K) "
"rather than 512 bytes. Keeping this option enabled is recommended if the "
"system is running any services which manipulate large numbers of files. "
"Such services can include web caches, large mail systems, and news systems. "
"Keeping this option on will generally not reduce performance, even with the "
"wasted memory, but one should experiment to find out."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1326
+#: documentation/content/en/books/handbook/config/_index.adoc:1330
#, no-wrap
msgid "`vfs.write_behind`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1332
+#: documentation/content/en/books/handbook/config/_index.adoc:1336
msgid ""
"The `vfs.write_behind` man:sysctl[8] variable defaults to `1` (on). This "
"tells the file system to issue media writes as full clusters are collected, "
"which typically occurs when writing large sequential files. This avoids "
"saturating the buffer cache with dirty buffers when it would not benefit I/O "
"performance. However, this may stall processes and under certain "
"circumstances should be turned off."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1333
+#: documentation/content/en/books/handbook/config/_index.adoc:1337
#, no-wrap
msgid "`vfs.hirunningspace`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1339
+#: documentation/content/en/books/handbook/config/_index.adoc:1343
msgid ""
"The `vfs.hirunningspace` man:sysctl[8] variable determines how much "
"outstanding write I/O may be queued to disk controllers system-wide at any "
"given instance. The default is usually sufficient, but on machines with "
"many disks, try bumping it up to four or five _megabytes_. Setting too high "
"a value which exceeds the buffer cache's write threshold can lead to bad "
"clustering performance. Do not set this value arbitrarily high as higher "
"write values may add latency to reads occurring at the same time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1342
+#: documentation/content/en/books/handbook/config/_index.adoc:1346
msgid ""
"There are various other buffer cache and VM page cache related man:sysctl[8] "
"values. Modifying these values is not recommended as the VM system does a "
"good job of automatically tuning itself."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1343
+#: documentation/content/en/books/handbook/config/_index.adoc:1347
#, no-wrap
msgid "`vm.swap_idle_enabled`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1351
+#: documentation/content/en/books/handbook/config/_index.adoc:1355
msgid ""
"The `vm.swap_idle_enabled` man:sysctl[8] variable is useful in large multi-"
"user systems with many active login users and lots of idle processes. Such "
"systems tend to generate continuous pressure on free memory reserves. "
"Turning this feature on and tweaking the swapout hysteresis (in idle "
"seconds) via `vm.swap_idle_threshold1` and `vm.swap_idle_threshold2` "
"depresses the priority of memory pages associated with idle processes more "
"quickly then the normal pageout algorithm. This gives a helping hand to the "
"pageout daemon. Only turn this option on if needed, because the tradeoff is "
"essentially pre-page memory sooner rather than later which eats more swap "
"and disk bandwidth. In a small system this option will have a determinable "
"effect, but in a large system that is already doing moderate paging, this "
"option allows the VM system to stage whole processes into and out of memory "
"easily."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1352
+#: documentation/content/en/books/handbook/config/_index.adoc:1356
#, no-wrap
msgid "`hw.ata.wc`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1360
+#: documentation/content/en/books/handbook/config/_index.adoc:1364
msgid ""
"Turning off IDE write caching reduces write bandwidth to IDE disks, but may "
"sometimes be necessary due to data consistency issues introduced by hard "
"drive vendors. The problem is that some IDE drives lie about when a write "
"completes. With IDE write caching turned on, IDE hard drives write data to "
"disk out of order and will sometimes delay writing some blocks indefinitely "
"when under heavy disk load. A crash or power failure may cause serious file "
"system corruption. Check the default on the system by observing the `hw.ata."
"wc` man:sysctl[8] variable. If IDE write caching is turned off, one can set "
"this read-only variable to `1` in [.filename]#/boot/loader.conf# in order to "
"enable it at boot time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1362
+#: documentation/content/en/books/handbook/config/_index.adoc:1366
msgid "For more information, refer to man:ata[4]."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1363
+#: documentation/content/en/books/handbook/config/_index.adoc:1367
#, no-wrap
msgid "`SCSI_DELAY` (`kern.cam.scsi_delay`)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1370
+#: documentation/content/en/books/handbook/config/_index.adoc:1374
msgid ""
"The `SCSI_DELAY` kernel configuration option may be used to reduce system "
"boot times. The defaults are fairly high and can be responsible for `15` "
"seconds of delay in the boot process. Reducing it to `5` seconds usually "
"works with modern drives. The `kern.cam.scsi_delay` boot time tunable "
"should be used. The tunable and kernel configuration option accept values "
"in terms of _milliseconds_ and _not seconds_."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1372
+#: documentation/content/en/books/handbook/config/_index.adoc:1376
#, no-wrap
msgid "Soft Updates"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1377
+#: documentation/content/en/books/handbook/config/_index.adoc:1381
msgid ""
"To fine-tune a file system, use man:tunefs[8]. This program has many "
"different options. To toggle Soft Updates on and off, use:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1382
+#: documentation/content/en/books/handbook/config/_index.adoc:1386
#, no-wrap
msgid ""
"# tunefs -n enable /filesystem\n"
"# tunefs -n disable /filesystem\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1386
+#: documentation/content/en/books/handbook/config/_index.adoc:1390
msgid ""
"A file system cannot be modified with man:tunefs[8] while it is mounted. A "
"good time to enable Soft Updates is before any partitions have been mounted, "
"in single-user mode."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1393
+#: documentation/content/en/books/handbook/config/_index.adoc:1397
msgid ""
"Soft Updates is recommended for UFS file systems as it drastically improves "
"meta-data performance, mainly file creation and deletion, through the use of "
"a memory cache. There are two downsides to Soft Updates to be aware of. "
"First, Soft Updates guarantee file system consistency in the case of a "
"crash, but could easily be several seconds or even a minute behind updating "
"the physical disk. If the system crashes, unwritten data may be lost. "
"Secondly, Soft Updates delay the freeing of file system blocks. If the root "
"file system is almost full, performing a major update, such as `make "
"installworld`, can cause the file system to run out of space and the update "
"to fail."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1394
+#: documentation/content/en/books/handbook/config/_index.adoc:1398
#, no-wrap
msgid "More Details About Soft Updates"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1398
+#: documentation/content/en/books/handbook/config/_index.adoc:1402
msgid ""
"Meta-data updates are updates to non-content data like inodes or "
"directories. There are two traditional approaches to writing a file "
"system's meta-data back to disk."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1411
+#: documentation/content/en/books/handbook/config/_index.adoc:1415
msgid ""
"Historically, the default behavior was to write out meta-data updates "
"synchronously. If a directory changed, the system waited until the change "
"was actually written to disk. The file data buffers (file contents) were "
"passed through the buffer cache and backed up to disk later on "
"asynchronously. The advantage of this implementation is that it operates "
"safely. If there is a failure during an update, meta-data is always in a "
"consistent state. A file is either created completely or not at all. If "
"the data blocks of a file did not find their way out of the buffer cache "
"onto the disk by the time of the crash, man:fsck[8] recognizes this and "
"repairs the file system by setting the file length to `0`. Additionally, "
"the implementation is clear and simple. The disadvantage is that meta-data "
"changes are slow. For example, `rm -r` touches all the files in a directory "
"sequentially, but each directory change will be written synchronously to the "
"disk. This includes updates to the directory itself, to the inode table, "
"and possibly to indirect blocks allocated by the file. Similar "
"considerations apply for unrolling large hierarchies using `tar -x`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1422
+#: documentation/content/en/books/handbook/config/_index.adoc:1426
msgid ""
"The second approach is to use asynchronous meta-data updates. This is the "
"default for a UFS file system mounted with `mount -o async`. Since all meta-"
"data updates are also passed through the buffer cache, they will be "
"intermixed with the updates of the file content data. The advantage of this "
"implementation is there is no need to wait until each meta-data update has "
"been written to disk, so all operations which cause huge amounts of meta-"
"data updates work much faster than in the synchronous case. This "
"implementation is still clear and simple, so there is a low risk for bugs "
"creeping into the code. The disadvantage is that there is no guarantee for "
"a consistent state of the file system If there is a failure during an "
"operation that updated large amounts of meta-data, like a power failure or "
"someone pressing the reset button, the file system will be left in an "
"unpredictable state. There is no opportunity to examine the state of the "
"file system when the system comes up again as the data blocks of a file "
"could already have been written to the disk while the updates of the inode "
"table or the associated directory were not. It is impossible to implement a "
"man:fsck[8] which is able to clean up the resulting chaos because the "
"necessary information is not available on the disk. If the file system has "
"been damaged beyond repair, the only choice is to reformat it and restore "
"from backup."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1430
+#: documentation/content/en/books/handbook/config/_index.adoc:1434
msgid ""
"The usual solution for this problem is to implement _dirty region logging_, "
"which is also referred to as _journaling_. Meta-data updates are still "
"written synchronously, but only into a small region of the disk. Later on, "
"they are moved to their proper location. Since the logging area is a small, "
"contiguous region on the disk, there are no long distances for the disk "
"heads to move, even during heavy operations, so these operations are quicker "
"than synchronous updates. Additionally, the complexity of the "
"implementation is limited, so the risk of bugs being present is low. A "
"disadvantage is that all meta-data is written twice, once into the logging "
"region and once to the proper location, so performance \"pessimization\" "
"might result. On the other hand, in case of a crash, all pending meta-data "
"operations can be either quickly rolled back or completed from the logging "
"area after the system comes up again, resulting in a fast file system "
"startup."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1446
+#: documentation/content/en/books/handbook/config/_index.adoc:1450
msgid ""
"Kirk McKusick, the developer of Berkeley FFS, solved this problem with Soft "
"Updates. All pending meta-data updates are kept in memory and written out "
"to disk in a sorted sequence (\"ordered meta-data updates\"). This has the "
"effect that, in case of heavy meta-data operations, later updates to an item "
"\"catch\" the earlier ones which are still in memory and have not already "
"been written to disk. All operations are generally performed in memory "
"before the update is written to disk and the data blocks are sorted "
"according to their position so that they will not be on the disk ahead of "
"their meta-data. If the system crashes, an implicit \"log rewind\" causes "
"all operations which were not written to the disk appear as if they never "
"happened. A consistent file system state is maintained that appears to be "
"the one of 30 to 60 seconds earlier. The algorithm used guarantees that all "
"resources in use are marked as such in their blocks and inodes. After a "
"crash, the only resource allocation error that occurs is that resources are "
"marked as \"used\" which are actually \"free\". man:fsck[8] recognizes this "
"situation, and frees the resources that are no longer used. It is safe to "
"ignore the dirty state of the file system after a crash by forcibly mounting "
"it with `mount -f`. In order to free resources that may be unused, man:"
"fsck[8] needs to be run at a later time. This is the idea behind the "
"_background man:fsck[8]_: at system startup time, only a _snapshot_ of the "
"file system is recorded and man:fsck[8] is run afterwards. All file systems "
"can then be mounted \"dirty\", so the system startup proceeds in multi-user "
"mode. Then, background man:fsck[8] is scheduled for all file systems where "
"this is required, to free resources that may be unused. File systems that "
"do not use Soft Updates still need the usual foreground man:fsck[8]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1453
+#: documentation/content/en/books/handbook/config/_index.adoc:1457
msgid ""
"The advantage is that meta-data operations are nearly as fast as "
"asynchronous updates and are faster than _logging_, which has to write the "
"meta-data twice. The disadvantages are the complexity of the code, a higher "
"memory consumption, and some idiosyncrasies. After a crash, the state of "
"the file system appears to be somewhat \"older\". In situations where the "
"standard synchronous approach would have caused some zero-length files to "
"remain after the man:fsck[8], these files do not exist at all with Soft "
"Updates because neither the meta-data nor the file contents have been "
"written to disk. Disk space is not released until the updates have been "
"written to disk, which may take place some time after running man:rm[1]. "
"This may cause problems when installing large amounts of data on a file "
"system that does not have enough free space to hold all the files twice."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:1455
+#: documentation/content/en/books/handbook/config/_index.adoc:1459
#, no-wrap
msgid "Tuning Kernel Limits"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1458
+#: documentation/content/en/books/handbook/config/_index.adoc:1462
#, no-wrap
msgid "File/Process Limits"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1461
+#: documentation/content/en/books/handbook/config/_index.adoc:1465
#, no-wrap
msgid "`kern.maxfiles`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1466
+#: documentation/content/en/books/handbook/config/_index.adoc:1470
msgid ""
"The `kern.maxfiles` man:sysctl[8] variable can be raised or lowered based "
"upon system requirements. This variable indicates the maximum number of "
"file descriptors on the system. When the file descriptor table is full, "
"`file: table is full` will show up repeatedly in the system message buffer, "
"which can be viewed using man:dmesg[8]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1469
+#: documentation/content/en/books/handbook/config/_index.adoc:1473
msgid ""
"Each open file, socket, or fifo uses one file descriptor. A large-scale "
"production server may easily require many thousands of file descriptors, "
"depending on the kind and number of services running concurrently."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1475
+#: documentation/content/en/books/handbook/config/_index.adoc:1479
msgid ""
"In older FreeBSD releases, the default value of `kern.maxfiles` is derived "
"from `maxusers` in the kernel configuration file. `kern.maxfiles` grows "
"proportionally to the value of `maxusers`. When compiling a custom kernel, "
"consider setting this kernel configuration option according to the use of "
"the system. From this number, the kernel is given most of its pre-defined "
"limits. Even though a production machine may not have 256 concurrent users, "
"the resources needed may be similar to a high-scale web server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1481
+#: documentation/content/en/books/handbook/config/_index.adoc:1485
msgid ""
"The read-only man:sysctl[8] variable `kern.maxusers` is automatically sized "
"at boot based on the amount of memory available in the system, and may be "
"determined at run-time by inspecting the value of `kern.maxusers`. Some "
"systems require larger or smaller values of `kern.maxusers` and values of "
"`64`, `128`, and `256` are not uncommon. Going above `256` is not "
"recommended unless a huge number of file descriptors is needed. Many of the "
"tunable values set to their defaults by `kern.maxusers` may be individually "
"overridden at boot-time or run-time in [.filename]#/boot/loader.conf#. "
"Refer to man:loader.conf[5] and [.filename]#/boot/defaults/loader.conf# for "
"more details and some hints."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1489
+#: documentation/content/en/books/handbook/config/_index.adoc:1493
msgid ""
"In older releases, the system will auto-tune `maxusers` if it is set to `0`. "
"footnote:[The auto-tuning algorithm sets maxusers equal to the amount of "
"memory in the system, with a minimum of 32, and a maximum of 384.]. When "
"setting this option, set `maxusers` to at least `4`, especially if the "
"system runs Xorg or is used to compile software. The most important table "
"set by `maxusers` is the maximum number of processes, which is set to `20 + "
"16 * maxusers`. If `maxusers` is set to `1`, there can only be `36` "
"simultaneous processes, including the `18` or so that the system starts up "
"at boot time and the `15` or so used by Xorg. Even a simple task like "
"reading a manual page will start up nine processes to filter, decompress, "
"and view it. Setting `maxusers` to `64` allows up to `1044` simultaneous "
"processes, which should be enough for nearly all uses. If, however, the "
"error is displayed when trying to start another program, or a server is "
"running with a large number of simultaneous users, increase the number and "
"rebuild."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1494
+#: documentation/content/en/books/handbook/config/_index.adoc:1498
msgid ""
"`maxusers` does _not_ limit the number of users which can log into the "
"machine. It instead sets various table sizes to reasonable values "
"considering the maximum number of users on the system and how many processes "
"each user will be running."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1496
+#: documentation/content/en/books/handbook/config/_index.adoc:1500
#, no-wrap
msgid "`kern.ipc.soacceptqueue`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1503
+#: documentation/content/en/books/handbook/config/_index.adoc:1507
msgid ""
"The `kern.ipc.soacceptqueue` man:sysctl[8] variable limits the size of the "
"listen queue for accepting new `TCP` connections. The default value of "
"`128` is typically too low for robust handling of new connections on a "
"heavily loaded web server. For such environments, it is recommended to "
"increase this value to `1024` or higher. A service such as man:sendmail[8], "
"or Apache may itself limit the listen queue size, but will often have a "
"directive in its configuration file to adjust the queue size. Large listen "
"queues do a better job of avoiding Denial of Service (DoS) attacks."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1505
+#: documentation/content/en/books/handbook/config/_index.adoc:1509
#, no-wrap
msgid "Network Limits"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1516
+#: documentation/content/en/books/handbook/config/_index.adoc:1520
msgid ""
"The `NMBCLUSTERS` kernel configuration option dictates the amount of network "
"Mbufs available to the system. A heavily-trafficked server with a low "
"number of Mbufs will hinder performance. Each cluster represents "
"approximately 2 K of memory, so a value of `1024` represents `2` megabytes "
"of kernel memory reserved for network buffers. A simple calculation can be "
"done to figure out how many are needed. A web server which maxes out at "
"`1000` simultaneous connections where each connection uses a 6 K receive and "
"16 K send buffer, requires approximately 32 MB worth of network buffers to "
"cover the web server. A good rule of thumb is to multiply by `2`, so 2x32 "
"MB / 2 KB = 64 MB / 2 kB = `32768`. Values between `4096` and `32768` are "
"recommended for machines with greater amounts of memory. Never specify an "
"arbitrarily high value for this parameter as it could lead to a boot time "
"crash. To observe network cluster usage, use `-m` with man:netstat[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1519
+#: documentation/content/en/books/handbook/config/_index.adoc:1523
msgid ""
"The `kern.ipc.nmbclusters` loader tunable should be used to tune this at "
"boot time. Only older versions of FreeBSD will require the use of the "
"`NMBCLUSTERS` kernel man:config[8] option."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1524
+#: documentation/content/en/books/handbook/config/_index.adoc:1528
msgid ""
"For busy servers that make extensive use of the man:sendfile[2] system call, "
"it may be necessary to increase the number of man:sendfile[2] buffers via "
"the `NSFBUFS` kernel configuration option or by setting its value in [."
"filename]#/boot/loader.conf# (see man:loader[8] for details). A common "
"indicator that this parameter needs to be adjusted is when processes are "
"seen in the `sfbufa` state. The man:sysctl[8] variable `kern.ipc.nsfbufs` "
"is read-only. This parameter nominally scales with `kern.maxusers`, however "
"it may be necessary to tune accordingly."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1528
+#: documentation/content/en/books/handbook/config/_index.adoc:1532
msgid ""
"Even though a socket has been marked as non-blocking, calling man:"
"sendfile[2] on the non-blocking socket may result in the man:sendfile[2] "
"call blocking until enough ``struct sf_buf``'s are made available."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1530
+#: documentation/content/en/books/handbook/config/_index.adoc:1534
#, no-wrap
msgid "`net.inet.ip.portrange.*`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1542
+#: documentation/content/en/books/handbook/config/_index.adoc:1546
msgid ""
"The `net.inet.ip.portrange.*` man:sysctl[8] variables control the port "
"number ranges automatically bound to `TCP` and `UDP` sockets. There are "
"three ranges: a low range, a default range, and a high range. Most network "
"programs use the default range which is controlled by `net.inet.ip.portrange."
"first` and `net.inet.ip.portrange.last`, which default to `1024` and `5000`, "
"respectively. Bound port ranges are used for outgoing connections and it is "
"possible to run the system out of ports under certain circumstances. This "
"most commonly occurs when running a heavily loaded web proxy. The port "
"range is not an issue when running a server which handles mainly incoming "
"connections, such as a web server, or has a limited number of outgoing "
"connections, such as a mail relay. For situations where there is a shortage "
"of ports, it is recommended to increase `net.inet.ip.portrange.last` "
"modestly. A value of `10000`, `20000` or `30000` may be reasonable. "
"Consider firewall effects when changing the port range. Some firewalls may "
"block large ranges of ports, usually low-numbered ports, and expect systems "
"to use higher ranges of ports for outgoing connections. For this reason, it "
"is not recommended that the value of `net.inet.ip.portrange.first` be "
"lowered."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1543
+#: documentation/content/en/books/handbook/config/_index.adoc:1547
#, no-wrap
msgid "Virtual Memory"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1545
+#: documentation/content/en/books/handbook/config/_index.adoc:1549
#, no-wrap
msgid "`kern.maxvnodes`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1552
+#: documentation/content/en/books/handbook/config/_index.adoc:1556
msgid ""
"A vnode is the internal representation of a file or directory. Increasing "
"the number of vnodes available to the operating system reduces disk I/O. "
"Normally, this is handled by the operating system and does not need to be "
"changed. In some cases where disk I/O is a bottleneck and the system is "
"running out of vnodes, this setting needs to be increased. The amount of "
"inactive and free RAM will need to be taken into account."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1554
+#: documentation/content/en/books/handbook/config/_index.adoc:1558
msgid "To see the current number of vnodes in use:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1559
+#: documentation/content/en/books/handbook/config/_index.adoc:1563
#, no-wrap
msgid ""
"# sysctl vfs.numvnodes\n"
"vfs.numvnodes: 91349\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1562
+#: documentation/content/en/books/handbook/config/_index.adoc:1566
msgid "To see the maximum vnodes:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1567
+#: documentation/content/en/books/handbook/config/_index.adoc:1571
#, no-wrap
msgid ""
"# sysctl kern.maxvnodes\n"
"kern.maxvnodes: 100000\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1573
+#: documentation/content/en/books/handbook/config/_index.adoc:1577
msgid ""
"If the current vnode usage is near the maximum, try increasing `kern."
"maxvnodes` by a value of `1000`. Keep an eye on the number of `vfs."
"numvnodes`. If it climbs up to the maximum again, `kern.maxvnodes` will "
"need to be increased further. Otherwise, a shift in memory usage as "
"reported by man:top[1] should be visible and more memory should be active."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:1575
+#: documentation/content/en/books/handbook/config/_index.adoc:1579
#, no-wrap
msgid "Adding Swap Space"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1579
+#: documentation/content/en/books/handbook/config/_index.adoc:1583
msgid ""
"Sometimes a system requires more swap space. This section describes two "
"methods to increase swap space: adding swap to an existing partition or new "
"hard drive, and creating a swap file on an existing partition."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1581
+#: documentation/content/en/books/handbook/config/_index.adoc:1585
msgid ""
"For information on how to encrypt swap space, which options exist, and why "
"it should be done, refer to crossref:disks[swap-encrypting,“Encrypting "
"Swap”]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1583
+#: documentation/content/en/books/handbook/config/_index.adoc:1587
#, no-wrap
msgid "Swap on a New Hard Drive or Existing Partition"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1587
+#: documentation/content/en/books/handbook/config/_index.adoc:1591
msgid ""
"Adding a new hard drive for swap gives better performance than using a "
"partition on an existing drive. Setting up partitions and hard drives is "
"explained in crossref:disks[disks-adding,“Adding Disks”] while crossref:"
"bsdinstall[configtuning-initial,“Designing the Partition Layout”] discusses "
"partition layouts and swap partition size considerations."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1590
+#: documentation/content/en/books/handbook/config/_index.adoc:1594
msgid "Use `swapon` to add a swap partition to the system. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1594
+#: documentation/content/en/books/handbook/config/_index.adoc:1598
#, no-wrap
msgid "# swapon /dev/ada1s1b\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1602
+#: documentation/content/en/books/handbook/config/_index.adoc:1606
msgid ""
"It is possible to use any partition not currently mounted, even if it "
"already contains data. Using `swapon` on a partition that contains data "
"will overwrite and destroy that data. Make sure that the partition to be "
"added as swap is really the intended partition before running `swapon`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1605
+#: documentation/content/en/books/handbook/config/_index.adoc:1609
msgid ""
"To automatically add this swap partition on boot, add an entry to [."
"filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1609
+#: documentation/content/en/books/handbook/config/_index.adoc:1613
#, no-wrap
msgid "/dev/ada1s1b\tnone\tswap\tsw\t0\t0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1613
+#: documentation/content/en/books/handbook/config/_index.adoc:1617
msgid ""
"See man:fstab[5] for an explanation of the entries in [.filename]#/etc/"
"fstab#. More information about `swapon` can be found in man:swapon[8]."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/config/_index.adoc:1615
-#: documentation/content/en/books/handbook/config/_index.adoc:1623
+#: documentation/content/en/books/handbook/config/_index.adoc:1619
+#: documentation/content/en/books/handbook/config/_index.adoc:1627
#, no-wrap
msgid "Creating a Swap File"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1618
+#: documentation/content/en/books/handbook/config/_index.adoc:1622
msgid ""
"These examples create a 512M swap file called [.filename]#/usr/swap0# "
"instead of using a partition."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1621
+#: documentation/content/en/books/handbook/config/_index.adoc:1625
msgid ""
"Using swap files requires that the module needed by man:md[4] has either "
"been built into the kernel or has been loaded before swap is enabled. See "
"crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel] for "
"information about building a custom kernel."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1628
+#: documentation/content/en/books/handbook/config/_index.adoc:1632
msgid "Create the swap file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1632
+#: documentation/content/en/books/handbook/config/_index.adoc:1636
#, no-wrap
msgid "# dd if=/dev/zero of=/usr/swap0 bs=1m count=512\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1635
+#: documentation/content/en/books/handbook/config/_index.adoc:1639
msgid "Set the proper permissions on the new file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1639
+#: documentation/content/en/books/handbook/config/_index.adoc:1643
#, no-wrap
msgid "# chmod 0600 /usr/swap0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1642
+#: documentation/content/en/books/handbook/config/_index.adoc:1646
msgid ""
"Inform the system about the swap file by adding a line to [.filename]#/etc/"
"fstab#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1646
+#: documentation/content/en/books/handbook/config/_index.adoc:1650
#, no-wrap
msgid "md\tnone\tswap\tsw,file=/usr/swap0,late\t0\t0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1649
+#: documentation/content/en/books/handbook/config/_index.adoc:1653
msgid ""
"Swap space will be added on system startup. To add swap space immediately, "
"use man:swapon[8]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1653
+#: documentation/content/en/books/handbook/config/_index.adoc:1657
#, no-wrap
msgid "# swapon -aL\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/config/_index.adoc:1658
+#: documentation/content/en/books/handbook/config/_index.adoc:1662
#, no-wrap
msgid "Power and Resource Management"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1668
+#: documentation/content/en/books/handbook/config/_index.adoc:1672
msgid ""
"It is important to utilize hardware resources in an efficient manner. Power "
"and resource management allows the operating system to monitor system limits "
"and to possibly provide an alert if the system temperature increases "
"unexpectedly. An early specification for providing power management was the "
"Advanced Power Management (APM) facility. APM controls the power usage of a "
"system based on its activity. However, it was difficult and inflexible for "
"operating systems to manage the power usage and thermal properties of a "
"system. The hardware was managed by the BIOS and the user had limited "
"configurability and visibility into the power management settings. The "
"APMBIOS is supplied by the vendor and is specific to the hardware platform. "
"An APM driver in the operating system mediates access to the APM Software "
"Interface, which allows management of power levels."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1676
+#: documentation/content/en/books/handbook/config/_index.adoc:1680
msgid ""
"There are four major problems in APM. First, power management is done by "
"the vendor-specific BIOS, separate from the operating system. For example, "
"the user can set idle-time values for a hard drive in the APMBIOS so that, "
"when exceeded, the BIOS spins down the hard drive without the consent of the "
"operating system. Second, the APM logic is embedded in the BIOS, and it "
"operates outside the scope of the operating system. This means that users "
"can only fix problems in the APMBIOS by flashing a new one into the ROM, "
"which is a dangerous procedure with the potential to leave the system in an "
"unrecoverable state if it fails. Third, APM is a vendor-specific "
"technology, meaning that there is a lot of duplication of efforts and bugs "
"found in one vendor's BIOS may not be solved in others. Lastly, the APMBIOS "
"did not have enough room to implement a sophisticated power policy or one "
"that can adapt well to the purpose of the machine."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1681
+#: documentation/content/en/books/handbook/config/_index.adoc:1685
msgid ""
"The Plug and Play BIOS (PNPBIOS) was unreliable in many situations. PNPBIOS "
"is 16-bit technology, so the operating system has to use 16-bit emulation in "
"order to interface with PNPBIOS methods. FreeBSD provides an APM driver as "
"APM should still be used for systems manufactured at or before the year "
"2000. The driver is documented in man:apm[4]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1685
+#: documentation/content/en/books/handbook/config/_index.adoc:1689
msgid ""
"The successor to APM is the Advanced Configuration and Power Interface "
"(ACPI). ACPI is a standard written by an alliance of vendors to provide an "
"interface for hardware resources and power management. It is a key element "
"in _Operating System-directed configuration and Power Management_ as it "
"provides more control and flexibility to the operating system."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1688
+#: documentation/content/en/books/handbook/config/_index.adoc:1692
msgid ""
"This chapter demonstrates how to configure ACPI on FreeBSD. It then offers "
"some tips on how to debug ACPI and how to submit a problem report containing "
"debugging information so that developers can diagnosis and fix ACPI issues."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1690
+#: documentation/content/en/books/handbook/config/_index.adoc:1694
#, no-wrap
msgid "Configuring ACPI"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1695
+#: documentation/content/en/books/handbook/config/_index.adoc:1699
msgid ""
"In FreeBSD the man:acpi[4] driver is loaded by default at system boot and "
"should _not_ be compiled into the kernel. This driver cannot be unloaded "
"after boot because the system bus uses it for various hardware "
"interactions. However, if the system is experiencing problems, ACPI can be "
"disabled altogether by rebooting after setting `hint.acpi.0.disabled=\"1\"` "
"in [.filename]#/boot/loader.conf# or by setting this variable at the loader "
"prompt, as described in crossref:boot[boot-loader,“Stage Three”]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1700
+#: documentation/content/en/books/handbook/config/_index.adoc:1704
msgid ""
"ACPI and APM cannot coexist and should be used separately. The last one to "
"load will terminate if the driver notices the other is running."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1705
+#: documentation/content/en/books/handbook/config/_index.adoc:1709
msgid ""
"ACPI can be used to put the system into a sleep mode with `acpiconf`, the `-"
"s` flag, and a number from `1` to `5`. Most users only need `1` (quick "
"suspend to RAM) or `3` (suspend to RAM). Option `5` performs a soft-off "
"which is the same as running `halt -p`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1710
+#: documentation/content/en/books/handbook/config/_index.adoc:1714
msgid ""
"The man:acpi_video[4] driver uses link:https://uefi.org/specs/ACPI/6.4/"
"Apx_B_Video_Extensions/Apx_B_Video_Extensions.html[ACPI Video Extensions] to "
"control display switching and backlight brightness. It must be loaded after "
"any of the DRM kernel modules. After loading the driver, the kbd:[Fn] "
"brightness keys will change the brightness of the screen. It is possible to "
"check the ACPI events by inspecting [.filename]#/var/run/devd.pipe#:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1718
+#: documentation/content/en/books/handbook/config/_index.adoc:1722
msgid ""
"... # cat /var/run/devd.pipe !system=ACPI subsystem=Video type=brightness "
"notify=62 !system=ACPI subsystem=Video type=brightness notify=63 !"
"system=ACPI subsystem=Video type=brightness notify=64 ..."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1721
+#: documentation/content/en/books/handbook/config/_index.adoc:1725
msgid ""
"Other options are available using `sysctl`. Refer to man:acpi[4] and man:"
"acpiconf[8] for more information."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1723
+#: documentation/content/en/books/handbook/config/_index.adoc:1727
#, no-wrap
msgid "Common Problems"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1730
+#: documentation/content/en/books/handbook/config/_index.adoc:1734
msgid ""
"ACPI is present in all modern computers that conform to the ia32 (x86) and "
"amd64 (AMD) architectures. The full standard has many features including "
"CPU performance management, power planes control, thermal zones, various "
"battery systems, embedded controllers, and bus enumeration. Most systems "
"implement less than the full standard. For instance, a desktop system "
"usually only implements bus enumeration while a laptop might have cooling "
"and battery management support as well. Laptops also have suspend and "
"resume, with their own associated complexity."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1734
+#: documentation/content/en/books/handbook/config/_index.adoc:1738
msgid ""
"An ACPI-compliant system has various components. The BIOS and chipset "
"vendors provide various fixed tables, such as FADT, in memory that specify "
"things like the APIC map (used for SMP), config registers, and simple "
"configuration values. Additionally, a bytecode table, the Differentiated "
"System Description Table DSDT, specifies a tree-like name space of devices "
"and methods."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1740
+#: documentation/content/en/books/handbook/config/_index.adoc:1744
msgid ""
"The ACPI driver must parse the fixed tables, implement an interpreter for "
"the bytecode, and modify device drivers and the kernel to accept information "
"from the ACPI subsystem. For FreeBSD, Intel(R) has provided an interpreter "
"(ACPI-CA) that is shared with Linux(R) and NetBSD. The path to the ACPI-CA "
"source code is [.filename]#src/sys/contrib/dev/acpica#. The glue code that "
"allows ACPI-CA to work on FreeBSD is in [.filename]#src/sys/dev/acpica/"
"Osd#. Finally, drivers that implement various ACPI devices are found in [."
"filename]#src/sys/dev/acpica#."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1744
+#: documentation/content/en/books/handbook/config/_index.adoc:1748
msgid ""
"For ACPI to work correctly, all the parts have to work correctly. Here are "
"some common problems, in order of frequency of appearance, and some possible "
"workarounds or fixes. If a fix does not resolve the issue, refer to <<ACPI-"
"submitdebug>> for instructions on how to submit a bug report."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1745
+#: documentation/content/en/books/handbook/config/_index.adoc:1749
#, no-wrap
msgid "Mouse Issues"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1749
+#: documentation/content/en/books/handbook/config/_index.adoc:1753
msgid ""
"In some cases, resuming from a suspend operation will cause the mouse to "
"fail. A known work around is to add `hint.psm.0.flags=\"0x3000\"` to [."
"filename]#/boot/loader.conf#."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1750
+#: documentation/content/en/books/handbook/config/_index.adoc:1754
#, no-wrap
msgid "Suspend/Resume"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1756
+#: documentation/content/en/books/handbook/config/_index.adoc:1760
msgid ""
"ACPI has three suspend to RAM (STR) states, `S1`-`S3`, and one suspend to "
"disk state (STD), called `S4`. STD can be implemented in two separate "
"ways. The ``S4``BIOS is a BIOS-assisted suspend to disk and ``S4``OS is "
"implemented entirely by the operating system. The normal state the system "
"is in when plugged in but not powered up is \"soft off\" (`S5`)."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1759
+#: documentation/content/en/books/handbook/config/_index.adoc:1763
msgid ""
"Use `sysctl hw.acpi` to check for the suspend-related items. These example "
"results are from a Thinkpad:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1764
+#: documentation/content/en/books/handbook/config/_index.adoc:1768
#, no-wrap
msgid ""
"hw.acpi.supported_sleep_state: S3 S4 S5\n"
"hw.acpi.s4bios: 0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1768
+#: documentation/content/en/books/handbook/config/_index.adoc:1772
msgid ""
"Use `acpiconf -s` to test `S3`, `S4`, and `S5`. An `s4bios` of one (`1`) "
"indicates ``S4``BIOS support instead of `S4` operating system support."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1774
+#: documentation/content/en/books/handbook/config/_index.adoc:1778
msgid ""
"When testing suspend/resume, start with `S1`, if supported. This state is "
"most likely to work since it does not require much driver support. No one "
"has implemented `S2`, which is similar to `S1`. Next, try `S3`. This is "
"the deepest STR state and requires a lot of driver support to properly "
"reinitialize the hardware."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1777
+#: documentation/content/en/books/handbook/config/_index.adoc:1781
msgid ""
"A common problem with suspend/resume is that many device drivers do not "
"save, restore, or reinitialize their firmware, registers, or device memory "
"properly. As a first attempt at debugging the problem, try:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1783
+#: documentation/content/en/books/handbook/config/_index.adoc:1787
#, no-wrap
msgid ""
"# sysctl debug.bootverbose=1\n"
"# sysctl debug.acpi.suspend_bounce=1\n"
"# acpiconf -s 3\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1788
+#: documentation/content/en/books/handbook/config/_index.adoc:1792
msgid ""
"This test emulates the suspend/resume cycle of all device drivers without "
"actually going into `S3` state. In some cases, problems such as losing "
"firmware state, device watchdog time out, and retrying forever, can be "
"captured with this method. Note that the system will not really enter `S3` "
"state, which means devices may not lose power, and many will work fine even "
"if suspend/resume methods are totally missing, unlike real `S3` state."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1790
+#: documentation/content/en/books/handbook/config/_index.adoc:1794
msgid ""
"If the previous test worked, on a laptop it is possible to configure the "
"system to suspend into `S3` on lid close and resume when it is open back "
"again:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1794
+#: documentation/content/en/books/handbook/config/_index.adoc:1798
#, no-wrap
msgid "# sysctl hw.acpi.lid_switch_state=S3\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1797
+#: documentation/content/en/books/handbook/config/_index.adoc:1801
msgid "This change can be made persistent across reboots:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1801
+#: documentation/content/en/books/handbook/config/_index.adoc:1805
#, no-wrap
msgid "# echo 'hw.acpi.lid_switch_state=S3' >> /etc/sysctl.conf\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1804
+#: documentation/content/en/books/handbook/config/_index.adoc:1808
msgid ""
"Harder cases require additional hardware, such as a serial port and cable "
"for debugging through a serial console, a Firewire port and cable for using "
"man:dcons[4], and kernel debugging skills."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1811
+#: documentation/content/en/books/handbook/config/_index.adoc:1815
msgid ""
"To help isolate the problem, unload as many drivers as possible. If it "
"works, narrow down which driver is the problem by loading drivers until it "
"fails again. Typically, binary drivers like [.filename]#nvidia.ko#, display "
"drivers, and USB will have the most problems while Ethernet interfaces "
"usually work fine. If drivers can be properly loaded and unloaded, automate "
"this by putting the appropriate commands in [.filename]#/etc/rc.suspend# and "
"[.filename]#/etc/rc.resume#. Try setting `hw.acpi.reset_video` to `1` if "
"the display is messed up after resume. Try setting longer or shorter values "
"for `hw.acpi.sleep_delay` to see if that helps."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1817
+#: documentation/content/en/books/handbook/config/_index.adoc:1821
msgid ""
"Try loading a recent Linux(R) distribution to see if suspend/resume works on "
"the same hardware. If it works on Linux(R), it is likely a FreeBSD driver "
"problem. Narrowing down which driver causes the problem will assist "
"developers in fixing the problem. Since the ACPI maintainers rarely "
"maintain other drivers, such as sound or ATA, any driver problems should "
"also be posted to the {freebsd-current} and mailed to the driver "
"maintainer. Advanced users can include debugging man:printf[3]s in a "
"problematic driver to track down where in its resume function it hangs."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1821
+#: documentation/content/en/books/handbook/config/_index.adoc:1825
msgid ""
"Finally, try disabling ACPI and enabling APM instead. If suspend/resume "
"works with APM, stick with APM, especially on older hardware (pre-2000). It "
"took vendors a while to get ACPI support correct and older hardware is more "
"likely to have BIOS problems with ACPI."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1822
+#: documentation/content/en/books/handbook/config/_index.adoc:1826
#, no-wrap
msgid "System Hangs"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1826
+#: documentation/content/en/books/handbook/config/_index.adoc:1830
msgid ""
"Most system hangs are a result of lost interrupts or an interrupt storm. "
"Chipsets may have problems based on boot, how the BIOS configures interrupts "
"before correctness of the APIC (MADT) table, and routing of the System "
"Control Interrupt (SCI)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1830
+#: documentation/content/en/books/handbook/config/_index.adoc:1834
msgid ""
"Interrupt storms can be distinguished from lost interrupts by checking the "
"output of `vmstat -i` and looking at the line that has `acpi0`. If the "
"counter is increasing at more than a couple per second, there is an "
"interrupt storm. If the system appears hung, try breaking to DDB (kbd:"
"[CTRL+ALT+ESC] on console) and type `show interrupts`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1832
+#: documentation/content/en/books/handbook/config/_index.adoc:1836
msgid ""
"When dealing with interrupt problems, try disabling APIC support with `hint."
"apic.0.disabled=\"1\"` in [.filename]#/boot/loader.conf#."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1833
+#: documentation/content/en/books/handbook/config/_index.adoc:1837
#, no-wrap
msgid "Panics"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1840
+#: documentation/content/en/books/handbook/config/_index.adoc:1844
msgid ""
"Panics are relatively rare for ACPI and are the top priority to be fixed. "
"The first step is to isolate the steps to reproduce the panic, if possible, "
"and get a backtrace. Follow the advice for enabling `options DDB` and "
"setting up a serial console in crossref:serialcomms[serialconsole-"
"ddb,“Entering the DDB Debugger from the Serial Line”] or setting up a dump "
"partition. To get a backtrace in DDB, use `tr`. When handwriting the "
"backtrace, get at least the last five and the top five lines in the trace."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1844
+#: documentation/content/en/books/handbook/config/_index.adoc:1848
msgid ""
"Then, try to isolate the problem by booting with ACPI disabled. If that "
"works, isolate the ACPI subsystem by using various values of `debug.acpi."
"disable`. See man:acpi[4] for some examples."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1845
+#: documentation/content/en/books/handbook/config/_index.adoc:1849
#, no-wrap
msgid "System Powers Up After Suspend or Shutdown"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1851
+#: documentation/content/en/books/handbook/config/_index.adoc:1855
msgid ""
"First, try setting `hw.acpi.disable_on_poweroff=\"0\"` in [.filename]#/boot/"
"loader.conf#. This keeps ACPI from disabling various events during the "
"shutdown process. Some systems need this value set to `1` (the default) for "
"the same reason. This usually fixes the problem of a system powering up "
"spontaneously after a suspend or poweroff."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/config/_index.adoc:1853
+#: documentation/content/en/books/handbook/config/_index.adoc:1857
#, no-wrap
msgid "BIOS Contains Buggy Bytecode"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1857
+#: documentation/content/en/books/handbook/config/_index.adoc:1861
msgid ""
"Some BIOS vendors provide incorrect or buggy bytecode. This is usually "
"manifested by kernel console messages like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1862
+#: documentation/content/en/books/handbook/config/_index.adoc:1866
#, no-wrap
msgid ""
"ACPI-1287: *** Error: Method execution failed [\\\\_SB_.PCI0.LPC0.FIGD._STA] \\\\\n"
"(Node 0xc3f6d160), AE_NOT_FOUND\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1866
+#: documentation/content/en/books/handbook/config/_index.adoc:1870
msgid ""
"Often, these problems may be resolved by updating the BIOS to the latest "
"revision. Most console messages are harmless, but if there are other "
"problems, like the battery status is not working, these messages are a good "
"place to start looking for problems."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1867
+#: documentation/content/en/books/handbook/config/_index.adoc:1871
#, no-wrap
msgid "Overriding the Default AML"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1871
+#: documentation/content/en/books/handbook/config/_index.adoc:1875
msgid ""
"The BIOS bytecode, known as ACPI Machine Language (AML), is compiled from a "
"source language called ACPI Source Language (ASL). The AML is found in the "
"table known as the Differentiated System Description Table (DSDT)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1876
+#: documentation/content/en/books/handbook/config/_index.adoc:1880
msgid ""
"The goal of FreeBSD is for everyone to have working ACPI without any user "
"intervention. Workarounds are still being developed for common mistakes "
"made by BIOS vendors. The Microsoft(R) interpreter ([.filename]#acpi.sys# "
"and [.filename]#acpiec.sys#) does not strictly check for adherence to the "
"standard, and thus many BIOS vendors who only test ACPI under Windows(R) "
"never fix their ASL. FreeBSD developers continue to identify and document "
"which non-standard behavior is allowed by Microsoft(R)'s interpreter and "
"replicate it so that FreeBSD can work without forcing users to fix the ASL."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1879
+#: documentation/content/en/books/handbook/config/_index.adoc:1883
msgid ""
"To help identify buggy behavior and possibly fix it manually, a copy can be "
"made of the system's ASL. To copy the system's ASL to a specified file "
"name, use `acpidump` with `-t`, to show the contents of the fixed tables, "
"and `-d`, to disassemble the AML:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1883
+#: documentation/content/en/books/handbook/config/_index.adoc:1887
#, no-wrap
msgid "# acpidump -td > my.asl\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1887
+#: documentation/content/en/books/handbook/config/_index.adoc:1891
msgid ""
"Some AML versions assume the user is running Windows(R). To override this, "
"set `hw.acpi.osname=_\"Windows 2009\"_` in [.filename]#/boot/loader.conf#, "
"using the most recent Windows(R) version listed in the ASL."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1891
+#: documentation/content/en/books/handbook/config/_index.adoc:1895
msgid ""
"Other workarounds may require [.filename]#my.asl# to be customized. If this "
"file is edited, compile the new ASL using the following command. Warnings "
"can usually be ignored, but errors are bugs that will usually prevent ACPI "
"from working correctly."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1895
+#: documentation/content/en/books/handbook/config/_index.adoc:1899
#, no-wrap
msgid "# iasl -f my.asl\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1899
+#: documentation/content/en/books/handbook/config/_index.adoc:1903
msgid ""
"Including `-f` forces creation of the AML, even if there are errors during "
"compilation. Some errors, such as missing return statements, are "
"automatically worked around by the FreeBSD interpreter."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1902
+#: documentation/content/en/books/handbook/config/_index.adoc:1906
msgid ""
"The default output filename for `iasl` is [.filename]#DSDT.aml#. Load this "
"file instead of the BIOS's buggy copy, which is still present in flash "
"memory, by editing [.filename]#/boot/loader.conf# as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1907
+#: documentation/content/en/books/handbook/config/_index.adoc:1911
#, no-wrap
msgid ""
"acpi_dsdt_load=\"YES\"\n"
"acpi_dsdt_name=\"/boot/DSDT.aml\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1911
+#: documentation/content/en/books/handbook/config/_index.adoc:1915
msgid ""
"Be sure to copy [.filename]#DSDT.aml# to [.filename]#/boot#, then reboot the "
"system. If this fixes the problem, send a man:diff[1] of the old and new "
-"ASL to {freebsd-acpi} so that developers can work around the buggy behavior "
-"in [.filename]#acpica#."
+"ASL to the {freebsd-acpi} so that developers can work around the buggy "
+"behavior in [.filename]#acpica#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1913
+#: documentation/content/en/books/handbook/config/_index.adoc:1917
#, no-wrap
msgid "Getting and Submitting Debugging Info"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1921
+#: documentation/content/en/books/handbook/config/_index.adoc:1925
msgid ""
"The ACPI driver has a flexible debugging facility. A set of subsystems and "
"the level of verbosity can be specified. The subsystems to debug are "
"specified as layers and are broken down into components "
"(`ACPI_ALL_COMPONENTS`) and ACPI hardware support (`ACPI_ALL_DRIVERS`). The "
"verbosity of debugging output is specified as the level and ranges from just "
"report errors (`ACPI_LV_ERROR`) to everything (`ACPI_LV_VERBOSE`). The "
"level is a bitmask so multiple options can be set at once, separated by "
"spaces. In practice, a serial console should be used to log the output so "
"it is not lost as the console message buffer flushes. A full list of the "
"individual layers and levels is found in man:acpi[4]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1925
+#: documentation/content/en/books/handbook/config/_index.adoc:1929
msgid ""
"Debugging output is not enabled by default. To enable it, add `options "
"ACPI_DEBUG` to the custom kernel configuration file if ACPI is compiled into "
"the kernel. Add `ACPI_DEBUG=1` to [.filename]#/etc/make.conf# to enable it "
"globally. If a module is used instead of a custom kernel, recompile just "
"the [.filename]#acpi.ko# module as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1929
+#: documentation/content/en/books/handbook/config/_index.adoc:1933
#, no-wrap
msgid "# cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1933
+#: documentation/content/en/books/handbook/config/_index.adoc:1937
msgid ""
"Copy the compiled [.filename]#acpi.ko# to [.filename]#/boot/kernel# and add "
"the desired level and layer to [.filename]#/boot/loader.conf#. The entries "
"in this example enable debug messages for all ACPI components and hardware "
"drivers and output error messages at the least verbose level:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1938
+#: documentation/content/en/books/handbook/config/_index.adoc:1942
#, no-wrap
msgid ""
"debug.acpi.layer=\"ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS\"\n"
"debug.acpi.level=\"ACPI_LV_ERROR\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1943
+#: documentation/content/en/books/handbook/config/_index.adoc:1947
msgid ""
"If the required information is triggered by a specific event, such as a "
"suspend and then resume, do not modify [.filename]#/boot/loader.conf#. "
"Instead, use `sysctl` to specify the layer and level after booting and "
"preparing the system for the specific event. The variables which can be set "
"using `sysctl` are named the same as the tunables in [.filename]#/boot/"
"loader.conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1945
+#: documentation/content/en/books/handbook/config/_index.adoc:1949
msgid ""
-"Once the debugging information is gathered, it can be sent to {freebsd-acpi} "
-"so that it can be used by the FreeBSD ACPI maintainers to identify the root "
-"cause of the problem and to develop a solution."
+"Once the debugging information is gathered, it can be sent to the {freebsd-"
+"acpi} so that it can be used by the FreeBSD ACPI maintainers to identify the "
+"root cause of the problem and to develop a solution."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1949
+#: documentation/content/en/books/handbook/config/_index.adoc:1953
msgid ""
"Before submitting debugging information to this mailing list, ensure the "
"latest BIOS version is installed and, if available, the embedded controller "
"firmware version."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1952
+#: documentation/content/en/books/handbook/config/_index.adoc:1956
msgid "When submitting a problem report, include the following information:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1954
+#: documentation/content/en/books/handbook/config/_index.adoc:1958
msgid ""
"Description of the buggy behavior, including system type, model, and "
"anything that causes the bug to appear. Note as accurately as possible when "
"the bug began occurring if it is new."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1955
+#: documentation/content/en/books/handbook/config/_index.adoc:1959
msgid ""
"The output of `dmesg` after running `boot -v`, including any error messages "
"generated by the bug."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1956
+#: documentation/content/en/books/handbook/config/_index.adoc:1960
msgid ""
"The `dmesg` output from `boot -v` with ACPI disabled, if disabling ACPI "
"helps to fix the problem."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1957
+#: documentation/content/en/books/handbook/config/_index.adoc:1961
msgid ""
"Output from `sysctl hw.acpi`. This lists which features the system offers."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1958
+#: documentation/content/en/books/handbook/config/_index.adoc:1962
msgid ""
"The URL to a pasted version of the system's ASL. Do _not_ send the ASL "
"directly to the list as it can be very large. Generate a copy of the ASL by "
"running this command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/config/_index.adoc:1962
+#: documentation/content/en/books/handbook/config/_index.adoc:1966
#, no-wrap
msgid "# acpidump -dt > name-system.asl\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1966
+#: documentation/content/en/books/handbook/config/_index.adoc:1970
msgid ""
"Substitute the login name for _name_ and manufacturer/model for _system_. "
"For example, use [.filename]#njl-FooCo6000.asl#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1973
+#: documentation/content/en/books/handbook/config/_index.adoc:1977
msgid ""
"Most FreeBSD developers watch the {freebsd-current}, but one should submit "
-"problems to {freebsd-acpi} to be sure it is seen. Be patient when waiting "
-"for a response. If the bug is not immediately apparent, submit a bug "
-"report. When entering a PR, include the same information as requested "
+"problems to the {freebsd-acpi} to be sure it is seen. Be patient when "
+"waiting for a response. If the bug is not immediately apparent, submit a "
+"bug report. When entering a PR, include the same information as requested "
"above. This helps developers to track the problem and resolve it. Do not "
-"send a PR without emailing {freebsd-acpi} first as it is likely that the "
+"send a PR without emailing the {freebsd-acpi} first as it is likely that the "
"problem has been reported before."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/config/_index.adoc:1975
+#: documentation/content/en/books/handbook/config/_index.adoc:1979
#, no-wrap
msgid "References"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1978
+#: documentation/content/en/books/handbook/config/_index.adoc:1982
msgid "More information about ACPI may be found in the following locations:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1980
+#: documentation/content/en/books/handbook/config/_index.adoc:1984
msgid ""
-"The FreeBSD ACPI Mailing List Archives (https://lists.freebsd.org/pipermail/"
-"freebsd-acpi/[https://lists.freebsd.org/pipermail/freebsd-acpi/])"
+"Archives at https://lists.freebsd.org/pipermail/freebsd-acpi/[] and more "
+"recent https://lists.freebsd.org/archives/freebsd-acpi/[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1981
-msgid ""
-"The https://uefi.org/specifications#ACPI[ACPI Specification]"
+#: documentation/content/en/books/handbook/config/_index.adoc:1985
+msgid "The https://uefi.org/specifications#ACPI[ACPI Specification]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/config/_index.adoc:1981
+#: documentation/content/en/books/handbook/config/_index.adoc:1985
msgid ""
"man:acpi[4], man:acpi_thermal[4], man:acpidump[8], man:iasl[8], and man:"
"acpidb[8]"
msgstr ""
diff --git a/documentation/content/en/books/handbook/cutting-edge/_index.po b/documentation/content/en/books/handbook/cutting-edge/_index.po
index 9b439ce2b5..8817ece916 100644
--- a/documentation/content/en/books/handbook/cutting-edge/_index.po
+++ b/documentation/content/en/books/handbook/cutting-edge/_index.po
@@ -1,2270 +1,2270 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/cutting-edge/_index.adoc:1
#, no-wrap
msgid "Information about how to keep a FreeBSD system up-to-date with freebsd-update or Git, how to rebuild and reinstall the entire base system, etc"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1
#, no-wrap
msgid "Chapter 25. Updating and Upgrading FreeBSD"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:14
#, no-wrap
msgid "Updating and Upgrading FreeBSD"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:59
msgid ""
"FreeBSD is under constant development between releases. Some people prefer "
"to use the officially released versions, while others prefer to keep in sync "
"with the latest developments. However, even official releases are often "
"updated with security and other critical fixes. Regardless of the version "
"used, FreeBSD provides all the necessary tools to keep the system updated, "
"and allows for easy upgrades between versions. This chapter describes how "
"to track the development system and the basic tools for keeping a FreeBSD "
"system up-to-date."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:61
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:63
msgid "How to keep a FreeBSD system up-to-date with freebsd-update or Git."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:64
msgid ""
"How to compare the state of an installed system against a known pristine "
"copy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:65
msgid ""
"How to keep the installed documentation up-to-date with Git or documentation "
"ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:66
msgid ""
"The difference between the two development branches: FreeBSD-STABLE and "
"FreeBSD-CURRENT."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:67
msgid "How to rebuild and reinstall the entire base system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:69
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:71
msgid ""
"Properly set up the network connection (crossref:advanced-"
"networking[advanced-networking,Advanced Networking])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:72
msgid ""
"Know how to install additional third-party software (crossref:ports[ports,"
"Installing Applications: Packages and Ports])."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:77
msgid ""
"Throughout this chapter, `git` is used to obtain and update FreeBSD "
"sources. Optionally, the package:devel/git[] port or package may be used."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:80
#, no-wrap
msgid "FreeBSD Update"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:84
msgid ""
"Applying security patches in a timely manner and upgrading to a newer "
"release of an operating system are important aspects of ongoing system "
"administration. FreeBSD includes a utility called `freebsd-update` which "
"can be used to perform both these tasks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:88
msgid ""
"This utility supports binary security and errata updates to FreeBSD, without "
"the need to manually compile and install the patch or a new kernel. Binary "
"updates are available for all architectures and releases currently supported "
"by the security team. The list of supported releases and their estimated "
"end-of-life dates are listed at https://www.FreeBSD.org/security/[https://"
"www.FreeBSD.org/security/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:92
msgid ""
"This utility also supports operating system upgrades to minor point releases "
"as well as upgrades to another release branch. Before upgrading to a new "
"release, review its release announcement as it contains important "
"information pertinent to the release. Release announcements are available "
"from https://www.FreeBSD.org/releases/[https://www.FreeBSD.org/releases/]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:96
msgid ""
"If a man:crontab[5] utilizing the features of man:freebsd-update[8] exists, "
"it must be disabled before upgrading the operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:99
msgid ""
"This section describes the configuration file used by `freebsd-update`, "
"demonstrates how to apply a security patch and how to upgrade to a minor or "
"major operating system release, and discusses some of the considerations "
"when upgrading the operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:101
#, no-wrap
msgid "The Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:106
msgid ""
"The default configuration file for `freebsd-update` works as-is. Some users "
"may wish to tweak the default configuration in [.filename]#/etc/freebsd-"
"update.conf#, allowing better control of the process. The comments in this "
"file explain the available options, but the following may require a bit more "
"explanation:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:111
#, no-wrap
msgid ""
"# Components of the base system which should be kept updated.\n"
"Components world kernel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:118
msgid ""
"This parameter controls which parts of FreeBSD will be kept up-to-date. The "
"default is to update the entire base system and the kernel. Individual "
"components can instead be specified, such as `src/base` or `src/sys`. "
"However, the best option is to leave this at the default as changing it to "
"include specific items requires every needed item to be listed. Over time, "
"this could have disastrous consequences as source code and binaries may "
"become out of sync."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:124
#, no-wrap
msgid ""
"# Paths which start with anything matching an entry in an IgnorePaths\n"
"# statement will be ignored.\n"
"IgnorePaths /boot/kernel/linker.hints\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:128
msgid ""
"To leave specified directories, such as [.filename]#/bin# or [.filename]#/"
"sbin#, untouched during the update process, add their paths to this "
"statement. This option may be used to prevent `freebsd-update` from "
"overwriting local modifications."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:135
#, no-wrap
msgid ""
"# Paths which start with anything matching an entry in an UpdateIfUnmodified\n"
"# statement will only be updated if the contents of the file have not been\n"
"# modified by the user (unless changes are merged; see below).\n"
"UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:140
msgid ""
"This option will only update unmodified configuration files in the specified "
"directories. Any changes made by the user will prevent the automatic "
"updating of these files. There is another option, `KeepModifiedMetadata`, "
"which will instruct `freebsd-update` to save the changes during the merge."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:146
#, no-wrap
msgid ""
"# When upgrading to a new FreeBSD release, files which match MergeChanges\n"
"# will have any local changes merged into the version from the new release.\n"
"MergeChanges /etc/ /var/named/etc/ /boot/device.hints\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:153
msgid ""
"List of directories with configuration files that `freebsd-update` should "
"attempt to merge. The file merge process is a series of man:diff[1] patches "
"similar to man:mergemaster[8], but with fewer options. Merges are either "
"accepted, open an editor, or cause `freebsd-update` to abort. When in "
"doubt, backup [.filename]#/etc# and just accept the merges. See man:"
"mergemaster[8] for more information about `mergemaster`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:159
#, no-wrap
msgid ""
"# Directory in which to store downloaded updates and temporary\n"
"# files used by FreeBSD Update.\n"
"# WorkDir /var/db/freebsd-update\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:163
msgid ""
"This directory is where all patches and temporary files are placed. In "
"cases where the user is doing a version upgrade, this location should have "
"at least a gigabyte of disk space available."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:171
#, no-wrap
msgid ""
"# When upgrading between releases, should the list of Components be\n"
"# read strictly (StrictComponents yes) or merely as a list of components\n"
"# which *might* be installed of which FreeBSD Update should figure out\n"
"# which actually are installed and upgrade those (StrictComponents no)?\n"
"# StrictComponents no\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:175
msgid ""
"When this option is set to `yes`, `freebsd-update` will assume that the "
"`Components` list is complete and will not attempt to make changes outside "
"of the list. Effectively, `freebsd-update` will attempt to update every "
"file which belongs to the `Components` list."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:177
msgid "Refer to man:freebsd-update.conf[5] for more details."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:179
#, no-wrap
msgid "Applying Security Patches"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:183
msgid ""
"The process of applying FreeBSD security patches has been simplified, "
"allowing an administrator to keep a system fully patched using `freebsd-"
"update`. More information about FreeBSD security advisories can be found in "
"crossref:security[security-advisories,\"FreeBSD Security Advisories\"]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:187
msgid ""
"FreeBSD security patches may be downloaded and installed using the following "
"commands. The first command will determine if any outstanding patches are "
"available, and if so, will list the files that will be modifed if the "
"patches are applied. The second command will apply the patches."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:192
#, no-wrap
msgid ""
"# freebsd-update fetch\n"
"# freebsd-update install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:196
msgid ""
"If the update applies any kernel patches, the system will need a reboot in "
"order to boot into the patched kernel. If the patch was applied to any "
"running binaries, the affected applications should be restarted so that the "
"patched version of the binary is used."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:202
msgid ""
"Usually, the user needs to be prepared to reboot the system. To know if the "
"system requires a reboot due to a kernel update, execute the commands "
"`freebsd-version -k` and `uname -r`. Reboot the system if the outputs "
"differ."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:205
msgid ""
"The system can be configured to automatically check for updates once every "
"day by adding this entry to [.filename]#/etc/crontab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:209
#, no-wrap
msgid "@daily root freebsd-update cron\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:213
msgid ""
"If patches exist, they will automatically be downloaded but will not be "
"applied. The `root` user will be sent an email so that the patches may be "
"reviewed and manually installed with `freebsd-update install`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:215
msgid ""
"If anything goes wrong, `freebsd-update` has the ability to roll back the "
"last set of changes with the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:220
#, no-wrap
msgid ""
"# freebsd-update rollback\n"
"Uninstalling updates... done.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:223
msgid ""
"Again, the system should be restarted if the kernel or any kernel modules "
"were modified and any affected binaries should be restarted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:228
msgid ""
"Only the [.filename]#GENERIC# kernel can be automatically updated by "
"`freebsd-update`. If a custom kernel is installed, it will have to be "
"rebuilt and reinstalled after `freebsd-update` finishes installing the "
"updates. The default kernel name is _GENERIC_. The man:uname[1] command "
"may be used to verify its installation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:234
msgid ""
"Always keep a copy of the [.filename]#GENERIC# kernel in [.filename]#/boot/"
"GENERIC#. It will be helpful in diagnosing a variety of problems and in "
"performing version upgrades. Refer to <<freebsd-update-custom-kernel-9x>> "
"for instructions on how to get a copy of the [.filename]#GENERIC# kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:239
msgid ""
"Unless the default configuration in [.filename]#/etc/freebsd-update.conf# "
"has been changed, `freebsd-update` will install the updated kernel sources "
"along with the rest of the updates. Rebuilding and reinstalling a new "
"custom kernel can then be performed in the usual way."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:246
msgid ""
"The updates distributed by `freebsd-update` do not always involve the "
"kernel. It is not necessary to rebuild a custom kernel if the kernel "
"sources have not been modified by `freebsd-update install`. However, "
"`freebsd-update` will always update [.filename]#/usr/src/sys/conf/newvers."
"sh#. The current patch level, as indicated by the `-p` number reported by "
"`uname -r`, is obtained from this file. Rebuilding a custom kernel, even if "
"nothing else changed, allows `uname` to accurately report the current patch "
"level of the system. This is particularly helpful when maintaining multiple "
"systems, as it allows for a quick assessment of the updates installed in "
"each one."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:248
#, no-wrap
msgid "Performing Minor and Major Version Upgrades"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:251
msgid ""
"Upgrades from one minor version of FreeBSD to another are called _minor "
"version_ upgrades. An example:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:253
msgid "FreeBSD 13.1 to 13.2."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:255
msgid "_Major version_ upgrades increase the major version number. An example:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:257
msgid "FreeBSD 12.4 to 13.2."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:259
msgid ""
"Both types of upgrade can be performed by providing `freebsd-update` with a "
"release version target."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:265
msgid ""
"After each new `RELEASE`, FreeBSD package build servers will, for a limited "
"period, *not* use the newer version of the operating system. This provides "
"continuity for the many users who do not upgrade immediately after a release "
"announcement. For example:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:267
msgid ""
"packages for users of 13.1 and 13.2 will be built on a server running 13.1, "
"until 13.1 reaches end of life"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:269
msgid "and, critically:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:271
msgid "a kernel module that is built on 13.1 might *not* be suitable for 13.2."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:273
msgid ""
"So, with any minor or major OS upgrade, if your package requirements include "
"any kernel module:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:275
#, no-wrap
msgid "*be prepared to build the module from source*.\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:282
msgid ""
"If the system is running a custom kernel, make sure that a copy of the [."
"filename]#GENERIC# kernel exists in [.filename]#/boot/GENERIC# before "
"starting the upgrade. Refer to <<freebsd-update-custom-kernel-9x>> for "
"instructions on how to get a copy of the [.filename]#GENERIC# kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:285
msgid ""
"The following command, when run on a FreeBSD 13.1 system, will upgrade it to "
"FreeBSD 13.2:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:289
#, no-wrap
msgid "# freebsd-update -r 13.2-RELEASE upgrade\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:294
msgid ""
"After the command has been received, `freebsd-update` will evaluate the "
"configuration file and current system in an attempt to gather the "
"information necessary to perform the upgrade. A screen listing will display "
"which components have and have not been detected. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:301
#, no-wrap
msgid ""
"Looking up update.FreeBSD.org mirrors... 1 mirrors found.\n"
"Fetching metadata signature for 13.1-RELEASE from update1.FreeBSD.org... done.\n"
"Fetching metadata index... done.\n"
"Inspecting system... done.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:307
#, no-wrap
msgid ""
"The following components of FreeBSD seem to be installed:\n"
"kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games\n"
"src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue\n"
"src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin\n"
"world/base world/info world/lib32 world/manpages\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:311
#, no-wrap
msgid ""
"The following components of FreeBSD do not seem to be installed:\n"
"kernel/generic world/catpages world/dict world/doc world/games\n"
"world/proflibs\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:313
#, no-wrap
msgid "Does this look reasonable (y/n)? y\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:317
msgid ""
"At this point, `freebsd-update` will attempt to download all files required "
"for the upgrade. In some cases, the user may be prompted with questions "
"regarding what to install or how to proceed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:319
msgid ""
"When using a custom kernel, the above step will produce a warning similar to "
"the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:326
#, no-wrap
msgid ""
"WARNING: This system is running a \"MYKERNEL\" kernel, which is not a\n"
"kernel configuration distributed as part of FreeBSD 13.1-RELEASE.\n"
"This kernel will not be updated: you MUST update the kernel manually\n"
"before running \"/usr/sbin/freebsd-update install\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:330
msgid ""
"This warning may be safely ignored at this point. The updated [."
"filename]#GENERIC# kernel will be used as an intermediate step in the "
"upgrade process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:339
msgid ""
"Once all the patches have been downloaded to the local system, they will be "
"applied. This process may take a while, depending on the speed and workload "
"of the machine. Configuration files will then be merged. The merging "
"process requires some user intervention as a file may be merged or an editor "
"may appear on screen for a manual merge. The results of every successful "
"merge will be shown to the user as the process continues. A failed or "
"ignored merge will cause the process to abort. Users may wish to make a "
"backup of [.filename]#/etc# and manually merge important files, such as [."
"filename]#master.passwd# or [.filename]#group# at a later time."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:346
msgid ""
"The system is not being altered yet as all patching and merging is happening "
"in another directory. Once all patches have been applied successfully, all "
"configuration files have been merged and it seems the process will go "
"smoothly, the changes can be committed to disk by the user using the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:350
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:386
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:462
#, no-wrap
msgid "# freebsd-update install\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:357
msgid ""
"The kernel and kernel modules will be patched first. If the system is "
"running with a custom kernel, use man:nextboot[8] to set the kernel for the "
"next boot to the updated [.filename]#/boot/GENERIC#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:361
#, no-wrap
msgid "# nextboot -k GENERIC\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:370
msgid ""
"Before rebooting with the [.filename]#GENERIC# kernel, make sure it contains "
"all the drivers required for the system to boot properly and connect to the "
"network, if the machine being updated is accessed remotely. In particular, "
"if the running custom kernel contains built-in functionality usually "
"provided by kernel modules, make sure to temporarily load these modules into "
"the [.filename]#GENERIC# kernel using the [.filename]#/boot/loader.conf# "
"facility. It is recommended to disable non-essential services as well as "
"any disk and network mounts until the upgrade process is complete."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:373
msgid "The machine should now be restarted with the updated kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:377
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1090
#, no-wrap
msgid "# shutdown -r now\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:382
msgid ""
"Once the system has come back online, restart `freebsd-update` using the "
"following command. Since the state of the process has been saved, `freebsd-"
"update` will not start from the beginning, but will instead move on to the "
"next phase and remove all old shared libraries and object files."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:391
msgid ""
"Depending upon whether any library version numbers were bumped, there may "
"only be two install phases instead of three."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:395
msgid ""
"The upgrade is now complete. If this was a major version upgrade, reinstall "
"all ports and packages as described in <<freebsdupdate-portsrebuild>>."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:397
#, no-wrap
msgid "Custom Kernels with FreeBSD 9.X and Later"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:402
msgid ""
"Before using `freebsd-update`, ensure that a copy of the [."
"filename]#GENERIC# kernel exists in [.filename]#/boot/GENERIC#. If a custom "
"kernel has only been built once, the kernel in [.filename]#/boot/kernel.old# "
"is the `GENERIC` kernel. Simply rename this directory to [.filename]#/boot/"
"GENERIC#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:406
msgid ""
"If a custom kernel has been built more than once or if it is unknown how "
"many times the custom kernel has been built, obtain a copy of the `GENERIC` "
"kernel that matches the current version of the operating system. If "
"physical access to the system is available, a copy of the `GENERIC` kernel "
"can be installed from the installation media:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:412
#, no-wrap
msgid ""
"# mount /cdrom\n"
"# cd /cdrom/usr/freebsd-dist\n"
"# tar -C/ -xvf kernel.txz boot/kernel/kernel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:415
msgid ""
"Alternately, the `GENERIC` kernel may be rebuilt and installed from source:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:420
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:425
msgid ""
"For this kernel to be identified as the `GENERIC` kernel by `freebsd-"
"update`, the [.filename]#GENERIC# configuration file must not have been "
"modified in any way. It is also suggested that the kernel is built without "
"any other special options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:427
msgid ""
"Rebooting into the [.filename]#GENERIC# kernel is not required as `freebsd-"
"update` only needs [.filename]#/boot/GENERIC# to exist."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:429
#, no-wrap
msgid "Upgrading Packages After a Major Version Upgrade"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:436
msgid ""
"Generally, installed applications will continue to work without problems "
"after minor version upgrades. Major versions use different Application "
"Binary Interfaces (ABIs), which will break most third-party applications. "
"After a major version upgrade, all installed packages and ports need to be "
"upgraded. Packages can be upgraded using `pkg upgrade`. To upgrade "
"installed ports, use a utility such as package:ports-mgmt/portmaster[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:440
msgid ""
"A forced upgrade of all installed packages will replace the packages with "
"fresh versions from the repository even if the version number has not "
"increased. This is required because of the ABI version change when "
"upgrading between major versions of FreeBSD. The forced upgrade can be "
"accomplished by performing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:444
#, no-wrap
msgid "# pkg-static upgrade -f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:447
msgid ""
"A rebuild of all installed applications can be accomplished with this "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:451
#, no-wrap
msgid "# portmaster -af\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:455
msgid ""
"This command will display the configuration screens for each application "
"that has configurable options and wait for the user to interact with those "
"screens. To prevent this behavior, and use only the default options, "
"include `-G` in the above command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:458
msgid ""
"Once the software upgrades are complete, finish the upgrade process with a "
"final call to `freebsd-update` in order to tie up all the loose ends in the "
"upgrade process:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:466
msgid ""
"If the [.filename]#GENERIC# kernel was temporarily used, this is the time to "
"build and install a new custom kernel using the instructions in crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:469
msgid ""
"Reboot the machine into the new FreeBSD version. The upgrade process is now "
"complete."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:471
#, no-wrap
msgid "System State Comparison"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:475
msgid ""
"The state of the installed FreeBSD version against a known good copy can be "
"tested using `freebsd-update IDS`. This command evaluates the current "
"version of system utilities, libraries, and configuration files and can be "
"used as a built-in Intrusion Detection System (IDS)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:483
msgid ""
"This command is not a replacement for a real IDS such as package:security/"
"snort[]. As `freebsd-update` stores data on disk, the possibility of "
"tampering is evident. While this possibility may be reduced using `kern."
"securelevel` and by storing the `freebsd-update` data on a read-only file "
"system when not in use, a better solution would be to compare the system "
"against a secure disk, such as a DVD or securely stored external USB disk "
"device. An alternative method for providing IDS functionality using a built-"
"in utility is described in crossref:security[security-ids,\"Binary "
"Verification\"]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:486
msgid ""
"To begin the comparison, specify the output file to save the results to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:490
#, no-wrap
msgid "# freebsd-update IDS >> outfile.ids\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:493
msgid ""
"The system will now be inspected and a lengthy listing of files, along with "
"the SHA256 hash values for both the known value in the release and the "
"current installation, will be sent to the specified output file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:496
msgid ""
"The entries in the listing are extremely long, but the output format may be "
"easily parsed. For instance, to obtain a list of all files which differ "
"from those in the release, issue the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:504
#, no-wrap
msgid ""
"# cat outfile.ids | awk '{ print $1 }' | more\n"
"/etc/master.passwd\n"
"/etc/motd\n"
"/etc/passwd\n"
"/etc/pf.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:511
msgid ""
"This sample output has been truncated as many more files exist. Some files "
"have natural modifications. For example, [.filename]#/etc/passwd# will be "
"modified if users have been added to the system. Kernel modules may differ "
"as `freebsd-update` may have updated them. To exclude specific files or "
"directories, add them to the `IDSIgnorePaths` option in [.filename]#/etc/"
"freebsd-update.conf#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:513
#, no-wrap
msgid "Updating Bootcode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:516
msgid ""
"The following manuals describe the upgrade process of bootcode and boot "
"loaders: man:gpart[8], man:gptboot[8], man:gptzfsboot[8], and man:loader."
"efi[8]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:518
#, no-wrap
msgid "Updating the Documentation Set"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:522
msgid ""
"Documentation is an integral part of the FreeBSD operating system. While an "
"up-to-date version of the FreeBSD documentation is always available on the "
"FreeBSD web site (link:https://docs.FreeBSD.org[Documentation Portal]), it "
"can be handy to have an up-to-date, local copy of the FreeBSD website, "
"handbooks, FAQ, and articles."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:524
msgid ""
"This section describes how to use either source or the FreeBSD Ports "
"Collection to keep a local copy of the FreeBSD documentation up-to-date."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:527
msgid ""
"For information on editing and submitting corrections to the documentation, "
"refer to the FreeBSD Documentation Project Primer for New Contributors "
"(extref:{fdp-primer}[FreeBSD Documentation Project Primer for New "
"Contributors])."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:529
#, no-wrap
msgid "Updating Documentation from Source"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:533
msgid ""
"Rebuilding the FreeBSD documentation from source requires a collection of "
"tools which are not part of the FreeBSD base system. The required tools can "
"be installed following extref:{fdp-primer}[these steps, overview-quick-"
"start] from the FreeBSD Documentation Project Primer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:535
msgid ""
"Once installed, use `git` to fetch a clean copy of the documentation source:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:539
#, no-wrap
msgid "# git clone https://git.FreeBSD.org/doc.git /usr/doc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:543
msgid ""
"The initial download of the documentation sources may take a while. Let it "
"run until it completes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:545
msgid "Future updates of the documentation sources may be fetched by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:549
#, no-wrap
msgid "# git pull\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:553
msgid ""
"Once an up-to-date snapshot of the documentation sources has been fetched to "
"[.filename]#/usr/doc#, everything is ready for an update of the installed "
"documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:555
msgid "A full update may be performed by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:560
#, no-wrap
msgid ""
"# cd /usr/doc\n"
"# make\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:563
#, no-wrap
msgid "Tracking a Development Branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:566
msgid ""
"FreeBSD has two development branches: FreeBSD-CURRENT and FreeBSD-STABLE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:568
msgid ""
"This section provides an explanation of each branch and its intended "
"audience, as well as how to keep a system up-to-date with each respective "
"branch."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:570
#, no-wrap
msgid "Using FreeBSD-CURRENT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:574
msgid ""
"FreeBSD-CURRENT is the \"bleeding edge\" of FreeBSD development and FreeBSD-"
"CURRENT users are expected to have a high degree of technical skill. Less "
"technical users who wish to track a development branch should track FreeBSD-"
"STABLE instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:578
msgid ""
"FreeBSD-CURRENT is the very latest source code for FreeBSD and includes "
"works in progress, experimental changes, and transitional mechanisms that "
"might or might not be present in the next official release. While many "
"FreeBSD developers compile the FreeBSD-CURRENT source code daily, there are "
"short periods of time when the source may not be buildable. These problems "
"are resolved as quickly as possible, but whether or not FreeBSD-CURRENT "
"brings disaster or new functionality can be a matter of when the source code "
"was synced."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:580
msgid "FreeBSD-CURRENT is made available for three primary interest groups:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:582
msgid ""
"Members of the FreeBSD community who are actively working on some part of "
"the source tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:583
msgid ""
"Members of the FreeBSD community who are active testers. They are willing to "
"spend time solving problems, making topical suggestions on changes and the "
"general direction of FreeBSD, and submitting patches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:584
msgid ""
"Users who wish to keep an eye on things, use the current source for "
"reference purposes, or make the occasional comment or code contribution."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:588
msgid ""
"FreeBSD-CURRENT should _not_ be considered a fast-track to getting new "
"features before the next release as pre-release features are not yet fully "
"tested and most likely contain bugs. It is not a quick way of getting bug "
"fixes as any given commit is just as likely to introduce new bugs as to fix "
"existing ones. FreeBSD-CURRENT is not in any way \"officially supported\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:590
msgid "To track FreeBSD-CURRENT:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:592
msgid ""
"Join the {freebsd-current} and the {dev-commits-src-main} lists. This is "
"_essential_ in order to see the comments that people are making about the "
"current state of the system and to receive important bulletins about the "
"current state of FreeBSD-CURRENT."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:594
msgid ""
"The {dev-commits-src-main} list records the commit log entry for each change "
"as it is made, along with any pertinent information on possible side effects."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:597
msgid ""
"To join these lists, go to {mailing-lists}, click on the list to subscribe "
"to, and follow the instructions. In order to track changes to the whole "
"source tree, not just the changes to FreeBSD-CURRENT, subscribe to the {dev-"
"commits-src-all}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:598
msgid ""
"Synchronize with the FreeBSD-CURRENT sources. Typically, `git` is used to "
"check out the -CURRENT code from the `main` branch of the FreeBSD Git "
"repository (see crossref:mirrors[git,“Using Git”] for details)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:599
msgid ""
"Due to the size of the repository, some users choose to only synchronize the "
"sections of source that interest them or which they are contributing patches "
"to. However, users that plan to compile the operating system from source "
"must download _all_ of FreeBSD-CURRENT, not just selected portions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:602
msgid ""
"Before compiling FreeBSD-CURRENT, read [.filename]#/usr/src/Makefile# very "
"carefully and follow the instructions in <<makeworld>>. Read the {freebsd-"
"current} and [.filename]#/usr/src/UPDATING# to stay up-to-date on other "
"bootstrapping procedures that sometimes become necessary on the road to the "
"next release."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:603
msgid ""
"Be active! FreeBSD-CURRENT users are encouraged to submit their suggestions "
"for enhancements or bug fixes. Suggestions with accompanying code are always "
"welcome."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:605
#, no-wrap
msgid "Using FreeBSD-STABLE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:612
msgid ""
"FreeBSD-STABLE is the development branch from which major releases are "
"made. Changes go into this branch at a slower pace and with the general "
"assumption that they have first been tested in FreeBSD-CURRENT. This is "
"_still_ a development branch and, at any given time, the sources for FreeBSD-"
"STABLE may or may not be suitable for general use. It is simply another "
"engineering development track, not a resource for end-users. Users who do "
"not have the resources to perform testing should instead run the most recent "
"release of FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:614
msgid ""
"Those interested in tracking or contributing to the FreeBSD development "
"process, especially as it relates to the next release of FreeBSD, should "
"consider following FreeBSD-STABLE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:619
msgid ""
"While the FreeBSD-STABLE branch should compile and run at all times, this "
"cannot be guaranteed. Since more people run FreeBSD-STABLE than FreeBSD-"
"CURRENT, it is inevitable that bugs and corner cases will sometimes be found "
"in FreeBSD-STABLE that were not apparent in FreeBSD-CURRENT. For this "
"reason, one should not blindly track FreeBSD-STABLE. It is particularly "
"important _not_ to update any production servers to FreeBSD-STABLE without "
"thoroughly testing the code in a development or testing environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:621
msgid "To track FreeBSD-STABLE:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:623
msgid ""
"Join the {freebsd-stable} in order to stay informed of build dependencies "
"that may appear in FreeBSD-STABLE or any other issues requiring special "
"attention. Developers will also make announcements in this mailing list when "
"they are contemplating some controversial fix or update, giving the users a "
"chance to respond if they have any issues to raise concerning the proposed "
"change."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:627
msgid ""
"Join the relevant git list for the branch being tracked. For example, users "
"tracking the {betarel-current-major}-STABLE branch should join the {dev-"
"commits-src-branches}. This list records the commit log entry for each "
"change as it is made, along with any pertinent information on possible side "
"effects."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:630
msgid ""
"To join these lists, go to {mailing-lists}, click on the list to subscribe "
"to, and follow the instructions. In order to track changes for the whole "
"source tree, subscribe to {dev-commits-src-all}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:631
msgid ""
"To install a new FreeBSD-STABLE system, install the most recent FreeBSD-"
"STABLE release from the crossref:mirrors[mirrors,FreeBSD mirror sites] or "
"use a monthly snapshot built from FreeBSD-STABLE. Refer to link:https://www."
"FreeBSD.org/snapshots/[www.freebsd.org/snapshots] for more information about "
"snapshots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:634
msgid ""
"To compile or upgrade an existing FreeBSD system to FreeBSD-STABLE, use "
"`git` to check out the source for the desired branch. Branch names, such as "
"`stable/13`, are listed at link:https://www.FreeBSD.org/releng/[www.freebsd."
"org/releng]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:635
msgid ""
"Before compiling or upgrading to FreeBSD-STABLE , read [.filename]#/usr/src/"
"Makefile# carefully and follow the instructions in <<makeworld>>. Read the "
"{freebsd-stable} and [.filename]#/usr/src/UPDATING# to keep up-to-date on "
"other bootstrapping procedures that sometimes become necessary on the road "
"to the next release."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:637
#, no-wrap
msgid "The N-number"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:641
msgid ""
"When tracking down bugs it is important to know which versions of the source "
"code have been used to create the system exhibiting an issue. FreeBSD "
"provides version information compiled into the kernel. man:uname[1] "
"retrieves this information, for example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:645
#, no-wrap
msgid ""
"% uname -v\n"
"FreeBSD 14.0-CURRENT #112 main-n247514-031260d64c18: Tue Jun 22 20:43:19 MDT 2021 fred@machine:/usr/home/fred/obj/usr/home/fred/git/head/amd64.amd64/sys/FRED\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:648
msgid ""
"The final field gives information regarding the kernel name, the person that "
"built it, and the location that it was compiled in. Looking at the 4th "
"field, it is made up of several parts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:651
#, no-wrap
msgid "main-n247514-031260d64c18\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:656
#, no-wrap
msgid ""
"main\t\t<.>\n"
"n247514\t\t<.>\n"
"031260d64c18\t<.>\n"
"\t\t<.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:660
msgid ""
"Git branch name. Note: comparisons of n-numbers are only valid on branches "
"published by the project (`main`, `stable/XX` and `releng/XX`). Local "
"branches will have n-numbers that will overlap commits of their parent "
"branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:661
msgid ""
"The n-number is a linear count of commits back to the start of the Git "
"repository starting with the Git hash included in the line."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:662
msgid "Git hash of the checked out tree"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:664
msgid ""
"Sometimes a suffix of `-dirty` is present when the kernel was built in a "
"tree with uncommitted changes. It is absent in this example because the "
"FRED kernel was built from a pristine checkout."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:667
msgid ""
"The `git rev-list` command is used to find the n-number corresponding to a "
"Git hash. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:671
#, no-wrap
msgid ""
"% git rev-list --first-parent --count 031260d64c18 <.>\n"
"247514 <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:673
msgid "git hash to translate (the hash from the above example is reused)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:674
msgid "The n-number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:680
msgid ""
"Usually this number is not all that important. However, when bug fixes are "
"committed, this number makes it easy to quickly determine whether the fix is "
"present in the currently running system. Developers will often refer to the "
"hash of the commit (or provide a URL which has that hash), but not the n-"
"number since the hash is the easily visible identifier for a change while "
"the n-number is not. Security advisories and errata notices will also note "
"an n-number, which can be directly compared against your system. When you "
"need to use shallow Git clones, you cannot compare n-numbers reliably as the "
"`git rev-list` command counts all the revisions in the repository which a "
"shallow clone omits."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:682
#, no-wrap
msgid "Updating FreeBSD from Source"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:688
msgid ""
"Updating FreeBSD by compiling from source offers several advantages over "
"binary updates. Code can be built with options to take advantage of "
"specific hardware. Parts of the base system can be built with non-default "
"settings, or left out entirely where they are not needed or desired. The "
"build process takes longer to update a system than just installing binary "
"updates, but allows complete customization to produce a tailored version of "
"FreeBSD."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:690
#, no-wrap
msgid "Quick Start"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:694
msgid ""
"This is a quick reference for the typical steps used to update FreeBSD by "
"building from source. Later sections describe the process in more detail."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:699
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1006
msgid ""
"When switching from man:mergemaster[8] to man:etcupdate[8], the first run "
"might merge changes incorrectly generating spurious conflicts. To prevent "
"this, perform the following steps *before* updating sources and building the "
"new world:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:704
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1011
#, no-wrap
msgid ""
"# etcupdate extract <.>\n"
"# etcupdate diff <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:707
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1014
msgid ""
"Bootstrap the database of stock [.filename]#/etc# files; for more "
"information see man:etcupdate[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:709
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1016
msgid ""
"Check the diff after bootstrapping. Trim any local changes that are no "
"longer needed to reduce the chance of conflicts in future updates."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:714
msgid "Update and Build"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:728
#, no-wrap
msgid ""
"# git pull /usr/src <.>\n"
"check /usr/src/UPDATING <.>\n"
"# cd /usr/src <.>\n"
"# make -j4 buildworld <.>\n"
"# make -j4 kernel <.>\n"
"# shutdown -r now <.>\n"
"# etcupdate -p <.>\n"
"# cd /usr/src <.>\n"
"# make installworld <.>\n"
"# etcupdate -B <.>\n"
"# shutdown -r now <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:731
msgid ""
"Get the latest version of the source. See <<updating-src-obtaining-src>> for "
"more information on obtaining and updating source."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:733
msgid ""
"Check [.filename]#/usr/src/UPDATING# for any manual steps required before or "
"after building from source."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:735
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:745
msgid "Go to the source directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:737
msgid "Compile the world, everything except the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:739
msgid ""
"Compile and install the kernel. This is equivalent to `make buildkernel "
"installkernel`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:741
msgid "Reboot the system to the new kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:743
msgid ""
"Update and merge configuration files in [.filename]#/etc/# required before "
"installworld."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:747
msgid "Install the world."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:749
msgid "Update and merge configuration files in [.filename]#/etc/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:751
msgid "Restart the system to use the newly-built world and kernel."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:754
#, no-wrap
msgid "Preparing for a Source Update"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:757
msgid ""
"Read [.filename]#/usr/src/UPDATING#. Any manual steps that must be performed "
"before or after an update are described in this file."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:759
#, no-wrap
msgid "Updating the Source"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:764
msgid ""
"FreeBSD source code is located in [.filename]#/usr/src/#. The preferred "
"method of updating this source is through the Git version control system. "
"Verify that the source code is under version control:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:771
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# git remote --v\n"
"origin https://git.freebsd.org/src.git (fetch)\n"
"origin https://git.freebsd.org/src.git (push)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:774
msgid ""
"This indicates that [.filename]#/usr/src/# is under version control and can "
"be updated with man:git[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:779
#, no-wrap
msgid "# git pull /usr/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:783
msgid ""
"The update process can take some time if the directory has not been updated "
"recently. After it finishes, the source code is up to date and the build "
"process described in the next section can begin."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:787
#, no-wrap
msgid "*Obtaining the Source:* +\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:790
msgid ""
"If the output says `fatal: not a git repository`, the files there are "
"missing or were installed with a different method. A new checkout of the "
"source is required."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:792
#, no-wrap
msgid "FreeBSD Versions and Repository Branches"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:796
#, no-wrap
msgid "uname -r Output"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:797
#, no-wrap
msgid "Repository Path"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:799
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:800
#, no-wrap
msgid "`_X.Y_-RELEASE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:801
#, no-wrap
msgid "`releng/_X.Y_`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:803
#, no-wrap
msgid "The Release version plus only critical security and bug fix patches. This branch is recommended for most users."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:804
#, no-wrap
msgid "`_X.Y_-STABLE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:805
#, no-wrap
msgid "`stable/_X_`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:811
#, no-wrap
msgid ""
"The Release version plus all additional development on that branch. _STABLE_ refers to the Applications Binary Interface (ABI) not changing, so software compiled for earlier versions still runs. For example, software compiled to run on FreeBSD 10.1 will still run on FreeBSD 10-STABLE compiled later.\n"
"\n"
"STABLE branches occasionally have bugs or incompatibilities which might affect users, although these are typically fixed quickly."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:812
#, no-wrap
msgid "`_X_-CURRENT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:813
#, no-wrap
msgid "`main`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:814
#, no-wrap
-msgid "The latest unreleased development version of FreeBSD. The CURRENT branch can have major bugs or incompatibilities and is recommended only for advanced users."
+msgid "The latest unreleased development version of FreeBSD. The `main` branch can have major bugs or incompatibilities and is recommended only for advanced users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:817
msgid "Determine which version of FreeBSD is being used with man:uname[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:822
#, no-wrap
msgid ""
"# uname -r\n"
"13.2-RELEASE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:826
msgid ""
"Based on <<updating-src-obtaining-src-repopath>>, the source used to update "
"`13.2-RELEASE` has a repository path of `releng/13.2`. That path is used "
"when checking out the source:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:831
#, no-wrap
msgid ""
"# mv /usr/src /usr/src.bak <.>\n"
"# git clone --branch releng/13.2 https://git.FreeBSD.org/src.git /usr/src <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:834
msgid ""
"Move the old directory out of the way. If there are no local modifications "
"in this directory, it can be deleted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:836
msgid ""
"The path from <<updating-src-obtaining-src-repopath>> is added to the "
"repository URL. The third parameter is the destination directory for the "
"source code on the local system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:839
#, no-wrap
msgid "Building from Source"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:844
msgid ""
"The _world_, or all of the operating system except the kernel, is compiled. "
"This is done first to provide up-to-date tools to build the kernel. Then "
"the kernel itself is built:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:850
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make buildworld\n"
"# make buildkernel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:853
msgid "The compiled code is written to [.filename]#/usr/obj#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:856
msgid ""
"These are the basic steps. Additional options to control the build are "
"described below."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:858
#, no-wrap
msgid "Performing a Clean Build"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:863
msgid ""
"Some versions of the FreeBSD build system leave previously-compiled code in "
"the temporary object directory, [.filename]#/usr/obj#. This can speed up "
"later builds by avoiding recompiling code that has not changed. To force a "
"clean rebuild of everything, use `cleanworld` before starting a build:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:867
#, no-wrap
msgid "# make cleanworld\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:870
#, no-wrap
msgid "Setting the Number of Jobs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:877
msgid ""
"Increasing the number of build jobs on multi-core processors can improve "
"build speed. Determine the number of cores with `sysctl hw.ncpu`. "
"Processors vary, as do the build systems used with different versions of "
"FreeBSD, so testing is the only sure method to tell how a different number "
"of jobs affects the build speed. For a starting point, consider values "
"between half and double the number of cores. The number of jobs is "
"specified with `-j`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:879
#, no-wrap
msgid "Increasing the Number of Build Jobs"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:883
msgid "Building the world and kernel with four jobs:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:887
#, no-wrap
msgid "# make -j4 buildworld buildkernel\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:892
#, no-wrap
msgid "Building Only the Kernel"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:897
msgid ""
"A `buildworld` must be completed if the source code has changed. After "
"that, a `buildkernel` to build a kernel can be run at any time. To build "
"just the kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:902
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make buildkernel\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:905
#, no-wrap
msgid "Building a Custom Kernel"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:910
msgid ""
"The standard FreeBSD kernel is based on a _kernel config file_ called [."
"filename]#GENERIC#. The [.filename]#GENERIC# kernel includes the most "
"commonly-needed device drivers and options. Sometimes it is useful or "
"necessary to build a custom kernel, adding or removing device drivers or "
"options to fit a specific need."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:912
msgid ""
"For example, someone developing a small embedded computer with severely "
"limited RAM could remove unneeded device drivers or options to make the "
"kernel slightly smaller."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:915
msgid ""
"Kernel config files are located in [.filename]#/usr/src/sys/arch/conf/#, "
"where _arch_ is the output from `uname -m`. On most computers, that is "
"`amd64`, giving a config file directory of [.filename]#/usr/src/sys/amd64/"
"conf/#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:921
msgid ""
"[.filename]#/usr/src# can be deleted or recreated, so it is preferable to "
"keep custom kernel config files in a separate directory, like [.filename]#/"
"root#. Link the kernel config file into the [.filename]#conf# directory. "
"If that directory is deleted or overwritten, the kernel config can be re-"
"linked into the new one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:925
msgid ""
"A custom config file can be created by copying the [.filename]#GENERIC# "
"config file. In this example, the new custom kernel is for a storage "
"server, so is named [.filename]#STORAGESERVER#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:931
#, no-wrap
msgid ""
"# cp /usr/src/sys/amd64/conf/GENERIC /root/STORAGESERVER\n"
"# cd /usr/src/sys/amd64/conf\n"
"# ln -s /root/STORAGESERVER .\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:934
msgid ""
"[.filename]#/root/STORAGESERVER# is then edited, adding or removing devices "
"or options as shown in man:config[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:936
msgid ""
"The custom kernel is built by setting `KERNCONF` to the kernel config file "
"on the command line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:940
#, no-wrap
msgid "# make buildkernel KERNCONF=STORAGESERVER\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:943
#, no-wrap
msgid "Installing the Compiled Code"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:946
msgid ""
"After the `buildworld` and `buildkernel` steps have been completed, the new "
"kernel and world are installed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:955
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make installkernel\n"
"# shutdown -r now\n"
"# cd /usr/src\n"
"# make installworld\n"
"# shutdown -r now\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:958
msgid ""
"If a custom kernel was built, `KERNCONF` must also be set to use the new "
"custom kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:967
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make installkernel KERNCONF=STORAGESERVER\n"
"# shutdown -r now\n"
"# cd /usr/src\n"
"# make installworld\n"
"# shutdown -r now\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:970
#, no-wrap
msgid "Completing the Update"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:974
msgid ""
"A few final tasks complete the update. Any modified configuration files are "
"merged with the new versions, outdated libraries are located and removed, "
"then the system is restarted."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:976
#, no-wrap
msgid "Merging Configuration Files with man:etcupdate[8]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:981
msgid ""
"man:etcupdate[8] is a tool for managing updates to files that are not "
"updated as part of an installworld such as files located in [.filename]#/etc/"
"#. It manages updates by doing a three-way merge of changes made to these "
"files against the local versions. It is also designed to minimize the "
"amount of user intervention, in contrast to man:mergemaster[8]'s interactive "
"prompts."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:986
msgid ""
"In general, man:etcupdate[8] does not need any specific arguments for its "
"job. There is however a handy in between command for sanity checking what "
"will be done the first time man:etcupdate[8] is used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:990
#, no-wrap
msgid "# etcupdate diff\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:993
msgid "This command allows the user to audit configuration changes."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:996
msgid ""
"If man:etcupdate[8] is not able to merge a file automatically, the merge "
"conflicts can be resolved with manual interaction by issuing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1000
#, no-wrap
msgid "# etcupdate resolve\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1019
#, no-wrap
msgid "Merging Configuration Files with man:mergemaster[8]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1024
msgid ""
"man:mergemaster[8] provides a way to merge changes that have been made to "
"system configuration files with new versions of those files. man:"
"mergemaster[8] is an alternative to the preferred man:etcupdate[8] With `-"
"Ui`, man:mergemaster[8] automatically updates files that have not been user-"
"modified and installs new files that are not already present:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1028
#, no-wrap
msgid "# mergemaster -Ui\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1032
msgid ""
"If a file must be manually merged, an interactive display allows the user to "
"choose which portions of the files are kept. See man:mergemaster[8] for "
"more information."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1034
#, no-wrap
msgid "Checking for Outdated Files and Libraries"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1038
msgid ""
"Some obsolete files or directories can remain after an update. These files "
"can be located:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1042
#, no-wrap
msgid "# make check-old\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1045
msgid "and deleted:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1049
#, no-wrap
msgid "# make delete-old\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1053
msgid "Some obsolete libraries can also remain. These can be detected with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1057
#, no-wrap
msgid "# make check-old-libs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1060
msgid "and deleted with"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1064
#, no-wrap
msgid "# make delete-old-libs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1068
msgid ""
"Programs which were still using those old libraries will stop working when "
"the library has been deleted. These programs must be rebuilt or replaced "
"after deleting the old libraries."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1074
msgid ""
"When all the old files or directories are known to be safe to delete, "
"pressing kbd:[y] and kbd:[Enter] to delete each file can be avoided by "
"setting `BATCH_DELETE_OLD_FILES` in the command. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1078
#, no-wrap
msgid "# make BATCH_DELETE_OLD_FILES=yes delete-old-libs\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1083
#, no-wrap
msgid "Restarting After the Update"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1086
msgid ""
"The last step after updating is to restart the computer so all the changes "
"take effect:"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1093
#, no-wrap
msgid "Tracking for Multiple Machines"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1101
msgid ""
"When multiple machines need to track the same source tree, it is a waste of "
"disk space, network bandwidth, and CPU cycles to have each system download "
"the sources and rebuild everything. The solution is to have one machine do "
"most of the work, while the rest of the machines mount that work via NFS. "
"This section outlines a method of doing so. For more information about "
"using NFS, refer to crossref:network-servers[network-nfs,\"Network File "
"System (NFS)\"]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1106
msgid ""
"First, identify a set of machines which will run the same set of binaries, "
"known as a _build set_. Each machine can have a custom kernel, but will run "
"the same userland binaries. From that set, choose a machine to be the "
"_build machine_ that the world and kernel are built on. Ideally, this is a "
"fast machine that has sufficient spare CPU to run `make buildworld` and "
"`make buildkernel`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1110
msgid ""
"Select a machine to be the _test machine_, which will test software updates "
"before they are put into production. This _must_ be a machine that can "
"afford to be down for an extended period of time. It can be the build "
"machine, but need not be."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1113
msgid ""
"All the machines in this build set need to mount [.filename]#/usr/obj# and [."
"filename]#/usr/src# from the build machine via NFS. For multiple build "
"sets, [.filename]#/usr/src# should be on one build machine, and NFS mounted "
"on the rest."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1119
msgid ""
"Ensure that [.filename]#/etc/make.conf# and [.filename]#/etc/src.conf# on "
"all the machines in the build set agree with the build machine. That means "
"that the build machine must build all the parts of the base system that any "
"machine in the build set is going to install. Also, each build machine "
"should have its kernel name set with `KERNCONF` in [.filename]#/etc/make."
"conf#, and the build machine should list them all in its `KERNCONF`, listing "
"its own kernel first. The build machine must have the kernel configuration "
"files for each machine in its [.filename]#/usr/src/sys/arch/conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1126
msgid ""
"On the build machine, build the kernel and world as described in "
"<<makeworld>>, but do not install anything on the build machine. Instead, "
"install the built kernel on the test machine. On the test machine, mount [."
"filename]#/usr/src# and [.filename]#/usr/obj# via NFS. Then, run `shutdown "
"now` to go to single-user mode in order to install the new kernel and world "
"and run `mergemaster` as usual. When done, reboot to return to normal multi-"
"user operations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1129
msgid ""
"After verifying that everything on the test machine is working properly, use "
"the same procedure to install the new software on each of the other machines "
"in the build set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1136
msgid ""
"The same methodology can be used for the ports tree. The first step is to "
"share [.filename]#/usr/ports# via NFS to all the machines in the build set. "
"To configure [.filename]#/etc/make.conf# to share distfiles, set `DISTDIR` "
"to a common shared directory that is writable by whichever user `root` is "
"mapped to by the NFS mount. Each machine should set `WRKDIRPREFIX` to a "
"local build directory, if ports are to be built locally. Alternately, if "
"the build system is to build and distribute packages to the machines in the "
"build set, set `PACKAGES` on the build system to a directory similar to "
"`DISTDIR`."
msgstr ""
diff --git a/documentation/content/en/books/handbook/desktop/_index.po b/documentation/content/en/books/handbook/desktop/_index.po
index a6128ce365..441689f579 100644
--- a/documentation/content/en/books/handbook/desktop/_index.po
+++ b/documentation/content/en/books/handbook/desktop/_index.po
@@ -1,2103 +1,2087 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/desktop/_index.adoc:1
#, no-wrap
msgid "This chapter demonstrates how to install numerous desktop environments, including web browsers, productivity software, document viewers, and financial software"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/desktop/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/desktop/_index.adoc:1
#, no-wrap
msgid "Chapter 7. Desktop Environments"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/desktop/_index.adoc:14
#: documentation/content/en/books/handbook/desktop/_index.adoc:64
#, no-wrap
msgid "Desktop Environments"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/desktop/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:57
msgid ""
"While FreeBSD is popular as a server for its performance and stability, it "
"is also well suited for day-to-day use as a desktop. With over {numports} "
"applications available in the FreeBSD ports tree, it is straightforward to "
"build a customized desktop that can run a wide variety of desktop "
"applications. This chapter demonstrates how to install popular desktop "
"environments as well as desktop applications such as web browsers, "
"productivity software, document viewers, and financial software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:59
msgid "Prerequisites:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:61
msgid ""
"Readers of this chapter should already understand how to install either the "
"crossref:x11[x11,X Window System] or crossref:wayland[wayland,Wayland] on "
"FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:62
msgid ""
"Readers are instructed throughout this chapter to install official packages. "
"Refer to the section on crossref:ports[ports-using,using the ports "
"collection] to build customized packages from ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:68
msgid ""
"This section describes how to install and configure some popular desktop "
"environments on a FreeBSD system. A desktop environment can range from a "
"simple window manager to a complete suite of desktop applications."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/desktop/_index.adoc:69
#, no-wrap
msgid "Supported desktop environments"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:72
-#: documentation/content/en/books/handbook/desktop/_index.adoc:557
-#: documentation/content/en/books/handbook/desktop/_index.adoc:764
-#: documentation/content/en/books/handbook/desktop/_index.adoc:919
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1001
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1090
+#: documentation/content/en/books/handbook/desktop/_index.adoc:548
+#: documentation/content/en/books/handbook/desktop/_index.adoc:755
+#: documentation/content/en/books/handbook/desktop/_index.adoc:910
+#: documentation/content/en/books/handbook/desktop/_index.adoc:992
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1081
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:72
-#: documentation/content/en/books/handbook/desktop/_index.adoc:557
-#: documentation/content/en/books/handbook/desktop/_index.adoc:764
-#: documentation/content/en/books/handbook/desktop/_index.adoc:919
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1001
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1090
+#: documentation/content/en/books/handbook/desktop/_index.adoc:548
+#: documentation/content/en/books/handbook/desktop/_index.adoc:755
+#: documentation/content/en/books/handbook/desktop/_index.adoc:910
+#: documentation/content/en/books/handbook/desktop/_index.adoc:992
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1081
#, no-wrap
msgid "License"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:74
-#: documentation/content/en/books/handbook/desktop/_index.adoc:557
-#: documentation/content/en/books/handbook/desktop/_index.adoc:764
-#: documentation/content/en/books/handbook/desktop/_index.adoc:919
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1001
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1090
+#: documentation/content/en/books/handbook/desktop/_index.adoc:548
+#: documentation/content/en/books/handbook/desktop/_index.adoc:755
+#: documentation/content/en/books/handbook/desktop/_index.adoc:910
+#: documentation/content/en/books/handbook/desktop/_index.adoc:992
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1081
#, no-wrap
msgid "Package"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:75
#: documentation/content/en/books/handbook/desktop/_index.adoc:101
#, no-wrap
msgid "KDE Plasma"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:76
#: documentation/content/en/books/handbook/desktop/_index.adoc:80
#: documentation/content/en/books/handbook/desktop/_index.adoc:92
-#: documentation/content/en/books/handbook/desktop/_index.adoc:581
-#: documentation/content/en/books/handbook/desktop/_index.adoc:601
-#: documentation/content/en/books/handbook/desktop/_index.adoc:933
+#: documentation/content/en/books/handbook/desktop/_index.adoc:572
+#: documentation/content/en/books/handbook/desktop/_index.adoc:592
+#: documentation/content/en/books/handbook/desktop/_index.adoc:924
#, no-wrap
msgid "GPL 2.0 or later"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:78
#, no-wrap
msgid "x11/kde5"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:79
#: documentation/content/en/books/handbook/desktop/_index.adoc:194
#, no-wrap
msgid "GNOME"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:82
#, no-wrap
msgid "x11/gnome"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:83
-#: documentation/content/en/books/handbook/desktop/_index.adoc:271
+#: documentation/content/en/books/handbook/desktop/_index.adoc:262
#, no-wrap
msgid "XFCE"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:84
#, no-wrap
msgid "GPL, LGPL, BSD"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:86
#, no-wrap
msgid "x11-wm/xfce4"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:87
-#: documentation/content/en/books/handbook/desktop/_index.adoc:337
+#: documentation/content/en/books/handbook/desktop/_index.adoc:328
#, no-wrap
msgid "MATE"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:88
#, no-wrap
msgid "GPL 2.0, LGPL 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:90
#, no-wrap
msgid "x11/mate"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:91
-#: documentation/content/en/books/handbook/desktop/_index.adoc:412
+#: documentation/content/en/books/handbook/desktop/_index.adoc:403
#, no-wrap
msgid "Cinnamon"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:94
#, no-wrap
msgid "x11/cinnamon"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:95
-#: documentation/content/en/books/handbook/desktop/_index.adoc:478
+#: documentation/content/en/books/handbook/desktop/_index.adoc:469
#, no-wrap
msgid "LXQT"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:96
#, no-wrap
msgid "GPL, LGPL"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:98
#, no-wrap
msgid "x11-wm/lxqt"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:107
msgid ""
"KDE Plasma is an easy-to-use desktop environment. This desktop provides a "
"suite of applications with a consistent look and feel, a standardized menu "
"and toolbars, keybindings, color-schemes, internationalization, and a "
"centralized, dialog-driven desktop configuration. More information on KDE "
"can be found at the link:https://kde.org/[KDE homepage]. For FreeBSD-"
"specific information, consult the link:https://freebsd.kde.org/[FreeBSD "
"homepage at KDE]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/desktop/_index.adoc:109
#, no-wrap
msgid "Install KDE Plasma meta package"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:112
msgid ""
"To install the KDE Plasma meta package with KDE Frameworks, Plasma Desktop "
"and Applications execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:116
#, no-wrap
msgid "# pkg install kde5\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/desktop/_index.adoc:119
#, no-wrap
msgid "Minimal KDE Plasma installation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:122
msgid "To install a minimal KDE Plasma execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:126
#, no-wrap
msgid "# pkg install plasma5-plasma\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:132
msgid ""
"This installation is *really* minimal. Konsole must be installed separately "
"executing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:136
#, no-wrap
msgid "# pkg install konsole\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/desktop/_index.adoc:140
#, no-wrap
msgid "Configure KDE Plasma"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:144
msgid ""
"KDE Plasma uses man:dbus-daemon[1] for a message bus and hardware "
"abstraction. This application is automatically installed as a dependency of "
"KDE Plasma."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:146
#: documentation/content/en/books/handbook/desktop/_index.adoc:234
msgid "Enable D-BUS service in `/etc/rc.conf` to start at system boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:150
#: documentation/content/en/books/handbook/desktop/_index.adoc:238
-#: documentation/content/en/books/handbook/desktop/_index.adoc:307
-#: documentation/content/en/books/handbook/desktop/_index.adoc:382
-#: documentation/content/en/books/handbook/desktop/_index.adoc:448
-#: documentation/content/en/books/handbook/desktop/_index.adoc:514
+#: documentation/content/en/books/handbook/desktop/_index.adoc:298
+#: documentation/content/en/books/handbook/desktop/_index.adoc:373
+#: documentation/content/en/books/handbook/desktop/_index.adoc:439
+#: documentation/content/en/books/handbook/desktop/_index.adoc:505
#, no-wrap
msgid "# sysrc dbus_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:153
msgid "To increase messages size execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:158
#, no-wrap
msgid ""
"sysctl net.local.stream.recvspace=65536\n"
"sysctl net.local.stream.sendspace=65536\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/desktop/_index.adoc:161
#, no-wrap
msgid "Start KDE Plasma"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:165
msgid ""
"The preferred KDE Plasma display manager is package:x11/sddm[]. To install "
"package:x11/sddm[], execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:169
-#: documentation/content/en/books/handbook/desktop/_index.adoc:525
+#: documentation/content/en/books/handbook/desktop/_index.adoc:516
#, no-wrap
msgid "# pkg install sddm\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:172
-#: documentation/content/en/books/handbook/desktop/_index.adoc:528
+#: documentation/content/en/books/handbook/desktop/_index.adoc:519
msgid "Enable SDDM service in `/etc/rc.conf` to start at system boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:176
-#: documentation/content/en/books/handbook/desktop/_index.adoc:532
+#: documentation/content/en/books/handbook/desktop/_index.adoc:523
#, no-wrap
msgid "# sysrc sddm_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:179
msgid ""
"The keyboard language can be set in SDDM by running the following command "
"(for Spanish, for example):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:183
-#: documentation/content/en/books/handbook/desktop/_index.adoc:539
+#: documentation/content/en/books/handbook/desktop/_index.adoc:530
#, no-wrap
msgid "# sysrc sddm_lang=\"es_ES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:187
msgid ""
"A second method to start KDE Plasma is by manually invoking man:startx[1]. "
"For this to work, the following line is needed in ~/.xinitrc:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:191
#, no-wrap
msgid "% echo \"exec ck-launch-session startplasma-x11\" > ~/.xinitrc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:197
msgid ""
"GNOME is a user-friendly desktop environment. It includes a panel for "
"starting applications and displaying status, a desktop, a set of tools and "
"applications, and a set of conventions that make it easy for applications to "
"cooperate and be consistent with each other."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/desktop/_index.adoc:199
#, no-wrap
msgid "Install GNOME meta pacakge"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:202
msgid ""
"To install the GNOME meta package with GNOME Desktop and Applications, "
"execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:206
#, no-wrap
msgid "# pkg install gnome\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/desktop/_index.adoc:209
#, no-wrap
msgid "Minimal GNOME installation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:212
msgid ""
"To install the GNOME-lite meta package with a GNOME desktop slimmed down for "
"only the basics, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:216
#, no-wrap
msgid "# pkg install gnome-lite\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/desktop/_index.adoc:219
#, no-wrap
msgid "Configure GNOME"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:223
msgid ""
"GNOME requires `/proc` to be mounted. Add this line to `/etc/fstab` to "
"mount this file system automatically during system startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:228
-#: documentation/content/en/books/handbook/desktop/_index.adoc:297
-#: documentation/content/en/books/handbook/desktop/_index.adoc:373
-#: documentation/content/en/books/handbook/desktop/_index.adoc:439
-#: documentation/content/en/books/handbook/desktop/_index.adoc:504
+#: documentation/content/en/books/handbook/desktop/_index.adoc:288
+#: documentation/content/en/books/handbook/desktop/_index.adoc:364
+#: documentation/content/en/books/handbook/desktop/_index.adoc:430
+#: documentation/content/en/books/handbook/desktop/_index.adoc:495
#, no-wrap
msgid ""
"# Device Mountpoint FStype Options Dump Pass#\n"
"proc /proc procfs rw 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:232
msgid ""
"GNOME uses man:dbus-daemon[1] for a message bus and hardware abstraction. "
"This application is automatically installed as a dependency of GNOME."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:241
-msgid "It is often desirable to also start all GNOME services."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:243
-msgid "Enable GNOME services in `/etc/rc.conf` to start at system boot:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:247
-#, no-wrap
-msgid "# sysrc gnome_enable=\"YES\"\n"
-msgstr ""
-
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:250
+#: documentation/content/en/books/handbook/desktop/_index.adoc:241
#, no-wrap
msgid "Start GNOME"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:254
+#: documentation/content/en/books/handbook/desktop/_index.adoc:245
msgid ""
"GNOME Display Manager is the preferred display manager for GNOME. GDM is "
"installed as part of the GNOME package."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:256
+#: documentation/content/en/books/handbook/desktop/_index.adoc:247
msgid "Enable GDM in `/etc/rc.conf` to start at system boot:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:260
+#: documentation/content/en/books/handbook/desktop/_index.adoc:251
#, no-wrap
msgid "# sysrc gdm_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:264
+#: documentation/content/en/books/handbook/desktop/_index.adoc:255
msgid ""
"A second method to start GNOME is by manually invoking man:startx[1]. For "
"this to work, the following line is needed in `~/.xinitrc`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:268
+#: documentation/content/en/books/handbook/desktop/_index.adoc:259
#, no-wrap
msgid "% echo \"exec gnome-session\" > ~/.xinitrc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:276
+#: documentation/content/en/books/handbook/desktop/_index.adoc:267
msgid ""
"XFCE is a desktop environment based on the GTK+, lightweight and provides a "
"simple, efficient, easy-to-use desktop. It is fully configurable, has a "
"main panel with menus, applets, and application launchers, provides a file "
"manager and sound manager, and is themeable. Since it is fast, light, and "
"efficient, it is ideal for older or slower machines with memory limitations."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:278
+#: documentation/content/en/books/handbook/desktop/_index.adoc:269
#, no-wrap
msgid "Install XFCE"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:281
+#: documentation/content/en/books/handbook/desktop/_index.adoc:272
msgid "To install the XFCE meta package, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:285
+#: documentation/content/en/books/handbook/desktop/_index.adoc:276
#, no-wrap
msgid "# pkg install xfce\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:288
+#: documentation/content/en/books/handbook/desktop/_index.adoc:279
#, no-wrap
msgid "Configure XFCE"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:292
+#: documentation/content/en/books/handbook/desktop/_index.adoc:283
msgid ""
"XFCE requires `/proc` to be mounted. Add this line to `/etc/fstab` to mount "
"this file system automatically during system startup:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:301
+#: documentation/content/en/books/handbook/desktop/_index.adoc:292
msgid ""
"XFCE uses man:dbus-daemon[1] for a message bus and hardware abstraction. "
"This application is automatically installed as a dependency of XFCE."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:303
-#: documentation/content/en/books/handbook/desktop/_index.adoc:510
+#: documentation/content/en/books/handbook/desktop/_index.adoc:294
+#: documentation/content/en/books/handbook/desktop/_index.adoc:501
msgid "Enable D-BUS in `/etc/rc.conf` to start at system boot:"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:310
+#: documentation/content/en/books/handbook/desktop/_index.adoc:301
#, no-wrap
msgid "Start XFCE"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:313
-#: documentation/content/en/books/handbook/desktop/_index.adoc:388
-#: documentation/content/en/books/handbook/desktop/_index.adoc:454
+#: documentation/content/en/books/handbook/desktop/_index.adoc:304
+#: documentation/content/en/books/handbook/desktop/_index.adoc:379
+#: documentation/content/en/books/handbook/desktop/_index.adoc:445
msgid ""
"package:x11/lightdm[] is a display manager that supports different display "
"technologies and is a good choice as it is very lightweight, requires little "
"memory usage, and has fast performance."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:315
-#: documentation/content/en/books/handbook/desktop/_index.adoc:390
+#: documentation/content/en/books/handbook/desktop/_index.adoc:306
+#: documentation/content/en/books/handbook/desktop/_index.adoc:381
msgid "To install it, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:319
-#: documentation/content/en/books/handbook/desktop/_index.adoc:394
-#: documentation/content/en/books/handbook/desktop/_index.adoc:460
+#: documentation/content/en/books/handbook/desktop/_index.adoc:310
+#: documentation/content/en/books/handbook/desktop/_index.adoc:385
+#: documentation/content/en/books/handbook/desktop/_index.adoc:451
#, no-wrap
msgid "# pkg install lightdm lightdm-gtk-greeter\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:322
-#: documentation/content/en/books/handbook/desktop/_index.adoc:397
-#: documentation/content/en/books/handbook/desktop/_index.adoc:463
+#: documentation/content/en/books/handbook/desktop/_index.adoc:313
+#: documentation/content/en/books/handbook/desktop/_index.adoc:388
+#: documentation/content/en/books/handbook/desktop/_index.adoc:454
msgid "Enable lightdm in `/etc/rc.conf` to start at system boot:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:326
-#: documentation/content/en/books/handbook/desktop/_index.adoc:401
-#: documentation/content/en/books/handbook/desktop/_index.adoc:467
+#: documentation/content/en/books/handbook/desktop/_index.adoc:317
+#: documentation/content/en/books/handbook/desktop/_index.adoc:392
+#: documentation/content/en/books/handbook/desktop/_index.adoc:458
#, no-wrap
msgid "# sysrc lightdm_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:330
+#: documentation/content/en/books/handbook/desktop/_index.adoc:321
msgid ""
"A second method to start XFCE is by manually invoking man:startx[1]. For "
"this to work, the following line is needed in `~/.xinitrc`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:334
+#: documentation/content/en/books/handbook/desktop/_index.adoc:325
#, no-wrap
msgid "% echo '. /usr/local/etc/xdg/xfce4/xinitrc' > ~/.xinitrc\n"
msgstr ""
#. What does "traditional metaphors" mean?
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:340
+#: documentation/content/en/books/handbook/desktop/_index.adoc:331
msgid "The MATE Desktop Environment is the continuation of GNOME 2."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:342
+#: documentation/content/en/books/handbook/desktop/_index.adoc:333
msgid ""
"It provides an intuitive and attractive desktop environment using "
"traditional metaphors."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:344
+#: documentation/content/en/books/handbook/desktop/_index.adoc:335
#, no-wrap
msgid "Install MATE meta package"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:347
+#: documentation/content/en/books/handbook/desktop/_index.adoc:338
msgid ""
"To install the MATE meta package that includes the MATE Desktop with some "
"extra applications such as text editor, archiver manager, etc., execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:351
+#: documentation/content/en/books/handbook/desktop/_index.adoc:342
#, no-wrap
msgid "# pkg install mate\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:354
+#: documentation/content/en/books/handbook/desktop/_index.adoc:345
#, no-wrap
msgid "Minimal MATE installation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:357
+#: documentation/content/en/books/handbook/desktop/_index.adoc:348
msgid ""
"To install the MATE lite meta package with MATE desktop slimmed down for "
"only the basics, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:361
+#: documentation/content/en/books/handbook/desktop/_index.adoc:352
#, no-wrap
msgid "# pkg install mate-base\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:364
+#: documentation/content/en/books/handbook/desktop/_index.adoc:355
#, no-wrap
msgid "Configure MATE"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:368
+#: documentation/content/en/books/handbook/desktop/_index.adoc:359
msgid ""
"MATE requires `/proc` to be mounted. Add this line to `/etc/fstab` to mount "
"this file system automatically during system startup:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:378
+#: documentation/content/en/books/handbook/desktop/_index.adoc:369
msgid ""
"MATE uses man:dbus-daemon[1] for a message bus and hardware abstraction. "
"This application is automatically installed as a dependency of MATE. Enable "
"D-BUS in `/etc/rc.conf` to start at system boot:"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:385
+#: documentation/content/en/books/handbook/desktop/_index.adoc:376
#, no-wrap
msgid "Start MATE"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:405
+#: documentation/content/en/books/handbook/desktop/_index.adoc:396
msgid ""
"A second method to start MATE is by manually invoking man:startx[1]. For "
"this to work, the following line is needed in `~/.xinitrc`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:409
+#: documentation/content/en/books/handbook/desktop/_index.adoc:400
#, no-wrap
msgid "% echo \"exec ck-launch-session mate-session\" > ~/.xinitrc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:418
+#: documentation/content/en/books/handbook/desktop/_index.adoc:409
msgid ""
"Cinnamon is a UNIX(R) desktop which provides advanced innovative features "
"and a traditional user experience. The desktop layout is similar to Gnome "
"2. The underlying technology is forked from Gnome Shell. The emphasis is "
"put on making users feel at home and providing them with an easy to use and "
"comfortable desktop experience."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:420
+#: documentation/content/en/books/handbook/desktop/_index.adoc:411
#, no-wrap
msgid "Install Cinnamon"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:423
+#: documentation/content/en/books/handbook/desktop/_index.adoc:414
msgid "To install the Cinnamon package, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:427
+#: documentation/content/en/books/handbook/desktop/_index.adoc:418
#, no-wrap
msgid "# pkg install cinnamon\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:430
+#: documentation/content/en/books/handbook/desktop/_index.adoc:421
#, no-wrap
msgid "Configure Cinnamon"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:434
+#: documentation/content/en/books/handbook/desktop/_index.adoc:425
msgid ""
"Cinnamon requires `/proc` to be mounted. Add this line to `/etc/fstab` to "
"mount this file system automatically during system startup:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:444
+#: documentation/content/en/books/handbook/desktop/_index.adoc:435
msgid ""
"Cinnamon uses man:dbus-daemon[1] for a message bus and hardware "
"abstraction. This application is automatically installed as a dependency of "
"Cinnamon. Enable D-BUS in `/etc/rc.conf` to start at system boot:"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:451
+#: documentation/content/en/books/handbook/desktop/_index.adoc:442
#, no-wrap
msgid "Start Cinnamon"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:456
+#: documentation/content/en/books/handbook/desktop/_index.adoc:447
msgid "To install it execute:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:471
+#: documentation/content/en/books/handbook/desktop/_index.adoc:462
msgid ""
"A second method to start Cinnamon is by manually invoking man:startx[1]. "
"For this to work, the following line is needed in `~/.xinitrc`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:475
+#: documentation/content/en/books/handbook/desktop/_index.adoc:466
#, no-wrap
msgid "% echo \"exec ck-launch-session cinnamon-session\" > ~/.xinitrc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:483
+#: documentation/content/en/books/handbook/desktop/_index.adoc:474
msgid ""
"LXQt is an advanced, easy-to-use, and fast desktop environment based on Qt "
"technologies. It has been tailored for users who value simplicity, speed, "
"and an intuitive interface. Unlike most desktop environments, LXQt also "
"works fine with less powerful machines."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:485
+#: documentation/content/en/books/handbook/desktop/_index.adoc:476
#, no-wrap
msgid "Install LXQT"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:488
+#: documentation/content/en/books/handbook/desktop/_index.adoc:479
msgid "To install the LXQT meta package, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:492
+#: documentation/content/en/books/handbook/desktop/_index.adoc:483
#, no-wrap
msgid "# pkg install lxqt\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:495
+#: documentation/content/en/books/handbook/desktop/_index.adoc:486
#, no-wrap
msgid "Configure LXQT"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:499
+#: documentation/content/en/books/handbook/desktop/_index.adoc:490
msgid ""
"LXQT requires `/proc` to be mounted. Add this line to `/etc/fstab` to mount "
"this file system automatically during system startup:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:508
+#: documentation/content/en/books/handbook/desktop/_index.adoc:499
msgid ""
"LXQT uses man:dbus-daemon[1] for a message bus and hardware abstraction. "
"This application is automatically installed as a dependency of LXQT."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/desktop/_index.adoc:517
+#: documentation/content/en/books/handbook/desktop/_index.adoc:508
#, no-wrap
msgid "Start LXQT"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:521
+#: documentation/content/en/books/handbook/desktop/_index.adoc:512
msgid ""
"The preferred LXQT display manager is package:x11/sddm[]. To install "
"package:x11/sddm[], execute:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:535
+#: documentation/content/en/books/handbook/desktop/_index.adoc:526
msgid ""
"The keyboard language can be set in SDDM by running the following command "
"(for example, for Spanish):"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:543
+#: documentation/content/en/books/handbook/desktop/_index.adoc:534
msgid ""
"A second method to start LXQT is by manually invoking man:startx[1]. For "
"this to work, the following line is needed in `~/.xinitrc`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:547
+#: documentation/content/en/books/handbook/desktop/_index.adoc:538
#, no-wrap
msgid "% echo \"exec ck-launch-session startlxqt\" > ~/.xinitrc\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/desktop/_index.adoc:550
+#: documentation/content/en/books/handbook/desktop/_index.adoc:541
#, no-wrap
msgid "Browsers"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:553
+#: documentation/content/en/books/handbook/desktop/_index.adoc:544
msgid ""
"This section describes how to install and configure some popular web "
"browsers on a FreeBSD system, from full web browsers with high resource "
"consumption to command line web browsers with reduced resource usage."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/desktop/_index.adoc:554
+#: documentation/content/en/books/handbook/desktop/_index.adoc:545
#, no-wrap
msgid "Supported browsers"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:559
-#: documentation/content/en/books/handbook/desktop/_index.adoc:766
-#: documentation/content/en/books/handbook/desktop/_index.adoc:921
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1003
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1092
+#: documentation/content/en/books/handbook/desktop/_index.adoc:550
+#: documentation/content/en/books/handbook/desktop/_index.adoc:757
+#: documentation/content/en/books/handbook/desktop/_index.adoc:912
+#: documentation/content/en/books/handbook/desktop/_index.adoc:994
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1083
#, no-wrap
msgid "Resources Needed"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:560
-#: documentation/content/en/books/handbook/desktop/_index.adoc:612
+#: documentation/content/en/books/handbook/desktop/_index.adoc:551
+#: documentation/content/en/books/handbook/desktop/_index.adoc:603
#, no-wrap
msgid "Firefox"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:561
-#: documentation/content/en/books/handbook/desktop/_index.adoc:576
-#: documentation/content/en/books/handbook/desktop/_index.adoc:923
+#: documentation/content/en/books/handbook/desktop/_index.adoc:552
+#: documentation/content/en/books/handbook/desktop/_index.adoc:567
+#: documentation/content/en/books/handbook/desktop/_index.adoc:914
#, no-wrap
msgid "MPL 2.0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:562
+#: documentation/content/en/books/handbook/desktop/_index.adoc:553
#, no-wrap
msgid "package:www/firefox[]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:564
-#: documentation/content/en/books/handbook/desktop/_index.adoc:569
-#: documentation/content/en/books/handbook/desktop/_index.adoc:574
-#: documentation/content/en/books/handbook/desktop/_index.adoc:579
-#: documentation/content/en/books/handbook/desktop/_index.adoc:771
-#: documentation/content/en/books/handbook/desktop/_index.adoc:776
-#: documentation/content/en/books/handbook/desktop/_index.adoc:781
-#: documentation/content/en/books/handbook/desktop/_index.adoc:786
-#: documentation/content/en/books/handbook/desktop/_index.adoc:926
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1008
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1097
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1102
+#: documentation/content/en/books/handbook/desktop/_index.adoc:555
+#: documentation/content/en/books/handbook/desktop/_index.adoc:560
+#: documentation/content/en/books/handbook/desktop/_index.adoc:565
+#: documentation/content/en/books/handbook/desktop/_index.adoc:570
+#: documentation/content/en/books/handbook/desktop/_index.adoc:762
+#: documentation/content/en/books/handbook/desktop/_index.adoc:767
+#: documentation/content/en/books/handbook/desktop/_index.adoc:772
+#: documentation/content/en/books/handbook/desktop/_index.adoc:777
+#: documentation/content/en/books/handbook/desktop/_index.adoc:917
+#: documentation/content/en/books/handbook/desktop/_index.adoc:999
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1088
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1093
#, no-wrap
msgid "Heavy"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:565
-#: documentation/content/en/books/handbook/desktop/_index.adoc:632
+#: documentation/content/en/books/handbook/desktop/_index.adoc:556
+#: documentation/content/en/books/handbook/desktop/_index.adoc:623
#, no-wrap
msgid "Chromium"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:566
-#: documentation/content/en/books/handbook/desktop/_index.adoc:571
+#: documentation/content/en/books/handbook/desktop/_index.adoc:557
+#: documentation/content/en/books/handbook/desktop/_index.adoc:562
#, no-wrap
msgid "BSD-3 and others"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:567
+#: documentation/content/en/books/handbook/desktop/_index.adoc:558
#, no-wrap
msgid "package:www/chromium[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:570
-#: documentation/content/en/books/handbook/desktop/_index.adoc:651
+#: documentation/content/en/books/handbook/desktop/_index.adoc:561
+#: documentation/content/en/books/handbook/desktop/_index.adoc:642
#, no-wrap
msgid "Iridium browser"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:572
+#: documentation/content/en/books/handbook/desktop/_index.adoc:563
#, no-wrap
msgid "package:www/iridium[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:575
-#: documentation/content/en/books/handbook/desktop/_index.adoc:664
+#: documentation/content/en/books/handbook/desktop/_index.adoc:566
+#: documentation/content/en/books/handbook/desktop/_index.adoc:655
#, no-wrap
msgid "Falkon"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:577
+#: documentation/content/en/books/handbook/desktop/_index.adoc:568
#, no-wrap
msgid "package:www/falkon[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:580
-#: documentation/content/en/books/handbook/desktop/_index.adoc:680
+#: documentation/content/en/books/handbook/desktop/_index.adoc:571
+#: documentation/content/en/books/handbook/desktop/_index.adoc:671
#, no-wrap
msgid "Konqueror"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:582
+#: documentation/content/en/books/handbook/desktop/_index.adoc:573
#, no-wrap
msgid "package:x11-fm/konqueror[]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:584
-#: documentation/content/en/books/handbook/desktop/_index.adoc:589
-#: documentation/content/en/books/handbook/desktop/_index.adoc:594
-#: documentation/content/en/books/handbook/desktop/_index.adoc:931
-#: documentation/content/en/books/handbook/desktop/_index.adoc:936
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1013
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1018
+#: documentation/content/en/books/handbook/desktop/_index.adoc:575
+#: documentation/content/en/books/handbook/desktop/_index.adoc:580
+#: documentation/content/en/books/handbook/desktop/_index.adoc:585
+#: documentation/content/en/books/handbook/desktop/_index.adoc:922
+#: documentation/content/en/books/handbook/desktop/_index.adoc:927
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1004
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1009
#, no-wrap
msgid "Medium"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:585
-#: documentation/content/en/books/handbook/desktop/_index.adoc:693
+#: documentation/content/en/books/handbook/desktop/_index.adoc:576
+#: documentation/content/en/books/handbook/desktop/_index.adoc:684
#, no-wrap
msgid "Gnome Web (Epiphany)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:586
-#: documentation/content/en/books/handbook/desktop/_index.adoc:591
-#: documentation/content/en/books/handbook/desktop/_index.adoc:596
-#: documentation/content/en/books/handbook/desktop/_index.adoc:798
+#: documentation/content/en/books/handbook/desktop/_index.adoc:577
+#: documentation/content/en/books/handbook/desktop/_index.adoc:582
+#: documentation/content/en/books/handbook/desktop/_index.adoc:587
+#: documentation/content/en/books/handbook/desktop/_index.adoc:789
#, no-wrap
msgid "GPL 3.0 or later"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:587
+#: documentation/content/en/books/handbook/desktop/_index.adoc:578
#, no-wrap
msgid "package:www/epiphany[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:590
-#: documentation/content/en/books/handbook/desktop/_index.adoc:705
+#: documentation/content/en/books/handbook/desktop/_index.adoc:581
+#: documentation/content/en/books/handbook/desktop/_index.adoc:696
#, no-wrap
msgid "qutebrowser"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:592
+#: documentation/content/en/books/handbook/desktop/_index.adoc:583
#, no-wrap
msgid "package:www/qutebrowser[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:595
-#: documentation/content/en/books/handbook/desktop/_index.adoc:720
+#: documentation/content/en/books/handbook/desktop/_index.adoc:586
+#: documentation/content/en/books/handbook/desktop/_index.adoc:711
#, no-wrap
msgid "Dillo"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:597
+#: documentation/content/en/books/handbook/desktop/_index.adoc:588
#, no-wrap
msgid "package:www/dillo2[]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:599
-#: documentation/content/en/books/handbook/desktop/_index.adoc:604
-#: documentation/content/en/books/handbook/desktop/_index.adoc:609
-#: documentation/content/en/books/handbook/desktop/_index.adoc:791
-#: documentation/content/en/books/handbook/desktop/_index.adoc:796
-#: documentation/content/en/books/handbook/desktop/_index.adoc:801
+#: documentation/content/en/books/handbook/desktop/_index.adoc:590
+#: documentation/content/en/books/handbook/desktop/_index.adoc:595
+#: documentation/content/en/books/handbook/desktop/_index.adoc:600
+#: documentation/content/en/books/handbook/desktop/_index.adoc:782
+#: documentation/content/en/books/handbook/desktop/_index.adoc:787
+#: documentation/content/en/books/handbook/desktop/_index.adoc:792
#, no-wrap
msgid "Light"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:600
-#: documentation/content/en/books/handbook/desktop/_index.adoc:733
+#: documentation/content/en/books/handbook/desktop/_index.adoc:591
+#: documentation/content/en/books/handbook/desktop/_index.adoc:724
#, no-wrap
msgid "Links"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:602
+#: documentation/content/en/books/handbook/desktop/_index.adoc:593
#, no-wrap
msgid "package:www/links[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:605
-#: documentation/content/en/books/handbook/desktop/_index.adoc:745
+#: documentation/content/en/books/handbook/desktop/_index.adoc:596
+#: documentation/content/en/books/handbook/desktop/_index.adoc:736
#, no-wrap
msgid "w3m"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:606
-#: documentation/content/en/books/handbook/desktop/_index.adoc:768
+#: documentation/content/en/books/handbook/desktop/_index.adoc:597
+#: documentation/content/en/books/handbook/desktop/_index.adoc:759
#, no-wrap
msgid "MIT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:607
+#: documentation/content/en/books/handbook/desktop/_index.adoc:598
#, no-wrap
msgid "package:www/w3m[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:616
+#: documentation/content/en/books/handbook/desktop/_index.adoc:607
msgid ""
"Firefox is an open source browser that features a standards-compliant HTML "
"display engine, tabbed browsing, popup blocking, extensions, improved "
"security, and more. Firefox is based on the Mozilla codebase."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:618
+#: documentation/content/en/books/handbook/desktop/_index.adoc:609
msgid ""
"To install the package of the latest release version of Firefox, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:622
+#: documentation/content/en/books/handbook/desktop/_index.adoc:613
#, no-wrap
msgid "# pkg install firefox\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:625
+#: documentation/content/en/books/handbook/desktop/_index.adoc:616
msgid ""
"To instead install Firefox Extended Support Release (ESR) version, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:629
+#: documentation/content/en/books/handbook/desktop/_index.adoc:620
#, no-wrap
msgid "# pkg install firefox-esr\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:637
+#: documentation/content/en/books/handbook/desktop/_index.adoc:628
msgid ""
"Chromium is an open source browser project that aims to build a safer, "
"faster, and more stable web browsing experience. Chromium features tabbed "
"browsing, popup blocking, extensions, and much more. Chromium is the open "
"source project upon which the Google Chrome web browser is based."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:639
+#: documentation/content/en/books/handbook/desktop/_index.adoc:630
msgid "To install Chromium, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:643
+#: documentation/content/en/books/handbook/desktop/_index.adoc:634
#, no-wrap
msgid "# pkg install chromium\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:648
+#: documentation/content/en/books/handbook/desktop/_index.adoc:639
msgid ""
"The executable for Chromium is [.filename]#/usr/local/bin/chrome#, not [."
"filename]#/usr/local/bin/chromium#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:655
+#: documentation/content/en/books/handbook/desktop/_index.adoc:646
msgid ""
"Iridium is a free, open, and libre browser modification of the Chromium code "
"base, with privacy being enhanced in several key areas. Automatic "
"transmission of partial queries, keywords, metrics to central services is "
"inhibited and only occurs with consent."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:657
+#: documentation/content/en/books/handbook/desktop/_index.adoc:648
msgid "To install Iridium, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:661
+#: documentation/content/en/books/handbook/desktop/_index.adoc:652
#, no-wrap
msgid "# pkg install iridium\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:671
+#: documentation/content/en/books/handbook/desktop/_index.adoc:662
msgid ""
"Falkon is a new-ish and very fast QtWebEngine browser. It aims to be a "
"lightweight web browser available on all major platforms. Falkon has all "
"standard functions you expect from a web browser. It includes bookmarks, "
"history (both also in sidebar) and tabs. Beyond that, you block ads with a "
"builtin AdBlock plugin, block Flash content with Click2Flash and edit the "
"local CA Certificates database with an SSL Manager."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:673
+#: documentation/content/en/books/handbook/desktop/_index.adoc:664
msgid "To install Falkon, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:677
+#: documentation/content/en/books/handbook/desktop/_index.adoc:668
#, no-wrap
msgid "# pkg install falkon\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:684
+#: documentation/content/en/books/handbook/desktop/_index.adoc:675
msgid ""
"Konqueror is more than a web browser as it is also a file manager and a "
"multimedia viewer. It supports WebKit, a rendering engine used by many "
"modern browsers including Chromium, as well as its own KHTML engine."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:686
+#: documentation/content/en/books/handbook/desktop/_index.adoc:677
msgid "To install Konqueror, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:690
+#: documentation/content/en/books/handbook/desktop/_index.adoc:681
#, no-wrap
msgid "# pkg install konqueror\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:696
+#: documentation/content/en/books/handbook/desktop/_index.adoc:687
msgid ""
"Gnome Web (Epiphany) is a web browser designed to be as lightweight and fast "
"as possible, at the expense of many of the features found in other browsers."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:698
+#: documentation/content/en/books/handbook/desktop/_index.adoc:689
msgid "To install Gnome Web (Epiphany), execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:702
+#: documentation/content/en/books/handbook/desktop/_index.adoc:693
#, no-wrap
msgid "# pkg install epiphany\n"
msgstr ""
#. What are these and how does this information help in this context?
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:709
+#: documentation/content/en/books/handbook/desktop/_index.adoc:700
msgid ""
"Qutebrowser is a keyboard-focused browser with a minimal GUI. It is based "
"on Python and PyQt5 and free software, licensed under the GPL."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:711
+#: documentation/content/en/books/handbook/desktop/_index.adoc:702
msgid ""
"It was inspired by other browsers/addons like dwb and Vimperator/Pentadactyl."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:713
+#: documentation/content/en/books/handbook/desktop/_index.adoc:704
msgid "To install qutebrowser, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:717
+#: documentation/content/en/books/handbook/desktop/_index.adoc:708
#, no-wrap
msgid "# pkg install qutebrowser\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:724
+#: documentation/content/en/books/handbook/desktop/_index.adoc:715
msgid ""
"Dillo aims to be a multiplatform alternative browser that is small, stable, "
"developer-friendly, usable, fast, and extensible. This new, experimental "
"version of Dillo is based upon FLTK toolkit, rather than GTK1, and has been "
"substantially rewritten."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:726
+#: documentation/content/en/books/handbook/desktop/_index.adoc:717
msgid "To install Dillo, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:730
+#: documentation/content/en/books/handbook/desktop/_index.adoc:721
#, no-wrap
msgid "# pkg install dillo2\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:736
+#: documentation/content/en/books/handbook/desktop/_index.adoc:727
msgid ""
"A lynx-like WWW browser with text and graphics modes with many features like "
"displaying tables, menus, etc."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:738
+#: documentation/content/en/books/handbook/desktop/_index.adoc:729
msgid "To install Links, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:742
+#: documentation/content/en/books/handbook/desktop/_index.adoc:733
#, no-wrap
msgid "# pkg install links\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:748
+#: documentation/content/en/books/handbook/desktop/_index.adoc:739
msgid ""
"w3m is a pager/text-based web browser. It is a similar application to Lynx, "
"but it has several features Lynx doesn't have like rendering tables and "
"rendering frames."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:750
+#: documentation/content/en/books/handbook/desktop/_index.adoc:741
msgid "To install w3m, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:754
+#: documentation/content/en/books/handbook/desktop/_index.adoc:745
#, no-wrap
msgid "# pkg install w3m\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/desktop/_index.adoc:757
+#: documentation/content/en/books/handbook/desktop/_index.adoc:748
#, no-wrap
msgid "Development tools"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:760
+#: documentation/content/en/books/handbook/desktop/_index.adoc:751
msgid ""
"This section describes how to install and configure some popular development "
"tools on a FreeBSD system."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/desktop/_index.adoc:761
+#: documentation/content/en/books/handbook/desktop/_index.adoc:752
#, no-wrap
msgid "Supported development tools"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:767
-#: documentation/content/en/books/handbook/desktop/_index.adoc:804
+#: documentation/content/en/books/handbook/desktop/_index.adoc:758
+#: documentation/content/en/books/handbook/desktop/_index.adoc:795
#, no-wrap
msgid "Visual Studio Code"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:769
+#: documentation/content/en/books/handbook/desktop/_index.adoc:760
#, no-wrap
msgid "package:editors/vscode[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:772
-#: documentation/content/en/books/handbook/desktop/_index.adoc:817
+#: documentation/content/en/books/handbook/desktop/_index.adoc:763
+#: documentation/content/en/books/handbook/desktop/_index.adoc:808
#, no-wrap
msgid "Qt Creator"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:773
+#: documentation/content/en/books/handbook/desktop/_index.adoc:764
#, no-wrap
msgid "QtGPL"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:774
+#: documentation/content/en/books/handbook/desktop/_index.adoc:765
#, no-wrap
msgid "package:devel/qtcreator[]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:777
+#: documentation/content/en/books/handbook/desktop/_index.adoc:768
#, no-wrap
msgid "Kdevelop"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:778
+#: documentation/content/en/books/handbook/desktop/_index.adoc:769
#, no-wrap
msgid "GPL 2.0 or later and LGPL 2.0 or later"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:779
+#: documentation/content/en/books/handbook/desktop/_index.adoc:770
#, no-wrap
msgid "package:devel/kdevelop[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:782
-#: documentation/content/en/books/handbook/desktop/_index.adoc:850
+#: documentation/content/en/books/handbook/desktop/_index.adoc:773
+#: documentation/content/en/books/handbook/desktop/_index.adoc:841
#, no-wrap
msgid "Eclipse IDE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:783
+#: documentation/content/en/books/handbook/desktop/_index.adoc:774
#, no-wrap
msgid "EPL"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:784
+#: documentation/content/en/books/handbook/desktop/_index.adoc:775
#, no-wrap
msgid "package:java/eclipse[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:787
-#: documentation/content/en/books/handbook/desktop/_index.adoc:864
+#: documentation/content/en/books/handbook/desktop/_index.adoc:778
+#: documentation/content/en/books/handbook/desktop/_index.adoc:855
#, no-wrap
msgid "Vim"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:788
+#: documentation/content/en/books/handbook/desktop/_index.adoc:779
#, no-wrap
msgid "VIM"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:789
+#: documentation/content/en/books/handbook/desktop/_index.adoc:780
#, no-wrap
msgid "package:editors/vim[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:792
-#: documentation/content/en/books/handbook/desktop/_index.adoc:881
+#: documentation/content/en/books/handbook/desktop/_index.adoc:783
+#: documentation/content/en/books/handbook/desktop/_index.adoc:872
#, no-wrap
msgid "Neovim"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:793
+#: documentation/content/en/books/handbook/desktop/_index.adoc:784
#, no-wrap
msgid "Apache 2.0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:794
+#: documentation/content/en/books/handbook/desktop/_index.adoc:785
#, no-wrap
msgid "package:editors/neovim[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:797
-#: documentation/content/en/books/handbook/desktop/_index.adoc:895
+#: documentation/content/en/books/handbook/desktop/_index.adoc:788
+#: documentation/content/en/books/handbook/desktop/_index.adoc:886
#, no-wrap
msgid "GNU Emacs"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:799
+#: documentation/content/en/books/handbook/desktop/_index.adoc:790
#, no-wrap
msgid "package:editors/emacs[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:808
+#: documentation/content/en/books/handbook/desktop/_index.adoc:799
msgid ""
"Visual Studio Code is a type of tool that combines the simplicity of a code "
"editor with what developers need for their core edit-build-debug cycle. It "
"provides comprehensive editing and debugging support, an extensibility "
"model, and lightweight integration with existing tools."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:810
+#: documentation/content/en/books/handbook/desktop/_index.adoc:801
msgid "To install Visual Studio Code, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:814
+#: documentation/content/en/books/handbook/desktop/_index.adoc:805
#, no-wrap
msgid "# pkg install vscode\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:821
+#: documentation/content/en/books/handbook/desktop/_index.adoc:812
msgid ""
"Qt Creator is a cross-platform IDE (integrated development environment) "
"tailored to the needs of Qt developers. Functionalities included with Qt "
"Creator are:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:823
+#: documentation/content/en/books/handbook/desktop/_index.adoc:814
msgid "code editor with C++, QML and ECMAscript support;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:824
+#: documentation/content/en/books/handbook/desktop/_index.adoc:815
msgid "rapid code navigation tools;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:825
+#: documentation/content/en/books/handbook/desktop/_index.adoc:816
msgid "static code checking and style hints as you type;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:826
+#: documentation/content/en/books/handbook/desktop/_index.adoc:817
msgid "context sensitive help;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:827
+#: documentation/content/en/books/handbook/desktop/_index.adoc:818
msgid "visual debugger;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:828
+#: documentation/content/en/books/handbook/desktop/_index.adoc:819
msgid "integrated GUI layout and forms designer."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:830
+#: documentation/content/en/books/handbook/desktop/_index.adoc:821
msgid "To install Qt Creator, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:834
+#: documentation/content/en/books/handbook/desktop/_index.adoc:825
#, no-wrap
msgid "# pkg install qtcreator\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:837
+#: documentation/content/en/books/handbook/desktop/_index.adoc:828
#, no-wrap
msgid "kdevelop"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:841
+#: documentation/content/en/books/handbook/desktop/_index.adoc:832
msgid ""
"Open source, feature-full, plugin extensible IDE for C/C++ and other "
"programming languages. It is based on KDevPlatform and the KDE and Qt "
"libraries, and it has been under development since 1998."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:843
+#: documentation/content/en/books/handbook/desktop/_index.adoc:834
msgid "To install kdevelop, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:847
+#: documentation/content/en/books/handbook/desktop/_index.adoc:838
#, no-wrap
msgid "# pkg install kdevelop\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:855
+#: documentation/content/en/books/handbook/desktop/_index.adoc:846
msgid ""
"The Eclipse Platform is an open extensible IDE for anything and yet nothing "
"in particular. The Eclipse Platform provides building blocks and a "
"foundation for constructing and running integrated software-development "
"tools. The Eclipse Platform allows tool builders to independently develop "
"tools that integrate with other people's tools."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:857
+#: documentation/content/en/books/handbook/desktop/_index.adoc:848
msgid "To install Eclipse IDE, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:861
+#: documentation/content/en/books/handbook/desktop/_index.adoc:852
#, no-wrap
msgid "# pkg install eclipse\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:868
+#: documentation/content/en/books/handbook/desktop/_index.adoc:859
msgid ""
"Vim is a highly configurable text editor built to enable efficient text "
"editing. It is an improved version of the vi editor distributed with most "
"UNIX systems."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:872
+#: documentation/content/en/books/handbook/desktop/_index.adoc:863
msgid ""
"Vim is often called a \"programmer's editor,\" and so useful for programming "
"that many consider it an entire IDE. It's not just for programmers, "
"though. Vim is perfect for all kinds of text editing, from composing email "
"to editing configuration files."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:874
+#: documentation/content/en/books/handbook/desktop/_index.adoc:865
msgid "To install Vim, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:878
+#: documentation/content/en/books/handbook/desktop/_index.adoc:869
#, no-wrap
msgid "# pkg install vim\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:886
+#: documentation/content/en/books/handbook/desktop/_index.adoc:877
msgid ""
"Neovim is an aggressive refactor of package:editors/vim[]. It represents a "
"complete overhaul of the codebase with many sanity improvements, including "
"sensible defaults, a built-in terminal emulator, asynchronous plugin "
"architecture, and powerful APIs designed for speed and extensibility. It "
"retains full compatibility with almost all Vim plugins and scripts."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:888
+#: documentation/content/en/books/handbook/desktop/_index.adoc:879
msgid "To install Neovim, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:892
+#: documentation/content/en/books/handbook/desktop/_index.adoc:883
#, no-wrap
msgid "# pkg install neovim\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:899
+#: documentation/content/en/books/handbook/desktop/_index.adoc:890
msgid ""
"GNU Emacs is an extensible, customizable, free/libre text editor. At its "
"core is an interpreter for Emacs Lisp, a dialect of the Lisp programming "
"language with extensions to support text editing."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:901
+#: documentation/content/en/books/handbook/desktop/_index.adoc:892
msgid "To install GNU Emacs, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:905
+#: documentation/content/en/books/handbook/desktop/_index.adoc:896
#, no-wrap
msgid "# pkg install emacs\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/desktop/_index.adoc:908
+#: documentation/content/en/books/handbook/desktop/_index.adoc:899
#, no-wrap
msgid "Desktop office productivity"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:913
+#: documentation/content/en/books/handbook/desktop/_index.adoc:904
msgid ""
"When it comes to productivity, users often look for an office suite or an "
"easy-to-use word processor. While some desktop environments like <<kde-"
"environment, KDE Plasma>> provide an office suite, there is no default "
"productivity package. Several office suites and graphical word processors "
"are available for FreeBSD, regardless of the installed desktop environments."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:915
+#: documentation/content/en/books/handbook/desktop/_index.adoc:906
msgid ""
"This section demonstrates how to install the following popular productivity "
"software and indicates if the application is resource-heavy, takes time to "
"compile from ports, or has any major dependencies."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/desktop/_index.adoc:916
+#: documentation/content/en/books/handbook/desktop/_index.adoc:907
#, no-wrap
msgid "Supported Desktop office productivity suites"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:922
-#: documentation/content/en/books/handbook/desktop/_index.adoc:939
+#: documentation/content/en/books/handbook/desktop/_index.adoc:913
+#: documentation/content/en/books/handbook/desktop/_index.adoc:930
#, no-wrap
msgid "LibreOffice"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:924
+#: documentation/content/en/books/handbook/desktop/_index.adoc:915
#, no-wrap
msgid "package:editors/libreoffice[]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:927
+#: documentation/content/en/books/handbook/desktop/_index.adoc:918
#, no-wrap
msgid "Calligra Suite"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:928
+#: documentation/content/en/books/handbook/desktop/_index.adoc:919
#, no-wrap
msgid "LGPL and GPL"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:929
+#: documentation/content/en/books/handbook/desktop/_index.adoc:920
#, no-wrap
msgid "package:editors/calligra[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:932
-#: documentation/content/en/books/handbook/desktop/_index.adoc:978
+#: documentation/content/en/books/handbook/desktop/_index.adoc:923
+#: documentation/content/en/books/handbook/desktop/_index.adoc:969
#, no-wrap
msgid "AbiWord"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:934
+#: documentation/content/en/books/handbook/desktop/_index.adoc:925
#, no-wrap
msgid "package:editors/abiword[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:946
+#: documentation/content/en/books/handbook/desktop/_index.adoc:937
msgid ""
"LibreOffice is a free software office suite developed by http://www."
"documentfoundation.org/[The Document Foundation]. It is compatible with "
"other major office suites and available on a variety of platforms. It is a "
"rebranded fork of Apache OpenOffice and includes applications found in a "
"complete office productivity suite: a word processor, spreadsheet, "
"presentation manager, drawing program, database management program, and a "
"tool for creating and editing mathematical formulæ. It is available in a "
"number of different languages and internationalization has been extended to "
"interfaces, spell checkers, and dictionaries. More information about "
"LibreOffice can be found at http://www.libreoffice.org/[libreoffice.org]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:948
+#: documentation/content/en/books/handbook/desktop/_index.adoc:939
msgid "To install LibreOffice, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:952
+#: documentation/content/en/books/handbook/desktop/_index.adoc:943
#, no-wrap
msgid "# pkg install libreoffice\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:957
+#: documentation/content/en/books/handbook/desktop/_index.adoc:948
msgid ""
"The LibreOffice package comes by default only in English. To have a "
"localized version of LibreOffice it is necessary to install a language "
"pack. For example, for the version localized in Spanish, it is necessary to "
"install the package package:editors/libreoffice-es[] with the command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:961
+#: documentation/content/en/books/handbook/desktop/_index.adoc:952
#, no-wrap
msgid "# pkg install libreoffice-es\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:964
+#: documentation/content/en/books/handbook/desktop/_index.adoc:955
#, no-wrap
msgid "Calligra"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:969
+#: documentation/content/en/books/handbook/desktop/_index.adoc:960
msgid ""
"The KDE Plasma desktop environment includes an office suite which can be "
"installed separately from KDE Plasma. Calligra includes standard components "
"that can be found in other office suites. Words is the word processor, "
"Sheets is the spreadsheet program, Stage manages slide presentations, and "
"Karbon is used to draw graphical documents."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:971
+#: documentation/content/en/books/handbook/desktop/_index.adoc:962
msgid "To install Calligra, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:975
+#: documentation/content/en/books/handbook/desktop/_index.adoc:966
#, no-wrap
msgid "# pkg install calligra\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:982
+#: documentation/content/en/books/handbook/desktop/_index.adoc:973
msgid ""
"AbiWord is a free word processing program similar in look and feel to "
"Microsoft(R) Word. It is fast, contains many features, and is user-friendly."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:984
+#: documentation/content/en/books/handbook/desktop/_index.adoc:975
msgid ""
"AbiWord can import or export many file formats, including some proprietary "
"ones like Microsoft(R) [.filename]#.rtf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:986
+#: documentation/content/en/books/handbook/desktop/_index.adoc:977
msgid "To install AbiWord, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:990
+#: documentation/content/en/books/handbook/desktop/_index.adoc:981
#, no-wrap
msgid "# pkg install abiword\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/desktop/_index.adoc:993
+#: documentation/content/en/books/handbook/desktop/_index.adoc:984
#, no-wrap
msgid "Document Viewers"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:997
+#: documentation/content/en/books/handbook/desktop/_index.adoc:988
msgid ""
"Some new document formats have gained popularity since the advent of UNIX(R) "
"and the viewers they require may not be available in the base system. This "
"section demonstrates how to install the following document viewers:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/desktop/_index.adoc:998
+#: documentation/content/en/books/handbook/desktop/_index.adoc:989
#, no-wrap
msgid "Supported Document Viewers"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1004
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1026
+#: documentation/content/en/books/handbook/desktop/_index.adoc:995
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1017
#, no-wrap
msgid "Okular"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1005
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1010
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1015
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1020
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1094
+#: documentation/content/en/books/handbook/desktop/_index.adoc:996
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1001
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1006
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1011
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1085
#, no-wrap
msgid "GPL 2.0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1006
+#: documentation/content/en/books/handbook/desktop/_index.adoc:997
#, no-wrap
msgid "package:graphics/okular[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1009
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1040
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1000
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1031
#, no-wrap
msgid "Evince"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1011
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1002
#, no-wrap
msgid "package:graphics/evince[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1014
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1054
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1005
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1045
#, no-wrap
msgid "ePDFView"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1016
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1007
#, no-wrap
msgid "package:graphics/epdfview[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1019
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1067
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1010
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1058
#, no-wrap
msgid "Xpdf"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1021
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1012
#, no-wrap
msgid "package:graphics/xpdf[]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1023
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1014
#, no-wrap
msgid "light"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1029
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1020
msgid "Okular is a universal document viewer, part of the KDE Plasma project."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1031
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1022
msgid ""
"Okular combines excellent functionality with the versatility of supporting "
"different kind of documents, like PDF, Postscript, DjVu, CHM, XPS, ePub and "
"others."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1033
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1024
msgid "To install Okular, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1037
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1028
#, no-wrap
msgid "# pkg install okular\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1045
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1036
msgid ""
"Evince is a document viewer for multiple document formats including PDF and "
"Postscript. Part of the GNOME project. The goal of evince is to replace "
"document viewers such as ggv and gpdf with a single, simple application."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1047
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1038
msgid "To install Evince, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1051
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1042
#, no-wrap
msgid "# pkg install evince\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1058
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1049
msgid ""
"ePDFView is a lightweight PDF document viewer that only uses the Gtk+ and "
"Poppler libraries. The aim of ePDFView is to make a simple PDF document "
"viewer, similar to Evince but without using the GNOME libraries."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1060
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1051
msgid "To install ePDFView, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1064
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1055
#, no-wrap
msgid "# pkg install epdfview\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1071
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1062
msgid ""
"For users that prefer a small FreeBSD PDF viewer, Xpdf provides a light-"
"weight and efficient viewer which requires few resources. It uses the "
"standard X fonts and does not require any additional toolkits."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1073
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1064
msgid "To install Xpdf, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1077
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1068
#, no-wrap
msgid "# pkg install xpdf\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1080
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1071
#, no-wrap
msgid "Finance"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1084
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1075
msgid ""
"For managing personal finances on a FreeBSD desktop, some powerful and easy-"
"to-use applications can be installed. Some are compatible with widespread "
"file formats, such as the formats used by Quicken and Excel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1086
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1077
msgid "This section covers these programs:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1087
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1078
#, no-wrap
msgid "Supported Finance programs"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1093
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1105
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1084
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1096
#, no-wrap
msgid "KMyMoney"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1095
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1086
#, no-wrap
msgid "package:finance/kmymoney[]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1098
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1120
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1089
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1111
#, no-wrap
msgid "GnuCash"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1099
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1090
#, no-wrap
msgid "GPL 2.0 and GPL 3.0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1100
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1091
#, no-wrap
msgid "package:finance/gnucash[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1111
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1102
msgid ""
"KMyMoney is a personal finance application created by the KDE community. "
"KMyMoney aims to provide the important features found in commercial personal "
"finance manager applications. It also highlights ease-of-use and proper "
"double-entry accounting among its features. KMyMoney imports from standard "
"Quicken QIF files, tracks investments, handles multiple currencies, and "
"provides a wealth of reports."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1113
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1104
msgid "To install KMyMoney, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1117
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1108
#, no-wrap
msgid "# pkg install kmymoney\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1125
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1116
msgid ""
"GnuCash is part of the GNOME effort to provide user-friendly, yet powerful, "
"applications to end-users. GnuCash can be used to keep track of income and "
"expenses, bank accounts, and stocks. It features an intuitive interface "
"while remaining professional."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1130
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1121
msgid ""
"GnuCash provides a smart register, a hierarchical system of accounts, and "
"many keyboard accelerators and auto-completion methods. It can split a "
"single transaction into several more detailed pieces. GnuCash can import "
"and merge Quicken QIF files. It also handles most international date and "
"currency formats."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1132
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1123
msgid "To install GnuCash, execute:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/desktop/_index.adoc:1136
+#: documentation/content/en/books/handbook/desktop/_index.adoc:1127
#, no-wrap
msgid "# pkg install gnucash\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/filesystems/_index.po b/documentation/content/en/books/handbook/filesystems/_index.po
index a6a4008a70..ae6e0b79e6 100644
--- a/documentation/content/en/books/handbook/filesystems/_index.po
+++ b/documentation/content/en/books/handbook/filesystems/_index.po
@@ -1,175 +1,175 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/filesystems/_index.adoc:1
#, no-wrap
msgid "This chapter shows the other filesystems supported by FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/filesystems/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/filesystems/_index.adoc:1
#, no-wrap
msgid "Chapter 22. Other File Systems"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/filesystems/_index.adoc:14
#, no-wrap
msgid "Other File Systems"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/filesystems/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:60
msgid ""
"File systems are an integral part of any operating system. They allow users "
"to upload and store files, provide access to data, and make hard drives "
"useful. Different operating systems differ in their native file system. "
"Traditionally, the native FreeBSD file system has been the Unix File System "
"UFS which has been modernized as UFS2. Since FreeBSD 7.0, the Z File System "
"(ZFS) is also available as a native file system. See crossref:zfs[zfs,The Z "
"File System (ZFS)] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:63
msgid ""
"In addition to its native file systems, FreeBSD supports a multitude of "
"other file systems so that data from other operating systems can be accessed "
"locally, such as data stored on locally attached USB storage devices, flash "
"drives, and hard disks. This includes support for the Linux(R) Extended "
"File System (EXT)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:67
msgid ""
"There are different levels of FreeBSD support for the various file systems. "
"Some require a kernel module to be loaded and others may require a toolset "
"to be installed. Some non-native file system support is full read-write "
"while others are read-only."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:69
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:71
msgid "The difference between native and supported file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:72
msgid "Which file systems are supported by FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:73
msgid ""
"How to enable, configure, access, and make use of non-native file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:75
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:77
msgid "Understand UNIX(R) and crossref:basics[basics,FreeBSD basics]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:78
msgid ""
"Be familiar with the basics of crossref:kernelconfig[kernelconfig,kernel "
"configuration and compilation]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:79
msgid "Feel comfortable crossref:ports[ports,installing software] in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:80
msgid ""
"Have some familiarity with crossref:disks[disks,disks], storage, and device "
"names in FreeBSD."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/filesystems/_index.adoc:82
#, no-wrap
msgid "Linux(R) File Systems"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:86
msgid ""
"FreeBSD provides built-in support for several Linux(R) file systems. This "
"section demonstrates how to load support for and how to mount the supported "
"Linux(R) file systems."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/filesystems/_index.adoc:87
#, no-wrap
msgid "ext2 / ext3 / ext4"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:91
msgid ""
"Kernel support for ext2 file systems has been available since FreeBSD 2.2. "
"The man:ext2fs[5] driver allows the FreeBSD kernel to both read and write to "
"ext2, ext3, and ext4 file systems."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/filesystems/_index.adoc:95
msgid "Journalling and encryption are not supported yet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:99
msgid ""
"To access an ext file system, mount the ext volume by specifying its FreeBSD "
"partition name and an existing mount point. This example mounts [."
-"filename]#/dev/ad1s1# on [.filename]#/mnt#:"
+"filename]#/dev/ada1s1# on [.filename]#/mnt#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/filesystems/_index.adoc:103
#, no-wrap
-msgid "# mount -t ext2fs /dev/ad1s1 /mnt\n"
+msgid "# mount -t ext2fs /dev/ada1s1 /mnt\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/glossary.po b/documentation/content/en/books/handbook/glossary.po
index 271b9f6144..9fa952038a 100644
--- a/documentation/content/en/books/handbook/glossary.po
+++ b/documentation/content/en/books/handbook/glossary.po
@@ -1,2992 +1,2992 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:20-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/glossary.adoc:1
#, no-wrap
msgid "FreeBSD Handbook Glossary"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/glossary.adoc:1
#: documentation/content/en/books/handbook/glossary.adoc:13
#, no-wrap
msgid "FreeBSD Glossary"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:49
msgid ""
"This glossary contains terms and acronyms used within the FreeBSD community "
"and documentation."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:51
#, no-wrap
msgid "A"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:53
#, no-wrap
msgid "ACL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:55
msgid "See <<acl-glossary,Access Control List>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:56
#, no-wrap
msgid "ACPI"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:58
msgid "See <<acpi-glossary,Advanced Configuration and Power Interface>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:59
#, no-wrap
msgid "AMD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:61
msgid "See <<amd-glossary,Automatic Mount Daemon>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:62
#, no-wrap
msgid "AML"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:64
msgid "See <<aml-glossary,ACPI Machine Language>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:65
#, no-wrap
msgid "API"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:67
msgid "See <<api-glossary,Application Programming Interface>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:68
#, no-wrap
msgid "APIC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:70
msgid "See <<apic-glossary,Advanced Programmable Interrupt Controller>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:71
#, no-wrap
msgid "APM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:73
msgid "See <<apm-glossary,Advanced Power Management>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:74
#, no-wrap
msgid "APOP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:76
msgid "See <<apop-glossary,Authenticated Post Office Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:77
#, no-wrap
msgid "ASL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:79
msgid "See <<asl-glossary,ACPI Source Language>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:80
#, no-wrap
msgid "ATA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:82
msgid "See <<ata-glossary,Advanced Technology Attachment>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:83
#, no-wrap
msgid "ATM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:85
msgid "See <<atm-glossary,Asynchronous Transfer Mode>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:87
#, no-wrap
msgid "ACPI Machine Language"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:89
msgid ""
"Pseudocode, interpreted by a virtual machine within an ACPI-compliant "
"operating system, providing a layer between the underlying hardware and the "
"documented interface presented to the OS."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:91
#, no-wrap
msgid "ACPI Source Language"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:93
msgid "The programming language AML is written in."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:95
#, no-wrap
msgid "Access Control List"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:97
msgid ""
"A list of permissions attached to an object, usually either a file or a "
"network device."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:99
#, no-wrap
msgid "Advanced Configuration and Power Interface"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:102
msgid ""
"A specification which provides an abstraction of the interface the hardware "
"presents to the operating system, so that the operating system should need "
"to know nothing about the underlying hardware to make the most of it. ACPI "
"evolves and supersedes the functionality provided previously by APM, PNPBIOS "
"and other technologies, and provides facilities for controlling power "
"consumption, machine suspension, device enabling and disabling, etc."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:104
#, no-wrap
msgid "Application Programming Interface"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:107
msgid ""
"A set of procedures, protocols and tools that specify the canonical "
"interaction of one or more program parts; how, when and why they do work "
"together, and what data they share or operate on."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:109
#, no-wrap
msgid "Advanced Power Management"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:112
msgid ""
"An API enabling the operating system to work in conjunction with the BIOS in "
"order to achieve power management. APM has been superseded by the much more "
"generic and powerful ACPI specification for most applications."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:114
#, no-wrap
msgid "Advanced Programmable Interrupt Controller"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:116
#: documentation/content/en/books/handbook/glossary.adoc:120
#: documentation/content/en/books/handbook/glossary.adoc:124
#: documentation/content/en/books/handbook/glossary.adoc:128
#: documentation/content/en/books/handbook/glossary.adoc:213
#: documentation/content/en/books/handbook/glossary.adoc:223
#: documentation/content/en/books/handbook/glossary.adoc:257
#: documentation/content/en/books/handbook/glossary.adoc:283
#: documentation/content/en/books/handbook/glossary.adoc:307
#: documentation/content/en/books/handbook/glossary.adoc:311
#: documentation/content/en/books/handbook/glossary.adoc:315
#: documentation/content/en/books/handbook/glossary.adoc:334
#: documentation/content/en/books/handbook/glossary.adoc:338
#: documentation/content/en/books/handbook/glossary.adoc:346
#: documentation/content/en/books/handbook/glossary.adoc:375
#: documentation/content/en/books/handbook/glossary.adoc:413
#: documentation/content/en/books/handbook/glossary.adoc:430
#: documentation/content/en/books/handbook/glossary.adoc:444
#: documentation/content/en/books/handbook/glossary.adoc:490
#: documentation/content/en/books/handbook/glossary.adoc:494
#: documentation/content/en/books/handbook/glossary.adoc:515
#: documentation/content/en/books/handbook/glossary.adoc:578
#: documentation/content/en/books/handbook/glossary.adoc:582
#: documentation/content/en/books/handbook/glossary.adoc:603
#: documentation/content/en/books/handbook/glossary.adoc:611
#: documentation/content/en/books/handbook/glossary.adoc:615
#: documentation/content/en/books/handbook/glossary.adoc:641
#: documentation/content/en/books/handbook/glossary.adoc:665
#: documentation/content/en/books/handbook/glossary.adoc:723
#: documentation/content/en/books/handbook/glossary.adoc:727
#: documentation/content/en/books/handbook/glossary.adoc:737
#: documentation/content/en/books/handbook/glossary.adoc:741
#: documentation/content/en/books/handbook/glossary.adoc:745
#: documentation/content/en/books/handbook/glossary.adoc:753
#: documentation/content/en/books/handbook/glossary.adoc:757
#: documentation/content/en/books/handbook/glossary.adoc:767
#: documentation/content/en/books/handbook/glossary.adoc:781
#: documentation/content/en/books/handbook/glossary.adoc:785
#: documentation/content/en/books/handbook/glossary.adoc:841
#: documentation/content/en/books/handbook/glossary.adoc:870
#: documentation/content/en/books/handbook/glossary.adoc:874
#: documentation/content/en/books/handbook/glossary.adoc:891
#: documentation/content/en/books/handbook/glossary.adoc:928
#: documentation/content/en/books/handbook/glossary.adoc:932
#: documentation/content/en/books/handbook/glossary.adoc:940
#: documentation/content/en/books/handbook/glossary.adoc:944
#: documentation/content/en/books/handbook/glossary.adoc:948
#: documentation/content/en/books/handbook/glossary.adoc:956
#: documentation/content/en/books/handbook/glossary.adoc:960
#: documentation/content/en/books/handbook/glossary.adoc:964
#: documentation/content/en/books/handbook/glossary.adoc:989
#: documentation/content/en/books/handbook/glossary.adoc:1012
msgid "{empty}"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:118
#, no-wrap
msgid "Advanced Technology Attachment"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:122
#, no-wrap
msgid "Asynchronous Transfer Mode"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:126
#, no-wrap
msgid "Authenticated Post Office Protocol"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:130
#, no-wrap
msgid "Automatic Mount Daemon"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:132
msgid ""
"A daemon that automatically mounts a filesystem when a file or directory "
"within that filesystem is accessed."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:134
#, no-wrap
msgid "B"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:136
#, no-wrap
msgid "BAR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:138
msgid "See <<bar-glossary,Base Address Register>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:139
#, no-wrap
msgid "BIND"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:141
msgid "See <<bind-glossary,Berkeley Internet Name Domain>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:142
#, no-wrap
msgid "BIOS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:144
msgid "See <<bios-glossary,Basic Input/Output System>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:145
#, no-wrap
msgid "BSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:147
msgid "See <<bsd-glossary,Berkeley Software Distribution>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:149
#, no-wrap
msgid "Base Address Register"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:151
msgid ""
"The registers that determine which address range a PCI device will respond "
"to."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:153
#, no-wrap
msgid "Basic Input/Output System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:159
msgid ""
"The definition of BIOS depends a bit on the context. Some people refer to "
"it as the ROM chip with a basic set of routines to provide an interface "
"between software and hardware. Others refer to it as the set of routines "
"contained in the chip that help in bootstrapping the system. Some might "
"also refer to it as the screen used to configure the bootstrapping process. "
"The BIOS is PC-specific but other systems have something similar."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:161
#, no-wrap
msgid "Berkeley Internet Name Domain"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:163
msgid "An implementation of the DNS protocols."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:165
#, no-wrap
msgid "Berkeley Software Distribution"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:168
msgid ""
"This is the name that the Computer Systems Research Group (CSRG) at link:"
"http://www.berkeley.edu[The University of California at Berkeley] gave to "
"their improvements and modifications to AT&T's 32V UNIX(R). FreeBSD is a "
"descendant of the CSRG work."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:170
#, no-wrap
msgid "Bikeshed Building"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:173
msgid ""
"A phenomenon whereby many people will give an opinion on an uncomplicated "
"topic, whilst a complex topic receives little or no discussion. See the "
"extref:{faq}[FAQ, bikeshed-painting] for the origin of the term."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:175
#, no-wrap
msgid "C"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:177
#, no-wrap
msgid "CD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:179
msgid "See <<cd-glossary,Carrier Detect>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:180
#, no-wrap
msgid "CHAP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:182
msgid "See <<chap-glossary,Challenge Handshake Authentication Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:183
#, no-wrap
msgid "CLIP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:185
msgid "See <<clip-glossary,Classical IP over ATM>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:186
#, no-wrap
msgid "COFF"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:188
msgid "See <<coff-glossary,Common Object File Format>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:189
#, no-wrap
msgid "CPU"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:191
msgid "See <<cpu-glossary,Central Processing Unit>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:192
#, no-wrap
msgid "CTS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:194
msgid "See <<cts-glossary,Clear To Send>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:196
#, no-wrap
msgid "Carrier Detect"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:198
msgid "An RS232C signal indicating that a carrier has been detected."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:200
#, no-wrap
msgid "Central Processing Unit"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:205
msgid ""
"Also known as the processor. This is the brain of the computer where all "
"calculations take place. There are a number of different architectures with "
"different instruction sets. Among the more well-known are the Intel-x86 and "
"derivatives, Arm, and PowerPC."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:207
#, no-wrap
msgid "Challenge Handshake Authentication Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:209
msgid ""
"A method of authenticating a user, based on a secret shared between client "
"and server."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:211
#, no-wrap
msgid "Classical IP over ATM"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:215
#, no-wrap
msgid "Clear To Send"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:217
msgid "An RS232C signal giving the remote system permission to send data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:219
msgid "See <<rts-glossary,Also Request To Send>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:221
#, no-wrap
msgid "Common Object File Format"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:225
#, no-wrap
msgid "D"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:227
#, no-wrap
msgid "DAC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:229
msgid "See <<dac-glossary,Discretionary Access Control>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:230
#, no-wrap
msgid "DDB"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:232
msgid "See <<ddb-glossary,Debugger>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:233
#, no-wrap
msgid "DES"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:235
msgid "See <<des-glossary,Data Encryption Standard>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:236
#, no-wrap
msgid "DHCP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:238
msgid "See <<dhcp-glossary,Dynamic Host Configuration Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:239
#, no-wrap
msgid "DNS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:241
msgid "See <<dns-glossary,Domain Name System>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:242
#, no-wrap
msgid "DSDT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:244
msgid "See <<dsdt-glossary,Differentiated System Description Table>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:245
#, no-wrap
msgid "DSR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:247
msgid "See <<dsr-glossary,Data Set Ready>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:248
#, no-wrap
msgid "DTR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:250
msgid "See <<dtr-glossary,Data Terminal Ready>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:251
#, no-wrap
msgid "DVMRP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:253
msgid "See <<dvmrp-glossary,Distance-Vector Multicast Routing Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:255
#, no-wrap
msgid "Discretionary Access Control"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:259
#, no-wrap
msgid "Data Encryption Standard"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:261
msgid ""
"A method of encrypting information, traditionally used as the method of "
"encryption for UNIX(R) passwords and the man:crypt[3] function."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:263
#, no-wrap
msgid "Data Set Ready"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:265
msgid ""
"An RS232C signal sent from the modem to the computer or terminal indicating "
"a readiness to send and receive data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:267
msgid "See <<dtr-glossary,Also Data Terminal Ready>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:269
#, no-wrap
msgid "Data Terminal Ready"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:271
msgid ""
"An RS232C signal sent from the computer or terminal to the modem indicating "
"a readiness to send and receive data."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:273
#, no-wrap
msgid "Debugger"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:275
msgid ""
"An interactive in-kernel facility for examining the status of a system, "
"often used after a system has crashed to establish the events surrounding "
"the failure."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:277
#, no-wrap
msgid "Differentiated System Description Table"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:279
msgid ""
"An ACPI table, supplying basic configuration information about the base "
"system."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:281
#, no-wrap
msgid "Distance-Vector Multicast Routing Protocol"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:285
#, no-wrap
msgid "Domain Name System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:287
msgid ""
"The system that converts humanly readable hostnames (i.e., mail.example.net) "
"to Internet addresses and vice versa."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:289
#, no-wrap
msgid "Dynamic Host Configuration Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:292
msgid ""
"A protocol that dynamically assigns IP addresses to a computer (host) when "
"it requests one from the server. The address assignment is called a “lease”."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:294
#, no-wrap
msgid "E"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:296
#, no-wrap
msgid "ECOFF"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:298
msgid "See <<ecoff-glossary,Extended COFF>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:299
#, no-wrap
msgid "ELF"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:301
msgid "See <<elf-glossary,Executable and Linking Format>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:302
#, no-wrap
msgid "ESP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:304
msgid "See <<esp-glossary,Encapsulated Security Payload>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:305
#, no-wrap
msgid "Encapsulated Security Payload"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:309
#, no-wrap
msgid "Executable and Linking Format"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:313
#, no-wrap
msgid "Extended COFF"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:317
#, no-wrap
msgid "F"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:319
#, no-wrap
msgid "FADT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:321
msgid "See <<fadt-glossary,Fixed ACPI Description Table>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:322
#, no-wrap
msgid "FAT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:324
msgid "See <<fat-glossary,File Allocation Table>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:325
#, no-wrap
msgid "FAT16"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:327
msgid "See <<fat16-glossary,File Allocation Table (16-bit)>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:328
#, no-wrap
msgid "FTP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:330
msgid "See <<ftp-glossary,File Transfer Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:332
#, no-wrap
msgid "File Allocation Table"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:336
#, no-wrap
msgid "File Allocation Table (16-bit)"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:340
#, no-wrap
msgid "File Transfer Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:342
msgid ""
"A member of the family of high-level protocols implemented on top of TCP "
"which can be used to transfer files over a TCP/IP network."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:344
#, no-wrap
msgid "Fixed ACPI Description Table"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:348
#, no-wrap
msgid "G"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:350
#, no-wrap
msgid "GUI"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:352
msgid "See <<gui-glossary,Graphical User Interface>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:354
#, no-wrap
msgid "Giant"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:358
msgid ""
"The name of a mutual exclusion mechanism (a sleep `mutex`) that protects a "
"large set of kernel resources. Although a simple locking mechanism was "
"adequate in the days where a machine might have only a few dozen processes, "
"one networking card, and certainly only one processor, in current times it "
"is an unacceptable performance bottleneck. FreeBSD developers are actively "
"working to replace it with locks that protect individual resources, which "
"will allow a much greater degree of parallelism for both single-processor "
"and multi-processor machines."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:360
#, no-wrap
msgid "Graphical User Interface"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:362
msgid "A system where the user and computer interact with graphics."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:364
#, no-wrap
msgid "H"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:366
#, no-wrap
msgid "HTML"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:368
msgid "See <<html-glossary,HyperText Markup Language>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:369
#, no-wrap
msgid "HUP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:371
msgid "See <<hup-glossary,HangUp>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:373
#, no-wrap
msgid "HangUp"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:377
#, no-wrap
msgid "HyperText Markup Language"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:379
msgid "The markup language used to create web pages."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:381
#, no-wrap
msgid "I"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:383
#, no-wrap
msgid "I/O"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:385
msgid "See <<io-glossary,Input/Output>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:386
#, no-wrap
msgid "IASL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:388
msgid "See <<iasl-glossary,Intel’s ASL compiler>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:389
#, no-wrap
msgid "IMAP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:391
msgid "See <<imap-glossary,Internet Message Access Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:392
#, no-wrap
msgid "IP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:394
msgid "See <<ip-glossary,Internet Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:395
#, no-wrap
msgid "IPFW"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:397
msgid "See <<ipfw-glossary,IP Firewall>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:398
#, no-wrap
msgid "IPP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:400
msgid "See <<ipp-glossary,Internet Printing Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:401
#, no-wrap
msgid "IPv4"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:403
msgid "See <<ipv4-glossary,IP Version 4>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:404
#, no-wrap
msgid "IPv6"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:406
msgid "See <<ipv6-glossary,IP Version 6>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:407
#, no-wrap
msgid "ISP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:409
msgid "See <<isp-glossary,Internet Service Provider>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:411
#, no-wrap
msgid "IP Firewall"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:415
#, no-wrap
msgid "IP Version 4"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:418
msgid ""
"The IP protocol version 4, which uses 32 bits for addressing. This version "
"is still the most widely used, but it is slowly being replaced with IPv6."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:420
msgid "See <<ipv6-glossary,Also IP Version 6>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:422
#, no-wrap
msgid "IP Version 6"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:426
msgid ""
"The new IP protocol. Invented because the address space in IPv4 is running "
"out. Uses 128 bits for addressing."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:428
#, no-wrap
msgid "Input/Output"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:432
#, no-wrap
msgid "Intel’s ASL compiler"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:434
msgid "Intel’s compiler for converting ASL into AML."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:436
#, no-wrap
msgid "Internet Message Access Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:438
msgid ""
"A protocol for accessing email messages on a mail server, characterised by "
"the messages usually being kept on the server as opposed to being downloaded "
"to the mail reader client."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:440
#: documentation/content/en/books/handbook/glossary.adoc:771
msgid "See Also Post Office Protocol Version 3."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:442
#, no-wrap
msgid "Internet Printing Protocol"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:446
#, no-wrap
msgid "Internet Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:451
msgid ""
"The packet transmitting protocol that is the basic protocol on the "
"Internet. Originally developed at the U.S. Department of Defense and an "
"extremely important part of the TCP/IP stack. Without the Internet "
"Protocol, the Internet would not have become what it is today. For more "
"information, see link:ftp://ftp.rfc-editor.org/in-notes/rfc791.txt[RFC 791]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:453
#, no-wrap
msgid "Internet Service Provider"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:455
msgid "A company that provides access to the Internet."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:457
#, no-wrap
msgid "K"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:460
#, no-wrap
msgid "KAME"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:462
msgid ""
"Japanese for “turtle”, the term KAME is used in computing circles to refer "
"to the link:http://www.kame.net/[KAME Project], who work on an "
"implementation of IPv6."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:463
#, no-wrap
msgid "KDC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:465
msgid "See <<kdc-glossary,Key Distribution Center>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:466
#, no-wrap
msgid "KLD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:468
msgid "See <<kld-glossary,Kernel ld(1)>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:469
#, no-wrap
msgid "KSE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:471
msgid "See <<kse-glossary,Kernel Scheduler Entities>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:472
#, no-wrap
msgid "KVA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:474
msgid "See <<kva-glossary,Kernel Virtual Address>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:475
#, no-wrap
msgid "Kbps"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:477
msgid "See <<kbps-glossary,Kilo Bits Per Second>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:479
#, no-wrap
msgid "Kernel man:ld[1]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:481
msgid ""
"A method of dynamically loading functionality into a FreeBSD kernel without "
"rebooting the system."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:483
#, no-wrap
msgid "Kernel Scheduler Entities"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:486
msgid ""
"A kernel-supported threading system. See the link:http://www.freebsd.org/"
"kse[project home page] for further details."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:488
#, no-wrap
msgid "Kernel Virtual Address"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:492
#, no-wrap
msgid "Key Distribution Center"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:496
#, no-wrap
msgid "Kilo Bits Per Second"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:499
msgid ""
"Used to measure bandwidth (how much data can pass a given point at a "
"specified amount of time). Alternates to the Kilo prefix include Mega, "
"Giga, Tera, and so forth."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:501
#, no-wrap
msgid "L"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:503
#, no-wrap
msgid "LAN"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:505
msgid "See <<lan-glossary,Local Area Network>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:506
#, no-wrap
msgid "LOR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:508
msgid "See <<lor-glossary,Lock Order Reversal>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:509
#, no-wrap
msgid "LPD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:511
msgid "See <<lpd-glossary,Line Printer Daemon>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:513
#, no-wrap
msgid "Line Printer Daemon"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:517
#, no-wrap
msgid "Local Area Network"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:519
msgid "A network used on a local area, e.g. office, home, or so forth."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:521
#, no-wrap
msgid "Lock Order Reversal"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:526
msgid ""
"The FreeBSD kernel uses a number of resource locks to arbitrate contention "
"for those resources. A run-time lock diagnostic system found in FreeBSD-"
"CURRENT kernels (but removed for releases), called man:witness[4], detects "
"the potential for deadlocks due to locking errors. (man:witness[4] is "
"actually slightly conservative, so it is possible to get false positives.) "
"A true positive report indicates that “if you were unlucky, a deadlock would "
"have happened here”."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:528
msgid ""
"True positive LORs tend to get fixed quickly, so check https://lists.FreeBSD."
"org/subscription/freebsd-current and the link:http://sources.zabbadoz.net/"
"freebsd/lor.html[LORs Seen] page before posting to the mailing lists."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:530
#, no-wrap
msgid "M"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:532
#, no-wrap
msgid "MAC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:534
msgid "See <<mac-glossary,Mandatory Access Control>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:535
#, no-wrap
msgid "MADT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:537
msgid "See <<madt-glossary,Multiple APIC Description Table>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:538
#, no-wrap
msgid "MFC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:540
msgid "See <<mfc-glossary,Merge From Current>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:541
#, no-wrap
msgid "MFH"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:543
msgid "See <<mfh-glossary,Merge From Head>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:544
#, no-wrap
msgid "MFS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:546
msgid "See <<mfs-glossary,Merge From Stable>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:547
#, no-wrap
msgid "MFV"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:549
msgid "See <<mfv-glossary,Merge From Vendor>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:550
#, no-wrap
msgid "MIT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:552
msgid "See <<mit-glossary,Massachusetts Institute of Technology>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:553
#, no-wrap
msgid "MLS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:555
msgid "See <<mls-glossary,Multi-Level Security>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:556
#, no-wrap
msgid "MOTD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:558
msgid "See <<motd-glossary,Message Of The Day>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:559
#, no-wrap
msgid "MTA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:561
msgid "See <<mta-glossary,Mail Transfer Agent>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:562
#, no-wrap
msgid "MUA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:564
msgid "See <<mua-glossary,Mail User Agent>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:566
#, no-wrap
msgid "Mail Transfer Agent"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:570
msgid ""
"An application used to transfer email. An MTA has traditionally been part "
"of the BSD base system. Today Sendmail is included in the base system, but "
"there are many other MTAs, such as postfix, qmail and Exim."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:572
#, no-wrap
msgid "Mail User Agent"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:574
msgid "An application used by users to display and write email."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:576
#, no-wrap
msgid "Mandatory Access Control"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:580
#, no-wrap
msgid "Massachusetts Institute of Technology"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:584
#, no-wrap
msgid "Merge From Current"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:586
msgid ""
-"To merge functionality or a patch from the -CURRENT branch to another, most "
-"often -STABLE."
+"To merge functionality or a patch from the `main` branch (-CURRENT) to "
+"another, most often -STABLE."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:588
#, no-wrap
msgid "Merge From Head"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:590
msgid ""
"To merge functionality or a patch from a repository HEAD to an earlier "
"branch."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:592
#, no-wrap
msgid "Merge From Stable"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:595
msgid ""
"In the normal course of FreeBSD development, a change will be committed to "
"the -CURRENT branch for testing before being merged to -STABLE. On rare "
"occasions, a change will go into -STABLE first and then be merged to -"
"CURRENT."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:597
msgid ""
"This term is also used when a patch is merged from -STABLE to a security "
"branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:599
msgid "See <<mfc-glossary,Also Merge From Current>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:601
#, no-wrap
msgid "Merge From Vendor"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:605
#, no-wrap
msgid "Message Of The Day"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:607
msgid ""
"A message, usually shown on login, often used to distribute information to "
"users of the system."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:609
#, no-wrap
msgid "Multi-Level Security"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:613
#, no-wrap
msgid "Multiple APIC Description Table"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:617
#, no-wrap
msgid "N"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:619
#, no-wrap
msgid "NAT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:621
msgid "See <<nat-glossary,Network Address Translation>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:622
#, no-wrap
msgid "NDISulator"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:624
msgid "See <<projectevil-glossary,Project Evil>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:625
#, no-wrap
msgid "NFS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:627
msgid "See <<nfs-glossary,Network File System>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:628
#, no-wrap
msgid "NTFS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:630
msgid "See <<ntfs-glossary,New Technology File System>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:631
#, no-wrap
msgid "NTP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:633
msgid "See <<ntp-glossary,Network Time Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:635
#, no-wrap
msgid "Network Address Translation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:637
msgid ""
"A technique where IP packets are rewritten on the way through a gateway, "
"enabling many machines behind the gateway to effectively share a single IP "
"address."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:639
#, no-wrap
msgid "Network File System"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:643
#, no-wrap
msgid "New Technology File System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:645
msgid ""
"A filesystem developed by Microsoft and available in its “New Technology” "
"operating systems, such as Windows(R) 2000, Windows NT(R) and Windows(R) XP."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:647
#, no-wrap
msgid "Network Time Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:649
msgid "A means of synchronizing clocks over a network."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:651
#, no-wrap
msgid "O"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:653
#, no-wrap
msgid "OBE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:655
msgid "See <<obe-glossary,Overtaken By Events>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:656
#, no-wrap
msgid "ODMR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:658
msgid "See <<odmr-glossary,On-Demand Mail Relay>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:659
#, no-wrap
msgid "OS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:661
msgid "See <<os-glossary,Operating System>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:663
#, no-wrap
msgid "On-Demand Mail Relay"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:667
#, no-wrap
msgid "Operating System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:670
msgid ""
"A set of programs, libraries and tools that provide access to the hardware "
"resources of a computer. Operating systems range today from simplistic "
"designs that support only one program running at a time, accessing only one "
"device to fully multi-user, multi-tasking and multi-process systems that can "
"serve thousands of users simultaneously, each of them running dozens of "
"different applications."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:672
#, no-wrap
msgid "Overtaken By Events"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:674
msgid ""
"Indicates a suggested change (such as a Problem Report or a feature request) "
"which is no longer relevant or applicable due to such things as later "
"changes to FreeBSD, changes in networking standards, the affected hardware "
"having since become obsolete, and so forth."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:676
#, no-wrap
msgid "P"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:678
#, no-wrap
msgid "PAE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:680
msgid "See <<pae-glossary,Physical Address Extensions>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:681
#, no-wrap
msgid "PAM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:683
msgid "See <<pam-glossary,Pluggable Authentication Modules>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:684
#, no-wrap
msgid "PAP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:686
msgid "See <<pap-glossary,Password Authentication Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:687
#, no-wrap
msgid "PC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:689
msgid "See <<pc-glossary,Personal Computer>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:690
#, no-wrap
msgid "PCNSFD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:692
msgid "See <<pcnfsd-glossary,Personal Computer Network File System Daemon>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:693
#, no-wrap
msgid "PDF"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:695
msgid "See <<pdf-glossary,Portable Document Format>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:696
#, no-wrap
msgid "PID"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:698
msgid "See <<pid-glossary,Process ID>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:699
#, no-wrap
msgid "POLA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:701
msgid "See <<pola-glossary,Principle Of Least Astonishment>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:702
#, no-wrap
msgid "POP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:704
msgid "See <<pop-glossary,Post Office Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:705
#, no-wrap
msgid "POP3"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:707
msgid "See <<pop3-glossary,Post Office Protocol Version 3>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:708
#, no-wrap
msgid "PPD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:710
msgid "See <<ppd-glossary,PostScript Printer Description>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:711
#, no-wrap
msgid "PPP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:713
msgid "See <<ppp-glossary,Point-to-Point Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:714
#, no-wrap
msgid "PPPoA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:716
msgid "See <<pppoa-glossary,PPP over ATM>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:717
#, no-wrap
msgid "PPPoE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:719
msgid "See <<pppoe-glossary,PPP over Ethernet>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:721
#, no-wrap
msgid "PPP over ATM"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:725
#, no-wrap
msgid "PPP over Ethernet"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:728
#, no-wrap
msgid "PR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:730
msgid "See <<pr-glossary,Problem Report>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:731
#, no-wrap
msgid "PXE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:733
msgid "See <<pxe-glossary,Preboot eXecution Environment>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:735
#, no-wrap
msgid "Password Authentication Protocol"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:739
#, no-wrap
msgid "Personal Computer"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:743
#, no-wrap
msgid "Personal Computer Network File System Daemon"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:747
#, no-wrap
msgid "Physical Address Extensions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:749
msgid ""
"A method of enabling access to up to 64 GB of RAM on systems which only "
"physically have a 32-bit wide address space (and would therefore be limited "
"to 4 GB without PAE)."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:751
#, no-wrap
msgid "Pluggable Authentication Modules"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:755
#, no-wrap
msgid "Point-to-Point Protocol"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:759
#, no-wrap
msgid "Pointy Hat"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:763
msgid ""
"A mythical piece of headgear, much like a dunce cap, awarded to any FreeBSD "
"committer who breaks the build, makes revision numbers go backwards, or "
"creates any other kind of havoc in the source base. Any committer worth his "
"or her salt will soon accumulate a large collection. The usage is (almost "
"always?) humorous."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:765
#, no-wrap
msgid "Portable Document Format"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:769
#, no-wrap
msgid "Post Office Protocol"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:773
#, no-wrap
msgid "Post Office Protocol Version 3"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:775
msgid ""
"A protocol for accessing email messages on a mail server, characterised by "
"the messages usually being downloaded from the server to the client, as "
"opposed to remaining on the server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:777
msgid "See <<imap-glossary,Also Internet Message Access Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:779
#, no-wrap
msgid "PostScript Printer Description"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:783
#, no-wrap
msgid "Preboot eXecution Environment"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:787
#, no-wrap
msgid "Principle Of Least Astonishment"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:791
msgid ""
"As FreeBSD evolves, changes visible to the user should be kept as "
"unsurprising as possible. For example, arbitrarily rearranging system "
"startup variables in [.filename]#/etc/defaults/rc.conf# violates POLA. "
"Developers consider POLA when contemplating user-visible system changes."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:793
#, no-wrap
msgid "Problem Report"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:796
msgid ""
"A description of some kind of problem that has been found in either the "
"FreeBSD source or documentation. See extref:{problem-reports}[Writing "
"FreeBSD Problem Reports]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:798
#, no-wrap
msgid "Process ID"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:800
msgid ""
"A number, unique to a particular process on a system, which identifies it "
"and allows actions to be taken against it."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:802
#, no-wrap
msgid "Project Evil"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:807
msgid ""
"The working title for the NDISulator, written by Bill Paul, who named it "
"referring to how awful it is (from a philosophical standpoint) to need to "
"have something like this in the first place. The NDISulator is a special "
"compatibility module to allow Microsoft Windows(TM) NDIS miniport network "
"drivers to be used with FreeBSD/i386. This is usually the only way to use "
"cards where the driver is closed-source. See [.filename]#src/sys/compat/"
"ndis/subr_ndis.c#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:809
#, no-wrap
msgid "R"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:811
#, no-wrap
msgid "RA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:813
msgid "See <<ra-glossary,Router Advertisement>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:814
#, no-wrap
msgid "RAID"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:816
msgid "See <<raid-glossary,Redundant Array of Inexpensive Disks>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:817
#, no-wrap
msgid "RAM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:819
msgid "See <<ram-glossary,Random Access Memory>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:820
#, no-wrap
msgid "RD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:822
msgid "See <<rd-glossary,Received Data>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:823
#, no-wrap
msgid "RFC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:825
msgid "See <<rfc-glossary,Request For Comments>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:826
#, no-wrap
msgid "RISC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:828
msgid "See <<risc-glossary,Reduced Instruction Set Computer>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:829
#, no-wrap
msgid "RPC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:831
msgid "See <<rpc-glossary,Remote Procedure Call>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:832
#, no-wrap
msgid "RS232C"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:834
msgid "See <<rs232c-glossary,Recommended Standard 232C>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:835
#, no-wrap
msgid "RTS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:837
msgid "See <<rts-glossary,Request To Send>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:839
#, no-wrap
msgid "Random Access Memory"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:843
#, no-wrap
msgid "Revision Control System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:848
msgid ""
"The _Revision Control System (RCS)_ is one of the oldest software suites "
"that implement “revision control” for plain files. It allows the storage, "
"retrieval, archival, logging, identification and merging of multiple "
"revisions for each file. RCS consists of many small tools that work "
"together. It lacks some of the features found in more modern revision "
"control systems, like Git, but it is very simple to install, configure, and "
"start using for a small set of files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:850
msgid "See <<svn-glossary,Also Subversion>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:852
#, no-wrap
msgid "Received Data"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:854
msgid "An RS232C pin or wire that data is received on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:856
msgid "See <<td-glossary,Also Transmitted Data>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:858
#, no-wrap
msgid "Recommended Standard 232C"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:860
msgid "A standard for communications between serial devices."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:862
#, no-wrap
msgid "Reduced Instruction Set Computer"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:866
msgid ""
"An approach to processor design where the operations the hardware can "
"perform are simplified but made as general purpose as possible. This can "
"lead to lower power consumption, fewer transistors and in some cases, better "
"performance and increased code density. Examples of RISC processors include "
"the Alpha, SPARC(R), ARM(R) and PowerPC(R)."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:868
#, no-wrap
msgid "Redundant Array of Inexpensive Disks"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:872
#, no-wrap
msgid "Remote Procedure Call"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:876
#, no-wrap
msgid "Request For Comments"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:879
msgid ""
"A set of documents defining Internet standards, protocols, and so forth. "
"See www.rfc-editor.org."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:881
msgid ""
"Also used as a general term when someone has a suggested change and wants "
"feedback."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:883
#, no-wrap
msgid "Request To Send"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:885
msgid ""
"An RS232C signal requesting that the remote system commences transmission of "
"data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:887
msgid "See <<cts-glossary,Also Clear To Send>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:889
#, no-wrap
msgid "Router Advertisement"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:893
#, no-wrap
msgid "S"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:895
#, no-wrap
msgid "SCI"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:897
msgid "See <<sci-glossary,System Control Interrupt>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:898
#, no-wrap
msgid "SCSI"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:900
msgid "See <<scsi-glossary,Small Computer System Interface>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:901
#, no-wrap
msgid "SG"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:903
msgid "See <<sg-glossary,Signal Ground>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:904
#, no-wrap
msgid "SMB"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:906
msgid "See <<smb-glossary,Server Message Block>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:907
#, no-wrap
msgid "SMP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:909
msgid "See <<smp-glossary,Symmetric MultiProcessor>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:910
#, no-wrap
msgid "SMTP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:912
msgid "See <<smtp-glossary,Simple Mail Transfer Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:913
#, no-wrap
msgid "SMTP AUTH"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:915
msgid "See <<smtpauth-glossary,SMTP Authentication>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:916
#, no-wrap
msgid "SSH"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:918
msgid "See <<ssh-glossary,Secure Shell>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:919
#, no-wrap
msgid "STR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:921
msgid "See <<str-glossary,Suspend To RAM>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:922
#, no-wrap
msgid "SVN"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:924
msgid "See <<svn-glossary,Subversion>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:926
#, no-wrap
msgid "SMTP Authentication"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:930
#, no-wrap
msgid "Server Message Block"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:934
#, no-wrap
msgid "Signal Ground"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:936
msgid "An RS232 pin or wire that is the ground reference for the signal."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:938
#, no-wrap
msgid "Simple Mail Transfer Protocol"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:942
#, no-wrap
msgid "Secure Shell"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:946
#, no-wrap
msgid "Small Computer System Interface"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:950
#, no-wrap
msgid "Subversion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:952
msgid ""
"Subversion is a version control system currently used by the FreeBSD project."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:954
#, no-wrap
msgid "Suspend To RAM"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:958
#, no-wrap
msgid "Symmetric MultiProcessor"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:962
#, no-wrap
msgid "System Control Interrupt"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:966
#, no-wrap
msgid "T"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:968
#, no-wrap
msgid "TCP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:970
msgid "See <<tcp-glossary,Transmission Control Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:971
#, no-wrap
msgid "TCP/IP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:973
msgid "See <<tcpip-glossary,Transmission Control Protocol/Internet Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:974
#, no-wrap
msgid "TD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:976
msgid "See <<td-glossary,Transmitted Data>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:977
#, no-wrap
msgid "TFTP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:979
msgid "See <<tftp-glossary,Trivial FTP>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:980
#, no-wrap
msgid "TGT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:982
msgid "See <<tgt-glossary,Ticket-Granting Ticket>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:983
#, no-wrap
msgid "TSC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:985
msgid "See <<tsc-glossary,Time Stamp Counter>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:987
#, no-wrap
msgid "Ticket-Granting Ticket"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:991
#, no-wrap
msgid "Time Stamp Counter"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:993
msgid ""
"A profiling counter internal to modern Pentium(R) processors that counts "
"core frequency clock ticks."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:995
#, no-wrap
msgid "Transmission Control Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:997
msgid ""
"A protocol that sits on top of (e.g.) the IP protocol and guarantees that "
"packets are delivered in a reliable, ordered, fashion."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:999
#, no-wrap
msgid "Transmission Control Protocol/Internet Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1002
msgid ""
"The term for the combination of the TCP protocol running over the IP "
"protocol. Much of the Internet runs over TCP/IP."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1004
#, no-wrap
msgid "Transmitted Data"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1006
msgid "An RS232C pin or wire that data is transmitted on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1008
msgid "See <<rd-glossary,Also Received Data>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1010
#, no-wrap
msgid "Trivial FTP"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:1014
#, no-wrap
msgid "U"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1016
#, no-wrap
msgid "UDP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1018
msgid "See <<udp-glossary,User Datagram Protocol>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1019
#, no-wrap
msgid "UFS1"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1021
msgid "See <<ufs1-glossary,Unix File System Version 1>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1022
#, no-wrap
msgid "UFS2"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1024
msgid "See <<ufs2-glossary,Unix File System Version 2>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1025
#, no-wrap
msgid "UID"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1027
msgid "See <<uid-glossary,User ID>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1028
#, no-wrap
msgid "URL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1030
msgid "See <<url-glossary,Uniform Resource Locator>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1031
#, no-wrap
msgid "USB"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1033
msgid "See <<usb-glossary,Universal Serial Bus>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1035
#, no-wrap
msgid "Uniform Resource Locator"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1037
msgid ""
"A method of locating a resource, such as a document on the Internet and a "
"means to identify that resource."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1039
#, no-wrap
msgid "Unix File System Version 1"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1041
msgid ""
"The original UNIX(R) file system, sometimes called the Berkeley Fast File "
"System."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1043
#, no-wrap
msgid "Unix File System Version 2"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1046
msgid ""
"An extension to UFS1, introduced in FreeBSD 5-CURRENT. UFS2 adds 64 bit "
"block pointers (breaking the 1T barrier), support for extended file storage "
"and other features."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1048
#, no-wrap
msgid "Universal Serial Bus"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1050
msgid ""
"A hardware standard used to connect a wide variety of computer peripherals "
"to a universal interface."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1052
#, no-wrap
msgid "User ID"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1054
msgid ""
"A unique number assigned to each user of a computer, by which the resources "
"and permissions assigned to that user can be identified."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1056
#, no-wrap
msgid "User Datagram Protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1059
msgid ""
"A simple, unreliable datagram protocol which is used for exchanging data on "
"a TCP/IP network. UDP does not provide error checking and correction like "
"TCP."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/glossary.adoc:1061
#, no-wrap
msgid "V"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1063
#, no-wrap
msgid "VPN"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1065
msgid "See <<vpn-glossary,Virtual Private Network>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/glossary.adoc:1067
#, no-wrap
msgid "Virtual Private Network"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/glossary.adoc:1068
msgid ""
"A method of using a public telecommunication such as the Internet, to "
"provide remote access to a localized network, such as a corporate LAN."
msgstr ""
diff --git a/documentation/content/en/books/handbook/kernelconfig/_index.po b/documentation/content/en/books/handbook/kernelconfig/_index.po
index 8e6840717a..5c66bd3e7e 100644
--- a/documentation/content/en/books/handbook/kernelconfig/_index.po
+++ b/documentation/content/en/books/handbook/kernelconfig/_index.po
@@ -1,705 +1,727 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/kernelconfig/_index.adoc:1
#, no-wrap
msgid "This chapter covers how to configure the FreeBSD Kernel. When to build a custom kernel, how to take a hardware inventory, how to customize a kernel configuration file, etc"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1
#, no-wrap
msgid "Chapter 9. Configuring the FreeBSD Kernel"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:14
#, no-wrap
msgid "Configuring the FreeBSD Kernel"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:57
msgid ""
"The kernel is the core of the FreeBSD operating system. It is responsible "
"for managing memory, enforcing security controls, networking, disk access, "
"and much more. While much of FreeBSD is dynamically configurable, it is "
"still occasionally necessary to configure and compile a custom kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:59
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:61
msgid "When to build a custom kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:62
msgid "How to take a hardware inventory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:63
msgid "How to customize a kernel configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:64
msgid ""
"How to use the kernel configuration file to create and build a new kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:65
msgid "How to install the new kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:66
msgid "How to troubleshoot if things go wrong."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:68
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:70
msgid ""
"All of the commands listed in the examples in this chapter should be "
"executed as `root`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:70
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:73
#, no-wrap
msgid "Why Build a Custom Kernel?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:74
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:77
msgid ""
"Traditionally, FreeBSD used a monolithic kernel. The kernel was one large "
"program, supported a fixed list of devices, and in order to change the "
"kernel's behavior, one had to compile and then reboot into a new kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:78
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:81
msgid ""
"Today, most of the functionality in the FreeBSD kernel is contained in "
"modules which can be dynamically loaded and unloaded from the kernel as "
"necessary. This allows the running kernel to adapt immediately to new "
"hardware and for new functionality to be brought into the kernel. This is "
"known as a modular kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:82
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:85
msgid ""
"Occasionally, it is still necessary to perform static kernel configuration. "
"Sometimes the needed functionality is so tied to the kernel that it can not "
"be made dynamically loadable. Some security environments prevent the "
"loading and unloading of kernel modules and require that only needed "
"functionality is statically compiled into the kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:87
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:89
msgid ""
"Building a custom kernel is often a rite of passage for advanced BSD users. "
"This process, while time consuming, can provide benefits to the FreeBSD "
-"system. Unlike the [.filename]#GENERIC# kernel, which must support a wide "
-"range of hardware, a custom kernel can be stripped down to only provide "
-"support for that computer's hardware. This has a number of benefits, such "
-"as:"
+"system. Unlike the `GENERIC` kernel, which must support a wide range of "
+"hardware, a custom kernel can be stripped down to only provide support for "
+"that computer's hardware."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:89
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:91
+msgid "This has a number of benefits, such as:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:93
msgid ""
"Faster boot time. Since the kernel will only probe the hardware on the "
"system, the time it takes the system to boot can decrease."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:90
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:94
msgid ""
-"Lower memory usage. A custom kernel often uses less memory than the [."
-"filename]#GENERIC# kernel by omitting unused features and device drivers. "
-"This is important because the kernel code remains resident in physical "
-"memory at all times, preventing that memory from being used by applications. "
-"For this reason, a custom kernel is useful on a system with a small amount "
-"of RAM."
+"Lower memory usage. A custom kernel often uses less memory than the "
+"`GENERIC` kernel by omitting unused features and device drivers. This is "
+"important because the kernel code remains resident in physical memory at all "
+"times, preventing that memory from being used by applications. For this "
+"reason, a custom kernel is useful on a system with a small amount of RAM."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:91
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:95
msgid ""
"Additional hardware support. A custom kernel can add support for devices "
-"which are not present in the [.filename]#GENERIC# kernel."
+"which are not present in the `GENERIC` kernel."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:94
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:100
msgid ""
"Before building a custom kernel, consider the reason for doing so. If there "
"is a need for specific hardware support, it may already exist as a module."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:98
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:104
msgid ""
"Kernel modules exist in [.filename]#/boot/kernel# and may be dynamically "
"loaded into the running kernel using man:kldload[8]. Most kernel drivers "
-"have a loadable module and manual page. For example, the man:ath[4] "
-"wireless network driver has the following information in its manual page:"
+"have a loadable module and manual page."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:106
+msgid ""
+"For example, the man:ath[4] wireless network driver has the following "
+"information in its manual page:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:103
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:111
#, no-wrap
msgid ""
"Alternatively, to load the driver as a module at boot time, place the\n"
"following line in man:loader.conf[5]:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:105
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:114
#, no-wrap
-msgid " if_ath_load=\"YES\"\n"
+msgid ""
+" if_ath_load=\"YES\"\n"
+" if_ath_pci_load=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:108
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:117
msgid ""
-"Adding `if_ath_load=\"YES\"` to [.filename]#/boot/loader.conf# will load "
-"this module dynamically at boot time."
+"Adding `if_ath_load=\"YES\"` and `if_ath_pci_load=\"YES\"` to [.filename]#/"
+"boot/loader.conf# will load these modules dynamically at boot time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:111
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:120
msgid ""
"In some cases, there is no associated module in [.filename]#/boot/kernel#. "
"This is mostly true for certain subsystems."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:113
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:122
#, no-wrap
msgid "Finding the System Hardware"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:118
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:127
msgid ""
"Before editing the kernel configuration file, it is recommended to perform "
"an inventory of the machine's hardware. On a dual-boot system, the "
"inventory can be created from the other operating system. For example, "
"Microsoft(R)'s Device Manager contains information about installed devices."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:122
-msgid ""
-"Some versions of Microsoft(R) Windows(R) have a System icon which can be "
-"used to access Device Manager."
-msgstr ""
-
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:127
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:131
msgid ""
"If FreeBSD is the only installed operating system, use man:dmesg[8] to "
"determine the hardware that was found and listed during the boot probe. "
"Most device drivers on FreeBSD have a manual page which lists the hardware "
"supported by that driver. For example, the following lines indicate that "
"the man:psm[4] driver found a mouse:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:134
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:138
#, no-wrap
msgid ""
"psm0: <PS/2 Mouse> irq 12 on atkbdc0\n"
"psm0: [GIANT-LOCKED]\n"
"psm0: [ITHREAD]\n"
"psm0: model Generic PS/2 mouse, device ID 0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:137
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:141
msgid ""
"Since this hardware exists, this driver should not be removed from a custom "
"kernel configuration file."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:139
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:143
msgid ""
"If the output of `dmesg` does not display the results of the boot probe "
"output, instead read the contents of [.filename]#/var/run/dmesg.boot#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:142
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:146
msgid ""
"Another tool for finding hardware is man:pciconf[8], which provides more "
"verbose output. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:151
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:150
+#, no-wrap
+msgid "% pciconf -lv\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:153
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:174
+msgid "The output should be similar to the following:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:161
#, no-wrap
msgid ""
-"% pciconf -lv\n"
"ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00\n"
" vendor = 'Atheros Communications Inc.'\n"
" device = 'AR5212 Atheros AR5212 802.11abg wireless'\n"
" class = network\n"
" subclass = ethernet\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:154
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:164
msgid ""
-"This output shows that the [.filename]#ath# driver located a wireless "
-"Ethernet device."
+"This output shows that the `ath` driver located a wireless Ethernet device."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:157
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:167
msgid ""
"The `-k` flag of man:man[1] can be used to provide useful information. For "
"example, it can be used to display a list of manual pages which contain a "
"particular device brand or name:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:163
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:171
+#, no-wrap
+msgid "# man -k Atheros\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:179
#, no-wrap
msgid ""
-"# man -k Atheros\n"
"ath(4) - Atheros IEEE 802.11 wireless network driver\n"
"ath_hal(4) - Atheros Hardware Access Layer (HAL)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:166
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:182
msgid ""
"Once the hardware inventory list is created, refer to it to ensure that "
"drivers for installed hardware are not removed as the custom kernel "
"configuration is edited."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:168
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:184
#, no-wrap
msgid "The Configuration File"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:171
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:187
msgid ""
"In order to create a custom kernel configuration file and build a custom "
"kernel, the full FreeBSD source tree must first be installed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:174
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:190
msgid ""
"If [.filename]#/usr/src/# does not exist or it is empty, source has not been "
"installed. Source can be installed with Git using the instructions in "
"crossref:mirrors[git,“Using Git”]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:179
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:195
msgid ""
"Once source is installed, review the contents of [.filename]#/usr/src/sys#. "
"This directory contains a number of subdirectories, including those which "
-"represent the following supported architectures: [.filename]#amd64#, [."
-"filename]#i386#, [.filename]#powerpc#, and [.filename]#sparc64#. Everything "
-"inside a particular architecture's directory deals with that architecture "
-"only and the rest of the code is machine independent code common to all "
-"platforms. Each supported architecture has a [.filename]#conf# subdirectory "
-"which contains the [.filename]#GENERIC# kernel configuration file for that "
+"represent the FreeBSD supported architectures. Everything inside a "
+"particular architecture's directory deals with that architecture only and "
+"the rest of the code is machine independent code common to all platforms. "
+"Each supported architecture has a [.filename]#conf# subdirectory which "
+"contains the [.filename]#GENERIC# kernel configuration file for that "
"architecture."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:185
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:201
msgid ""
"Do not make edits to [.filename]#GENERIC#. Instead, copy the file to a "
"different name and make edits to the copy. The convention is to use a name "
"with all capital letters. When maintaining multiple FreeBSD machines with "
"different hardware, it is a good idea to name it after the machine's "
"hostname. This example creates a copy, named [.filename]#MYKERNEL#, of the "
"[.filename]#GENERIC# configuration file for the `amd64` architecture:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:190
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:206
#, no-wrap
msgid ""
"# cd /usr/src/sys/amd64/conf\n"
"# cp GENERIC MYKERNEL\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:194
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:209
msgid ""
-"[.filename]#MYKERNEL# can now be customized with any `ASCII` text editor. "
-"The default editor is vi, though an easier editor for beginners, called ee, "
-"is also installed with FreeBSD."
+"The [.filename]#MYKERNEL# file can now be customized with any text editor."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:200
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:216
msgid ""
"The format of the kernel configuration file is simple. Each line contains a "
"keyword that represents a device or subsystem, an argument, and a brief "
"description. Any text after a `+#+` is considered a comment and ignored. "
"To remove kernel support for a device or subsystem, put a `+#+` at the "
"beginning of the line representing that device or subsystem. Do not add or "
-"remove a `+#+` for any line that you do not understand."
+"remove a `+#+` for any line that you do not understand. More information "
+"about the configuration kernel file can be found in man:config[5]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:206
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:222
msgid ""
"It is easy to remove support for a device or option and end up with a broken "
"kernel. For example, if the man:ata[4] driver is removed from the kernel "
"configuration file, a system using `ATA` disk drivers may not boot. When in "
"doubt, just leave support in the kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:210
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:226
msgid ""
"In addition to the brief descriptions provided in this file, additional "
"descriptions are contained in [.filename]#NOTES#, which can be found in the "
"same directory as [.filename]#GENERIC# for that architecture. For "
"architecture independent options, refer to [.filename]#/usr/src/sys/conf/"
"NOTES#."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:214
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:231
msgid ""
"When finished customizing the kernel configuration file, save a backup copy "
-"to a location outside of [.filename]#/usr/src#."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:216
-msgid ""
-"Alternately, keep the kernel configuration file elsewhere and create a "
-"symbolic link to the file:"
+"to a location outside of [.filename]#/usr/src#. Alternately, keep the "
+"kernel configuration file elsewhere and create a symbolic link to the file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:223
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:238
#, no-wrap
msgid ""
"# cd /usr/src/sys/amd64/conf\n"
"# mkdir /root/kernels\n"
"# cp GENERIC /root/kernels/MYKERNEL\n"
"# ln -s /root/kernels/MYKERNEL\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:230
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:245
msgid ""
"An `include` directive is available for use in configuration files. This "
"allows another configuration file to be included in the current one, making "
"it easy to maintain small changes relative to an existing file. If only a "
"small number of additional options or drivers are required, this allows a "
"delta to be maintained with respect to [.filename]#GENERIC#, as seen in this "
"example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:235
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:250
#, no-wrap
msgid ""
"include GENERIC\n"
"ident MYKERNEL\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:240
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:255
#, no-wrap
msgid ""
"options IPFIREWALL\n"
"options DUMMYNET\n"
"options IPFIREWALL_DEFAULT_TO_ACCEPT\n"
"options IPDIVERT\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:245
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:259
msgid ""
"Using this method, the local configuration file expresses local differences "
"from a [.filename]#GENERIC# kernel. As upgrades are performed, new features "
"added to [.filename]#GENERIC# will also be added to the local kernel unless "
-"they are specifically prevented using `nooptions` or `nodevice`. A "
-"comprehensive list of configuration directives and their descriptions may be "
-"found in man:config[5]."
+"they are specifically prevented using `nooptions` or `nodevice`."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:249
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:261
msgid ""
-"To build a file which contains all available options, run the following "
-"command as `root`:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:253
-#, no-wrap
-msgid "# cd /usr/src/sys/arch/conf && make LINT\n"
+"A comprehensive list of configuration directives and their descriptions may "
+"be found in man:config[5]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:258
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:263
#, no-wrap
msgid "Building and Installing a Custom Kernel"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:261
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:266
msgid ""
"Once the edits to the custom configuration file have been saved, the source "
"code for the kernel can be compiled using the following steps:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:265
-#, no-wrap
-msgid "*Procedure: Building a Kernel*\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:267
-msgid "Change to this directory:"
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:268
+msgid "Move to [.filename]#/usr/src#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:271
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:272
#, no-wrap
msgid "# cd /usr/src\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:274
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:275
msgid ""
"Compile the new kernel by specifying the name of the custom kernel "
"configuration file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:278
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:279
#, no-wrap
msgid "# make buildkernel KERNCONF=MYKERNEL\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:281
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:282
msgid ""
"Install the new kernel associated with the specified kernel configuration "
"file. This command will copy the new kernel to [.filename]#/boot/kernel/"
"kernel# and save the old kernel to [.filename]#/boot/kernel.old/kernel#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:285
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:286
#, no-wrap
msgid "# make installkernel KERNCONF=MYKERNEL\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:288
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:289
msgid ""
"Shutdown the system and reboot into the new kernel. If something goes wrong, "
"refer to <<kernelconfig-noboot, The kernel does not boot>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:292
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:295
msgid ""
"By default, when a custom kernel is compiled, all kernel modules are "
"rebuilt. To update a kernel faster or to build only custom modules, edit [."
-"filename]#/etc/make.conf# before starting to build the kernel."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:294
-msgid ""
-"For example, this variable specifies the list of modules to build instead of "
-"using the default of building all modules:"
+"filename]#/etc/make.conf# before starting to build the kernel. For example, "
+"this variable specifies the list of modules to build instead of using the "
+"default of building all modules:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:298
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:299
#, no-wrap
-msgid "MODULES_OVERRIDE = linux acpi\n"
+msgid "MODULES_OVERRIDE=\tlinux ipfw\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:301
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:302
msgid ""
"Alternately, this variable lists which modules to exclude from the build "
"process:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:305
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:306
#, no-wrap
-msgid "WITHOUT_MODULES = linux acpi sound\n"
+msgid "WITHOUT_MODULES=\tlinux acpi sound\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:309
msgid ""
+"This variable instructs the build to skip kernel modules and compile only "
+"the kernel itself:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:313
+#, no-wrap
+msgid "NO_MODULES=\tyes\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:320
+msgid ""
+"The Ports Framework includes drivers and other modules that depend on kernel "
+"interfaces, such as package:graphics/drm-kmod[] or package:emulators/"
+"virtualbox-ose-kmod[]. With the `PORTS_MODULES` variable every time the "
+"kernel is built, the ports containing kernel modules are re-built against "
+"the updated sources. This ensures the kernel module stays in-sync with the "
+"kernel itself. The kernel and ports trees should be updated together for "
+"maximum compatibility. `PORTS_MODULES` can be added to [.filename]#/etc/"
+"make.conf# file to ensure all kernels you build rebuild this module."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:324
+#, no-wrap
+msgid "PORTS_MODULES=\tdrm-kmod virtualbox-ose-kmod\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:328
+msgid ""
"Additional variables are available. Refer to man:make.conf[5] for details."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:311
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:331
#, no-wrap
msgid "If Something Goes Wrong"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:314
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:334
msgid ""
"There are four categories of trouble that can occur when building a custom "
"kernel:"
msgstr ""
-#. type: Labeled list
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:315
+#. type: Title ===
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:335
#, no-wrap
msgid "`config` fails"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:318
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:338
+msgid ""
+"If man:config[5] fails, it will print the line number that is incorrect."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:340
msgid ""
-"If `config` fails, it will print the line number that is incorrect. As an "
-"example, for the following message, make sure that line 17 is typed "
+"As an example, for the following message, make sure that line 32 is typed "
"correctly by comparing it to [.filename]#GENERIC# or [.filename]#NOTES#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:322
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:344
#, no-wrap
-msgid "config: line 17: syntax error\n"
+msgid "config: /usr/src/sys/amd64/conf/GENERIC:32: syntax error\n"
msgstr ""
-#. type: Labeled list
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:324
+#. type: Title ===
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:346
#, no-wrap
msgid "`make` fails"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:327
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:349
+msgid ""
+"If man:make[1] fails, it is usually due to an error in the kernel "
+"configuration file which is not severe enough for `config` to catch."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:351
msgid ""
-"If `make` fails, it is usually due to an error in the kernel configuration "
-"file which is not severe enough for `config` to catch. Review the "
-"configuration, and if the problem is not apparent, send an email to the "
-"{freebsd-questions} which contains the kernel configuration file."
+"Review the configuration, and if the problem is not apparent, send an email "
+"to the {freebsd-questions} which contains the kernel configuration file."
msgstr ""
-#. type: Labeled list
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:329
+#. type: Title ===
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:353
#, no-wrap
msgid "The kernel does not boot"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:334
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:356
msgid ""
"If the new kernel does not boot or fails to recognize devices, do not panic! "
"Fortunately, FreeBSD has an excellent mechanism for recovering from "
-"incompatible kernels. Simply choose the kernel to boot from at the FreeBSD "
-"boot loader. This can be accessed when the system boot menu appears by "
-"selecting the \"Escape to a loader prompt\" option. At the prompt, type "
-"`boot _kernel.old_`, or the name of any other kernel that is known to boot "
-"properly."
+"incompatible kernels."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:338
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:361
+msgid ""
+"Simply choose the kernel to boot from at the FreeBSD boot loader. This can "
+"be accessed when the system boot menu appears by selecting the \"Kernel:\" "
+"option, which initially displays \"Kernel: default/kernel\". Each time the "
+"option is selected, another choice appears, for example \"kernel.old\". "
+"When the desired kernel is listed, press return to boot."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:365
msgid ""
"After booting with a good kernel, check over the configuration file and try "
"to build it again. One helpful resource is [.filename]#/var/log/messages# "
"which records the kernel messages from every successful boot. Also, man:"
"dmesg[8] will print the kernel messages from the current boot."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:344
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:371
msgid ""
"When troubleshooting a kernel make sure to keep a copy of a kernel that is "
"known to work, such as [.filename]#GENERIC#. This is important because "
"every time a new kernel is installed, [.filename]#kernel.old# is overwritten "
"with the last installed kernel, which may or may not be bootable. As soon "
"as possible, move the working kernel by renaming the directory containing "
"the good kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:349
+#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:376
#, no-wrap
msgid ""
"# mv /boot/kernel /boot/kernel.bad\n"
"# mv /boot/kernel.good /boot/kernel\n"
msgstr ""
-
-#. type: Labeled list
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:353
-#, no-wrap
-msgid "The kernel works, but man:ps[1] does not"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:356
-msgid ""
-"If the kernel version differs from the one that the system utilities have "
-"been built with, for example, a kernel built from -CURRENT sources is "
-"installed on a -RELEASE system, many system status commands like man:ps[1] "
-"and man:vmstat[8] will not work. To fix this, crossref:cutting-"
-"edge[makeworld,recompile and install a world] built with the same version of "
-"the source tree as the kernel. It is never a good idea to use a different "
-"version of the kernel than the rest of the operating system."
-msgstr ""
diff --git a/documentation/content/en/books/handbook/linuxemu/_index.po b/documentation/content/en/books/handbook/linuxemu/_index.po
index 5dfeb7f30c..be6700f74e 100644
--- a/documentation/content/en/books/handbook/linuxemu/_index.po
+++ b/documentation/content/en/books/handbook/linuxemu/_index.po
@@ -1,681 +1,768 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/linuxemu/_index.adoc:1
#, no-wrap
msgid "FreeBSD provides binary compatibility with Linux, allowing users to install and run most Linux binaries on a FreeBSD system without having to first modify the binary"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:1
#, no-wrap
msgid "Chapter 11. Linux Binary Compatibility"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:14
#, no-wrap
msgid "Linux Binary Compatibility"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:56
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:57
msgid ""
-"FreeBSD provides optional binary compatibility with Linux(R), allowing users "
-"to install and run unmodified Linux binaries. It is available for the i386, "
-"amd64, and arm64 architectures."
+"FreeBSD provides *optional* binary compatibility with Linux(R), commonly "
+"referred to as Linuxulator, allowing users to install and run unmodified "
+"Linux binaries. It is available for the x86 (both 32 and 64 bit) and "
+"AArch64 architectures. Some Linux-specific operating system features are "
+"not yet supported; this mostly happens with functionality specific to "
+"hardware or related to system management, such as cgroups or namespaces."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:58
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:59
+msgid "Before reading this chapter, you should:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:61
msgid ""
-"Some Linux-specific operating system features are not yet supported; this "
-"mostly happens with functionality specific to hardware or related to system "
-"management, such as cgroups or namespaces."
+"Know how to install crossref:ports[ports,additional third-party software]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:60
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:63
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:62
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:65
msgid "How to enable Linux binary compatibility on a FreeBSD system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:63
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:66
msgid "How to install additional Linux shared libraries."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:64
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:67
msgid "How to install Linux applications on a FreeBSD system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:65
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:68
msgid "The implementation details of Linux compatibility in FreeBSD."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:67
-msgid "Before reading this chapter, you should:"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:69
-msgid ""
-"Know how to install crossref:ports[ports,additional third-party software]."
-msgstr ""
-
#. type: Title ==
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:71
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:70
#, no-wrap
msgid "Configuring Linux Binary Compatibility"
msgstr ""
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:73
+msgid "By default, man:linux[4] binary compatibility is not enabled."
+msgstr ""
+
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:75
-msgid ""
-"By default, Linux binary compatibility is not enabled. To enable it at boot "
-"time, add this line to [.filename]#/etc/rc.conf#:"
+msgid "To enable the Linux ABI at boot time, execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:79
#, no-wrap
-msgid "linux_enable=\"YES\"\n"
+msgid "# sysrc linux_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:82
-msgid "Once enabled, it can be started without rebooting by running:"
+msgid ""
+"Once configured, it can be enabled without rebooting by executing the "
+"following command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:85
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:86
#, no-wrap
msgid "# service linux start\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:90
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:89
+msgid "This is enough for statically linked Linux binaries to work."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:92
msgid ""
-"The [.filename]#/etc/rc.d/linux# script will load necessary kernel modules "
-"and mount filesystems expected by Linux applications under [.filename]#/"
-"compat/linux#. This is enough for statically linked Linux binaries to "
-"work. They can be started in the same way native FreeBSD binaries can; they "
-"behave almost exactly like native processes and can be traced and debugged "
-"the usual way."
+"The Linux service will load necessary kernel modules and mount filesystems "
+"expected by Linux applications under [.filename]#/compat/linux#. Linux "
+"binaries can then be started in the same way that native FreeBSD binaries "
+"can; they behave almost exactly like native processes and can be traced and "
+"debugged the usual way."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:93
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:94
msgid ""
-"Linux binaries linked dynamically (which is the vast majority) also require "
-"Linux shared libraries to be installed - they can run on top of the FreeBSD "
-"kernel, but they cannot use FreeBSD libraries; this is similar to how 32-bit "
-"binaries cannot use native 64-bit libraries. There are several ways of "
-"providing those libraries: one can copy them over from an existing Linux "
-"installation using the same architecture, install them from FreeBSD "
-"packages, or install using man:debootstrap[8] (from package:sysutils/"
-"debootstrap[]), and others."
+"The current content of [.filename]#/compat/linux# can be checked executing "
+"the following command:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:98
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:145
+#, no-wrap
+msgid "# ls -l /compat/linux/\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:101
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:148
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:195
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:258
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:336
+msgid "The output should be similar to the following:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:108
+#, no-wrap
+msgid ""
+"total 1\n"
+"dr-xr-xr-x 13 root wheel 512 Apr 11 19:12 dev\n"
+"dr-xr-xr-x 1 root wheel 0 Apr 11 21:03 proc\n"
+"dr-xr-xr-x 1 root wheel 0 Apr 11 21:03 sys\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:95
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:111
#, no-wrap
-msgid "CentOS Base System from FreeBSD Packages"
+msgid "Linux userlands"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:115
+msgid ""
+"Most Linux software requires more than just an ABI to work, depending "
+"perhaps on common libraries. In order to run such Linux software, a Linux "
+"userland must be installed first."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:100
-msgid "This method is not yet available for arm64."
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:119
+msgid ""
+"If all that is wanted is to run some software already included in the Ports "
+"tree, it can be installed via the man:pkg[8] package manager which will "
+"automatically setup the required Linux userland."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:103
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:121
msgid ""
-"The easiest way to install Linux libraries is to install package:emulators/"
-"linux_base-c7[] package or port, which places the CentOS 7-derived base "
-"system into [.filename]#/compat/linux#:"
+"For example, to install Sublime Text 4, along with all the Linux libraries "
+"it depends on, run this command:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:125
+#, no-wrap
+msgid "# pkg install linux-sublime-text4\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:129
+#, no-wrap
+msgid "CentOS Base System from FreeBSD Packages"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:132
+msgid "To install the CentOS userland execute the following command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:107
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:136
#, no-wrap
msgid "# pkg install linux_base-c7\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:111
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:139
+msgid ""
+"package:emulators/linux_base-c7[] will place the base system derived from "
+"CentOS 7 into [.filename]#/compat/linux#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:141
msgid ""
-"FreeBSD provides packages for some Linux binary applications. For example, "
-"to install Sublime Text 4, along with all the Linux libraries it depends on, "
-"run this command:"
+"After installing the package, the contents of [.filename]#/compat/linux# can "
+"be verified by running the following command to check that the CentOS "
+"userland has been installed:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:114
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:165
#, no-wrap
-msgid "# pkg install linux-sublime-text4\n"
+msgid ""
+"total 30\n"
+"lrwxr-xr-x 1 root wheel 7 Apr 11 2018 bin -> usr/bin\n"
+"drwxr-xr-x 13 root wheel 512 Apr 11 21:10 dev\n"
+"drwxr-xr-x 25 root wheel 64 Apr 11 21:10 etc\n"
+"lrwxr-xr-x 1 root wheel 7 Apr 11 2018 lib -> usr/lib\n"
+"lrwxr-xr-x 1 root wheel 9 Apr 11 2018 lib64 -> usr/lib64\n"
+"drwxr-xr-x 2 root wheel 2 Apr 11 21:10 opt\n"
+"dr-xr-xr-x 1 root wheel 0 Apr 11 21:25 proc\n"
+"lrwxr-xr-x 1 root wheel 8 Feb 18 02:10 run -> /var/run\n"
+"lrwxr-xr-x 1 root wheel 8 Apr 11 2018 sbin -> usr/sbin\n"
+"drwxr-xr-x 2 root wheel 2 Apr 11 21:10 srv\n"
+"dr-xr-xr-x 1 root wheel 0 Apr 11 21:25 sys\n"
+"drwxr-xr-x 8 root wheel 9 Apr 11 21:10 usr\n"
+"drwxr-xr-x 16 root wheel 17 Apr 11 21:10 var\n"
msgstr ""
-#. type: Title ==
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:117
+#. type: Title ===
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:168
#, no-wrap
-msgid "Debian / Ubuntu Base System with man:debootstrap[8]"
+msgid "Debian / Ubuntu Base System with debootstrap"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:122
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:172
msgid ""
"An alternative way of providing Linux shared libraries is by using package:"
"sysutils/debootstrap[]. This has the advantage of providing a full Debian "
-"or Ubuntu distribution. To use it, follow the instructions at FreeBSD Wiki: "
-"https://wiki.freebsd.org/LinuxJails[FreeBSD Wiki - Linux Jails]."
+"or Ubuntu distribution."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:124
-msgid ""
-"After debootstrapping, man:chroot[8] into the newly created directory and "
-"install software in a way typical for the Linux distribution inside, for "
-"example:"
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:174
+msgid "To install debootstrap execute the following command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:129
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:178
#, no-wrap
-msgid ""
-"# chroot /compat/ubuntu /bin/bash\n"
-"root@hostname:/# apt update\n"
+msgid "# pkg install debootstrap\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:134
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:182
msgid ""
-"It is possible to debootstrap into [.filename]#/compat/linux#, but it is "
-"discouraged to avoid collisions with files installed from FreeBSD ports and "
+"man:debootstrap[8] needs man:linux[4] ABI support to be enabled as per the "
+"instructions above. Once enabled, execute the following command to install "
+"Ubuntu or Debian in [.filename]#/compat/ubuntu#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:186
+#, no-wrap
+msgid "# debootstrap focal /compat/ubuntu\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:192
+msgid ""
+"While it is technically possible to install into [.filename]#/compat/linux# "
+"instead, it's discouraged due to possible clashes with CentOS-based "
"packages. Instead, derive the directory name from the distribution or "
-"version name, e.g., [.filename]#/compat/ubuntu#. If the bootstrapped "
-"instance is intended to provide Linux shared libraries without having to "
-"explicitly use chroot or jails, one can point the kernel at it by updating "
-"the `compat.linux.emul_path` sysctl and adding a line like this to [."
-"filename]#/etc/sysctl.conf#:"
+"version name, e.g., [.filename]#/compat/ubuntu#."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:138
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:213
#, no-wrap
-msgid "compat.linux.emul_path=\"/compat/ubuntu\"\n"
+msgid ""
+"I: Retrieving InRelease \n"
+"I: Checking Release signature\n"
+"I: Valid Release signature (key id F6ECB3762474EDA9D21B7022871920D1991BC93C)\n"
+"I: Retrieving Packages \n"
+"I: Validating Packages \n"
+"I: Resolving dependencies of required packages...\n"
+"I: Resolving dependencies of base packages...\n"
+"I: Checking component main on http://archive.ubuntu.com/ubuntu...\n"
+"[...]\n"
+"I: Configuring console-setup...\n"
+"I: Configuring kbd...\n"
+"I: Configuring ubuntu-minimal...\n"
+"I: Configuring libc-bin...\n"
+"I: Configuring ca-certificates...\n"
+"I: Base system installed successfully.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:142
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:216
+msgid "Then set up mounts in [.filename]#/etc/fstab#."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:220
msgid ""
-"This sysctl controls the kernel's path translation mechanism; see man:"
-"linux[4] for details. Please note that changing it might cause trouble for "
-"Linux applications installed from FreeBSD packages; one reason is that many "
-"of those applications are still 32-bit, while Ubuntu seems to be deprecating "
-"32-bit library support."
+"If the contents of the home directory should be shared, or to be able to run "
+"X11 applications, [.filename]#/home# and [.filename]#/tmp# should be mounted "
+"in the linux compat area using man:nullfs[5] for loopback."
msgstr ""
-#. type: Title ==
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:144
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:222
+msgid "The following example can be added to [.filename]#/etc/fstab#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:233
#, no-wrap
-msgid "Advanced Topics"
+msgid ""
+"# Device Mountpoint FStype Options Dump Pass#\n"
+"devfs /compat/ubuntu/dev devfs rw,late 0 0\n"
+"tmpfs /compat/ubuntu/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0\n"
+"fdescfs /compat/ubuntu/dev/fd fdescfs rw,late,linrdlnk 0 0\n"
+"linprocfs /compat/ubuntu/proc linprocfs rw,late 0 0\n"
+"linsysfs /compat/ubuntu/sys linsysfs rw,late 0 0\n"
+"/tmp /compat/ubuntu/tmp nullfs rw,late 0 0\n"
+"/home /compat/ubuntu/home nullfs rw,late 0 0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:148
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:236
+msgid "Then execute man:mount[8]:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:240
+#, no-wrap
+msgid "# mount -al\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:244
+msgid "To access the system using man:chroot[8] execute the following command:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:248
+#, no-wrap
+msgid "# chroot /compat/ubuntu /bin/bash\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:251
+msgid "Then man:uname[1] can be executed to check the Linux environment:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:255
+#, no-wrap
+msgid "# uname -s -r -m\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:262
+#, no-wrap
+msgid "Linux 3.17.0 x86_64\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:266
+msgid ""
+"Once inside the chroot, the system behaves as per a normal Ubuntu "
+"installation. While systemd doesn't work, the man:service[8] command works "
+"as usual."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:270
msgid ""
-"The Linux compatibility layer is a work in progress. Consult https://wiki."
-"freebsd.org/Linuxulator[FreeBSD Wiki - Linuxulator] for more information."
+"To add the package repositories missing from defaults edit the file [."
+"filename]#/compat/ubuntu/etc/apt/sources.list#."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:272
+msgid "For amd64 the following example can be used:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:279
+#, no-wrap
+msgid ""
+"deb http://archive.ubuntu.com/ubuntu focal main universe restricted multiverse\n"
+"deb http://security.ubuntu.com/ubuntu/ focal-security universe multiverse restricted main\n"
+"deb http://archive.ubuntu.com/ubuntu focal-backports universe multiverse restricted main\n"
+"deb http://archive.ubuntu.com/ubuntu focal-updates universe multiverse restricted main\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:150
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:282
+msgid "For arm64 this other example can be used:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:286
+#, no-wrap
+msgid "deb http://ports.ubuntu.com/ubuntu-ports bionic main universe restricted multiverse\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:290
+#, no-wrap
+msgid "Advanced Topics"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:293
msgid ""
"A list of all Linux-related man:sysctl[8] knobs can be found in man:linux[4]."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:153
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:295
+msgid "Some applications require specific filesystems to be mounted."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:297
msgid ""
-"Some applications require specific filesystems to be mounted. This is "
-"normally handled by the [.filename]#/etc/rc.d/linux# script, but can be "
-"disabled by adding this line to [.filename]#/etc/rc.conf#:"
+"This is normally handled by the [.filename]#/etc/rc.d/linux# script but can "
+"be disabled at boot executing the following command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:157
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:301
#, no-wrap
-msgid "linux_mounts_enable=\"NO\"\n"
+msgid "sysrc linux_mounts_enable=\"NO\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:160
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:304
msgid ""
"Filesystems mounted by the rc script will not work for Linux processes "
"inside chroots or jails; if needed, configure them in [.filename]#/etc/"
"fstab#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:166
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:312
#, no-wrap
msgid ""
"devfs /compat/linux/dev devfs rw,late 0 0\n"
"tmpfs /compat/linux/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0\n"
"fdescfs /compat/linux/dev/fd fdescfs rw,late,linrdlnk 0 0\n"
"linprocfs /compat/linux/proc linprocfs rw,late 0 0\n"
"linsysfs /compat/linux/sys linsysfs rw,late 0 0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:169
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:315
msgid ""
"Since the Linux binary compatibility layer has gained support for running "
-"both 32- and 64-bit Linux binaries (on 64-bit x86 hosts), it is no longer "
-"possible to link the emulation functionality statically into a custom kernel."
+"both 32- and 64-bit Linux binaries, it is no longer possible to link the "
+"emulation functionality statically into a custom kernel."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:171
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:317
#, no-wrap
msgid "Installing Additional Libraries Manually"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:176
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:322
msgid ""
"For base system subdirectories created with man:debootstrap[8], use the "
"instructions above instead."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:179
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:325
msgid ""
"If a Linux application complains about missing shared libraries after "
"configuring Linux binary compatibility, determine which shared libraries the "
"Linux binary needs and install them manually."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:182
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:327
msgid ""
"From a Linux system using the same CPU architecture, `ldd` can be used to "
-"determine which shared libraries the application needs. For example, to "
-"check which shared libraries `linuxdoom` needs, run this command from a "
-"Linux system that has Doom installed:"
+"determine which shared libraries the application needs."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:329
+msgid ""
+"For example, to check which shared libraries `linuxdoom` needs, run this "
+"command from a Linux system that has Doom installed:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:333
+#, no-wrap
+msgid "% ldd linuxdoom\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:189
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:342
#, no-wrap
msgid ""
-"% ldd linuxdoom\n"
"libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0\n"
"libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0\n"
"libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:194
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:346
msgid ""
"Then, copy all the files in the last column of the output from the Linux "
"system into [.filename]#/compat/linux# on the FreeBSD system. Once copied, "
-"create symbolic links to the names in the first column. This example will "
-"result in the following files on the FreeBSD system:"
+"create symbolic links to the names in the first column."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:348
+msgid "This example will result in the following files on the FreeBSD system:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:203
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:357
#, no-wrap
msgid ""
"/compat/linux/usr/X11/lib/libXt.so.3.1.0\n"
"/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0\n"
"/compat/linux/usr/X11/lib/libX11.so.3.1.0\n"
"/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0\n"
"/compat/linux/lib/libc.so.4.6.29\n"
"/compat/linux/lib/libc.so.4 -> libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:208
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:362
msgid ""
"If a Linux shared library already exists with a matching major revision "
"number to the first column of the `ldd` output, it does not need to be "
"copied to the file named in the last column, as the existing library should "
-"work. It is advisable to copy the shared library if it is a newer version, "
-"though. The old one can be removed, as long as the symbolic link points to "
-"the new one."
+"work. It is advisable to copy the shared library if it is a newer version. "
+"The old one can be removed if the symbolic link points to the new one."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:210
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:364
msgid "For example, these libraries already exist on the FreeBSD system:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:215
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:369
#, no-wrap
msgid ""
"/compat/linux/lib/libc.so.4.6.27\n"
"/compat/linux/lib/libc.so.4 -> libc.so.4.6.27\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:218
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:372
msgid "and `ldd` indicates that a binary requires a later version:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:222
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:376
#, no-wrap
msgid "libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:226
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:380
msgid ""
"Since the existing library is only one or two versions out of date in the "
"last digit, the program should still work with the slightly older version. "
"However, it is safe to replace the existing [.filename]#libc.so# with the "
"newer version:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:231
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:385
#, no-wrap
msgid ""
"/compat/linux/lib/libc.so.4.6.29\n"
"/compat/linux/lib/libc.so.4 -> libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:235
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:389
msgid ""
-"Generally, one will need to look for the shared libraries that Linux "
-"binaries depend on only the first few times that a Linux program is "
-"installed on FreeBSD. After a while, there will be a sufficient set of "
-"Linux shared libraries on the system to be able to run newly installed Linux "
-"binaries without any extra work."
+"Generally, it is only necessary to look for the shared libraries that Linux "
+"binaries depend on the first few times that a Linux program is installed on "
+"FreeBSD. After a while, there will be a sufficient set of Linux shared "
+"libraries on the system to be able to run newly installed Linux binaries "
+"without any extra work."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:236
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:390
#, no-wrap
msgid "Branding Linux ELF Binaries"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:240
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:393
msgid ""
"The FreeBSD kernel uses several methods to determine if the binary to be "
"executed is a Linux one: it checks the brand in the ELF file header, looks "
"for known ELF interpreter paths and checks ELF notes; finally, by default, "
-"unbranded ELF executables are assumed to be Linux anyway. Should all those "
-"methods fail, an attempt to execute the binary might result in error message:"
+"unbranded ELF executables are assumed to be Linux anyway."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:395
+msgid ""
+"Should all those methods fail, an attempt to execute the binary might result "
+"in an error message:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:246
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:401
#, no-wrap
msgid ""
"% ./my-linux-elf-binary\n"
"ELF binary type not known\n"
"Abort\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:249
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:404
msgid ""
"To help the FreeBSD kernel distinguish between a FreeBSD ELF binary and a "
"Linux binary, use man:brandelf[1]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:253
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:408
#, no-wrap
msgid "% brandelf -t Linux my-linux-elf-binary\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:255
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:410
#, no-wrap
msgid "Installing a Linux RPM Based Application"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:259
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:414
msgid ""
"To install a Linux RPM-based application, first install the package:"
"archivers/rpm4[] package or port. Once installed, `root` can use this "
"command to install a [.filename]#.rpm#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:264
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:419
#, no-wrap
msgid ""
"# cd /compat/linux\n"
"# rpm2cpio < /path/to/linux.archive.rpm | cpio -id\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:268
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:423
msgid ""
"If necessary, `brandelf` the installed ELF binaries. Note that this will "
-"prevent a clean uninstall."
+"prevent a clean uninstall as the binaries are modified by the `brandelf` "
+"program."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:269
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:424
#, no-wrap
msgid "Configuring the Hostname Resolver"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:272
-msgid "If DNS does not work or this error appears:"
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:427
+msgid "When using Linux binaries, if DNS does not work or this error appears:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:277
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:432
#, no-wrap
msgid ""
"resolv+: \"bind\" is an invalid keyword resolv+:\n"
"\"hosts\" is an invalid keyword\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:280
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:435
msgid "configure [.filename]#/compat/linux/etc/host.conf# as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:285
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:440
#, no-wrap
msgid ""
"order hosts, bind\n"
"multi on\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:290
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:445
msgid ""
"This specifies that [.filename]#/etc/hosts# is searched first and DNS is "
"searched second. When [.filename]#/compat/linux/etc/host.conf# does not "
-"exist, Linux applications use [.filename]#/etc/host.conf# and complain about "
-"the incompatible FreeBSD syntax. Remove `bind` if a name server is not "
-"configured using [.filename]#/etc/resolv.conf#."
+"exist, Linux applications try to use [.filename]#/etc/host.conf# in the host "
+"system but they complain since that file does not exist in FreeBSD. Remove "
+"`bind` if a name server is not configured using [.filename]#/etc/resolv."
+"conf#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:292
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:447
#, no-wrap
msgid "Miscellaneous"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:295
-msgid ""
-"This section describes how Linux binary compatibility works and is based on "
-"an email written to {freebsd-chat} by Terry Lambert mailto:tlambert@primenet."
-"com[tlambert@primenet.com] (Message ID: `<199906020108.SAA07001@usr09."
-"primenet.com>`)."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:298
-msgid ""
-"FreeBSD has an abstraction called an \"execution class loader\". This is a "
-"wedge into the man:execve[2] system call."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:300
-msgid ""
-"Historically, the UNIX(R) loader examined the magic number (generally the "
-"first 4 or 8 bytes of the file) to see if it was a binary known to the "
-"system, and if so, invoked the binary loader."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:303
-msgid ""
-"If it was not the binary type for the system, the man:execve[2] call "
-"returned a failure, and the shell attempted to start executing it as shell "
-"commands. The assumption was a default of \"whatever the current shell is\"."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:305
-msgid ""
-"Later, a hack was made for man:sh[1] to examine the first two characters, "
-"and if they were `:\\n`, it invoked the man:csh[1] shell instead."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:307
-msgid ""
-"FreeBSD has a list of loaders, instead of a single loader, with a fallback "
-"to the `#!` loader for running shell interpreters or shell scripts."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:310
-msgid ""
-"For the Linux ABI support, FreeBSD sees the magic number as an ELF binary. "
-"The ELF loader looks for a specialized _brand_, which is a comment section "
-"in the ELF image, and which is not present on SVR4/Solaris(TM) ELF binaries."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:312
-msgid ""
-"For Linux binaries to function, they must be _branded_ as type `Linux` using "
-"man:brandelf[1]:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:316
-#, no-wrap
-msgid "# brandelf -t Linux file\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:321
-msgid ""
-"When the ELF loader sees the `Linux` brand, the loader replaces a pointer in "
-"the `proc` structure. All system calls are indexed through this pointer. "
-"In addition, the process is flagged for special handling of the trap vector "
-"for the signal trampoline code, and several other (minor) fix-ups that are "
-"handled by the Linux kernel module."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:323
-msgid ""
-"The Linux system call vector contains, among other things, a list of "
-"`sysent[]` entries whose addresses reside in the kernel module."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:325
-msgid ""
-"When a system call is called by the Linux binary, the trap code dereferences "
-"the system call function pointer off the `proc` structure, and gets the "
-"Linux, not the FreeBSD, system call entry points."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:333
-msgid ""
-"Linux mode dynamically _reroots_ lookups. This is, in effect, equivalent to "
-"`union` file system mounts. First, an attempt is made to look up the file "
-"in [.filename]#/compat/linux/original-path#. If that fails, the lookup is "
-"done in [.filename]#/original-path#. This makes sure that binaries that "
-"require other binaries can run. For example, the Linux toolchain can all "
-"run under Linux ABI support. It also means that the Linux binaries can load "
-"and execute FreeBSD binaries, if there are no corresponding Linux binaries "
-"present, and that a man:uname[1] command can be placed in the [.filename]#/"
-"compat/linux# directory tree to ensure that the Linux binaries cannot tell "
-"they are not running on Linux."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:338
-msgid ""
-"In effect, there is a Linux kernel in the FreeBSD kernel. The various "
-"underlying functions that implement all of the services provided by the "
-"kernel are identical to both the FreeBSD system call table entries, and the "
-"Linux system call table entries: file system operations, virtual memory "
-"operations, signal delivery, and System V IPC. The only difference is that "
-"FreeBSD binaries get the FreeBSD _glue_ functions, and Linux binaries get "
-"the Linux _glue_ functions. The FreeBSD _glue_ functions are statically "
-"linked into the kernel, and the Linux _glue_ functions can be statically "
-"linked, or they can be accessed via a kernel module."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/linuxemu/_index.adoc:341
+#: documentation/content/en/books/handbook/linuxemu/_index.adoc:449
msgid ""
-"Technically, this is not really emulation, it is an ABI implementation. It "
-"is sometimes called \"Linux emulation\" because the implementation was done "
-"at a time when there was no other word to describe what was going on. "
-"Saying that FreeBSD ran Linux binaries was not true, since the code was not "
-"compiled in."
+"More information on how binary compatibility works with Linux(R) can be "
+"found in the article link:{linux-emulation}[Linux emulation in FreeBSD]."
msgstr ""
diff --git a/documentation/content/en/books/handbook/mirrors/_index.po b/documentation/content/en/books/handbook/mirrors/_index.po
index 7420ce49c6..9014402d24 100644
--- a/documentation/content/en/books/handbook/mirrors/_index.po
+++ b/documentation/content/en/books/handbook/mirrors/_index.po
@@ -1,1655 +1,1665 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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:14
#, no-wrap
msgid "Obtaining FreeBSD"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mirrors/_index.adoc:52
#, no-wrap
msgid "Mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:56
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, Germany, Japan (two sites), Malaysia, 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:58
msgid "Official mirrors service:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:61
#, no-wrap
msgid "Service Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:61
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:94
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:96
#, no-wrap
msgid "Protocols"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:63
#, no-wrap
msgid "More information"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:64
#, no-wrap
msgid "**download.FreeBSD.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:65
#, 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:67
#, 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:68
#, no-wrap
msgid "**git.FreeBSD.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:69
#, no-wrap
msgid "git over `https` and `ssh`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:71
#, 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:72
#, no-wrap
msgid "**pkg.FreeBSD.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:73
#, no-wrap
msgid "man:pkg[8] over `http` and `https`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:75
#, 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:76
#, no-wrap
msgid "**vuxml.FreeBSD.org** / **www.VuXML.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:77
#, no-wrap
msgid "link:https://www.vuxml.org/[https]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:78
+#: 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
+#. type: Table
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:80
+#, no-wrap
+msgid "**www.FreeBSD.org** / **docs.FreeBSD.org**"
+msgstr ""
+
+#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:81
-msgid "All official mirrors support IPv4 and IPv6."
+#, no-wrap
+msgid "`https`"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:83
-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."
+#. type: Table
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:82
+#, no-wrap
+msgid "link:https://www.freebsd.org/[FreeBSD Web Site] and the link:https://docs.freebsd.org/[FreeBSD Documentation Portal]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:85
+msgid "All official mirrors support IPv4 and IPv6."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:87
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:87
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:89
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:89
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:91
msgid "Mirror list maintained by the community and other companies:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:92
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:94
#, no-wrap
msgid "Country"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:92
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:94
#, no-wrap
msgid "Hostname"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:95
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:97
#, 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:96
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:98
#, no-wrap
msgid "ftp.au.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:98
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:100
#, 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:100
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:102
#, no-wrap
msgid "ftp3.au.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:102
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:104
#, 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:103
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:105
#, 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:104
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:106
#, no-wrap
msgid "ftp.at.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:106
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:108
#, 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:107
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:109
#, 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:108
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:110
#, no-wrap
msgid "ftp2.br.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:110
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:112
#, 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:112
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:114
#, no-wrap
msgid "ftp3.br.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:114
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:116
#, 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:115
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:117
#, 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:116
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:118
#, no-wrap
msgid "ftp.bg.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:118
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:120
#, 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:119
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:121
#, 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:120
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:122
#, no-wrap
msgid "ftp.cz.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:122
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:124
#, 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:123
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:125
#, 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:124
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:126
#, no-wrap
msgid "ftp.dk.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:126
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:128
#, 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:127
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:129
#, 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:128
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:130
#, no-wrap
msgid "ftp.fi.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:130
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:132
#, no-wrap
msgid "link:ftp://ftp.fi.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:131
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:133
#, 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:132
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:134
#, no-wrap
msgid "ftp.fr.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:134
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:136
#, 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:136
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:138
#, no-wrap
msgid "ftp3.fr.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:138
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:140
#, no-wrap
msgid "link:ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:140
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:142
#, no-wrap
msgid "ftp6.fr.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:142
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:144
#, 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:143
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:145
#, 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:144
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:146
#, no-wrap
msgid "ftp.de.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:146
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:148
#, 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:148
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:150
#, no-wrap
msgid "ftp1.de.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:150
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:152
#, 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:152
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:154
#, no-wrap
msgid "ftp2.de.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:154
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:156
#, 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:156
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:158
#, no-wrap
msgid "ftp5.de.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:158
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:160
#, 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:160
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:162
#, no-wrap
msgid "ftp7.de.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:162
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:164
#, 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:163
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:165
#, 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:164
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:166
#, no-wrap
msgid "ftp.gr.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:166
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:168
#, 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:168
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:170
#, no-wrap
msgid "ftp2.gr.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:170
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:172
#, 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:171
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:173
#, 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:172
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:174
#, no-wrap
msgid "ftp.jp.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:174
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:176
#, 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:176
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:178
#, no-wrap
msgid "ftp2.jp.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:178
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:180
#, 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:180
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:182
#, no-wrap
msgid "ftp3.jp.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:182
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:184
#, 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:184
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:186
#, no-wrap
msgid "ftp4.jp.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:186
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:188
#, no-wrap
msgid "link:ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:188
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:190
#, no-wrap
msgid "ftp6.jp.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:190
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:192
#, 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:191
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:193
#, 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:192
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:194
#, no-wrap
msgid "ftp.kr.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:194
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:196
#, 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:196
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:198
#, no-wrap
msgid "ftp2.kr.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:198
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:200
#, no-wrap
msgid "link:rsync://ftp2.kr.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:199
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:201
#, 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:200
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:202
#, no-wrap
msgid "ftp.lv.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:202
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:204
#, 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:203
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:205
#, 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:204
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:206
#, no-wrap
msgid "ftp.nl.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:206
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:208
#, 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:208
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:210
#, no-wrap
msgid "ftp2.nl.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:210
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:212
#, 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:211
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:213
#, 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:212
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:214
#, no-wrap
msgid "ftp.nz.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:214
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:216
#, 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:215
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:217
#, 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:216
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:218
#, no-wrap
msgid "ftp.no.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:218
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:220
#, 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:219
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:221
#, 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:220
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:222
#, no-wrap
msgid "ftp.pl.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:222
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:224
#, 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:223
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:225
#, 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:224
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:226
#, no-wrap
msgid "ftp.ru.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:226
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:228
#, 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:228
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:230
#, no-wrap
msgid "ftp2.ru.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:230
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:232
#, 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:231
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:233
#, 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:232
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:234
#, no-wrap
msgid "ftp.si.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:234
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:236
#, 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:235
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:237
#, 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:236
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:238
#, no-wrap
msgid "ftp.za.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:238
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:240
#, 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:240
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:242
#, no-wrap
msgid "ftp2.za.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:242
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:244
#, 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:244
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:246
#, no-wrap
msgid "ftp4.za.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:246
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:248
#, 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:247
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:249
#, 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:248
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:250
#, no-wrap
msgid "ftp.se.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:250
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:252
#, 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:251
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:253
#, 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:252
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:254
#, no-wrap
msgid "ftp4.tw.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:254
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:256
#, 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:256
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:258
#, no-wrap
msgid "ftp5.tw.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:258
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:260
#, 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:259
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:261
#, 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:260
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:262
#, no-wrap
msgid "ftp.ua.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:262
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:264
#, 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:263
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:265
#, 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:264
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:266
#, no-wrap
msgid "ftp.uk.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:266
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:268
#, 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:268
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:270
#, no-wrap
msgid "ftp2.uk.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:270
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:272
#, 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:271
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:273
#, 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:272
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:274
#, no-wrap
msgid "ftp11.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:274
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:276
#, 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:276
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:278
#, no-wrap
msgid "ftp14.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:278
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:280
#, 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:280
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:282
#, no-wrap
msgid "ftp5.FreeBSD.org"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:281
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:283
#, 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:284
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:286
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:286
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:288
#, no-wrap
msgid "Using Git"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:289
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:421
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:291
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:423
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:293
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:295
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:298
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:300
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 `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:301
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:303
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:303
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:447
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:305
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:449
#, no-wrap
msgid "Installation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:306
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:308
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:310
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:312
#, no-wrap
msgid "# pkg install git\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:313
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:315
#, no-wrap
msgid "Running Git"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:317
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:319
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:322
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:324
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:324
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:326
#, no-wrap
msgid "FreeBSD Git Repository URL Table"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:327
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:329
#, no-wrap
msgid "Item"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:328
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:330
#, no-wrap
msgid "Git URL"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:328
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:330
#, no-wrap
msgid "Read-only src repo via HTTPS"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:329
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:331
#, no-wrap
msgid "`https://git.FreeBSD.org/src.git`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:329
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:331
#, no-wrap
msgid "Read-only src repo via anon-ssh"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:330
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:332
#, no-wrap
msgid "`ssh://anongit@git.FreeBSD.org/src.git`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:330
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:332
#, no-wrap
msgid "Read-only doc repo via HTTPS"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:331
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:333
#, no-wrap
msgid "`https://git.FreeBSD.org/doc.git`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:331
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:333
#, no-wrap
msgid "Read-only doc repo via anon-ssh"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:332
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:334
#, no-wrap
msgid "`ssh://anongit@git.FreeBSD.org/doc.git`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:332
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:334
#, no-wrap
msgid "Read-only ports repo via HTTPS"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:333
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:335
#, no-wrap
msgid "`https://git.FreeBSD.org/ports.git`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:333
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:335
#, no-wrap
msgid "Read-only ports repo via anon-ssh"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:334
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:336
#, no-wrap
msgid "`ssh://anongit@git.FreeBSD.org/ports.git`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:337
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:339
msgid ""
"External mirrors maintained by project members are also available; please "
"refer to the <<external-mirrors>> section."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:339
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:341
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:343
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:345
#, 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:348
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:350
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:351
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:353
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:355
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:357
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# git checkout stable/13\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:359
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:361
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:364
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:366
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# git pull --rebase\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:367
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:522
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:369
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:524
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:368
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:370
#, no-wrap
msgid "Web-based repository browser"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:371
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:373
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:372
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:374
#, no-wrap
msgid "For Developers"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:375
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:377
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:377
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:379
#, no-wrap
msgid "External mirrors"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:382
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:384
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` and `src` GitHub "
"repositories 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:383
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:385
#, no-wrap
msgid "Codeberg"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:385
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:387
msgid "doc: https://codeberg.org/FreeBSD/freebsd-doc"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:386
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:388
msgid "ports: https://codeberg.org/FreeBSD/freebsd-ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:387
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:389
msgid "src: https://codeberg.org/FreeBSD/freebsd-src"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:388
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:390
#, no-wrap
msgid "GitHub"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:390
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:392
msgid "doc: https://github.com/freebsd/freebsd-doc"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:391
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:393
msgid "ports: https://github.com/freebsd/freebsd-ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:392
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:394
msgid "src: https://github.com/freebsd/freebsd-src"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:393
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:395
#, no-wrap
msgid "GitLab"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:395
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:397
msgid "doc: https://gitlab.com/FreeBSD/freebsd-doc"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:396
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:398
msgid "ports: https://gitlab.com/FreeBSD/freebsd-ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:397
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:399
msgid "src: https://gitlab.com/FreeBSD/freebsd-src"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:398
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:400
#, no-wrap
msgid "Mailing lists"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:402
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:404
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:403
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:405
#, no-wrap
msgid "SSH host keys"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:406
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:408
msgid "gitrepo.FreeBSD.org host key fingerprints:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:407
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:409
msgid ""
"ECDSA key fingerprint is `SHA256:seWO5D27ySURcx4bknTNKlC1mgai0whP443PAKEvvZA`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:408
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:410
msgid ""
"ED25519 key fingerprint is `SHA256:"
"lNR6i4BEOaaUhmDHBA1WJsO7H3KtvjE2r5q4sOxtIWo`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:409
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:411
msgid ""
"RSA key fingerprint is `SHA256:f453CUEFXEJAXlKeEHV+ajJfeEfx9MdKQUD7lIscnQI`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:411
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:413
msgid "git.FreeBSD.org host key fingerprints:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:412
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:414
msgid ""
"ECDSA key fingerprint is `SHA256:/UlirUAsGiitupxmtsn7f9b7zCWd0vCs4Yo/tpVWP9w`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:413
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:415
msgid ""
"ED25519 key fingerprint is `SHA256:"
"y1ljKrKMD3lDObRUG3xJ9gXwEIuqnh306tSyFd1tuZE`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:414
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:416
msgid ""
"RSA key fingerprint is `SHA256:jBe6FQGoH4HjvrIVM23dcnLZk9kmpdezR/CvQzm7rJM`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:416
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:418
msgid "These are also published as SSHFP records in DNS."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:418
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:420
#, no-wrap
msgid "Using Subversion"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:428
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:430
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:434
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:436
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 `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:437
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:439
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:439
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:441
#, no-wrap
msgid "Svnlite"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:443
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:445
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:445
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:447
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:450
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:452
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:452
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:454
msgid "Subversion can be installed from the Ports Collection:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:457
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:459
#, 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:460
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:462
msgid "Subversion can also be installed as a package:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:464
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:466
#, no-wrap
msgid "# pkg install subversion\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:467
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:469
#, no-wrap
msgid "Running Subversion"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:471
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:473
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:476
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:478
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:482
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:484
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:484
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:486
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:488
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:490
#, 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:491
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:493
msgid "where:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:493
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:495
msgid ""
"_repository_ is one of the Project repositories: `base`, `ports`, or `doc`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:494
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:496
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:495
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:497
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:498
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:500
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:502
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:504
#, 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:506
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:508
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:508
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:510
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:512
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:514
#, no-wrap
msgid "# svn update lwcdir\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:515
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:517
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:519
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:521
#, no-wrap
msgid "# svn update /usr/src\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:526
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:528
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:531
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:533
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make update SVN_UPDATE=yes\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:534
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:536
#, no-wrap
msgid "Subversion Mirror Sites"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:537
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:539
msgid "The FreeBSD Subversion repository is:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:541
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:543
#, no-wrap
msgid "svn.FreeBSD.org\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:545
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:547
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:547
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:549
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:548
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:550
#, no-wrap
msgid "For More Information"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:551
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:553
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:553
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:555
#, no-wrap
msgid "CD and DVD Sets"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:556
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:558
msgid "FreeBSD CD and DVD sets are available from several online retailers:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:566
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:568
#, 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:569
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:571
#, no-wrap
msgid ""
"Getlinux\n"
"WWW: https://www.getlinux.fr/"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/mirrors/_index.adoc:576
+#: documentation/content/en/books/handbook/mirrors/_index.adoc:578
#, 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/multimedia/_index.po b/documentation/content/en/books/handbook/multimedia/_index.po
index 11fde618e7..1f868bf414 100644
--- a/documentation/content/en/books/handbook/multimedia/_index.po
+++ b/documentation/content/en/books/handbook/multimedia/_index.po
@@ -1,1496 +1,1496 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/multimedia/_index.adoc:1
#, no-wrap
msgid "The multimedia chapter provides an overview of multimedia support on FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1
#, no-wrap
msgid "Chapter 8. Multimedia"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/multimedia/_index.adoc:14
#, no-wrap
msgid "Multimedia"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:61
msgid ""
"The multimedia chapter provides an overview of multimedia support on "
"FreeBSD. Multimedia applications and technologies have become an integral "
"part of modern computing, and FreeBSD provides robust and reliable support "
"for a wide range of multimedia hardware and software. This chapter covers "
"various multimedia components such as audio, video, and image processing. "
"It also discusses various media formats and codecs, as well as tools and "
"applications for multimedia creation and playback. Additionally, the "
"chapter covers multimedia system configuration, troubleshooting, and "
"optimization. Whether you are a multimedia enthusiast or a professional "
"content creator, FreeBSD offers a robust platform for multimedia work. This "
"chapter aims to help get the most out of FreeBSD's multimedia capabilities, "
"providing useful information and practical examples to help get started."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:63
#, no-wrap
msgid "Setting Up the Sound Card"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:68
msgid ""
"By default, FreeBSD will automatically detect the sound card used by the "
"system. FreeBSD supports a wide variety of sound cards. The list of "
"supported sound cards can be consulted in man:sound[4]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:72
msgid ""
"It is only necessary to load the sound card module if FreeBSD has not "
"detected it correctly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:75
msgid ""
"Where it is not known which sound card the system has, or which module to "
"use, the `snd_driver` metadriver can be loaded by executing the following "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:79
#, no-wrap
msgid "# kldload snd_driver\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:82
msgid ""
"Alternatively, to load the driver as a module at boot time, place the "
"following line in [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:86
#, no-wrap
msgid "snd_driver_load=\"YES\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:89
#, no-wrap
msgid "Testing Sound"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:92
msgid ""
"To confirm the sound card is detected the following command can be executed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:96
#: documentation/content/en/books/handbook/multimedia/_index.adoc:174
#: documentation/content/en/books/handbook/multimedia/_index.adoc:216
#, no-wrap
msgid "% dmesg | grep pcm\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:99
#: documentation/content/en/books/handbook/multimedia/_index.adoc:114
#: documentation/content/en/books/handbook/multimedia/_index.adoc:518
#: documentation/content/en/books/handbook/multimedia/_index.adoc:547
#: documentation/content/en/books/handbook/multimedia/_index.adoc:621
#: documentation/content/en/books/handbook/multimedia/_index.adoc:642
#: documentation/content/en/books/handbook/multimedia/_index.adoc:718
msgid "The output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:104
#, no-wrap
msgid ""
"pcm0: <Conexant CX20561 (Hermosa) (Analog 2.0+HP/2.0)> at nid 26,22 and 24 on hdaa0\n"
"pcm1: <Conexant CX20561 (Hermosa) (Internal Analog Mic)> at nid 29 on hdaa0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:107
msgid "The status of the sound card may also be checked using this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:111
#, no-wrap
msgid "# cat /dev/sndstat\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:120
#, no-wrap
msgid ""
"Installed devices:\n"
"pcm0: <Conexant CX20561 (Hermosa) (Analog 2.0+HP/2.0)> (play/rec) default\n"
"pcm1: <Conexant CX20561 (Hermosa) (Internal Analog Mic)> (rec)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:124
msgid ""
"If no `pcm` devices are listed, double-check that the correct device driver "
"was loaded. If all goes well, the sound card should now work in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:126
msgid ""
"man:beep[1] can be used to produce some noise, confirming that the sound "
"card is working:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:130
#, no-wrap
msgid "% beep\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:133
#, no-wrap
msgid "Mixer"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:136
msgid ""
"FreeBSD has different utilities to set and display sound card mixer values "
"built on the FreeBSD Sound System:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:137
#, no-wrap
msgid "Supported mixer packages"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:140
#: documentation/content/en/books/handbook/multimedia/_index.adoc:292
#: documentation/content/en/books/handbook/multimedia/_index.adoc:382
#: documentation/content/en/books/handbook/multimedia/_index.adoc:574
#: documentation/content/en/books/handbook/multimedia/_index.adoc:748
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:140
#: documentation/content/en/books/handbook/multimedia/_index.adoc:292
#: documentation/content/en/books/handbook/multimedia/_index.adoc:382
#: documentation/content/en/books/handbook/multimedia/_index.adoc:748
#, no-wrap
msgid "License"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:140
#: documentation/content/en/books/handbook/multimedia/_index.adoc:292
#: documentation/content/en/books/handbook/multimedia/_index.adoc:382
#: documentation/content/en/books/handbook/multimedia/_index.adoc:750
#, no-wrap
msgid "Package"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:142
#: documentation/content/en/books/handbook/multimedia/_index.adoc:294
#: documentation/content/en/books/handbook/multimedia/_index.adoc:384
#, no-wrap
msgid "Toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:143
#, no-wrap
msgid "man:mixer[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:144
#: documentation/content/en/books/handbook/multimedia/_index.adoc:149
#: documentation/content/en/books/handbook/multimedia/_index.adoc:159
#: documentation/content/en/books/handbook/multimedia/_index.adoc:306
#, no-wrap
msgid "BSD-2"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:145
#, no-wrap
msgid "Included in base system"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:147
#: documentation/content/en/books/handbook/multimedia/_index.adoc:389
#, no-wrap
msgid "CLI"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:148
#, no-wrap
msgid "dsbmixer"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:150
#, no-wrap
msgid "package:audio/dsbmixer[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:152
#: documentation/content/en/books/handbook/multimedia/_index.adoc:157
#: documentation/content/en/books/handbook/multimedia/_index.adoc:299
#: documentation/content/en/books/handbook/multimedia/_index.adoc:309
#: documentation/content/en/books/handbook/multimedia/_index.adoc:394
#: documentation/content/en/books/handbook/multimedia/_index.adoc:399
#, no-wrap
msgid "Qt"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:153
#, no-wrap
msgid "KDE Plasma audio widget"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:154
#: documentation/content/en/books/handbook/multimedia/_index.adoc:301
#: documentation/content/en/books/handbook/multimedia/_index.adoc:311
#: documentation/content/en/books/handbook/multimedia/_index.adoc:386
#: documentation/content/en/books/handbook/multimedia/_index.adoc:391
#: documentation/content/en/books/handbook/multimedia/_index.adoc:396
#: documentation/content/en/books/handbook/multimedia/_index.adoc:401
#: documentation/content/en/books/handbook/multimedia/_index.adoc:752
#: documentation/content/en/books/handbook/multimedia/_index.adoc:760
#, no-wrap
msgid "GPL 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:155
#, no-wrap
msgid "package:audio/plasma5-plasma-pa[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:158
#, no-wrap
msgid "mixertui"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:160
#, no-wrap
msgid "package:audio/mixertui[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:162
#: documentation/content/en/books/handbook/multimedia/_index.adoc:314
#, no-wrap
msgid "TUI"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:165
#, no-wrap
msgid "Graphics Card Sound"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:170
msgid ""
"Graphics cards often come with their own integrated sound devices, and it "
"may be unclear which is being used as the default device. To confirm, run "
"dmesg and look for the pcm entries to identify how the system is enumerating "
"the outputs. Execute the following command:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:177
#: documentation/content/en/books/handbook/multimedia/_index.adoc:219
msgid "The output looks something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:189
#, no-wrap
msgid ""
"pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0\n"
"pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0\n"
"pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0\n"
"pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0\n"
"hdac1: HDA Codec #2: Realtek ALC889\n"
"pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1\n"
"pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1\n"
"pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1\n"
"pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:193
msgid ""
"The graphics card (NVIDIA(R)) has been enumerated before the sound card "
"(Realtek(R)), with the sound card appearing as `pcm4`. The system can be "
"configured to use the sound card as the default device by executing the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:197
#, no-wrap
msgid "# sysctl hw.snd.default_unit=4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:200
msgid ""
"To make this change permanent add the next line to [.filename]#/etc/sysctl."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:204
#, no-wrap
msgid "hw.snd.default_unit=4\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:207
#, no-wrap
msgid "Automatically Switching to Headphones"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:210
msgid ""
"Some systems may struggle with switching between audio outputs, but "
"fortunately FreeBSD allows automatic switchover to be configured in [."
"filename]#device.hints#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:212
msgid ""
"Identify how the system is enumerating the audio outputs by executing the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:224
#, no-wrap
msgid ""
"pcm0: <Realtek ALC892 Analog> at nid 23 and 26 on hdaa0\n"
"pcm1: <Realtek ALC892 Right Analog Headphones> at nid 22 on hdaa0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:227
msgid "Add the following lines to [.filename]#/boot/device.hints#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:232
#, no-wrap
msgid ""
"hint.hdac.0.cad0.nid22.config=\"as=1 seq=15 device=Headphones\" \n"
"hint.hdac.0.cad0.nid26.config=\"as=2 seq=0 device=speakers\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:238
msgid ""
"Keep in mind that these values are for the example indicated above. They "
"may vary depending on the system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:241
#, no-wrap
msgid "Troubleshooting Sound"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:244
msgid "Some common error messages and their solutions:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:246
#, no-wrap
msgid "Common Error Messages"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:250
#, no-wrap
msgid "Error"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:252
#, no-wrap
msgid "Solution"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:253
#, no-wrap
msgid "`xxx: can't open /dev/dsp!`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:253
#, no-wrap
msgid "Type `fstat \\"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:254
#, no-wrap
msgid "grep dsp` to check if another application is holding the device open. Noteworthy troublemakers are esound and KDE's sound support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:262
msgid ""
"Programs using package:audio/pulseaudio[] might need to restart the package:"
"audio/pulseaudio[] daemon for the changes in `hw.snd.default_unit` to take "
"effect. Alternatively, package:audio/pulseaudio[] settings can be changed "
"on the fly. man:pacmd[1] opens a command line connection to the package:"
"audio/pulseaudio[] daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:268
#, no-wrap
msgid ""
"# pacmd\n"
"Welcome to PulseAudio 14.2! Use \"help\" for usage information.\n"
">>>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:272
msgid ""
"The following command changes the default sink to card number 4 as in the "
"previous example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:276
#, no-wrap
msgid "set-default-sink 4\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:282
msgid ""
"Do not use the `exit` command to exit the command line interface. That will "
"kill the package:audio/pulseaudio[] daemon. Use kbd:[Ctrl+D] instead."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:285
#, no-wrap
msgid "Audio players"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:288
msgid ""
"This section introduces some of the software available from the FreeBSD "
"Ports Collection which can be used for audio playback."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:289
#, no-wrap
msgid "Audio players packages"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:295
#: documentation/content/en/books/handbook/multimedia/_index.adoc:317
#, no-wrap
msgid "Elisa"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:296
#, no-wrap
msgid "LGPL 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:297
#, no-wrap
msgid "package:audio/elisa[]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:300
#: documentation/content/en/books/handbook/multimedia/_index.adoc:329
#, no-wrap
msgid "GNOME Music"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:302
#, no-wrap
msgid "package:audio/gnome-music[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:304
#, no-wrap
msgid "GTK+"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:305
#: documentation/content/en/books/handbook/multimedia/_index.adoc:342
#, no-wrap
msgid "Audacious"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:307
#, no-wrap
msgid "package:multimedia/audacious[]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:310
#: documentation/content/en/books/handbook/multimedia/_index.adoc:360
#, no-wrap
msgid "MOC (music on console)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:312
#, no-wrap
msgid "package:audio/moc[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:320
msgid ""
"Elisa is a music player developed by the KDE community that strives to be "
"simple and nice to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:322
msgid "To install Elisa, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:326
#, no-wrap
msgid "# pkg install elisa\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:333
msgid ""
"GNOME Music is the new GNOME music playing application. It aims to combine "
"an elegant and immersive browsing experience with simple and straightforward "
"controls."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:335
msgid "To install GNOME Music, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:339
#, no-wrap
msgid "# pkg install gnome-music\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:346
msgid ""
"Audacious is an open source audio player. A descendant of XMMS, it plays "
"your music how you want it, without stealing away your computer's resources "
"from other tasks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:348
msgid "To install Audacious, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:352
#, no-wrap
msgid "# pkg install audacious-qt6 audacious-plugins-qt6\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:357
msgid ""
"Audacious supports OSS natively, but must be configured in the settings on "
"the Audio tab."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:363
msgid ""
"MOC (music on console) is a console audio player designed to be powerful and "
"easy to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:366
msgid ""
"MOC plays smoothly, regardless of system or I/O load, because it handles the "
"output buffer in a separate thread. It does not cause gaps between files, "
"because the next file to be played is pre-cached while playing the current "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:368
msgid "To install MOC (music on console), execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:372
#, no-wrap
msgid "# pkg install moc\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:375
#, no-wrap
msgid "Video players"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:378
msgid ""
"This section introduces some of the software available from the FreeBSD "
"Ports Collection which can be used for video playback."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:379
#, no-wrap
msgid "Video players packages"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:385
#: documentation/content/en/books/handbook/multimedia/_index.adoc:407
#, no-wrap
msgid "MPlayer"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:387
#, no-wrap
msgid "package:multimedia/mplayer[]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:390
#: documentation/content/en/books/handbook/multimedia/_index.adoc:422
#, no-wrap
msgid "SMPlayer"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:392
#, no-wrap
msgid "package:multimedia/smplayer[]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:395
#: documentation/content/en/books/handbook/multimedia/_index.adoc:434
#, no-wrap
msgid "VLC media player"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:397
#, no-wrap
msgid "package:multimedia/vlc[]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:400
#: documentation/content/en/books/handbook/multimedia/_index.adoc:448
#, no-wrap
msgid "Kodi (XBMC)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:402
#, no-wrap
msgid "package:multimedia/kodi[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:404
#, no-wrap
msgid "X11"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:411
msgid ""
"MPlayer is a multimedia player and encoder suite which runs on many "
"platforms and works on the command line. It plays a terrific number of "
"different file formats and codecs including popular DivX, XviD, H.264 "
"streams as well as DVD and SVCDs along with many popular audio codecs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:413
msgid "To install MPlayer, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:417
#, no-wrap
msgid "# pkg install mplayer\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:420
msgid "For examples of how MPlayer works see man:mplayer[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:425
msgid ""
"SMPlayer intends to be a complete front-end for MPlayer, from basic features "
"like playing videos, DVDs, and VCDs to more advanced features like support "
"for MPlayer filters and more."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:427
msgid "To install SMPlayer, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:431
#, no-wrap
msgid "# pkg install smplayer\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:439
msgid ""
"VLC media player is a highly portable multimedia player for various audio "
"and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, and more) as well "
"as DVD's, VCD's, and various streaming protocols. It can also be used as a "
"server to stream in unicast or multicast in IPv4 or IPv6 on a high-bandwidth "
"network. VLC also has the ability to transcode media on-the-fly for "
"streaming or saving to disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:441
msgid "To install VLC, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:445
#, no-wrap
msgid "# pkg install vlc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:452
msgid ""
"Kodi (formerly known as XBMC) is a free and open source cross-platform media-"
"player and entertainment hub. It allows users to play and view most videos, "
"music, podcasts, and other digital media files from local and network "
"storage media and the internet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:454
msgid "To install Kodi, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:458
#, no-wrap
msgid "# pkg install kodi\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:461
#, no-wrap
msgid "Conferencing and Meetings"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:465
msgid ""
"A FreeBSD desktop environment can be used to join video conferences. This "
"section will explain how to configure the webcam and which videoconferencing "
"applications are supported on FreeBSD."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:467
#, no-wrap
msgid "Setting Up the Webcam"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:470
msgid ""
"To allow FreeBSD access to the webcam and perform its configuration it is "
"necessary to install certain utilities:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:472
msgid ""
"package:multimedia/webcamd[] is a daemon that enables the use of hundreds of "
"different USB based webcam and DVB USB devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:473
msgid ""
"package:multimedia/pwcview[] is an application that can be used to view the "
"video stream of the webcam."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:475
msgid "To install the required utilities, execute:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:479
#, no-wrap
msgid "# pkg install webcamd pwcview\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:482
msgid ""
"Enable the man:webcamd[8] service in `/etc/rc.conf` to start it at system "
"boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:486
#, no-wrap
msgid "# sysrc webcamd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:490
msgid ""
"The user must belong to the `webcamd` group. To add the user to `webcamd` "
"group execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:494
#, no-wrap
msgid "# pw groupmod webcamd -m username\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:497
msgid ""
"Since package:multimedia/webcamd[] needs the man:cuse[3] module this module "
"must be loaded by executing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:501
#, no-wrap
msgid "# kldload cuse\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:504
msgid "To load man:cuse[3] at system boot, execute the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:508
#, no-wrap
-msgid "# kld_list += \"cuse\"\n"
+msgid "# sysrc kld_list += \"cuse\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:511
msgid ""
"Once the utilities have been installed the list of available webcams can be "
"shown with man:webcamd[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:515
#, no-wrap
msgid "# webcamd -l\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:523
#, no-wrap
msgid ""
"webcamd [-d ugen0.2] -N SunplusIT-Inc-HP-TrueVision-HD-Camera -S unknown -M 0 <.>\n"
"webcamd [-d ugen1.3] -N Realtek-802-11n-WLAN-Adapter -S 00e04c000001 -M 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:525
msgid "Available webcam"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:527
msgid "Configure the available webcam executing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:531
#, no-wrap
msgid "# sysrc webcamd_0_flags=\"-d ugen0.2\" <.>\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:537
msgid ""
"Note here that if this is a plug-and-play USB webcam, changing the USB port "
"to which it is connected will change the output from `webcamd -l`, and the "
"entry in rc.conf might need to be updated. For laptops that use USB "
"integrated webcams, this should not be an issue."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:540
msgid ""
"The man:webcamd[8] service must be started by executing the following "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:544
#, no-wrap
msgid "# service webcamd start\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:552
#, no-wrap
msgid ""
"Starting webcamd.\n"
"webcamd 1616 - - Attached to ugen0.2[0]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:556
msgid ""
"package:multimedia/pwcview[] can be used to check the proper functioning of "
"the webcam. The following command can be used to execute package:multimedia/"
"pwcview[]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:560
#, no-wrap
msgid "% pwcview -f 30 -s vga\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:563
msgid "Then package:multimedia/pwcview[] will display the webcam:"
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/multimedia/_index.adoc:564
#, no-wrap
msgid "pwcview showing Absolute FreeBSD 3rd edition as an example"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/multimedia/_index.adoc:564
#, no-wrap
msgid "pwcview.png"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:567
#, no-wrap
msgid "Meetings software status"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:570
msgid ""
"FreeBSD currently supports the following tools used to carry out "
"videoconferences."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:571
#, no-wrap
msgid "Meeting software"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:574
#, no-wrap
msgid "Firefox status"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:574
#, no-wrap
msgid "Chromium status"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:576
#, no-wrap
msgid "Website"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:577
#, no-wrap
msgid "Microsoft Teams"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:578
#: documentation/content/en/books/handbook/multimedia/_index.adoc:583
#: documentation/content/en/books/handbook/multimedia/_index.adoc:593
#: documentation/content/en/books/handbook/multimedia/_index.adoc:598
#, no-wrap
msgid "Does not work"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:579
#: documentation/content/en/books/handbook/multimedia/_index.adoc:584
#: documentation/content/en/books/handbook/multimedia/_index.adoc:588
#: documentation/content/en/books/handbook/multimedia/_index.adoc:589
#: documentation/content/en/books/handbook/multimedia/_index.adoc:594
#: documentation/content/en/books/handbook/multimedia/_index.adoc:599
#, no-wrap
msgid "Works"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:581
#, no-wrap
msgid "link:https://teams.live.com[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:582
#, no-wrap
msgid "Google Meet"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:586
#, no-wrap
msgid "link:https://meet.google.com/[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:587
#, no-wrap
msgid "Zoom"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:591
#, no-wrap
msgid "link:https://zoom.us[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:592
#, no-wrap
msgid "Jitsi"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:596
#, no-wrap
msgid "link:https://meet.jit.si/[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:597
#, no-wrap
msgid "BigBlueButton"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:601
#, no-wrap
msgid "link:https://bigbluebutton.org/[]"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:604
#, no-wrap
msgid "Image Scanners"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:607
msgid ""
"In FreeBSD, access to image scanners is provided by link:http://www.sane-"
"project.org[SANE (Scanner Access Now Easy)], which is available in the "
"FreeBSD Ports Collection."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:609
#, no-wrap
msgid "Checking the Scanner"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:612
msgid ""
"Before attempting any configuration it is important to check the scanner is "
"supported by SANE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:614
msgid ""
"With the scanner connected, run the following command to get all connected "
"USB devices:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:618
#, no-wrap
msgid "# usbconfig list\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:627
#, no-wrap
msgid ""
"ugen4.2: <LITE-ON Technology USB NetVista Full Width Keyboard.> at usbus4, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (70mA)\n"
"ugen4.3: <Logitech USB Optical Mouse> at usbus4, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)\n"
"ugen3.2: <HP Deskjet 1050 J410 series> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:630
msgid "Run the following command to obtain the `idVendor` and the `idProduct`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:634
#, no-wrap
msgid "# usbconfig -d 3.2 dump_device_desc\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:639
msgid ""
"Note here that the scanner is a plug-and-play device, and changing the USB "
"port to which it is connected will change the output from `usbconfig list`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:646
#, no-wrap
msgid "ugen3.2: <HP Deskjet 1050 J410 series> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:660
#, no-wrap
msgid ""
"bLength = 0x0012\n"
"bDescriptorType = 0x0001\n"
"bcdUSB = 0x0200\n"
"bDeviceClass = 0x0000 <Probed by interface class>\n"
"bDeviceSubClass = 0x0000\n"
"bDeviceProtocol = 0x0000\n"
"bMaxPacketSize0 = 0x0040\n"
"idVendor = 0x03f0\n"
"idProduct = 0x8911\n"
"bcdDevice = 0x0100\n"
"iManufacturer = 0x0001 <HP>\n"
"iProduct = 0x0002 <Deskjet 1050 J410 series>\n"
"bNumConfigurations = 0x0001\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:663
msgid ""
"Once the `idVendor` and the `idProduct` have been obtained, it is necessary "
"to check in the link:http://www.sane-project.org/lists/sane-mfgs-cvs."
"html[list of supported devices of SANE] if the scanner is supported by "
"filtering by the idProduct."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:665
#, no-wrap
msgid "SANE Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:669
msgid ""
"SANE provides the access to the scanner via backends. To be able to scan "
"with FreeBSD the package:graphics/sane-backends[] package must be installed "
"by running the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:673
#, no-wrap
msgid "# pkg install sane-backends\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:679
msgid ""
"Some USB scanners require firmware to be loaded. Like the HP scanner used "
"in the example above, which needs the package package:print/hplip[] "
"installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:682
msgid ""
"After installing the necessary packages man:devd[8] must be configured to "
"allow FreeBSD access to the scanner."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:684
msgid ""
"Add the `saned.conf` file to [.filename]#/usr/local/etc/devd/saned.conf# "
"with the following content:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:696
#, no-wrap
msgid ""
"notify 100 {\n"
" match \"system\" \"USB\";\n"
" match \"subsystem\" \"INTERFACE\";\n"
" match \"type\" \"ATTACH\";\n"
" match \"cdev\" \"ugen[0-9].[0-9]\";\n"
" match \"vendor\" \"0x03f0\"; <.>\n"
" match \"product\" \"0x8911\"; <.>\n"
" action \"chown -L cups:saned /dev/\\$cdev && chmod -L 660 /dev/\\$cdev\";\n"
"};\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:699
msgid ""
"`vendor`: Is the idVendor obtained previously by running the `usbconfig -d "
"3.2 dump_device_desc` command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:700
msgid ""
"`product`: Is the idProduct obtained previously by running the `usbconfig -d "
"3.2 dump_device_desc` command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:702
msgid ""
"After that man:devd[8] must be restarted by running the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:706
#, no-wrap
msgid "# service devd restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:709
msgid ""
"The SANE backends include man:scanimage[1] which can be used to list the "
"devices and perform an image acquisition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:711
msgid ""
"Execute man:scanimage[1] with `-L` argument to list the scanner devices:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:715
#, no-wrap
msgid "# scanimage -L\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:722
#, no-wrap
msgid "device `hpaio:/usb/Deskjet_1050_J410_series?serial=XXXXXXXXXXXXXX' is a Hewlett-Packard Deskjet_1050_J410_series all-in-one\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:725
msgid ""
"If man:scanimage[1] is not able to identify the scanner, this message will "
"appear:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:732
#, no-wrap
msgid ""
"No scanners were identified. If you were expecting something different,\n"
"check that the scanner is plugged in, turned on and detected by the\n"
"sane-find-scanner tool (if appropriate). Please read the documentation\n"
"which came with this software (README, FAQ, manpages).\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:735
msgid ""
"Once man:scanimage[1] sees the scanner, the configuration is complete and "
"the scanner is now ready to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:737
msgid ""
"To activate the service and have it run at boot execute the following "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:741
#, no-wrap
msgid "# sysrc saned_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:744
msgid ""
"While man:scanimage[1] can be used to perform an image acquisition from the "
"command line, it is often preferable to use a graphical interface to perform "
"image scanning."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:745
#, no-wrap
msgid "Graphical scanner programs"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:751
#, no-wrap
msgid "skanlite"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:754
#, no-wrap
msgid "graphics/skanlite"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:755
#, no-wrap
msgid "GNOME Simple Scan"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:756
#, no-wrap
msgid "GPL 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:758
#, no-wrap
msgid "graphics/simple-scan"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:759
#, no-wrap
msgid "XSANE"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:762
#, no-wrap
msgid "graphics/xsane"
msgstr ""
diff --git a/documentation/content/en/books/handbook/network-servers/_index.po b/documentation/content/en/books/handbook/network-servers/_index.po
index 9d9e075229..f86b9bf3bf 100644
--- a/documentation/content/en/books/handbook/network-servers/_index.po
+++ b/documentation/content/en/books/handbook/network-servers/_index.po
@@ -1,6321 +1,6321 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/network-servers/_index.adoc:1
#, no-wrap
msgid "This chapter covers some of the more frequently used network services on UNIX systems"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1
#, no-wrap
msgid "IV. Network Communication"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1
#, no-wrap
msgid "Chapter 31. Network Servers"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/network-servers/_index.adoc:14
#, no-wrap
msgid "Network Servers"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:57
msgid ""
"This chapter covers some of the more frequently used network services on "
"UNIX(R) systems. This includes installing, configuring, testing, and "
"maintaining many different types of network services. Example configuration "
"files are included throughout this chapter for reference."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:59
msgid "By the end of this chapter, readers will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:61
msgid "How to manage the inetd daemon."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:62
msgid "How to set up the Network File System (NFS)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:63
msgid ""
"How to set up the Network Information Server (NIS) for centralizing and "
"sharing user accounts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:64
msgid "How to set FreeBSD up to act as an LDAP server or client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:65
msgid "How to set up automatic network settings using DHCP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:66
msgid "How to set up a Domain Name Server (DNS)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:67
msgid "How to set up the Apache HTTP Server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:68
msgid "How to set up a File Transfer Protocol (FTP) server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:69
msgid ""
"How to set up a file and print server for Windows(R) clients using Samba."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:70
msgid ""
"How to synchronize the time and date, and set up a time server using the "
"Network Time Protocol (NTP)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:71
msgid "How to set up iSCSI."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:73
msgid "This chapter assumes a basic knowledge of:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:75
msgid "[.filename]#/etc/rc# scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:76
msgid "Network terminology."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:77
msgid ""
"Installation of additional third-party software (crossref:ports[ports,"
"Installing Applications: Packages and Ports])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:79
#, no-wrap
msgid "The inetd Super-Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:85
msgid ""
"The man:inetd[8] daemon is sometimes referred to as a Super-Server because "
"it manages connections for many services. Instead of starting multiple "
"applications, only the inetd service needs to be started. When a connection "
"is received for a service that is managed by inetd, it determines which "
"program the connection is destined for, spawns a process for that program, "
"and delegates the program a socket. Using inetd for services that are not "
"heavily used can reduce system load, when compared to running each daemon "
"individually in stand-alone mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:87
msgid ""
"Primarily, inetd is used to spawn other daemons, but several trivial "
"protocols are handled internally, such as chargen, auth, time, echo, "
"discard, and daytime."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:89
msgid "This section covers the basics of configuring inetd."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:91
#, no-wrap
msgid "Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:97
msgid ""
"Configuration of inetd is done by editing [.filename]#/etc/inetd.conf#. "
"Each line of this configuration file represents an application which can be "
"started by inetd. By default, every line starts with a comment (`+#+`), "
"meaning that inetd is not listening for any applications. To configure "
"inetd to listen for an application's connections, remove the `+#+` at the "
"beginning of the line for that application."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:99
msgid ""
"After saving your edits, configure inetd to start at system boot by editing "
"[.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:103
#, no-wrap
msgid "inetd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:106
msgid ""
"To start inetd now, so that it listens for the service you configured, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:110
#, no-wrap
msgid "# service inetd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:113
msgid ""
"Once inetd is started, it needs to be notified whenever a modification is "
"made to [.filename]#/etc/inetd.conf#:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:115
#, no-wrap
msgid "Reloading the inetd Configuration File"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:122
#, no-wrap
msgid "# service inetd reload\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:128
msgid ""
"Typically, the default entry for an application does not need to be edited "
"beyond removing the `+#+`. In some situations, it may be appropriate to "
"edit the default entry."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:130
msgid "As an example, this is the default entry for man:ftpd[8] over IPv4:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:134
#, no-wrap
msgid "ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:137
msgid "The seven columns in an entry are as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:147
#, no-wrap
msgid ""
"service-name\n"
"socket-type\n"
"protocol\n"
"{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]\n"
"user[:group][/login-class]\n"
"server-program\n"
"server-program-arguments\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:150
msgid "where:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:151
#, no-wrap
msgid "service-name"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:156
msgid ""
"The service name of the daemon to start. It must correspond to a service "
"listed in [.filename]#/etc/services#. This determines which port inetd "
"listens on for incoming connections to that service. When using a custom "
"service, it must first be added to [.filename]#/etc/services#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:157
#, no-wrap
msgid "socket-type"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:160
msgid ""
"Either `stream`, `dgram`, `raw`, or `seqpacket`. Use `stream` for TCP "
"connections and `dgram` for UDP services."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:161
#, no-wrap
msgid "protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:163
msgid "Use one of the following protocol names:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:168
#, no-wrap
msgid "Protocol Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:171
#, no-wrap
msgid "Explanation"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:172
#, no-wrap
msgid "tcp or tcp4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:174
#, no-wrap
msgid "TCP IPv4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:175
#, no-wrap
msgid "udp or udp4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:177
#, no-wrap
msgid "UDP IPv4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:178
#, no-wrap
msgid "tcp6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:180
#, no-wrap
msgid "TCP IPv6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:181
#, no-wrap
msgid "udp6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:183
#, no-wrap
msgid "UDP IPv6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:184
#, no-wrap
msgid "tcp46"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:186
#, no-wrap
msgid "Both TCP IPv4 and IPv6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:187
#, no-wrap
msgid "udp46"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:188
#, no-wrap
msgid "Both UDP IPv4 and IPv6"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:193
msgid ""
"{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-"
"ip]]]:: In this field, `wait` or `nowait` must be specified. `max-child`, "
"`max-connections-per-ip-per-minute` and `max-child-per-ip` are optional."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:197
msgid ""
"`wait|nowait` indicates whether or not the service is able to handle its own "
"socket. `dgram` socket types must use `wait` while `stream` daemons, which "
"are usually multi-threaded, should use `nowait`. `wait` usually hands off "
"multiple sockets to a single daemon, while `nowait` spawns a child daemon "
"for each new socket."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:201
msgid ""
"The maximum number of child daemons inetd may spawn is set by `max-child`. "
"For example, to limit ten instances of the daemon, place a `/10` after "
"`nowait`. Specifying `/0` allows an unlimited number of children."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:207
msgid ""
"`max-connections-per-ip-per-minute` limits the number of connections from "
"any particular IP address per minute. Once the limit is reached, further "
"connections from this IP address will be dropped until the end of the "
"minute. For example, a value of `/10` would limit any particular IP address "
"to ten connection attempts per minute. `max-child-per-ip` limits the number "
"of child processes that can be started on behalf on any single IP address at "
"any moment. These options can limit excessive resource consumption and help "
"to prevent Denial of Service attacks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:209
msgid "An example can be seen in the default settings for man:fingerd[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:213
#, no-wrap
msgid "finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -k -s\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:215
#, no-wrap
msgid "user"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:218
msgid ""
"The username the daemon will run as. Daemons typically run as `root`, "
"`daemon`, or `nobody`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:219
#, no-wrap
msgid "server-program"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:222
msgid ""
"The full path to the daemon. If the daemon is a service provided by inetd "
"internally, use `internal`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:223
#, no-wrap
msgid "server-program-arguments"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:226
msgid ""
"Used to specify any command arguments to be passed to the daemon on "
"invocation. If the daemon is an internal service, use `internal`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:228
#, no-wrap
msgid "Command-Line Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:233
msgid ""
"Like most server daemons, inetd has a number of options that can be used to "
"modify its behavior. By default, inetd is started with `-wW -C 60`. These "
"options enable TCP wrappers for all services, including internal services, "
"and prevent any IP address from requesting any service more than 60 times "
"per minute."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:236
msgid ""
"To change the default options which are passed to inetd, add an entry for "
"`inetd_flags` in [.filename]#/etc/rc.conf#. If inetd is already running, "
"restart it with `service inetd restart`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:238
msgid "The available rate limiting options are:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:239
#, no-wrap
msgid "-c maximum"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:242
msgid ""
"Specify the default maximum number of simultaneous invocations of each "
"service, where the default is unlimited. May be overridden on a per-service "
"basis by using `max-child` in [.filename]#/etc/inetd.conf#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:243
#, no-wrap
msgid "-C rate"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:246
msgid ""
"Specify the default maximum number of times a service can be invoked from a "
"single IP address per minute. May be overridden on a per-service basis by "
"using `max-connections-per-ip-per-minute` in [.filename]#/etc/inetd.conf#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:247
#, no-wrap
msgid "-R rate"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:250
msgid ""
"Specify the maximum number of times a service can be invoked in one minute, "
"where the default is `256`. A rate of `0` allows an unlimited number."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:251
#, no-wrap
msgid "-s maximum"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:254
msgid ""
"Specify the maximum number of times a service can be invoked from a single "
"IP address at any one time, where the default is unlimited. May be "
"overridden on a per-service basis by using `max-child-per-ip` in [."
"filename]#/etc/inetd.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:256
msgid ""
"Additional options are available. Refer to man:inetd[8] for the full list of "
"options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:258
#, no-wrap
msgid "Security Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:264
msgid ""
"Many of the daemons which can be managed by inetd are not security-"
"conscious. Some daemons, such as fingerd, can provide information that may "
"be useful to an attacker. Only enable the services which are needed and "
"monitor the system for excessive connection attempts. `max-connections-per-"
"ip-per-minute`, `max-child` and `max-child-per-ip` can be used to limit such "
"attacks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:267
msgid ""
"By default, TCP wrappers are enabled. Consult man:hosts_access[5] for more "
"information on placing TCP restrictions on various inetd invoked daemons."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:269
#, no-wrap
msgid "Network File System (NFS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:273
msgid ""
"FreeBSD supports the Network File System (NFS), which allows a server to "
"share directories and files with clients over a network. With NFS, users "
"and programs can access files on remote systems as if they were stored "
"locally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:276
msgid "NFS has many practical uses. Some of the more common uses include:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:278
msgid ""
"Data that would otherwise be duplicated on each client can be kept in a "
"single location and accessed by clients on the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:279
msgid ""
"Several clients may need access to the [.filename]#/usr/ports/distfiles# "
"directory. Sharing that directory allows for quick access to the source "
"files without having to download them to each client."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:280
msgid ""
"On large networks, it is often more convenient to configure a central NFS "
"server on which all user home directories are stored. Users can log into a "
"client anywhere on the network and have access to their home directories."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:281
msgid ""
"Administration of NFS exports is simplified. For example, there is only one "
"file system where security or backup policies must be set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:282
msgid ""
"Removable media storage devices can be used by other machines on the "
"network. This reduces the number of devices throughout the network and "
"provides a centralized location to manage their security. It is often more "
"convenient to install software on multiple machines from a centralized "
"installation media."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:286
msgid ""
"NFS consists of a server and one or more clients. The client remotely "
"accesses the data that is stored on the server machine. In order for this "
"to function properly, a few processes have to be configured and running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:288
msgid "These daemons must be running on the server:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:293
#, no-wrap
msgid "Daemon"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:296
#: documentation/content/en/books/handbook/network-servers/_index.adoc:558
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1007
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1026
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:297
#, no-wrap
msgid "nfsd"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:299
#, no-wrap
msgid "The NFS daemon which services requests from NFS clients."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:300
#, no-wrap
msgid "mountd"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:302
#, no-wrap
msgid "The NFS mount daemon which carries out requests received from nfsd."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:303
#, no-wrap
msgid "rpcbind"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:304
#, no-wrap
msgid "This daemon allows NFS clients to discover which port the NFS server is using."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:307
msgid ""
"Running man:nfsiod[8] on the client can improve performance, but is not "
"required."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:309
#, no-wrap
msgid "Configuring the Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:315
msgid ""
"The file systems which the NFS server will share are specified in [."
"filename]#/etc/exports#. Each line in this file specifies a file system to "
"be exported, which clients have access to that file system, and any access "
"options. When adding entries to this file, each exported file system, its "
"properties, and allowed hosts must occur on a single line. If no clients "
"are listed in the entry, then any client on the network can mount that file "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:320
msgid ""
"The following [.filename]#/etc/exports# entries demonstrate how to export "
"file systems. The examples can be modified to match the file systems and "
"client names on the reader's network. There are many options that can be "
"used in this file, but only a few will be mentioned here. See man:"
"exports[5] for the full list of options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:322
msgid ""
"This example shows how to export [.filename]#/cdrom# to three hosts named "
"_alpha_, _bravo_, and _charlie_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:326
#, no-wrap
msgid "/cdrom -ro alpha bravo charlie\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:331
msgid ""
"The `-ro` flag makes the file system read-only, preventing clients from "
"making any changes to the exported file system. This example assumes that "
"the host names are either in DNS or in [.filename]#/etc/hosts#. Refer to "
"man:hosts[5] if the network does not have a DNS server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:336
msgid ""
"The next example exports [.filename]#/home# to three clients by IP address. "
"This can be useful for networks without DNS or [.filename]#/etc/hosts# "
"entries. The `-alldirs` flag allows subdirectories to be mount points. In "
"other words, it will not automatically mount the subdirectories, but will "
"permit the client to mount the directories that are required as needed."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:340
#, no-wrap
msgid "/usr/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:345
msgid ""
"This next example exports [.filename]#/a# so that two clients from different "
"domains may access that file system. The `-maproot=root` allows `root` on "
"the remote system to write data on the exported file system as `root`. If `-"
"maproot=root` is not specified, the client's `root` user will be mapped to "
"the server's `nobody` account and will be subject to the access limitations "
"defined for `nobody`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:349
#, no-wrap
msgid "/a -maproot=root host.example.com box.example.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:353
msgid ""
"A client can only be specified once per file system. For example, if [."
"filename]#/usr# is a single file system, these entries would be invalid as "
"both entries specify the same host:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:359
#, no-wrap
msgid ""
"# Invalid when /usr is one file system\n"
"/usr/src client\n"
"/usr/ports client\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:362
msgid "The correct format for this situation is to use one entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:366
#, no-wrap
msgid "/usr/src /usr/ports client\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:369
msgid ""
"The following is an example of a valid export list, where [.filename]#/usr# "
"and [.filename]#/exports# are local file systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:380
#, no-wrap
msgid ""
"# Export src and ports to client01 and client02, but only\n"
"# client01 has root privileges on it\n"
"/usr/src /usr/ports -maproot=root client01\n"
"/usr/src /usr/ports client02\n"
"# The client machines have root and can mount anywhere\n"
"# on /exports. Anyone in the world can mount /exports/obj read-only\n"
"/exports -alldirs -maproot=root client01 client02\n"
"/exports/obj -ro\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:383
msgid ""
"To enable the processes required by the NFS server at boot time, add these "
"options to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:389
#, no-wrap
msgid ""
"rpcbind_enable=\"YES\"\n"
"nfs_server_enable=\"YES\"\n"
"mountd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:392
msgid "The server can be started now by running this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:396
#, no-wrap
msgid "# service nfsd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:401
msgid ""
"Whenever the NFS server is started, mountd also starts automatically. "
"However, mountd only reads [.filename]#/etc/exports# when it is started. To "
"make subsequent [.filename]#/etc/exports# edits take effect immediately, "
"force mountd to reread it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:405
#, no-wrap
msgid "# service mountd reload\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:408
msgid "Refer to man:nfsv4[4] for a description of an NFS Version 4 setup."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:409
#, no-wrap
msgid "Configuring the Client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:412
msgid ""
"To enable NFS clients, set this option in each client's [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:416
#, no-wrap
msgid "nfs_client_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:419
msgid "Then, run this command on each NFS client:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:423
#, no-wrap
msgid "# service nfsclient start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:428
msgid ""
"The client now has everything it needs to mount a remote file system. In "
"these examples, the server's name is `server` and the client's name is "
"`client`. To mount [.filename]#/home# on `server` to the [.filename]#/mnt# "
"mount point on `client`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:432
#, no-wrap
msgid "# mount server:/home /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:435
msgid ""
"The files and directories in [.filename]#/home# will now be available on "
"`client`, in the [.filename]#/mnt# directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:437
msgid ""
"To mount a remote file system each time the client boots, add it to [."
"filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:441
#, no-wrap
msgid "server:/home\t/mnt\tnfs\trw\t0\t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:444
msgid "Refer to man:fstab[5] for a description of all available options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:445
#, no-wrap
msgid "Locking"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:449
msgid ""
"Some applications require file locking to operate correctly. To enable "
"locking, add these lines to [.filename]#/etc/rc.conf# on both the client and "
"server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:454
#, no-wrap
msgid ""
"rpc_lockd_enable=\"YES\"\n"
"rpc_statd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:457
msgid "Then start the applications:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:462
#, no-wrap
msgid ""
"# service lockd start\n"
"# service statd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:466
msgid ""
"If locking is not required on the server, the NFS client can be configured "
"to lock locally by including `-L` when running mount. Refer to man:"
"mount_nfs[8] for further details."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:468
#, no-wrap
msgid "Automating Mounts with man:autofs[5]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:475
msgid ""
"The man:autofs[5] automount facility is supported starting with FreeBSD 10.1-"
"RELEASE. To use the automounter functionality in older versions of FreeBSD, "
"use man:amd[8] instead. This chapter only describes the man:autofs[5] "
"automounter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:481
msgid ""
"The man:autofs[5] facility is a common name for several components that, "
"together, allow for automatic mounting of remote and local filesystems "
"whenever a file or directory within that file system is accessed. It "
"consists of the kernel component, man:autofs[5], and several userspace "
"applications: man:automount[8], man:automountd[8] and man:autounmountd[8]. "
"It serves as an alternative for man:amd[8] from previous FreeBSD releases. "
"amd is still provided for backward compatibility purposes, as the two use "
"different map formats; the one used by autofs is the same as with other SVR4 "
"automounters, such as the ones in Solaris, MacOS X, and Linux."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:483
msgid ""
"The man:autofs[5] virtual filesystem is mounted on specified mountpoints by "
"man:automount[8], usually invoked during boot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:487
msgid ""
"Whenever a process attempts to access a file within the man:autofs[5] "
"mountpoint, the kernel will notify man:automountd[8] daemon and pause the "
"triggering process. The man:automountd[8] daemon will handle kernel "
"requests by finding the proper map and mounting the filesystem according to "
"it, then signal the kernel to release blocked process. The man:"
"autounmountd[8] daemon automatically unmounts automounted filesystems after "
"some time, unless they are still being used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:490
msgid ""
"The primary autofs configuration file is [.filename]#/etc/auto_master#. It "
"assigns individual maps to top-level mounts. For an explanation of [."
"filename]#auto_master# and the map syntax, refer to man:auto_master[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:494
msgid ""
"There is a special automounter map mounted on [.filename]#/net#. When a "
"file is accessed within this directory, man:autofs[5] looks up the "
"corresponding remote mount and automatically mounts it. For instance, an "
"attempt to access a file within [.filename]#/net/foobar/usr# would tell man:"
"automountd[8] to mount the [.filename]#/usr# export from the host `foobar`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:495
#, no-wrap
msgid "Mounting an Export with man:autofs[5]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:499
msgid ""
"In this example, `showmount -e` shows the exported file systems that can be "
"mounted from the NFS server, `foobar`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:507
#, no-wrap
msgid ""
"% showmount -e foobar\n"
"Exports list on foobar:\n"
"/usr 10.10.10.0\n"
"/a 10.10.10.0\n"
"% cd /net/foobar/usr\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:514
msgid ""
"The output from `showmount` shows [.filename]#/usr# as an export. When "
"changing directories to [.filename]#/host/foobar/usr#, man:automountd[8] "
"intercepts the request and attempts to resolve the hostname `foobar`. If "
"successful, man:automountd[8] automatically mounts the source export."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:516
msgid ""
"To enable man:autofs[5] at boot time, add this line to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:520
#, no-wrap
msgid "autofs_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:523
msgid "Then man:autofs[5] can be started by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:529
#, no-wrap
msgid ""
"# service automount start\n"
"# service automountd start\n"
"# service autounmountd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:533
msgid ""
"The man:autofs[5] map format is the same as in other operating systems. "
"Information about this format from other sources can be useful, like the "
"http://web.archive.org/web/20160813071113/http://images.apple.com/business/"
"docs/Autofs.pdf[Mac OS X document]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:535
msgid ""
"Consult the man:automount[8], man:automountd[8], man:autounmountd[8], and "
"man:auto_master[5] manual pages for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:537
#, no-wrap
msgid "Network Information System (NIS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:542
msgid ""
"Network Information System (NIS) is designed to centralize administration of "
"UNIX(R)-like systems such as Solaris(TM), HP-UX, AIX(R), Linux, NetBSD, "
"OpenBSD, and FreeBSD. NIS was originally known as Yellow Pages but the name "
"was changed due to trademark issues. This is the reason why NIS commands "
"begin with `yp`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:545
msgid ""
"NIS is a Remote Procedure Call (RPC)-based client/server system that allows "
"a group of machines within an NIS domain to share a common set of "
"configuration files. This permits a system administrator to set up NIS "
"client systems with only minimal configuration data and to add, remove, or "
"modify configuration data from a single location."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:547
msgid "FreeBSD uses version 2 of the NIS protocol."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:548
#, no-wrap
msgid "NIS Terms and Processes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:551
msgid "Table 28.1 summarizes the terms and important processes used by NIS:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:552
#, no-wrap
msgid "NIS Terminology"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:556
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1895
#, no-wrap
msgid "Term"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:559
#, no-wrap
msgid "NIS domain name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:561
#, no-wrap
msgid "NIS servers and clients share an NIS domain name. Typically, this name does not have anything to do with DNS."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:562
#, no-wrap
msgid "man:rpcbind[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:564
#, no-wrap
msgid "This service enables RPC and must be running in order to run an NIS server or act as an NIS client."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:565
#, no-wrap
msgid "man:ypbind[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:567
#, no-wrap
msgid "This service binds an NIS client to its NIS server. It will take the NIS domain name and use RPC to connect to the server. It is the core of client/server communication in an NIS environment. If this service is not running on a client machine, it will not be able to access the NIS server."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:568
#, no-wrap
msgid "man:ypserv[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:570
#, no-wrap
msgid "This is the process for the NIS server. If this service stops running, the server will no longer be able to respond to NIS requests so hopefully, there is a slave server to take over. Some non-FreeBSD clients will not try to reconnect using a slave server and the ypbind process may need to be restarted on these clients."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:571
#, no-wrap
msgid "man:rpc.yppasswdd[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:572
#, no-wrap
msgid "This process only runs on NIS master servers. This daemon allows NIS clients to change their NIS passwords. If this daemon is not running, users will have to login to the NIS master server and change their passwords there."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:574
#, no-wrap
msgid "Machine Types"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:577
msgid "There are three types of hosts in an NIS environment:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:579
msgid "NIS master server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:583
msgid ""
"This server acts as a central repository for host configuration information "
"and maintains the authoritative copy of the files used by all of the NIS "
"clients. The [.filename]#passwd#, [.filename]#group#, and other various "
"files used by NIS clients are stored on the master server. While it is "
"possible for one machine to be an NIS master server for more than one NIS "
"domain, this type of configuration will not be covered in this chapter as it "
"assumes a relatively small-scale NIS environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:584
msgid "NIS slave servers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:587
msgid ""
"NIS slave servers maintain copies of the NIS master's data files in order to "
"provide redundancy. Slave servers also help to balance the load of the "
"master server as NIS clients always attach to the NIS server which responds "
"first."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:588
msgid "NIS clients"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:590
msgid "NIS clients authenticate against the NIS server during log on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:594
msgid ""
"Information in many files can be shared using NIS. The [.filename]#master."
"passwd#, [.filename]#group#, and [.filename]#hosts# files are commonly "
"shared via NIS. Whenever a process on a client needs information that would "
"normally be found in these files locally, it makes a query to the NIS server "
"that it is bound to instead."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:595
#, no-wrap
msgid "Planning Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:601
msgid ""
"This section describes a sample NIS environment which consists of 15 FreeBSD "
"machines with no centralized point of administration. Each machine has its "
"own [.filename]#/etc/passwd# and [.filename]#/etc/master.passwd#. These "
"files are kept in sync with each other only through manual intervention. "
"Currently, when a user is added to the lab, the process must be repeated on "
"all 15 machines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:603
msgid "The configuration of the lab will be as follows:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:608
#, no-wrap
msgid "Machine name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:609
#, no-wrap
msgid "IP address"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:612
#, no-wrap
msgid "Machine role"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:613
#, no-wrap
msgid "`ellington`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:614
#, no-wrap
msgid "`10.0.0.2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:616
#, no-wrap
msgid "NIS master"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:617
#, no-wrap
msgid "`coltrane`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:618
#, no-wrap
msgid "`10.0.0.3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:620
#, no-wrap
msgid "NIS slave"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:621
#, no-wrap
msgid "`basie`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:622
#, no-wrap
msgid "`10.0.0.4`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:624
#, no-wrap
msgid "Faculty workstation"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:625
#, no-wrap
msgid "`bird`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:626
#, no-wrap
msgid "`10.0.0.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:628
#, no-wrap
msgid "Client machine"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:629
#, no-wrap
msgid "`cli[1-11]`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:630
#, no-wrap
msgid "`10.0.0.[6-17]`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:631
#, no-wrap
msgid "Other client machines"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:635
msgid ""
"If this is the first time an NIS scheme is being developed, it should be "
"thoroughly planned ahead of time. Regardless of network size, several "
"decisions need to be made as part of the planning process."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:636
#, no-wrap
msgid "Choosing a NIS Domain Name"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:641
msgid ""
"When a client broadcasts its requests for info, it includes the name of the "
"NIS domain that it is part of. This is how multiple servers on one network "
"can tell which server should answer which request. Think of the NIS domain "
"name as the name for a group of hosts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:647
msgid ""
"Some organizations choose to use their Internet domain name for their NIS "
"domain name. This is not recommended as it can cause confusion when trying "
"to debug network problems. The NIS domain name should be unique within the "
"network and it is helpful if it describes the group of machines it "
"represents. For example, the Art department at Acme Inc. might be in the "
"\"acme-art\" NIS domain. This example will use the domain name `test-"
"domain`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:650
msgid ""
"However, some non-FreeBSD operating systems require the NIS domain name to "
"be the same as the Internet domain name. If one or more machines on the "
"network have this restriction, the Internet domain name _must_ be used as "
"the NIS domain name."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:651
#, no-wrap
msgid "Physical Server Requirements"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:658
msgid ""
"There are several things to keep in mind when choosing a machine to use as a "
"NIS server. Since NIS clients depend upon the availability of the server, "
"choose a machine that is not rebooted frequently. The NIS server should "
"ideally be a stand alone machine whose sole purpose is to be an NIS server. "
"If the network is not heavily used, it is acceptable to put the NIS server "
"on a machine running other services. However, if the NIS server becomes "
"unavailable, it will adversely affect all NIS clients."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:659
#, no-wrap
msgid "Configuring the NIS Master Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:666
msgid ""
"The canonical copies of all NIS files are stored on the master server. The "
"databases used to store the information are called NIS maps. In FreeBSD, "
"these maps are stored in [.filename]#/var/yp/[domainname]# where [."
"filename]#[domainname]# is the name of the NIS domain. Since multiple "
"domains are supported, it is possible to have several directories, one for "
"each domain. Each domain will have its own independent set of maps."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:669
msgid ""
"NIS master and slave servers handle all NIS requests through man:ypserv[8]. "
"This daemon is responsible for receiving incoming requests from NIS clients, "
"translating the requested domain and map name to a path to the corresponding "
"database file, and transmitting data from the database back to the client."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:672
msgid ""
"Setting up a master NIS server can be relatively straight forward, depending "
"on environmental needs. Since FreeBSD provides built-in NIS support, it "
"only needs to be enabled by adding the following lines to [.filename]#/etc/"
"rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:678
#, no-wrap
msgid ""
"nisdomainname=\"test-domain\"\t<.>\n"
"nis_server_enable=\"YES\"\t\t<.>\n"
"nis_yppasswdd_enable=\"YES\"\t<.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:681
msgid "This line sets the NIS domain name to `test-domain`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:682
msgid ""
"This automates the start up of the NIS server processes when the system "
"boots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:683
msgid ""
"This enables the man:rpc.yppasswdd[8] daemon so that users can change their "
"NIS password from a client machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:688
msgid ""
"Care must be taken in a multi-server domain where the server machines are "
"also NIS clients. It is generally a good idea to force the servers to bind "
"to themselves rather than allowing them to broadcast bind requests and "
"possibly become bound to each other. Strange failure modes can result if "
"one server goes down and others are dependent upon it. Eventually, all the "
"clients will time out and attempt to bind to other servers, but the delay "
"involved can be considerable and the failure mode is still present since the "
"servers might bind to each other all over again."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:690
msgid ""
"A server that is also a client can be forced to bind to a particular server "
"by adding these additional lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:695
#, no-wrap
msgid ""
"nis_client_enable=\"YES\"\t\t\t\t<.>\n"
"nis_client_flags=\"-S test-domain,server\"\t<.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:698
msgid "This enables running client stuff as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:699
msgid "This line sets the NIS domain name to `test-domain` and bind to itself."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:702
msgid ""
"After saving the edits, type `/etc/netstart` to restart the network and "
"apply the values defined in [.filename]#/etc/rc.conf#. Before initializing "
"the NIS maps, start man:ypserv[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:706
#, no-wrap
msgid "# service ypserv start\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:709
#, no-wrap
msgid "Initializing the NIS Maps"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:714
msgid ""
"NIS maps are generated from the configuration files in [.filename]#/etc# on "
"the NIS master, with one exception: [.filename]#/etc/master.passwd#. This "
"is to prevent the propagation of passwords to all the servers in the NIS "
"domain. Therefore, before the NIS maps are initialized, configure the "
"primary password files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:720
#, no-wrap
msgid ""
"# cp /etc/master.passwd /var/yp/master.passwd\n"
"# cd /var/yp\n"
"# vi master.passwd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:723
msgid ""
"It is advisable to remove all entries for system accounts as well as any "
"user accounts that do not need to be propagated to the NIS clients, such as "
"the `root` and any other administrative accounts."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:727
msgid ""
"Ensure that the [.filename]#/var/yp/master.passwd# is neither group or world "
"readable by setting its permissions to `600`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:732
msgid ""
"After completing this task, initialize the NIS maps. FreeBSD includes the "
"man:ypinit[8] script to do this. When generating maps for the master "
"server, include `-m` and specify the NIS domain name:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:753
#, no-wrap
msgid ""
"ellington# ypinit -m test-domain\n"
"Server Type: MASTER Domain: test-domain\n"
"Creating an YP server will require that you answer a few questions.\n"
"Questions will all be asked at the beginning of the procedure.\n"
"Do you want this procedure to quit on non-fatal errors? [y/n: n] n\n"
"Ok, please remember to go back and redo manually whatever fails.\n"
"If not, something might not work.\n"
"At this point, we have to construct a list of this domains YP servers.\n"
"rod.darktech.org is already known as master server.\n"
"Please continue to add any slave servers, one per line. When you are\n"
"done with the list, type a <control D>.\n"
"master server : ellington\n"
"next host to add: coltrane\n"
"next host to add: ^D\n"
"The current list of NIS servers looks like this:\n"
"ellington\n"
"coltrane\n"
"Is this correct? [y/n: y] y\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:755
#, no-wrap
msgid "[..output from map generation..]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:758
#, no-wrap
msgid ""
"NIS Map update completed.\n"
"ellington has been setup as an YP master server without any errors.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:763
msgid ""
"This will create [.filename]#/var/yp/Makefile# from [.filename]#/var/yp/"
"Makefile.dist#. By default, this file assumes that the environment has a "
"single NIS server with only FreeBSD clients. Since `test-domain` has a "
"slave server, edit this line in [.filename]#/var/yp/Makefile# so that it "
"begins with a comment (`+#+`):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:767
#, no-wrap
msgid "NOPUSH = \"True\"\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:770
#, no-wrap
msgid "Adding New Users"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:775
msgid ""
"Every time a new user is created, the user account must be added to the "
"master NIS server and the NIS maps rebuilt. Until this occurs, the new user "
"will not be able to login anywhere except on the NIS master. For example, "
"to add the new user `jsmith` to the `test-domain` domain, run these commands "
"on the master server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:781
#, no-wrap
msgid ""
"# pw useradd jsmith\n"
"# cd /var/yp\n"
"# make test-domain\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:784
msgid ""
"The user could also be added using `adduser jsmith` instead of `pw useradd "
"smith`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:785
#, no-wrap
msgid "Setting up a NIS Slave Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:791
msgid ""
"To set up an NIS slave server, log on to the slave server and edit [."
"filename]#/etc/rc.conf# as for the master server. Do not generate any NIS "
"maps, as these already exist on the master server. When running `ypinit` on "
"the slave server, use `-s` (for slave) instead of `-m` (for master). This "
"option requires the name of the NIS master in addition to the domain name, "
"as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:795
#, no-wrap
msgid "coltrane# ypinit -s ellington test-domain\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:797
#, no-wrap
msgid "Server Type: SLAVE Domain: test-domain Master: ellington\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:800
#, no-wrap
msgid ""
"Creating an YP server will require that you answer a few questions.\n"
"Questions will all be asked at the beginning of the procedure.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:802
#, no-wrap
msgid "Do you want this procedure to quit on non-fatal errors? [y/n: n] n\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:847
#, no-wrap
msgid ""
"Ok, please remember to go back and redo manually whatever fails.\n"
"If not, something might not work.\n"
"There will be no further questions. The remainder of the procedure\n"
"should take a few minutes, to copy the databases from ellington.\n"
"Transferring netgroup...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring netgroup.byuser...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring netgroup.byhost...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring master.passwd.byuid...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring passwd.byuid...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring passwd.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring group.bygid...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring group.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring services.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring rpc.bynumber...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring rpc.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring protocols.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring master.passwd.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring networks.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring networks.byaddr...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring netid.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring hosts.byaddr...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring protocols.bynumber...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring ypservers...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring hosts.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:850
#, no-wrap
msgid ""
"coltrane has been setup as an YP slave server without any errors.\n"
"Remember to update map ypservers on ellington.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:854
msgid ""
"This will generate a directory on the slave server called [.filename]#/var/"
"yp/test-domain# which contains copies of the NIS master server's maps. "
"Adding these [.filename]#/etc/crontab# entries on each slave server will "
"force the slaves to sync their maps with the maps on the master server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:859
#, no-wrap
msgid ""
"20 * * * * root /usr/libexec/ypxfr passwd.byname\n"
"21 * * * * root /usr/libexec/ypxfr passwd.byuid\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:864
msgid ""
"These entries are not mandatory because the master server automatically "
"attempts to push any map changes to its slaves. However, since clients may "
"depend upon the slave server to provide correct password information, it is "
"recommended to force frequent password map updates. This is especially "
"important on busy networks where map updates might not always complete."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:866
msgid ""
"To finish the configuration, run `/etc/netstart` on the slave server in "
"order to start the NIS services."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:867
#, no-wrap
msgid "Setting Up an NIS Client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:876
msgid ""
"An NIS client binds to an NIS server using man:ypbind[8]. This daemon "
"broadcasts RPC requests on the local network. These requests specify the "
"domain name configured on the client. If an NIS server in the same domain "
"receives one of the broadcasts, it will respond to ypbind, which will record "
"the server's address. If there are several servers available, the client "
"will use the address of the first server to respond and will direct all of "
"its NIS requests to that server. The client will automatically ping the "
"server on a regular basis to make sure it is still available. If it fails "
"to receive a reply within a reasonable amount of time, ypbind will mark the "
"domain as unbound and begin broadcasting again in the hopes of locating "
"another server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:878
msgid "To configure a FreeBSD machine to be an NIS client:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:882
msgid ""
"Edit [.filename]#/etc/rc.conf# and add the following lines in order to set "
"the NIS domain name and start man:ypbind[8] during network startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:887
#, no-wrap
msgid ""
"nisdomainname=\"test-domain\"\n"
"nis_client_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:890
msgid ""
"To import all possible password entries from the NIS server, use `vipw` to "
"remove all user accounts except one from [.filename]#/etc/master.passwd#. "
"When removing the accounts, keep in mind that at least one local account "
"should remain and this account should be a member of `wheel`. If there is a "
"problem with NIS, this local account can be used to log in remotely, become "
"the superuser, and fix the problem. Before saving the edits, add the "
"following line to the end of the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:894
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1115
#, no-wrap
msgid "+:::::::::\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:900
msgid ""
"This line configures the client to provide anyone with a valid account in "
"the NIS server's password maps an account on the client. There are many "
"ways to configure the NIS client by modifying this line. One method is "
"described in <<network-netgroups>>. For more detailed reading, refer to the "
"book `Managing NFS and NIS`, published by O'Reilly Media."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:901
msgid ""
"To import all possible group entries from the NIS server, add this line to [."
"filename]#/etc/group#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:905
#, no-wrap
msgid "+:*::\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:909
msgid ""
"To start the NIS client immediately, execute the following commands as the "
"superuser:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:914
#, no-wrap
msgid ""
"# /etc/netstart\n"
"# service ypbind start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:917
msgid ""
"After completing these steps, running `ypcat passwd` on the client should "
"show the server's [.filename]#passwd# map."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:918
#, no-wrap
msgid "NIS Security"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:926
msgid ""
"Since RPC is a broadcast-based service, any system running ypbind within the "
"same domain can retrieve the contents of the NIS maps. To prevent "
"unauthorized transactions, man:ypserv[8] supports a feature called "
"\"securenets\" which can be used to restrict access to a given set of "
"hosts. By default, this information is stored in [.filename]#/var/yp/"
"securenets#, unless man:ypserv[8] is started with `-p` and an alternate "
"path. This file contains entries that consist of a network specification "
"and a network mask separated by white space. Lines starting with `+\"#\"+` "
"are considered to be comments. A sample [.filename]#securenets# might look "
"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:938
#, no-wrap
msgid ""
"# allow connections from local host -- mandatory\n"
"127.0.0.1 255.255.255.255\n"
"# allow connections from any host\n"
"# on the 192.168.128.0 network\n"
"192.168.128.0 255.255.255.0\n"
"# allow connections from any host\n"
"# between 10.0.0.0 to 10.0.15.255\n"
"# this includes the machines in the testlab\n"
"10.0.0.0 255.255.240.0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:943
msgid ""
"If man:ypserv[8] receives a request from an address that matches one of "
"these rules, it will process the request normally. If the address fails to "
"match a rule, the request will be ignored and a warning message will be "
"logged. If the [.filename]#securenets# does not exist, `ypserv` will allow "
"connections from any host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:947
msgid ""
"crossref:security[tcpwrappers,\"TCP Wrapper\"] is an alternate mechanism for "
"providing access control instead of [.filename]#securenets#. While either "
"access control mechanism adds some security, they are both vulnerable to "
"\"IP spoofing\" attacks. All NIS-related traffic should be blocked at the "
"firewall."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:951
msgid ""
"Servers using [.filename]#securenets# may fail to serve legitimate NIS "
"clients with archaic TCP/IP implementations. Some of these implementations "
"set all host bits to zero when doing broadcasts or fail to observe the "
"subnet mask when calculating the broadcast address. While some of these "
"problems can be fixed by changing the client configuration, other problems "
"may force the retirement of these client systems or the abandonment of [."
"filename]#securenets#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:955
msgid ""
"The use of TCP Wrapper increases the latency of the NIS server. The "
"additional delay may be long enough to cause timeouts in client programs, "
"especially in busy networks with slow NIS servers. If one or more clients "
"suffer from latency, convert those clients into NIS slave servers and force "
"them to bind to themselves."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:956
#, no-wrap
msgid "Barring Some Users"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:961
msgid ""
"In this example, the `basie` system is a faculty workstation within the NIS "
"domain. The [.filename]#passwd# map on the master NIS server contains "
"accounts for both faculty and students. This section demonstrates how to "
"allow faculty logins on this system while refusing student logins."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:965
msgid ""
"To prevent specified users from logging on to a system, even if they are "
"present in the NIS database, use `vipw` to add `-_username_` with the "
"correct number of colons towards the end of [.filename]#/etc/master.passwd# "
"on the client, where _username_ is the username of a user to bar from "
"logging in. The line with the blocked user must be before the `+` line that "
"allows NIS users. In this example, `bill` is barred from logging on to "
"`basie`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:986
#, no-wrap
msgid ""
"basie# cat /etc/master.passwd\n"
"root:[password]:0:0::0:0:The super-user:/root:/bin/csh\n"
"toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh\n"
"daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin\n"
"operator:*:2:5::0:0:System &:/:/usr/sbin/nologin\n"
"bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/usr/sbin/nologin\n"
"tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin\n"
"kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin\n"
"games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin\n"
"news:*:8:8::0:0:News Subsystem:/:/usr/sbin/nologin\n"
"man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/usr/sbin/nologin\n"
"bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin\n"
"uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico\n"
"xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/usr/sbin/nologin\n"
"pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin\n"
"nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin\n"
"-bill:::::::::\n"
"+:::::::::\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:988
#, no-wrap
msgid "basie#\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:992
#, no-wrap
msgid "Using Netgroups"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:995
msgid ""
"Barring specified users from logging on to individual systems becomes "
"unscaleable on larger networks and quickly loses the main benefit of NIS: "
"_centralized_ administration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:998
msgid ""
"Netgroups were developed to handle large, complex networks with hundreds of "
"users and machines. Their use is comparable to UNIX(R) groups, where the "
"main difference is the lack of a numeric ID and the ability to define a "
"netgroup by including both user accounts and other netgroups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1000
msgid ""
"To expand on the example used in this chapter, the NIS domain will be "
"extended to add the users and systems shown in Tables 28.2 and 28.3:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1001
#, no-wrap
msgid "Additional Users"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1005
#, no-wrap
msgid "User Name(s)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1008
#, no-wrap
msgid "`alpha`, `beta`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1010
#, no-wrap
msgid "IT department employees"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1011
#, no-wrap
msgid "`charlie`, `delta`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1013
#, no-wrap
msgid "IT department apprentices"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1014
#, no-wrap
msgid "`echo`, `foxtrott`, `golf`, ..."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1016
#, no-wrap
msgid "employees"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1017
#, no-wrap
msgid "`able`, `baker`, ..."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1018
#, no-wrap
msgid "interns"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1020
#, no-wrap
msgid "Additional Systems"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1024
#, no-wrap
msgid "Machine Name(s)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1027
#, no-wrap
msgid "`war`, `death`, `famine`, `pollution`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1029
#, no-wrap
msgid "Only IT employees are allowed to log onto these servers."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1030
#, no-wrap
msgid "`pride`, `greed`, `envy`, `wrath`, `lust`, `sloth`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1032
#, no-wrap
msgid "All members of the IT department are allowed to login onto these servers."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1033
#, no-wrap
msgid "`one`, `two`, `three`, `four`, ..."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1035
#, no-wrap
msgid "Ordinary workstations used by employees."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1036
#, no-wrap
msgid "`trashcan`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1037
#, no-wrap
msgid "A very old machine without any critical data. Even interns are allowed to use this system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1043
msgid ""
"When using netgroups to configure this scenario, each user is assigned to "
"one or more netgroups and logins are then allowed or forbidden for all "
"members of the netgroup. When adding a new machine, login restrictions must "
"be defined for all netgroups. When a new user is added, the account must be "
"added to one or more netgroups. If the NIS setup is planned carefully, only "
"one central configuration file needs modification to grant or deny access to "
"machines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1047
msgid ""
"The first step is the initialization of the NIS`netgroup` map. In FreeBSD, "
"this map is not created by default. On the NIS master server, use an editor "
"to create a map named [.filename]#/var/yp/netgroup#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1049
msgid ""
"This example creates four netgroups to represent IT employees, IT "
"apprentices, employees, and interns:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1057
#, no-wrap
msgid ""
"IT_EMP (,alpha,test-domain) (,beta,test-domain)\n"
"IT_APP (,charlie,test-domain) (,delta,test-domain)\n"
"USERS (,echo,test-domain) (,foxtrott,test-domain) \\\n"
" (,golf,test-domain)\n"
"INTERNS (,able,test-domain) (,baker,test-domain)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1062
msgid ""
"Each entry configures a netgroup. The first column in an entry is the name "
"of the netgroup. Each set of parentheses represents either a group of one "
"or more users or the name of another netgroup. When specifying a user, the "
"three comma-delimited fields inside each group represent:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1064
msgid ""
"The name of the host(s) where the other fields representing the user are "
"valid. If a hostname is not specified, the entry is valid on all hosts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1065
msgid "The name of the account that belongs to this netgroup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1066
msgid ""
"The NIS domain for the account. Accounts may be imported from other NIS "
"domains into a netgroup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1070
msgid ""
"If a group contains multiple users, separate each user with whitespace. "
"Additionally, each field may contain wildcards. See man:netgroup[5] for "
"details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1073
msgid ""
"Netgroup names longer than 8 characters should not be used. The names are "
"case sensitive and using capital letters for netgroup names is an easy way "
"to distinguish between user, machine and netgroup names."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1076
msgid ""
"Some non-FreeBSD NIS clients cannot handle netgroups containing more than 15 "
"entries. This limit may be circumvented by creating several sub-netgroups "
"with 15 users or fewer and a real netgroup consisting of the sub-netgroups, "
"as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1083
#, no-wrap
msgid ""
"BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]\n"
"BIGGRP2 (,joe16,domain) (,joe17,domain) [...]\n"
"BIGGRP3 (,joe31,domain) (,joe32,domain)\n"
"BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1086
msgid ""
"Repeat this process if more than 225 (15 times 15) users exist within a "
"single netgroup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1088
msgid "To activate and distribute the new NIS map:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1093
#, no-wrap
msgid ""
"ellington# cd /var/yp\n"
"ellington# make\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1097
msgid ""
"This will generate the three NIS maps [.filename]#netgroup#, [."
"filename]#netgroup.byhost# and [.filename]#netgroup.byuser#. Use the map "
"key option of man:ypcat[1] to check if the new NIS maps are available:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1103
#, no-wrap
msgid ""
"ellington% ypcat -k netgroup\n"
"ellington% ypcat -k netgroup.byhost\n"
"ellington% ypcat -k netgroup.byuser\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1108
msgid ""
"The output of the first command should resemble the contents of [.filename]#/"
"var/yp/netgroup#. The second command only produces output if host-specific "
"netgroups were created. The third command is used to get the list of "
"netgroups for a user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1111
msgid ""
"To configure a client, use man:vipw[8] to specify the name of the netgroup. "
"For example, on the server named `war`, replace this line:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1118
msgid "with"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1122
#, no-wrap
msgid "+@IT_EMP:::::::::\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1125
msgid ""
"This specifies that only the users defined in the netgroup `IT_EMP` will be "
"imported into this system's password database and only those users are "
"allowed to login to this system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1130
msgid ""
"This configuration also applies to the `~` function of the shell and all "
"routines which convert between user names and numerical user IDs. In other "
"words, `cd ~_user_` will not work, `ls -l` will show the numerical ID "
"instead of the username, and `find . -user joe -print` will fail with the "
"message `No such user`. To fix this, import all user entries without "
"allowing them to login into the servers. This can be achieved by adding an "
"extra line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1134
#, no-wrap
msgid "+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1137
msgid ""
"This line configures the client to import all entries but to replace the "
"shell in those entries with [.filename]#/usr/sbin/nologin#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1140
msgid ""
"Make sure that extra line is placed _after_ `+@IT_EMP:::::::::`. Otherwise, "
"all user accounts imported from NIS will have [.filename]#/usr/sbin/nologin# "
"as their login shell and no one will be able to login to the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1142
msgid ""
"To configure the less important servers, replace the old `+:::::::::` on the "
"servers with these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1148
#, no-wrap
msgid ""
"+@IT_EMP:::::::::\n"
"+@IT_APP:::::::::\n"
"+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1151
msgid "The corresponding lines for the workstations would be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1157
#, no-wrap
msgid ""
"+@IT_EMP:::::::::\n"
"+@USERS:::::::::\n"
"+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1164
msgid ""
"NIS supports the creation of netgroups from other netgroups which can be "
"useful if the policy regarding user access changes. One possibility is the "
"creation of role-based netgroups. For example, one might create a netgroup "
"called `BIGSRV` to define the login restrictions for the important servers, "
"another netgroup called `SMALLSRV` for the less important servers, and a "
"third netgroup called `USERBOX` for the workstations. Each of these "
"netgroups contains the netgroups that are allowed to login onto these "
"machines. The new entries for the NIS`netgroup` map would look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1170
#, no-wrap
msgid ""
"BIGSRV IT_EMP IT_APP\n"
"SMALLSRV IT_EMP IT_APP ITINTERN\n"
"USERBOX IT_EMP ITINTERN USERS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1175
msgid ""
"This method of defining login restrictions works reasonably well when it is "
"possible to define groups of machines with identical restrictions. "
"Unfortunately, this is the exception and not the rule. Most of the time, "
"the ability to define login restrictions on a per-machine basis is required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1180
msgid ""
"Machine-specific netgroup definitions are another possibility to deal with "
"the policy changes. In this scenario, the [.filename]#/etc/master.passwd# "
"of each system contains two lines starting with \"+\". The first line adds "
"a netgroup with the accounts allowed to login onto this machine and the "
"second line adds all other accounts with [.filename]#/usr/sbin/nologin# as "
"shell. It is recommended to use the \"ALL-CAPS\" version of the hostname as "
"the name of the netgroup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1185
#, no-wrap
msgid ""
"+@BOXNAME:::::::::\n"
"+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1190
msgid ""
"Once this task is completed on all the machines, there is no longer a need "
"to modify the local versions of [.filename]#/etc/master.passwd# ever again. "
"All further changes can be handled by modifying the NIS map. Here is an "
"example of a possible `netgroup` map for this scenario:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1228
#, no-wrap
msgid ""
"# Define groups of users first\n"
"IT_EMP (,alpha,test-domain) (,beta,test-domain)\n"
"IT_APP (,charlie,test-domain) (,delta,test-domain)\n"
"DEPT1 (,echo,test-domain) (,foxtrott,test-domain)\n"
"DEPT2 (,golf,test-domain) (,hotel,test-domain)\n"
"DEPT3 (,india,test-domain) (,juliet,test-domain)\n"
"ITINTERN (,kilo,test-domain) (,lima,test-domain)\n"
"D_INTERNS (,able,test-domain) (,baker,test-domain)\n"
"#\n"
"# Now, define some groups based on roles\n"
"USERS DEPT1 DEPT2 DEPT3\n"
"BIGSRV IT_EMP IT_APP\n"
"SMALLSRV IT_EMP IT_APP ITINTERN\n"
"USERBOX IT_EMP ITINTERN USERS\n"
"#\n"
"# And a groups for a special tasks\n"
"# Allow echo and golf to access our anti-virus-machine\n"
"SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)\n"
"#\n"
"# machine-based netgroups\n"
"# Our main servers\n"
"WAR BIGSRV\n"
"FAMINE BIGSRV\n"
"# User india needs access to this server\n"
"POLLUTION BIGSRV (,india,test-domain)\n"
"#\n"
"# This one is really important and needs more access restrictions\n"
"DEATH IT_EMP\n"
"#\n"
"# The anti-virus-machine mentioned above\n"
"ONE SECURITY\n"
"#\n"
"# Restrict a machine to a single user\n"
"TWO (,hotel,test-domain)\n"
"# [...more groups to follow]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1232
msgid ""
"It may not always be advisable to use machine-based netgroups. When "
"deploying a couple of dozen or hundreds of systems, role-based netgroups "
"instead of machine-based netgroups may be used to keep the size of the NIS "
"map within reasonable limits."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1233
#, no-wrap
msgid "Password Formats"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1238
msgid ""
"NIS requires that all hosts within an NIS domain use the same format for "
"encrypting passwords. If users have trouble authenticating on an NIS "
"client, it may be due to a differing password format. In a heterogeneous "
"network, the format must be supported by all operating systems, where DES is "
"the lowest common standard."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1240
msgid ""
"To check which format a server or client is using, look at this section of [."
"filename]#/etc/login.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1247
#, no-wrap
msgid ""
"default:\\\n"
"\t:passwd_format=des:\\\n"
"\t:copyright=/etc/COPYRIGHT:\\\n"
"\t[Further entries elided]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1252
msgid ""
"In this example, the system is using the DES format for password hashing. "
"Other possible values include `blf` for Blowfish, `md5` for MD5, `sha256` "
"and `sha512` for SHA-256 and SHA-512 respectively. For more information and "
"the up to date list of what is available on your system, consult the man:"
"crypt[3] manpage."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1254
msgid ""
"If the format on a host needs to be edited to match the one being used in "
"the NIS domain, the login capability database must be rebuilt after saving "
"the change:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1258
#, no-wrap
msgid "# cap_mkdb /etc/login.conf\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1263
msgid ""
"The format of passwords for existing user accounts will not be updated until "
"each user changes their password _after_ the login capability database is "
"rebuilt."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1266
#, no-wrap
msgid "Lightweight Directory Access Protocol (LDAP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1272
msgid ""
"The Lightweight Directory Access Protocol (LDAP) is an application layer "
"protocol used to access, modify, and authenticate objects using a "
"distributed directory information service. Think of it as a phone or record "
"book which stores several levels of hierarchical, homogeneous information. "
"It is used in Active Directory and OpenLDAP networks and allows users to "
"access to several levels of internal information utilizing a single "
"account. For example, email authentication, pulling employee contact "
"information, and internal website authentication might all make use of a "
"single user account in the LDAP server's record base."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1275
msgid ""
"This section provides a quick start guide for configuring an LDAP server on "
"a FreeBSD system. It assumes that the administrator already has a design "
"plan which includes the type of information to store, what that information "
"will be used for, which users should have access to that information, and "
"how to secure this information from unauthorized access."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1276
#, no-wrap
msgid "LDAP Terminology and Structure"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1282
msgid ""
"LDAP uses several terms which should be understood before starting the "
"configuration. All directory entries consist of a group of _attributes_. "
"Each of these attribute sets contains a unique identifier known as a "
"_Distinguished Name_ (DN) which is normally built from several other "
"attributes such as the common or _Relative Distinguished Name_ (RDN). "
"Similar to how directories have absolute and relative paths, consider a DN "
"as an absolute path and the RDN as the relative path."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1285
msgid ""
"An example LDAP entry looks like the following. This example searches for "
"the entry for the specified user account (`uid`), organizational unit "
"(`ou`), and organization (`o`):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1296
#, no-wrap
msgid ""
"% ldapsearch -xb \"uid=trhodes,ou=users,o=example.com\"\n"
"# extended LDIF\n"
"#\n"
"# LDAPv3\n"
"# base <uid=trhodes,ou=users,o=example.com> with scope subtree\n"
"# filter: (objectclass=*)\n"
"# requesting: ALL\n"
"#\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1303
#, no-wrap
msgid ""
"# trhodes, users, example.com\n"
"dn: uid=trhodes,ou=users,o=example.com\n"
"mail: trhodes@example.com\n"
"cn: Tom Rhodes\n"
"uid: trhodes\n"
"telephoneNumber: (123) 456-7890\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1307
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1581
#, no-wrap
msgid ""
"# search result\n"
"search: 2\n"
"result: 0 Success\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1310
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1584
#, no-wrap
msgid ""
"# numResponses: 2\n"
"# numEntries: 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1314
msgid ""
"This example entry shows the values for the `dn`, `mail`, `cn`, `uid`, and "
"`telephoneNumber` attributes. The cn attribute is the RDN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1316
msgid ""
"More information about LDAP and its terminology can be found at http://www."
"openldap.org/doc/admin24/intro.html[http://www.openldap.org/doc/admin24/"
"intro.html]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1318
#, no-wrap
msgid "Configuring an LDAP Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1322
msgid ""
"FreeBSD does not provide a built-in LDAP server. Begin the configuration by "
"installing package:net/openldap-server[] package or port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1326
#, no-wrap
msgid "# pkg install openldap-server\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1331
msgid ""
"There is a large set of default options enabled in the extref:{linux-users}"
"[package, software]. Review them by running `pkg info openldap-server`. If "
"they are not sufficient (for example if SQL support is needed), please "
"consider recompiling the port using the appropriate crossref:ports[ports-"
"using,framework]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1334
msgid ""
"The installation creates the directory [.filename]#/var/db/openldap-data# to "
"hold the data. The directory to store the certificates must be created:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1338
#, no-wrap
msgid "# mkdir /usr/local/etc/openldap/private\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1345
msgid ""
"The next phase is to configure the Certificate Authority. The following "
"commands must be executed from [.filename]#/usr/local/etc/openldap/"
"private#. This is important as the file permissions need to be restrictive "
"and users should not have access to these files. More detailed information "
"about certificates and their parameters can be found in crossref:"
"security[openssl,\"OpenSSL\"]. To create the Certificate Authority, start "
"with this command and follow the prompts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1349
#, no-wrap
msgid "# openssl req -days 365 -nodes -new -x509 -keyout ca.key -out ../ca.crt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1354
msgid ""
"The entries for the prompts may be generic _except_ for the `Common Name`. "
"This entry must be _different_ than the system hostname. If this will be a "
"self signed certificate, prefix the hostname with `CA` for Certificate "
"Authority."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1357
msgid ""
"The next task is to create a certificate signing request and a private key. "
"Input this command and follow the prompts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1361
#, no-wrap
msgid "# openssl req -days 365 -nodes -new -keyout server.key -out server.csr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1365
msgid ""
"During the certificate generation process, be sure to correctly set the "
"`Common Name` attribute. The Certificate Signing Request must be signed "
"with the Certificate Authority in order to be used as a valid certificate:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1369
#, no-wrap
msgid "# openssl x509 -req -days 365 -in server.csr -out ../server.crt -CA ../ca.crt -CAkey ca.key -CAcreateserial\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1372
msgid ""
"The final part of the certificate generation process is to generate and sign "
"the client certificates:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1377
#, no-wrap
msgid ""
"# openssl req -days 365 -nodes -new -keyout client.key -out client.csr\n"
"# openssl x509 -req -days 3650 -in client.csr -out ../client.crt -CA ../ca.crt -CAkey ca.key\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1381
msgid ""
"Remember to use the same `Common Name` attribute when prompted. When "
"finished, ensure that a total of eight (8) new files have been generated "
"through the proceeding commands."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1384
msgid ""
"The daemon running the OpenLDAP server is [.filename]#slapd#. Its "
"configuration is performed through [.filename]#slapd.ldif#: the old [."
"filename]#slapd.conf# has been deprecated by OpenLDAP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1391
msgid ""
"http://www.openldap.org/doc/admin24/slapdconf2.html[Configuration examples] "
"for [.filename]#slapd.ldif# are available and can also be found in [."
"filename]#/usr/local/etc/openldap/slapd.ldif.sample#. Options are "
"documented in slapd-config(5). Each section of [.filename]#slapd.ldif#, "
"like all the other LDAP attribute sets, is uniquely identified through a "
"DN. Be sure that no blank lines are left between the `dn:` statement and "
"the desired end of the section. In the following example, TLS will be used "
"to implement a secure channel. The first section represents the global "
"configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1413
#, no-wrap
msgid ""
"#\n"
"# See slapd-config(5) for details on configuration options.\n"
"# This file should NOT be world readable.\n"
"#\n"
"dn: cn=config\n"
"objectClass: olcGlobal\n"
"cn: config\n"
"#\n"
"#\n"
"# Define global ACLs to disable default read access.\n"
"#\n"
"olcArgsFile: /var/run/openldap/slapd.args\n"
"olcPidFile: /var/run/openldap/slapd.pid\n"
"olcTLSCertificateFile: /usr/local/etc/openldap/server.crt\n"
"olcTLSCertificateKeyFile: /usr/local/etc/openldap/private/server.key\n"
"olcTLSCACertificateFile: /usr/local/etc/openldap/ca.crt\n"
"#olcTLSCipherSuite: HIGH\n"
"olcTLSProtocolMin: 3.1\n"
"olcTLSVerifyClient: never\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1418
msgid ""
"The Certificate Authority, server certificate and server private key files "
"must be specified here. It is recommended to let the clients choose the "
"security cipher and omit option `olcTLSCipherSuite` (incompatible with TLS "
"clients other than [.filename]#openssl#). Option `olcTLSProtocolMin` lets "
"the server require a minimum security level: it is recommended. While "
"verification is mandatory for the server, it is not for the client: "
"`olcTLSVerifyClient: never`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1420
msgid ""
"The second section is about the backend modules and can be configured as "
"follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1436
#, no-wrap
msgid ""
"#\n"
"# Load dynamic backend modules:\n"
"#\n"
"dn: cn=module,cn=config\n"
"objectClass: olcModuleList\n"
"cn: module\n"
"olcModulepath:\t/usr/local/libexec/openldap\n"
"olcModuleload:\tback_mdb.la\n"
"#olcModuleload:\tback_bdb.la\n"
"#olcModuleload:\tback_hdb.la\n"
"#olcModuleload:\tback_ldap.la\n"
"#olcModuleload:\tback_passwd.la\n"
"#olcModuleload:\tback_shell.la\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1439
msgid ""
"The third section is devoted to load the needed `ldif` schemas to be used by "
"the databases: they are essential."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1445
#, no-wrap
msgid ""
"dn: cn=schema,cn=config\n"
"objectClass: olcSchemaConfig\n"
"cn: schema\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1450
#, no-wrap
msgid ""
"include: file:///usr/local/etc/openldap/schema/core.ldif\n"
"include: file:///usr/local/etc/openldap/schema/cosine.ldif\n"
"include: file:///usr/local/etc/openldap/schema/inetorgperson.ldif\n"
"include: file:///usr/local/etc/openldap/schema/nis.ldif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1453
msgid "Next, the frontend configuration section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1487
#, no-wrap
msgid ""
"# Frontend settings\n"
"#\n"
"dn: olcDatabase={-1}frontend,cn=config\n"
"objectClass: olcDatabaseConfig\n"
"objectClass: olcFrontendConfig\n"
"olcDatabase: {-1}frontend\n"
"olcAccess: to * by * read\n"
"#\n"
"# Sample global access control policy:\n"
"#\tRoot DSE: allow anyone to read it\n"
"#\tSubschema (sub)entry DSE: allow anyone to read it\n"
"#\tOther DSEs:\n"
"#\t\tAllow self write access\n"
"#\t\tAllow authenticated users read access\n"
"#\t\tAllow anonymous users to authenticate\n"
"#\n"
"#olcAccess: to dn.base=\"\" by * read\n"
"#olcAccess: to dn.base=\"cn=Subschema\" by * read\n"
"#olcAccess: to *\n"
"#\tby self write\n"
"#\tby users read\n"
"#\tby anonymous auth\n"
"#\n"
"# if no access controls are present, the default policy\n"
"# allows anyone and everyone to read anything but restricts\n"
"# updates to rootdn. (e.g., \"access to * by * read\")\n"
"#\n"
"# rootdn can always read and write EVERYTHING!\n"
"#\n"
"olcPasswordHash: {SSHA}\n"
"# {SSHA} is already the default for olcPasswordHash\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1490
msgid ""
"Another section is devoted to the _configuration backend_, the only way to "
"later access the OpenLDAP server configuration is as a global super-user."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1498
#, no-wrap
msgid ""
"dn: olcDatabase={0}config,cn=config\n"
"objectClass: olcDatabaseConfig\n"
"olcDatabase: {0}config\n"
"olcAccess: to * by * none\n"
"olcRootPW: {SSHA}iae+lrQZILpiUdf16Z9KmDmSwT77Dj4U\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1503
msgid ""
"The default administrator username is `cn=config`. Type [."
"filename]#slappasswd# in a shell, choose a password and use its hash in "
"`olcRootPW`. If this option is not specified now, before [.filename]#slapd."
"ldif# is imported, no one will be later able to modify the _global "
"configuration_ section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1505
msgid "The last section is about the database backend:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1529
#, no-wrap
msgid ""
"#######################################################################\n"
"# LMDB database definitions\n"
"#######################################################################\n"
"#\n"
"dn: olcDatabase=mdb,cn=config\n"
"objectClass: olcDatabaseConfig\n"
"objectClass: olcMdbConfig\n"
"olcDatabase: mdb\n"
"olcDbMaxSize: 1073741824\n"
"olcSuffix: dc=domain,dc=example\n"
"olcRootDN: cn=mdbadmin,dc=domain,dc=example\n"
"# Cleartext passwords, especially for the rootdn, should\n"
"# be avoided. See slappasswd(8) and slapd-config(5) for details.\n"
"# Use of strong authentication encouraged.\n"
"olcRootPW: {SSHA}X2wHvIWDk6G76CQyCMS1vDCvtICWgn0+\n"
"# The database directory MUST exist prior to running slapd AND\n"
"# should only be accessible by the slapd and slap tools.\n"
"# Mode 700 recommended.\n"
"olcDbDirectory:\t/var/db/openldap-data\n"
"# Indices to maintain\n"
"olcDbIndex: objectClass eq\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1534
msgid ""
"This database hosts the _actual contents_ of the LDAP directory. Types "
"other than `mdb` are available. Its super-user, not to be confused with the "
"global one, is configured here: a (possibly custom) username in `olcRootDN` "
"and the password hash in `olcRootPW`; [.filename]#slappasswd# can be used as "
"before."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1537
msgid ""
"This http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=tree;f=tests/"
"data/regressions/its8444;h=8a5e808e63b0de3d2bdaf2cf34fecca8577ca7fd;"
"hb=HEAD[repository] contains four examples of [.filename]#slapd.ldif#. To "
"convert an existing [.filename]#slapd.conf# into [.filename]#slapd.ldif#, "
"refer to http://www.openldap.org/doc/admin24/slapdconf2.html[this page] "
"(please note that this may introduce some unuseful options)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1540
msgid ""
"When the configuration is completed, [.filename]#slapd.ldif# must be placed "
"in an empty directory. It is recommended to create it as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1544
#, no-wrap
msgid "# mkdir /usr/local/etc/openldap/slapd.d/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1547
msgid "Import the configuration database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1551
#, no-wrap
msgid "# /usr/local/sbin/slapadd -n0 -F /usr/local/etc/openldap/slapd.d/ -l /usr/local/etc/openldap/slapd.ldif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1554
msgid "Start the [.filename]#slapd# daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1558
#, no-wrap
msgid "# /usr/local/libexec/slapd -F /usr/local/etc/openldap/slapd.d/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1562
msgid ""
"Option `-d` can be used for debugging, as specified in slapd(8). To verify "
"that the server is running and working:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1573
#, no-wrap
msgid ""
"# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts\n"
"# extended LDIF\n"
"#\n"
"# LDAPv3\n"
"# base <> with scope baseObject\n"
"# filter: (objectclass=*)\n"
"# requesting: namingContexts\n"
"#\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1577
#, no-wrap
msgid ""
"#\n"
"dn:\n"
"namingContexts: dc=domain,dc=example\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1589
msgid ""
"The server must still be trusted. If that has never been done before, "
"follow these instructions. Install the OpenSSL package or port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1593
#, no-wrap
msgid "# pkg install openssl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1596
msgid ""
"From the directory where [.filename]#ca.crt# is stored (in this example, [."
"filename]#/usr/local/etc/openldap#), run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1600
#, no-wrap
msgid "# c_rehash .\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1604
msgid ""
"Both the CA and the server certificate are now correctly recognized in their "
"respective roles. To verify this, run this command from the [."
"filename]#server.crt# directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1608
#, no-wrap
msgid "# openssl verify -verbose -CApath . server.crt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1612
msgid ""
"If [.filename]#slapd# was running, restart it. As stated in [.filename]#/"
"usr/local/etc/rc.d/slapd#, to properly run [.filename]#slapd# at boot the "
"following lines must be added to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1620
#, no-wrap
msgid ""
"slapd_enable=\"YES\"\n"
"slapd_flags='-h \"ldapi://%2fvar%2frun%2fopenldap%2fldapi/\n"
"ldap://0.0.0.0/\"'\n"
"slapd_sockets=\"/var/run/openldap/ldapi\"\n"
"slapd_cn_config=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1624
msgid ""
"[.filename]#slapd# does not provide debugging at boot. Check [.filename]#/"
"var/log/debug.log#, [.filename]#dmesg -a# and [.filename]#/var/log/messages# "
"for this purpose."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1627
msgid ""
"The following example adds the group `team` and the user `john` to the "
"`domain.example` LDAP database, which is still empty. First, create the "
"file [.filename]#domain.ldif#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1636
#, no-wrap
msgid ""
"# cat domain.ldif\n"
"dn: dc=domain,dc=example\n"
"objectClass: dcObject\n"
"objectClass: organization\n"
"o: domain.example\n"
"dc: domain\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1641
#, no-wrap
msgid ""
"dn: ou=groups,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: organizationalunit\n"
"ou: groups\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1646
#, no-wrap
msgid ""
"dn: ou=users,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: organizationalunit\n"
"ou: users\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1652
#, no-wrap
msgid ""
"dn: cn=team,ou=groups,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: posixGroup\n"
"cn: team\n"
"gidNumber: 10001\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1665
#, no-wrap
msgid ""
"dn: uid=john,ou=users,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: account\n"
"objectClass: posixAccount\n"
"objectClass: shadowAccount\n"
"cn: John McUser\n"
"uid: john\n"
"uidNumber: 10001\n"
"gidNumber: 10001\n"
"homeDirectory: /home/john/\n"
"loginShell: /usr/bin/bash\n"
"userPassword: secret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1671
msgid ""
"See the OpenLDAP documentation for more details. Use [."
"filename]#slappasswd# to replace the plain text password `secret` with a "
"hash in `userPassword`. The path specified as `loginShell` must exist in "
"all the systems where `john` is allowed to login. Finally, use the `mdb` "
"administrator to modify the database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1675
#, no-wrap
msgid "# ldapadd -W -D \"cn=mdbadmin,dc=domain,dc=example\" -f domain.ldif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1680
msgid ""
"Modifications to the _global configuration_ section can only be performed by "
"the global super-user. For example, assume that the option "
"`olcTLSCipherSuite: HIGH:MEDIUM:SSLv3` was initially specified and must now "
"be deleted. First, create a file that contains the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1687
#, no-wrap
msgid ""
"# cat global_mod\n"
"dn: cn=config\n"
"changetype: modify\n"
"delete: olcTLSCipherSuite\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1690
msgid "Then, apply the modifications:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1694
#, no-wrap
msgid "# ldapmodify -f global_mod -x -D \"cn=config\" -W\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1699
msgid ""
"When asked, provide the password chosen in the _configuration backend_ "
"section. The username is not required: here, `cn=config` represents the DN "
"of the database section to be modified. Alternatively, use `ldapmodify` to "
"delete a single line of the database, `ldapdelete` to delete a whole entry."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1701
msgid ""
"If something goes wrong, or if the global super-user cannot access the "
"configuration backend, it is possible to delete and re-write the whole "
"configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1705
#, no-wrap
msgid "# rm -rf /usr/local/etc/openldap/slapd.d/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1709
msgid ""
"[.filename]#slapd.ldif# can then be edited and imported again. Please, "
"follow this procedure only when no other solution is available."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1712
msgid ""
"This is the configuration of the server only. The same machine can also "
"host an LDAP client, with its own separate configuration."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1714
#, no-wrap
msgid "Dynamic Host Configuration Protocol (DHCP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1721
msgid ""
"The Dynamic Host Configuration Protocol (DHCP) allows a system to connect to "
"a network in order to be assigned the necessary addressing information for "
"communication on that network. FreeBSD includes the OpenBSD version of "
"`dhclient` which is used by the client to obtain the addressing "
"information. FreeBSD does not install a DHCP server, but several servers "
"are available in the FreeBSD Ports Collection. The DHCP protocol is fully "
"described in http://www.freesoft.org/CIE/RFC/2131/[RFC 2131]. Informational "
"resources are also available at http://www.isc.org/downloads/dhcp/[isc.org/"
"downloads/dhcp/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1724
msgid ""
"This section describes how to use the built-in DHCP client. It then "
"describes how to install and configure a DHCP server."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1730
msgid ""
"In FreeBSD, the man:bpf[4] device is needed by both the DHCP server and DHCP "
"client. This device is included in the [.filename]#GENERIC# kernel that is "
"installed with FreeBSD. Users who prefer to create a custom kernel need to "
"keep this device if DHCP is used."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1732
msgid ""
"It should be noted that [.filename]#bpf# also allows privileged users to run "
"network packet sniffers on that system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1735
#, no-wrap
msgid "Configuring a DHCP Client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1739
msgid ""
"DHCP client support is included in the FreeBSD installer, making it easy to "
"configure a newly installed system to automatically receive its networking "
"addressing information from an existing DHCP server. Refer to crossref:"
"bsdinstall[bsdinstall-post,\"Accounts, Time Zone, Services and Hardening\"] "
"for examples of network configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1747
msgid ""
"When `dhclient` is executed on the client machine, it begins broadcasting "
"requests for configuration information. By default, these requests use UDP "
"port 68. The server replies on UDP port 67, giving the client an IP address "
"and other relevant network information such as a subnet mask, default "
"gateway, and DNS server addresses. This information is in the form of a "
"DHCP \"lease\" and is valid for a configurable time. This allows stale IP "
"addresses for clients no longer connected to the network to automatically be "
"reused. DHCP clients can obtain a great deal of information from the "
"server. An exhaustive list may be found in man:dhcp-options[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1750
msgid ""
"By default, when a FreeBSD system boots, its DHCP client runs in the "
"background, or _asynchronously_. Other startup scripts continue to run "
"while the DHCP process completes, which speeds up system startup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1755
msgid ""
"Background DHCP works well when the DHCP server responds quickly to the "
"client's requests. However, DHCP may take a long time to complete on some "
"systems. If network services attempt to run before DHCP has assigned the "
"network addressing information, they will fail. Using DHCP in _synchronous_ "
"mode prevents this problem as it pauses startup until the DHCP configuration "
"has completed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1757
msgid ""
"This line in [.filename]#/etc/rc.conf# is used to configure background or "
"asynchronous mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1761
#, no-wrap
msgid "ifconfig_fxp0=\"DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1765
msgid ""
"This line may already exist if the system was configured to use DHCP during "
"installation. Replace the _fxp0_ shown in these examples with the name of "
"the interface to be dynamically configured, as described in crossref:"
"config[config-network-setup,“Setting Up Network Interface Cards”]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1767
msgid ""
"To instead configure the system to use synchronous mode, and to pause during "
"startup while DHCP completes, use \"`SYNCDHCP`\":"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1771
#, no-wrap
msgid "ifconfig_fxp0=\"SYNCDHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1775
msgid ""
"Additional client options are available. Search for `dhclient` in man:rc."
"conf[5] for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1777
msgid "The DHCP client uses the following files:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1779
msgid "[.filename]#/etc/dhclient.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1783
msgid ""
"The configuration file used by `dhclient`. Typically, this file contains "
"only comments as the defaults are suitable for most clients. This "
"configuration file is described in man:dhclient.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1784
msgid "[.filename]#/sbin/dhclient#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1786
msgid ""
"More information about the command itself can be found in man:dhclient[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1787
msgid "[.filename]#/sbin/dhclient-script#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1790
msgid ""
"The FreeBSD-specific DHCP client configuration script. It is described in "
"man:dhclient-script[8], but should not need any user modification to "
"function properly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1791
msgid "[.filename]#/var/db/dhclient.leases.interface#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1793
msgid ""
"The DHCP client keeps a database of valid leases in this file, which is "
"written as a log and is described in man:dhclient.leases[5]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1796
#, no-wrap
msgid "Installing and Configuring a DHCP Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1800
msgid ""
"This section demonstrates how to configure a FreeBSD system to act as a DHCP "
"server using the Internet Systems Consortium (ISC) implementation of the "
"DHCP server. This implementation and its documentation can be installed "
"using the package:net/isc-dhcp44-server[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1803
msgid ""
"The installation of package:net/isc-dhcp44-server[] installs a sample "
"configuration file. Copy [.filename]#/usr/local/etc/dhcpd.conf.example# to "
"[.filename]#/usr/local/etc/dhcpd.conf# and make any edits to this new file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1806
msgid ""
"The configuration file is comprised of declarations for subnets and hosts "
"which define the information that is provided to DHCP clients. For example, "
"these lines configure the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1812
#, no-wrap
msgid ""
"option domain-name \"example.org\";<.>\n"
"option domain-name-servers ns1.example.org;<.>\n"
"option subnet-mask 255.255.255.0;<.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1816
#, no-wrap
msgid ""
"default-lease-time 600;<.>\n"
"max-lease-time 72400;<.>\n"
"ddns-update-style none;<.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1821
#, no-wrap
msgid ""
"subnet 10.254.239.0 netmask 255.255.255.224 {\n"
" range 10.254.239.10 10.254.239.20;<.>\n"
" option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;<.>\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1826
#, no-wrap
msgid ""
"host fantasia {\n"
" hardware ethernet 08:00:07:26:c0:a5;<.>\n"
" fixed-address fantasia.fugue.com;<.>\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1829
msgid ""
"This option specifies the default search domain that will be provided to "
"clients. Refer to man:resolv.conf[5] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1830
msgid ""
"This option specifies a comma separated list of DNS servers that the client "
"should use. They can be listed by their Fully Qualified Domain Names (FQDN), "
"as seen in the example, or by their IP addresses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1831
msgid "The subnet mask that will be provided to clients."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1832
msgid ""
"The default lease expiry time in seconds. A client can be configured to "
"override this value."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1833
msgid ""
"The maximum allowed length of time, in seconds, for a lease. Should a client "
"request a longer lease, a lease will still be issued, but it will only be "
"valid for `max-lease-time`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1834
msgid ""
"The default of `none` disables dynamic DNS updates. Changing this to "
"`interim` configures the DHCP server to update a DNS server whenever it "
"hands out a lease so that the DNS server knows which IP addresses are "
"associated with which computers in the network. Do not change the default "
"setting unless the DNS server has been configured to support dynamic DNS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1835
msgid ""
"This line creates a pool of available IP addresses which are reserved for "
"allocation to DHCP clients. The range of addresses must be valid for the "
"network or subnet specified in the previous line."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1836
msgid ""
"Declares the default gateway that is valid for the network or subnet "
"specified before the opening `{` bracket."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1837
msgid ""
"Specifies the hardware MAC address of a client so that the DHCP server can "
"recognize the client when it makes a request."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1838
msgid ""
"Specifies that this host should always be given the same IP address. Using "
"the hostname is correct, since the DHCP server will resolve the hostname "
"before returning the lease information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1841
msgid ""
"This configuration file supports many more options. Refer to dhcpd.conf(5), "
"installed with the server, for details and examples."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1843
msgid ""
"Once the configuration of [.filename]#dhcpd.conf# is complete, enable the "
"DHCP server in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1848
#, no-wrap
msgid ""
"dhcpd_enable=\"YES\"\n"
"dhcpd_ifaces=\"dc0\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1851
msgid ""
"Replace the `dc0` with the interface (or interfaces, separated by "
"whitespace) that the DHCP server should listen on for DHCP client requests."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1853
msgid "Start the server by issuing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1857
#, no-wrap
msgid "# service isc-dhcpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1860
msgid ""
"Any future changes to the configuration of the server will require the dhcpd "
"service to be stopped and then started using man:service[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1863
msgid ""
"The DHCP server uses the following files. Note that the manual pages are "
"installed with the server software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1865
msgid "[.filename]#/usr/local/sbin/dhcpd#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1867
msgid "More information about the dhcpd server can be found in dhcpd(8)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1868
msgid "[.filename]#/usr/local/etc/dhcpd.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1871
msgid ""
"The server configuration file needs to contain all the information that "
"should be provided to clients, along with information regarding the "
"operation of the server. This configuration file is described in dhcpd."
"conf(5)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1872
msgid "[.filename]#/var/db/dhcpd.leases#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1875
msgid ""
"The DHCP server keeps a database of leases it has issued in this file, which "
"is written as a log. Refer to dhcpd.leases(5), which gives a slightly "
"longer description."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1876
msgid "[.filename]#/usr/local/sbin/dhcrelay#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1880
msgid ""
"This daemon is used in advanced environments where one DHCP server forwards "
"a request from a client to another DHCP server on a separate network. If "
"this functionality is required, install the package:net/isc-dhcp44-relay[] "
"package or port. The installation includes dhcrelay(8) which provides more "
"detail."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1883
#, no-wrap
msgid "Domain Name System (DNS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1888
msgid ""
"Domain Name System (DNS) is the protocol through which domain names are "
"mapped to IP addresses, and vice versa. DNS is coordinated across the "
"Internet through a somewhat complex system of authoritative root, Top Level "
"Domain (TLD), and other smaller-scale name servers, which host and cache "
"individual domain information. It is not necessary to run a name server to "
"perform DNS lookups on a system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1890
msgid "The following table describes some of the terms associated with DNS:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1891
#, no-wrap
msgid "DNS Terminology"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1897
#, no-wrap
msgid "Definition"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1898
#, no-wrap
msgid "Forward DNS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1900
#, no-wrap
msgid "Mapping of hostnames to IP addresses."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1901
#, no-wrap
msgid "Origin"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1903
#, no-wrap
msgid "Refers to the domain covered in a particular zone file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1904
#, no-wrap
msgid "Resolver"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1906
#, no-wrap
msgid "A system process through which a machine queries a name server for zone information."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1907
#, no-wrap
msgid "Reverse DNS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1909
#, no-wrap
msgid "Mapping of IP addresses to hostnames."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1910
#, no-wrap
msgid "Root zone"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1912
#, no-wrap
msgid "The beginning of the Internet zone hierarchy. All zones fall under the root zone, similar to how all files in a file system fall under the root directory."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1913
#, no-wrap
msgid "Zone"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1914
#, no-wrap
msgid "An individual domain, subdomain, or portion of the DNS administered by the same authority."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1917
msgid "Examples of zones:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1919
msgid "`.` is how the root zone is usually referred to in documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1920
msgid "`org.` is a Top Level Domain (TLD) under the root zone."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1921
msgid "`example.org.` is a zone under the `org.`TLD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1922
msgid ""
"`1.168.192.in-addr.arpa` is a zone referencing all IP addresses which fall "
"under the `192.168.1.*`IP address space."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1926
msgid ""
"As one can see, the more specific part of a hostname appears to its left. "
"For example, `example.org.` is more specific than `org.`, as `org.` is more "
"specific than the root zone. The layout of each part of a hostname is much "
"like a file system: the [.filename]#/dev# directory falls within the root, "
"and so on."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1927
#, no-wrap
msgid "Reasons to Run a Name Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1930
msgid ""
"Name servers generally come in two forms: authoritative name servers, and "
"caching (also known as resolving) name servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1932
msgid "An authoritative name server is needed when:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1934
msgid ""
"One wants to serve DNS information to the world, replying authoritatively to "
"queries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1935
msgid ""
"A domain, such as `example.org`, is registered and IP addresses need to be "
"assigned to hostnames under it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1936
msgid "An IP address block requires reverse DNS entries (IP to hostname)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1937
msgid "A backup or second name server, called a slave, will reply to queries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1939
msgid "A caching name server is needed when:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1941
msgid ""
"A local DNS server may cache and respond more quickly than querying an "
"outside name server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1945
msgid ""
"When one queries for `www.FreeBSD.org`, the resolver usually queries the "
"uplink ISP's name server, and retrieves the reply. With a local, caching "
"DNS server, the query only has to be made once to the outside world by the "
"caching DNS server. Additional queries will not have to go outside the "
"local network, since the information is cached locally."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1946
#, no-wrap
msgid "DNS Server Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1951
msgid ""
"Unbound is provided in the FreeBSD base system. By default, it will provide "
"DNS resolution to the local machine only. While the base system package can "
"be configured to provide resolution services beyond the local machine, it is "
"recommended that such requirements be addressed by installing Unbound from "
"the FreeBSD Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1953
msgid "To enable Unbound, add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1957
#, no-wrap
msgid "local_unbound_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1960
msgid ""
"Any existing nameservers in [.filename]#/etc/resolv.conf# will be configured "
"as forwarders in the new Unbound configuration."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1966
msgid ""
"If any of the listed nameservers do not support DNSSEC, local DNS resolution "
"will fail. Be sure to test each nameserver and remove any that fail the "
"test. The following command will show the trust tree or a failure for a "
"nameserver running on `192.168.1.1`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1970
#, no-wrap
msgid "% drill -S FreeBSD.org @192.168.1.1\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1974
msgid "Once each nameserver is confirmed to support DNSSEC, start Unbound:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1978
#, no-wrap
msgid "# service local_unbound onestart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1982
msgid ""
"This will take care of updating [.filename]#/etc/resolv.conf# so that "
"queries for DNSSEC secured domains will now work. For example, run the "
"following to validate the FreeBSD.org DNSSEC trust tree:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1988
#, no-wrap
msgid ""
"% drill -S FreeBSD.org\n"
";; Number of trusted keys: 1\n"
";; Chasing: freebsd.org. A\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2004
#, no-wrap
msgid ""
"DNSSEC Trust tree:\n"
"freebsd.org. (A)\n"
"|---freebsd.org. (DNSKEY keytag: 36786 alg: 8 flags: 256)\n"
" |---freebsd.org. (DNSKEY keytag: 32659 alg: 8 flags: 257)\n"
" |---freebsd.org. (DS keytag: 32659 digest type: 2)\n"
" |---org. (DNSKEY keytag: 49587 alg: 7 flags: 256)\n"
" |---org. (DNSKEY keytag: 9795 alg: 7 flags: 257)\n"
" |---org. (DNSKEY keytag: 21366 alg: 7 flags: 257)\n"
" |---org. (DS keytag: 21366 digest type: 1)\n"
" | |---. (DNSKEY keytag: 40926 alg: 8 flags: 256)\n"
" | |---. (DNSKEY keytag: 19036 alg: 8 flags: 257)\n"
" |---org. (DS keytag: 21366 digest type: 2)\n"
" |---. (DNSKEY keytag: 40926 alg: 8 flags: 256)\n"
" |---. (DNSKEY keytag: 19036 alg: 8 flags: 257)\n"
";; Chase successful\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2008
#, no-wrap
msgid "Apache HTTP Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2012
msgid ""
"The open source Apache HTTP Server is the most widely used web server. "
"FreeBSD does not install this web server by default, but it can be installed "
"from the package:www/apache24[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2015
msgid ""
"This section summarizes how to configure and start version 2._x_ of the "
"Apache HTTP Server on FreeBSD. For more detailed information about Apache 2."
"X and its configuration directives, refer to http://httpd.apache.org/[httpd."
"apache.org]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2016
#, no-wrap
msgid "Configuring and Starting Apache"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2021
msgid ""
"In FreeBSD, the main Apache HTTP Server configuration file is installed as [."
"filename]#/usr/local/etc/apache2x/httpd.conf#, where _x_ represents the "
"version number. This ASCII text file begins comment lines with a `+#+`. "
"The most frequently modified directives are:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2022
#, no-wrap
msgid "`ServerRoot \"/usr/local\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2025
msgid ""
"Specifies the default directory hierarchy for the Apache installation. "
"Binaries are stored in the [.filename]#bin# and [.filename]#sbin# "
"subdirectories of the server root and configuration files are stored in the "
"[.filename]#etc/apache2x# subdirectory."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2026
#, no-wrap
msgid "`ServerAdmin you@example.com`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2029
msgid ""
"Change this to the email address to receive problems with the server. This "
"address also appears on some server-generated pages, such as error documents."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2030
#, no-wrap
msgid "`ServerName www.example.com:80`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2035
msgid ""
"Allows an administrator to set a hostname which is sent back to clients for "
"the server. For example, `www` can be used instead of the actual hostname. "
"If the system does not have a registered DNS name, enter its IP address "
"instead. If the server will listen on an alternate report, change `80` to "
"the alternate port number."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2036
#, no-wrap
msgid "`DocumentRoot \"/usr/local/www/apache2_x_/data\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2039
msgid ""
"The directory where documents will be served from. By default, all requests "
"are taken from this directory, but symbolic links and aliases may be used to "
"point to other locations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2043
msgid ""
"It is always a good idea to make a backup copy of the default Apache "
"configuration file before making changes. When the configuration of Apache "
"is complete, save the file and verify the configuration using `apachectl`. "
"Running `apachectl configtest` should return `Syntax OK`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2045
msgid ""
"To launch Apache at system startup, add the following line to [.filename]#/"
"etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2049
#, no-wrap
msgid "apache24_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2052
msgid ""
"If Apache should be started with non-default options, the following line may "
"be added to [.filename]#/etc/rc.conf# to specify the needed flags:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2056
#, no-wrap
msgid "apache24_flags=\"\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2059
msgid "If apachectl does not report configuration errors, start `httpd` now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2063
#, no-wrap
msgid "# service apache24 start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2067
msgid ""
"The `httpd` service can be tested by entering `http://_localhost_` in a web "
"browser, replacing _localhost_ with the fully-qualified domain name of the "
"machine running `httpd`. The default web page that is displayed is [."
"filename]#/usr/local/www/apache24/data/index.html#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2069
msgid ""
"The Apache configuration can be tested for errors after making subsequent "
"configuration changes while `httpd` is running using the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2073
#, no-wrap
msgid "# service apache24 configtest\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2078
msgid ""
"It is important to note that `configtest` is not an man:rc[8] standard, and "
"should not be expected to work for all startup scripts."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2080
#, no-wrap
msgid "Virtual Hosting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2086
msgid ""
"Virtual hosting allows multiple websites to run on one Apache server. The "
"virtual hosts can be _IP-based_ or _name-based_. IP-based virtual hosting "
"uses a different IP address for each website. Name-based virtual hosting "
"uses the clients HTTP/1.1 headers to figure out the hostname, which allows "
"the websites to share the same IP address."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2089
msgid ""
"To setup Apache to use name-based virtual hosting, add a `VirtualHost` block "
"for each website. For example, for the webserver named `www.domain.tld` "
"with a virtual domain of `www.someotherdomain.tld`, add the following "
"entries to [.filename]#httpd.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2096
#, no-wrap
msgid ""
"<VirtualHost *>\n"
" ServerName www.domain.tld\n"
" DocumentRoot /www/domain.tld\n"
"</VirtualHost>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2101
#, no-wrap
msgid ""
"<VirtualHost *>\n"
" ServerName www.someotherdomain.tld\n"
" DocumentRoot /www/someotherdomain.tld\n"
"</VirtualHost>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2104
msgid ""
"For each virtual host, replace the values for `ServerName` and "
"`DocumentRoot` with the values to be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2106
msgid ""
"For more information about setting up virtual hosts, consult the official "
"Apache documentation at: http://httpd.apache.org/docs/vhosts/[http://httpd."
"apache.org/docs/vhosts/]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2107
#, no-wrap
msgid "Apache Modules"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2111
msgid ""
"Apache uses modules to augment the functionality provided by the basic "
"server. Refer to http://httpd.apache.org/docs/current/mod/[http://httpd."
"apache.org/docs/current/mod/] for a complete listing of and the "
"configuration details for the available modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2116
msgid ""
"In FreeBSD, some modules can be compiled with the package:www/apache24[] "
"port. Type `make config` within [.filename]#/usr/ports/www/apache24# to see "
"which modules are available and which are enabled by default. If the module "
"is not compiled with the port, the FreeBSD Ports Collection provides an easy "
"way to install many modules. This section describes three of the most "
"commonly used modules."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2117
#, no-wrap
msgid "SSL support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2124
msgid ""
"At one in point in time, support for SSL inside of Apache required a "
"secondary module called [.filename]#mod_ssl#. This is no longer the case "
"and the default install of Apache comes with SSL built into the web server. "
"An example of how to enable support for SSL websites is available in the "
"installed file, [.filename]#httpd-ssl.conf# inside of the [.filename]#/usr/"
"local/etc/apache24/extra# directory Inside this directory is also a sample "
"file called named [.filename]#ssl.conf-sample#. It is recommended that both "
"files be evaluated to properly set up secure websites in the Apache web "
"server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2126
msgid ""
"After the configuration of SSL is complete, the following line must be "
"uncommented in the main [.filename]#http.conf# to activate the changes on "
"the next restart or reload of Apache:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2130
#, no-wrap
msgid "#Include etc/apache24/extra/httpd-ssl.conf\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2137
msgid ""
"SSL version two and version three have known vulnerability issues. It is "
"highly recommended TLS version 1.2 and 1.3 be enabled in place of the older "
"SSL options. This can be accomplished by setting the following options in "
"the [.filename]#ssl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2144
#, no-wrap
msgid ""
"SSLProtocol all -SSLv3 -SSLv2 +TLSv1.2 +TLSv1.3\n"
"SSLProxyProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2147
msgid ""
"To complete the configuration of SSL in the web server, uncomment the "
"following line to ensure that the configuration will be pulled into Apache "
"during restart or reload:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2152
#, no-wrap
msgid ""
"# Secure (SSL/TLS) connections\n"
"Include etc/apache24/extra/httpd-ssl.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2155
msgid ""
"The following lines must also be uncommented in the [.filename]#httpd.conf# "
"to fully support SSL in Apache:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2161
#, no-wrap
msgid ""
"LoadModule authn_socache_module libexec/apache24/mod_authn_socache.so\n"
"LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so\n"
"LoadModule ssl_module libexec/apache24/mod_ssl.so\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2165
msgid ""
"The next step is to work with a certificate authority to have the "
"appropriate certificates installed on the system. This will set up a chain "
"of trust for the site and prevent any warnings of self-signed certificates."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2166
#, no-wrap
msgid "[.filename]#mod_perl#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2170
msgid ""
"The [.filename]#mod_perl# module makes it possible to write Apache modules "
"in Perl. In addition, the persistent interpreter embedded in the server "
"avoids the overhead of starting an external interpreter and the penalty of "
"Perl start-up time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2173
msgid ""
"The [.filename]#mod_perl# can be installed using the package:www/mod_perl2[] "
"package or port. Documentation for using this module can be found at http://"
"perl.apache.org/docs/2.0/index.html[http://perl.apache.org/docs/2.0/index."
"html]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2174
#, no-wrap
msgid "[.filename]#mod_php#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2178
msgid ""
"_PHP: Hypertext Preprocessor_ (PHP) is a general-purpose scripting language "
"that is especially suited for web development. Capable of being embedded "
"into HTML, its syntax draws upon C, Java(TM), and Perl with the intention of "
"allowing web developers to write dynamically generated webpages quickly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2180
msgid ""
"Support for PHP for Apache and any other feature written in the language, "
"can be added by installing the appropriate port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2182
msgid "For all supported versions, search the package database using `pkg`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2186
#, no-wrap
msgid "# pkg search php\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2191
msgid ""
"A list will be displayed including the versions and additional features they "
"provide. The components are completely modular, meaning features are "
"enabled by installing the appropriate port. To install PHP version 7.4 for "
"Apache, issue the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2195
#, no-wrap
msgid "# pkg install mod_php74\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2198
msgid ""
"If any dependency packages need to be installed, they will be installed as "
"well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2201
msgid ""
"By default, PHP will not be enabled. The following lines will need to be "
"added to the Apache configuration file located in [.filename]#/usr/local/etc/"
"apache24# to make it active:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2210
#, no-wrap
msgid ""
"<FilesMatch \"\\.php$\">\n"
" SetHandler application/x-httpd-php\n"
"</FilesMatch>\n"
"<FilesMatch \"\\.phps$\">\n"
" SetHandler application/x-httpd-php-source\n"
"</FilesMatch>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2213
msgid ""
"In addition, the `DirectoryIndex` in the configuration file will also need "
"to be updated and Apache will either need to be restarted or reloaded for "
"the changes to take effect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2216
msgid ""
"Support for many of the PHP features may also be installed by using `pkg`. "
"For example, to install support for XML or SSL, install their respective "
"ports:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2220
#, no-wrap
msgid "# pkg install php74-xml php74-openssl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2223
msgid ""
"As before, the Apache configuration will need to be reloaded for the changes "
"to take effect, even in cases where it was just a module install."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2225
msgid ""
"To perform a graceful restart to reload the configuration, issue the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2229
#, no-wrap
msgid "# apachectl graceful\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2233
msgid ""
"Once the install is complete, there are two methods of obtaining the "
"installed PHP support modules and the environmental information of the "
"build. The first is to install the full PHP binary and running the command "
"to gain the information:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2237
#, no-wrap
msgid "# pkg install php74\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2243
#, no-wrap
msgid "# php -i |less\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2246
msgid ""
"It is necessary to pass the output to a pager, such as the `more` or `less` "
"to easier digest the amount of output."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2250
msgid ""
"Finally, to make any changes to the global configuration of PHP there is a "
"well documented file installed into [.filename]#/usr/local/etc/php.ini#. At "
"the time of install, this file will not exist because there are two versions "
"to choose from, one is [.filename]#php.ini-development# and the other is [."
"filename]#php.ini-production#. These are starting points to assist "
"administrators in their deployment."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2251
#, no-wrap
msgid "HTTP2 Support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2256
msgid ""
"Apache support for the HTTP2 protocol is included by default when installing "
"the port with `pkg`. The new version of HTTP includes many improvements "
"over the previous version, including utilizing a single connection to a "
"website, reducing overall roundtrips of TCP connections. Also, packet "
"header data is compressed and HTTP2 requires encryption by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2259
msgid ""
"When Apache is configured to only use HTTP2, web browsers will require "
"secure, encrypted HTTPS connections. When Apache is configured to use both "
"versions, HTTP1.1 will be considered a fall back option if any issues arise "
"during the connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2262
msgid ""
"While this change does require administrators to make changes, they are "
"positive and equate to a more secure Internet for everyone. The changes are "
"only required for sites not currently implementing SSL and TLS."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2267
msgid ""
"This configuration depends on the previous sections, including TLS support. "
"It is recommended those instructions be followed before continuing with this "
"configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2270
msgid ""
"Start the process by enabling the http2 module by uncommenting the line in [."
"filename]#/usr/local/etc/apache24/httpd.conf# and replace the mpm_prefork "
"module with mpm_event as the former does not support HTTP2."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2275
#, no-wrap
msgid ""
"LoadModule http2_module libexec/apache24/mod_http2.so\n"
"LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2283
msgid ""
"There is a separate [.filename]#mod_http2# port that is available. It "
"exists to deliver security and bug fixes quicker than the module installed "
"with the bundled [.filename]#apache24# port. It is not required for HTTP2 "
"support but is available. When installed, the [.filename]#mod_h2.so# should "
"be used in place of [.filename]#mod_http2.so# in the Apache configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2287
msgid ""
"There are two methods to implement HTTP2 in Apache; one way is globally for "
"all sites and each VirtualHost running on the system. To enable HTTP2 "
"globally, add the following line under the ServerName directive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2291
#, no-wrap
msgid "Protocols h2 http/1.1\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2296
msgid ""
"To enable HTTP2 over plaintext, use h2h2chttp/1.1 in the [.filename]#httpd."
"conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2300
msgid ""
"Having the h2c here will allow plaintext HTTP2 data to pass on the system "
"but is not recommended. In addition, using the http/1.1 here will allow "
"fallback to the HTTP1.1 version of the protocol should it be needed by the "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2302
msgid ""
"To enable HTTP2 for individual VirtualHosts, add the same line within the "
"VirtualHost directive in either [.filename]#httpd.conf# or [.filename]#httpd-"
"ssl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2304
msgid ""
"Reload the configuration using the `apachectl`[parameter]#reload# command "
"and test the configuration either by using either of the following methods "
"after visiting one of the hosted pages:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2308
#, no-wrap
msgid "# grep \"HTTP/2.0\" /var/log/httpd-access.log\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2311
msgid "This should return something similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2318
#, no-wrap
msgid ""
"192.168.1.205 - - [18/Oct/2020:18:34:36 -0400] \"GET / HTTP/2.0\" 304 -\n"
"192.0.2.205 - - [18/Oct/2020:19:19:57 -0400] \"GET / HTTP/2.0\" 304 -\n"
"192.0.0.205 - - [18/Oct/2020:19:20:52 -0400] \"GET / HTTP/2.0\" 304 -\n"
"192.0.2.205 - - [18/Oct/2020:19:23:10 -0400] \"GET / HTTP/2.0\" 304 -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2321
msgid ""
"The other method is using the web browser's built in site debugger or "
"`tcpdump`; however, using either method is beyond the scope of this document."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2324
msgid ""
"Support for HTTP2 reverse proxy connections by using the [."
"filename]#mod_proxy_http2.so# module. When configuring the ProxyPass or "
"RewriteRules [P] statements, they should use h2:// for the connection."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2325
#, no-wrap
msgid "Dynamic Websites"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2329
msgid ""
"In addition to mod_perl and mod_php, other languages are available for "
"creating dynamic web content. These include Django and Ruby on Rails."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2330
#, no-wrap
msgid "Django"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2336
msgid ""
"Django is a BSD-licensed framework designed to allow developers to write "
"high performance, elegant web applications quickly. It provides an object-"
"relational mapper so that data types are developed as Python objects. A "
"rich dynamic database-access API is provided for those objects without the "
"developer ever having to write SQL. It also provides an extensible template "
"system so that the logic of the application is separated from the HTML "
"presentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2340
msgid ""
"Django depends on [.filename]#mod_python#, and an SQL database engine. In "
"FreeBSD, the package:www/py-django[] port automatically installs [."
"filename]#mod_python# and supports the PostgreSQL, MySQL, or SQLite "
"databases, with the default being SQLite. To change the database engine, "
"type `make config` within [.filename]#/usr/ports/www/py-django#, then "
"install the port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2343
msgid ""
"Once Django is installed, the application will need a project directory "
"along with the Apache configuration in order to use the embedded Python "
"interpreter. This interpreter is used to call the application for specific "
"URLs on the site."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2345
msgid ""
"To configure Apache to pass requests for certain URLs to the web "
"application, add the following to [.filename]#httpd.conf#, specifying the "
"full path to the project directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2356
#, no-wrap
msgid ""
"<Location \"/\">\n"
" SetHandler python-program\n"
" PythonPath \"['/dir/to/the/django/packages/'] + sys.path\"\n"
" PythonHandler django.core.handlers.modpython\n"
" SetEnv DJANGO_SETTINGS_MODULE mysite.settings\n"
" PythonAutoReload On\n"
" PythonDebug On\n"
"</Location>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2359
msgid ""
"Refer to https://docs.djangoproject.com[https://docs.djangoproject.com] for "
"more information on how to use Django."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2360
#, no-wrap
msgid "Ruby on Rails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2365
msgid ""
"Ruby on Rails is another open source web framework that provides a full "
"development stack. It is optimized to make web developers more productive "
"and capable of writing powerful applications quickly. On FreeBSD, it can be "
"installed using the package:www/rubygem-rails[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2367
msgid ""
"Refer to http://guides.rubyonrails.org[http://guides.rubyonrails.org] for "
"more information on how to use Ruby on Rails."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2369
#, no-wrap
msgid "File Transfer Protocol (FTP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2373
msgid ""
"The File Transfer Protocol (FTP) provides users with a simple way to "
"transfer files to and from an FTP server. FreeBSD includes FTP server "
"software, ftpd, in the base system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2377
msgid ""
"FreeBSD provides several configuration files for controlling access to the "
"FTP server. This section summarizes these files. Refer to man:ftpd[8] for "
"more details about the built-in FTP server."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2378
#, no-wrap
msgid "Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2384
msgid ""
"The most important configuration step is deciding which accounts will be "
"allowed access to the FTP server. A FreeBSD system has a number of system "
"accounts which should not be allowed FTP access. The list of users "
"disallowed any FTP access can be found in [.filename]#/etc/ftpusers#. By "
"default, it includes system accounts. Additional users that should not be "
"allowed access to FTP can be added."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2388
msgid ""
"In some cases it may be desirable to restrict the access of some users "
"without preventing them completely from using FTP. This can be accomplished "
"be creating [.filename]#/etc/ftpchroot# as described in man:ftpchroot[5]. "
"This file lists users and groups subject to FTP access restrictions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2393
msgid ""
"To enable anonymous FTP access to the server, create a user named `ftp` on "
"the FreeBSD system. Users will then be able to log on to the FTP server "
"with a username of `ftp` or `anonymous`. When prompted for the password, "
"any input will be accepted, but by convention, an email address should be "
"used as the password. The FTP server will call man:chroot[2] when an "
"anonymous user logs in, to restrict access to only the home directory of the "
"`ftp` user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2398
msgid ""
"There are two text files that can be created to specify welcome messages to "
"be displayed to FTP clients. The contents of [.filename]#/etc/ftpwelcome# "
"will be displayed to users before they reach the login prompt. After a "
"successful login, the contents of [.filename]#/etc/ftpmotd# will be "
"displayed. Note that the path to this file is relative to the login "
"environment, so the contents of [.filename]#~ftp/etc/ftpmotd# would be "
"displayed for anonymous users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2400
msgid ""
"Once the FTP server has been configured, set the appropriate variable in [."
"filename]#/etc/rc.conf# to start the service during boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2404
#, no-wrap
msgid "ftpd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2407
msgid "To start the service now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2411
#, no-wrap
msgid "# service ftpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2414
msgid "Test the connection to the FTP server by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2418
#, no-wrap
msgid "% ftp localhost\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2423
msgid ""
"The ftpd daemon uses man:syslog[3] to log messages. By default, the system "
"log daemon will write messages related to FTP in [.filename]#/var/log/"
"xferlog#. The location of the FTP log can be modified by changing the "
"following line in [.filename]#/etc/syslog.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2427
#, no-wrap
msgid "ftp.info /var/log/xferlog\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2436
msgid ""
"Be aware of the potential problems involved with running an anonymous FTP "
"server. In particular, think twice about allowing anonymous users to upload "
"files. It may turn out that the FTP site becomes a forum for the trade of "
"unlicensed commercial software or worse. If anonymous FTP uploads are "
"required, then verify the permissions so that these files cannot be read by "
"other anonymous users until they have been reviewed by an administrator."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2439
#, no-wrap
msgid "File and Print Services for Microsoft(R) Windows(R) Clients (Samba)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2446
msgid ""
"Samba is a popular open source software package that provides file and print "
"services using the SMB/CIFS protocol. This protocol is built into "
"Microsoft(R) Windows(R) systems. It can be added to non-Microsoft(R) "
"Windows(R) systems by installing the Samba client libraries. The protocol "
"allows clients to access shared data and printers. These shares can be "
"mapped as a local disk drive and shared printers can be used as if they were "
"local printers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2449
msgid ""
"On FreeBSD, the Samba client libraries can be installed using the package:"
"net/samba413[] port or package. The client provides the ability for a "
"FreeBSD system to access SMB/CIFS shares in a Microsoft(R) Windows(R) "
"network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2452
msgid ""
"A FreeBSD system can also be configured to act as a Samba server by "
"installing the same package:net/samba413[] port or package. This allows the "
"administrator to create SMB/CIFS shares on the FreeBSD system which can be "
"accessed by clients running Microsoft(R) Windows(R) or the Samba client "
"libraries."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2453
#, no-wrap
msgid "Server Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2457
msgid ""
"Samba is configured in [.filename]#/usr/local/etc/smb4.conf#. This file "
"must be created before Samba can be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2460
msgid ""
"A simple [.filename]#smb4.conf# to share directories and printers with "
"Windows(R) clients in a workgroup is shown here. For more complex setups "
"involving LDAP or Active Directory, it is easier to use man:samba-tool[8] to "
"create the initial [.filename]#smb4.conf#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2470
#, no-wrap
msgid ""
"[global]\n"
"workgroup = WORKGROUP\n"
"server string = Samba Server Version %v\n"
"netbios name = ExampleMachine\n"
"wins support = Yes\n"
"security = user\n"
"passdb backend = tdbsam\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2482
#, no-wrap
msgid ""
"# Example: share /usr/src accessible only to 'developer' user\n"
"[src]\n"
"path = /usr/src\n"
"valid users = developer\n"
"writable = yes\n"
"browsable = yes\n"
"read only = no\n"
"guest ok = no\n"
"public = no\n"
"create mask = 0666\n"
"directory mask = 0755\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2485
#, no-wrap
msgid "Global Settings"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2488
msgid ""
"Settings that describe the network are added in [.filename]#/usr/local/etc/"
"smb4.conf#:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2489
#, no-wrap
msgid "`workgroup`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2491
msgid "The name of the workgroup to be served."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2492
#, no-wrap
msgid "`netbios name`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2495
msgid ""
"The NetBIOS name by which a Samba server is known. By default, it is the "
"same as the first component of the host's DNS name."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2496
#, no-wrap
msgid "`server string`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2498
msgid ""
"The string that will be displayed in the output of `net view` and some other "
"networking tools that seek to display descriptive text about the server."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2499
#, no-wrap
msgid "`wins support`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2502
msgid ""
"Whether Samba will act as a WINS server. Do not enable support for WINS on "
"more than one server on the network."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2504
#, no-wrap
msgid "Security Settings"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2508
msgid ""
"The most important settings in [.filename]#/usr/local/etc/smb4.conf# are the "
"security model and the backend password format. These directives control "
"the options:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2509
#, no-wrap
msgid "`security`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2513
msgid ""
"The most common settings are `security = share` and `security = user`. If "
"the clients use usernames that are the same as their usernames on the "
"FreeBSD machine, user level security should be used. This is the default "
"security policy and it requires clients to first log on before they can "
"access shared resources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2516
msgid ""
"In share level security, clients do not need to log onto the server with a "
"valid username and password before attempting to connect to a shared "
"resource. This was the default security model for older versions of Samba."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2517
#, no-wrap
msgid "`passdb backend`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2523
msgid ""
"Samba has several different backend authentication models. Clients may be "
"authenticated with LDAP, NIS+, an SQL database, or a modified password "
"file. The recommended authentication method, `tdbsam`, is ideal for simple "
"networks and is covered here. For larger or more complex networks, "
"`ldapsam` is recommended. `smbpasswd` was the former default and is now "
"obsolete."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2524
#, no-wrap
msgid "Samba Users"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2528
msgid ""
"FreeBSD user accounts must be mapped to the `SambaSAMAccount` database for "
"Windows(R) clients to access the share. Map existing FreeBSD user accounts "
"using man:pdbedit[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2532
#, no-wrap
-msgid "# pdbedit -a username\n"
+msgid "# pdbedit -a -u username\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2536
msgid ""
"This section has only mentioned the most commonly used settings. Refer to "
"the https://wiki.samba.org[Official Samba Wiki] for additional information "
"about the available configuration options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2537
#, no-wrap
msgid "Starting Samba"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2540
msgid ""
"To enable Samba at boot time, add the following line to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2544
#, no-wrap
msgid "samba_server_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2547
msgid "To start Samba now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2554
#, no-wrap
msgid ""
"# service samba_server start\n"
"Performing sanity check on Samba configuration: OK\n"
"Starting nmbd.\n"
"Starting smbd.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2559
msgid ""
"Samba consists of three separate daemons. Both the nmbd and smbd daemons "
"are started by `samba_enable`. If winbind name resolution is also required, "
"set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2563
#, no-wrap
msgid "winbindd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2566
msgid "Samba can be stopped at any time by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2570
#, no-wrap
msgid "# service samba_server stop\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2574
msgid ""
"Samba is a complex software suite with functionality that allows broad "
"integration with Microsoft(R) Windows(R) networks. For more information "
"about functionality beyond the basic configuration described here, refer to "
"https://www.samba.org[https://www.samba.org]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2576
#, no-wrap
msgid "Clock Synchronization with NTP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2582
msgid ""
"Over time, a computer's clock is prone to drift. This is problematic as "
"many network services require the computers on a network to share the same "
"accurate time. Accurate time is also needed to ensure that file timestamps "
"stay consistent. The Network Time Protocol (NTP) is one way to provide "
"clock accuracy in a network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2584
msgid ""
"FreeBSD includes man:ntpd[8] which can be configured to query other NTP "
"servers to synchronize the clock on that machine or to provide time services "
"to other computers in the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2587
msgid ""
"This section describes how to configure ntpd on FreeBSD. Further "
"documentation can be found in [.filename]#/usr/share/doc/ntp/# in HTML "
"format."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2588
#, no-wrap
msgid "NTP Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2592
msgid ""
"On FreeBSD, the built-in ntpd can be used to synchronize a system's clock. "
"ntpd is configured using man:rc.conf[5] variables and [.filename]#/etc/ntp."
"conf#, as detailed in the following sections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2595
msgid ""
"ntpd communicates with its network peers using UDP packets. Any firewalls "
"between your machine and its NTP peers must be configured to allow UDP "
"packets in and out on port 123."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2596
#, no-wrap
msgid "The [.filename]#/etc/ntp.conf# file"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2606
msgid ""
"ntpd reads [.filename]#/etc/ntp.conf# to determine which NTP servers to "
"query. Choosing several NTP servers is recommended in case one of the "
"servers becomes unreachable or its clock proves unreliable. As ntpd "
"receives responses, it favors reliable servers over the less reliable ones. "
"The servers which are queried can be local to the network, provided by an "
"ISP, or selected from an http://support.ntp.org/bin/view/Servers/"
"WebHome[ online list of publicly accessible NTP servers]. When choosing a "
"public NTP server, select one that is geographically close and review its "
"usage policy. The `pool` configuration keyword selects one or more servers "
"from a pool of servers. An http://support.ntp.org/bin/view/Servers/"
"NTPPoolServers[ online list of publicly accessible NTP pools] is available, "
"organized by geographic area. In addition, FreeBSD provides a project-"
"sponsored pool, `0.freebsd.pool.ntp.org`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2607
#, no-wrap
msgid "Sample [.filename]#/etc/ntp.conf#"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2612
msgid ""
"This is a simple example of an [.filename]#ntp.conf# file. It can safely be "
"used as-is; it contains the recommended `restrict` options for operation on "
"a publicly-accessible network connection."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2620
#, no-wrap
msgid ""
"# Disallow ntpq control/query access. Allow peers to be added only\n"
"# based on pool and server statements in this file.\n"
"restrict default limited kod nomodify notrap noquery nopeer\n"
"restrict source limited kod nomodify notrap noquery\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2624
#, no-wrap
msgid ""
"# Allow unrestricted access from localhost for queries and control.\n"
"restrict 127.0.0.1\n"
"restrict ::1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2627
#, no-wrap
msgid ""
"# Add a specific server.\n"
"server ntplocal.example.com iburst\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2631
#, no-wrap
msgid ""
"# Add FreeBSD pool servers until 3-6 good servers are available.\n"
"tos minclock 3 maxclock 6\n"
"pool 0.freebsd.pool.ntp.org iburst\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2634
#, no-wrap
msgid ""
"# Use a local leap-seconds file.\n"
"leapfile \"/var/db/ntpd.leap-seconds.list\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2640
msgid ""
"The format of this file is described in man:ntp.conf[5]. The descriptions "
"below provide a quick overview of just the keywords used in the sample file "
"above."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2646
msgid ""
"By default, an NTP server is accessible to any network host. The `restrict` "
"keyword controls which systems can access the server. Multiple `restrict` "
"entries are supported, each one refining the restrictions given in previous "
"statements. The values shown in the example grant the local system full "
"query and control access, while allowing remote systems only the ability to "
"query the time. For more details, refer to the `Access Control Support` "
"subsection of man:ntp.conf[5]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2652
msgid ""
"The `server` keyword specifies a single server to query. The file can "
"contain multiple server keywords, with one server listed on each line. The "
"`pool` keyword specifies a pool of servers. ntpd will add one or more "
"servers from this pool as needed to reach the number of peers specified "
"using the `tos minclock` value. The `iburst` keyword directs ntpd to "
"perform a burst of eight quick packet exchanges with a server when contact "
"is first established, to help quickly synchronize system time."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2656
msgid ""
"The `leapfile` keyword specifies the location of a file containing "
"information about leap seconds. The file is updated automatically by man:"
"periodic[8]. The file location specified by this keyword must match the "
"location set in the `ntp_db_leapfile` variable in [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2657
#, no-wrap
msgid "NTP entries in [.filename]#/etc/rc.conf#"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2661
msgid ""
"Set `ntpd_enable=YES` to start ntpd at boot time. Once `ntpd_enable=YES` "
"has been added to [.filename]#/etc/rc.conf#, ntpd can be started immediately "
"without rebooting the system by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2665
#, no-wrap
msgid "# service ntpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2669
msgid ""
"Only `ntpd_enable` must be set to use ntpd. The [.filename]#rc.conf# "
"variables listed below may also be set as needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2673
msgid ""
"Set `ntpd_sync_on_start=YES` to allow ntpd to step the clock any amount, one "
"time at startup. Normally ntpd will log an error message and exit if the "
"clock is off by more than 1000 seconds. This option is especially useful on "
"systems without a battery-backed realtime clock."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2675
msgid ""
"Set `ntpd_oomprotect=YES` to protect the ntpd daemon from being killed by "
"the system attempting to recover from an Out Of Memory (OOM) condition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2677
msgid ""
"Set `ntpd_config=` to the location of an alternate [.filename]#ntp.conf# "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2679
msgid ""
"Set `ntpd_flags=` to contain any other ntpd flags as needed, but avoid using "
"these flags which are managed internally by [.filename]#/etc/rc.d/ntpd#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2681
msgid "`-p` (pid file location)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2682
msgid "`-c` (set `ntpd_config=` instead)"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2684
#, no-wrap
msgid "ntpd and the unpriveleged `ntpd` user"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2691
msgid ""
"ntpd on FreeBSD can start and run as an unpriveleged user. Doing so "
"requires the man:mac_ntpd[4] policy module. The [.filename]#/etc/rc.d/ntpd# "
"startup script first examines the NTP configuration. If possible, it loads "
"the `mac_ntpd` module, then starts ntpd as unpriveleged user `ntpd` (user id "
"123). To avoid problems with file and directory access, the startup script "
"will not automatically start ntpd as `ntpd` when the configuration contains "
"any file-related options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2693
msgid ""
"The presence of any of the following in `ntpd_flags` requires manual "
"configuration as described below to run as the `ntpd` user:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2695
msgid "-f or --driftfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2696
msgid "-i or --jaildir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2697
msgid "-k or --keyfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2698
msgid "-l or --logfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2699
msgid "-s or --statsdir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2701
msgid ""
"The presence of any of the following keywords in [.filename]#ntp.conf# "
"requires manual configuration as described below to run as the `ntpd` user:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2703
msgid "crypto"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2704
msgid "driftfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2705
msgid "key"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2706
msgid "logdir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2707
msgid "statsdir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2709
msgid "To manually configure ntpd to run as user `ntpd` you must:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2711
msgid ""
"Ensure that the `ntpd` user has access to all the files and directories "
"specified in the configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2712
msgid ""
"Arrange for the `mac_ntpd` module to be loaded or compiled into the kernel. "
"See man:mac_ntpd[4] for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2713
msgid "Set `ntpd_user=\"ntpd\"` in [.filename]#/etc/rc.conf#"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2714
#, no-wrap
msgid "Using NTP with a PPP Connection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2719
msgid ""
"ntpd does not need a permanent connection to the Internet to function "
"properly. However, if a PPP connection is configured to dial out on demand, "
"NTP traffic should be prevented from triggering a dial out or keeping the "
"connection alive. This can be configured with `filter` directives in [."
"filename]#/etc/ppp/ppp.conf#. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2730
#, no-wrap
msgid ""
"set filter dial 0 deny udp src eq 123\n"
"# Prevent NTP traffic from initiating dial out\n"
"set filter dial 1 permit 0 0\n"
"set filter alive 0 deny udp src eq 123\n"
"# Prevent incoming NTP traffic from keeping the connection open\n"
"set filter alive 1 deny udp dst eq 123\n"
"# Prevent outgoing NTP traffic from keeping the connection open\n"
"set filter alive 2 permit 0/0 0/0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2733
msgid ""
"For more details, refer to the `PACKET FILTERING` section in man:ppp[8] and "
"the examples in [.filename]#/usr/share/examples/ppp/#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2737
msgid ""
"Some Internet access providers block low-numbered ports, preventing NTP from "
"functioning since replies never reach the machine."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2740
#, no-wrap
msgid "iSCSI Initiator and Target Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2744
msgid ""
"iSCSI is a way to share storage over a network. Unlike NFS, which works at "
"the file system level, iSCSI works at the block device level."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2748
msgid ""
"In iSCSI terminology, the system that shares the storage is known as the "
"_target_. The storage can be a physical disk, or an area representing "
"multiple disks or a portion of a physical disk. For example, if the disk(s) "
"are formatted with ZFS, a zvol can be created to use as the iSCSI storage."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2752
msgid ""
"The clients which access the iSCSI storage are called _initiators_. To "
"initiators, the storage available through iSCSI appears as a raw, "
"unformatted disk known as a LUN. Device nodes for the disk appear in [."
"filename]#/dev/# and the device must be separately formatted and mounted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2755
msgid ""
"FreeBSD provides a native, kernel-based iSCSI target and initiator. This "
"section describes how to configure a FreeBSD system as a target or an "
"initiator."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2757
#, no-wrap
msgid "Configuring an iSCSI Target"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2760
msgid ""
"To configure an iSCSI target, create the [.filename]#/etc/ctl.conf# "
"configuration file, add a line to [.filename]#/etc/rc.conf# to make sure the "
"man:ctld[8] daemon is automatically started at boot, and then start the "
"daemon."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2763
msgid ""
"The following is an example of a simple [.filename]#/etc/ctl.conf# "
"configuration file. Refer to man:ctl.conf[5] for a more complete "
"description of this file's available options."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2771
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2849
#, no-wrap
msgid ""
"portal-group pg0 {\n"
"\tdiscovery-auth-group no-authentication\n"
"\tlisten 0.0.0.0\n"
"\tlisten [::]\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2775
#, no-wrap
msgid ""
"target iqn.2012-06.com.example:target0 {\n"
"\tauth-group no-authentication\n"
"\tportal-group pg0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2781
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2879
#, no-wrap
msgid ""
"\tlun 0 {\n"
"\t\tpath /data/target0-0\n"
"\t\tsize 4G\n"
"\t}\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2787
msgid ""
"The first entry defines the `pg0` portal group. Portal groups define which "
"network addresses the man:ctld[8] daemon will listen on. The `discovery-"
"auth-group no-authentication` entry indicates that any initiator is allowed "
"to perform iSCSI target discovery without authentication. Lines three and "
"four configure man:ctld[8] to listen on all IPv4 (`listen 0.0.0.0`) and IPv6 "
"(`listen [::]`) addresses on the default port of 3260."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2790
msgid ""
"It is not necessary to define a portal group as there is a built-in portal "
"group called `default`. In this case, the difference between `default` and "
"`pg0` is that with `default`, target discovery is always denied, while with "
"`pg0`, it is always allowed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2798
msgid ""
"The second entry defines a single target. Target has two possible meanings: "
"a machine serving iSCSI or a named group of LUNs. This example uses the "
"latter meaning, where `iqn.2012-06.com.example:target0` is the target name. "
"This target name is suitable for testing purposes. For actual use, change "
"`com.example` to the real domain name, reversed. The `2012-06` represents "
"the year and month of acquiring control of that domain name, and `target0` "
"can be any value. Any number of targets can be defined in this "
"configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2800
msgid ""
"The `auth-group no-authentication` line allows all initiators to connect to "
"the specified target and `portal-group pg0` makes the target reachable "
"through the `pg0` portal group."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2808
msgid ""
"The next section defines the LUN. To the initiator, each LUN will be "
"visible as a separate disk device. Multiple LUNs can be defined for each "
"target. Each LUN is identified by a number, where LUN 0 is mandatory. The "
"`path /data/target0-0` line defines the full path to a file or zvol backing "
"the LUN. That path must exist before starting man:ctld[8]. The second line "
"is optional and specifies the size of the LUN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2810
msgid ""
"Next, to make sure the man:ctld[8] daemon is started at boot, add this line "
"to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2814
#, no-wrap
msgid "ctld_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2817
msgid "To start man:ctld[8] now, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2821
#, no-wrap
msgid "# service ctld start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2825
msgid ""
"As the man:ctld[8] daemon is started, it reads [.filename]#/etc/ctl.conf#. "
"If this file is edited after the daemon starts, use this command so that the "
"changes take effect immediately:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2829
#, no-wrap
msgid "# service ctld reload\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2832
#, no-wrap
msgid "Authentication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2836
msgid ""
"The previous example is inherently insecure as it uses no authentication, "
"granting anyone full access to all targets. To require a username and "
"password to access targets, modify the configuration as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2843
#, no-wrap
msgid ""
"auth-group ag0 {\n"
"\tchap username1 secretsecret\n"
"\tchap username2 anothersecret\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2858
#, no-wrap
msgid ""
"target iqn.2012-06.com.example:target0 {\n"
"\tauth-group ag0\n"
"\tportal-group pg0\n"
"\tlun 0 {\n"
"\t\tpath /data/target0-0\n"
"\t\tsize 4G\n"
"\t}\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2864
msgid ""
"The `auth-group` section defines username and password pairs. An initiator "
"trying to connect to `iqn.2012-06.com.example:target0` must first specify a "
"defined username and secret. However, target discovery is still permitted "
"without authentication. To require target discovery authentication, set "
"`discovery-auth-group` to a defined `auth-group` name instead of `no-"
"authentication`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2867
msgid ""
"It is common to define a single exported target for every initiator. As a "
"shorthand for the syntax above, the username and password can be specified "
"directly in the target entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2873
#, no-wrap
msgid ""
"target iqn.2012-06.com.example:target0 {\n"
"\tportal-group pg0\n"
"\tchap username1 secretsecret\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2883
#, no-wrap
msgid "Configuring an iSCSI Initiator"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2889
msgid ""
"The iSCSI initiator described in this section is supported starting with "
"FreeBSD 10.0-RELEASE. To use the iSCSI initiator available in older "
"versions, refer to man:iscontrol[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2894
msgid ""
"The iSCSI initiator requires that the man:iscsid[8] daemon is running. This "
"daemon does not use a configuration file. To start it automatically at "
"boot, add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2898
#, no-wrap
msgid "iscsid_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2901
msgid "To start man:iscsid[8] now, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2905
#, no-wrap
msgid "# service iscsid start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2909
msgid ""
"Connecting to a target can be done with or without an [.filename]#/etc/iscsi."
"conf# configuration file. This section demonstrates both types of "
"connections."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2910
#, no-wrap
msgid "Connecting to a Target Without a Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2913
msgid ""
"To connect an initiator to a single target, specify the IP address of the "
"portal and the name of the target:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2917
#, no-wrap
msgid "# iscsictl -A -p 10.10.10.10 -t iqn.2012-06.com.example:target0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2921
msgid ""
"To verify if the connection succeeded, run `iscsictl` without any "
"arguments. The output should look similar to this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2926
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Connected: da0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2930
msgid ""
"In this example, the iSCSI session was successfully established, with [."
"filename]#/dev/da0# representing the attached LUN. If the `iqn.2012-06.com."
"example:target0` target exports more than one LUN, multiple device nodes "
"will be shown in that section of the output:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2934
#, no-wrap
msgid "Connected: da0 da1 da2.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2938
msgid ""
"Any errors will be reported in the output, as well as the system logs. For "
"example, this message usually means that the man:iscsid[8] daemon is not "
"running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2943
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Waiting for iscsid(8)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2946
msgid ""
"The following message suggests a networking problem, such as a wrong IP "
"address or port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2951
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.11 Connection refused\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2954
msgid "This message means that the specified target name is wrong:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2959
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Not found\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2962
msgid "This message means that the target requires authentication:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2967
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Authentication failed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2970
msgid "To specify a CHAP username and secret, use this syntax:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2974
#, no-wrap
msgid "# iscsictl -A -p 10.10.10.10 -t iqn.2012-06.com.example:target0 -u user -s secretsecret\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2977
#, no-wrap
msgid "Connecting to a Target with a Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2980
msgid ""
"To connect using a configuration file, create [.filename]#/etc/iscsi.conf# "
"with contents like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2990
#, no-wrap
msgid ""
"t0 {\n"
"\tTargetAddress = 10.10.10.10\n"
"\tTargetName = iqn.2012-06.com.example:target0\n"
"\tAuthMethod = CHAP\n"
"\tchapIName = user\n"
"\tchapSecret = secretsecret\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2997
msgid ""
"The `t0` specifies a nickname for the configuration file section. It will "
"be used by the initiator to specify which configuration to use. The other "
"lines specify the parameters to use during connection. The `TargetAddress` "
"and `TargetName` are mandatory, whereas the other options are optional. In "
"this example, the CHAP username and secret are shown."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2999
msgid "To connect to the defined target, specify the nickname:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3003
#, no-wrap
msgid "# iscsictl -An t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3006
msgid ""
"Alternately, to connect to all targets defined in the configuration file, "
"use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3010
#, no-wrap
msgid "# iscsictl -Aa\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3013
msgid ""
"To make the initiator automatically connect to all targets in [.filename]#/"
"etc/iscsi.conf#, add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3018
#, no-wrap
msgid ""
"iscsictl_enable=\"YES\"\n"
"iscsictl_flags=\"-Aa\"\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/ports/_index.po b/documentation/content/en/books/handbook/ports/_index.po
index 2a6b95ec1c..fbf324e7c0 100644
--- a/documentation/content/en/books/handbook/ports/_index.po
+++ b/documentation/content/en/books/handbook/ports/_index.po
@@ -1,2537 +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 <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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:14
#, no-wrap
msgid "Installing Applications: Packages and Ports"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:58
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:60
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:62
msgid "The difference between binary packages and ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:63
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:64
msgid "How to manage binary packages using pkg."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:65
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:66
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:67
msgid "What to do if a software installation fails."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:69
#, no-wrap
msgid "Overview of Software Installation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:73
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:75
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:78
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:80
msgid ""
"Packages can be manipulated with the FreeBSD package management commands."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:83
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:86
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:89
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:90
#, no-wrap
msgid "Package Benefits"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:92
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:93
msgid ""
"Packages do not require compilation time. For large applications, such as "
"Firefox, KDE Plasma, or GNOME, this can be important on a slow system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:94
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:95
#, no-wrap
msgid "Port Benefits"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:97
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:98
msgid ""
"Some applications have compile-time options relating to which features are "
"installed. For example, NGINX(R) can be configured with a wide variety of "
"different built-in options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:100
msgid ""
"In some cases, multiple packages will exist for the same application to "
"specify certain settings. For example, NGINX(R) is available as a `nginx` "
"package and a `nginx-lite` 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:101
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:102
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:103
msgid "Source code is needed in order to apply custom patches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:105
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:109
msgid ""
"Before installing an application, check https://vuxml.freebsd.org/[] for "
"security issues related to the application."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:111
msgid ""
"To check for known vulnerabilities of installed applications use use `pkg "
"audit -F`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:114
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:116
#, no-wrap
msgid "Finding Software"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:120
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:122
msgid ""
"The FreeBSD web site maintains an up-to-date searchable list of all the "
"available applications, at link:https://www.FreeBSD.org/ports/[Ports "
"Portal]. The ports can be searched by application name or by software "
"category."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:123
msgid ""
"Dan Langille maintains https://www.freshports.org/[FreshPorts] 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:124
msgid ""
"If finding a particular application becomes challenging, try searching a "
"site like https://sourceforge.net/[SourceForge] or https://github.com/"
"[GitHub] then check back at the link:https://www.FreeBSD.org/ports/[Ports "
"Portal] to see if the application has been ported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:125
msgid ""
"Search the binary package repository for an application using the man:pkg[8] "
"command"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:127
#, no-wrap
msgid "Using pkg for Binary Package Management"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:130
msgid ""
"man:pkg[8] provides an interface for manipulating\tpackages: registering, "
"adding, removing and upgrading packages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:132
msgid ""
"For sites wishing to only use prebuilt binary packages from the FreeBSD "
"mirrors, managing packages with man:pkg[8] can be sufficient."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:134
msgid ""
"However, for those sites building from source a separate <<ports-upgrading-"
"tools, port management tool>> will be needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:137
msgid ""
"Since man:pkg[8] 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 man:pkg[8] installs only "
"binary packages."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:139
#, no-wrap
msgid "Getting Started with pkg"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:143
msgid ""
"All supported versions of FreeBSD now contain `/usr/sbin/pkg` a.k.a man:"
"pkg[7]. This is a small placeholder that has just the minimum functionality "
"required to install the real man:pkg[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:147
msgid ""
"An Internet working connection is required for the bootstrap process to "
"succeed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:150
msgid "Run man:pkg[8] command line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:154
#, no-wrap
msgid "# pkg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:157
#: documentation/content/en/books/handbook/ports/_index.adoc:242
#: documentation/content/en/books/handbook/ports/_index.adoc:274
#: documentation/content/en/books/handbook/ports/_index.adoc:309
#: documentation/content/en/books/handbook/ports/_index.adoc:336
#: documentation/content/en/books/handbook/ports/_index.adoc:381
#: documentation/content/en/books/handbook/ports/_index.adoc:436
#: documentation/content/en/books/handbook/ports/_index.adoc:463
#: documentation/content/en/books/handbook/ports/_index.adoc:493
#: documentation/content/en/books/handbook/ports/_index.adoc:518
#: documentation/content/en/books/handbook/ports/_index.adoc:536
msgid "The output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:162
#, no-wrap
msgid ""
"The package management tool is not yet installed on your system.\n"
"Do you want to fetch and install it not? [y/N]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:165
msgid ""
"man:pkg[7] will intercept the command, and if you confirm that is your "
"intention, download the man:pkg[8] tarball, install man:pkg[8] from it, "
"bootstrap the local package database and then proceed to run the command you "
"originally requested."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:167
msgid ""
"More recent versions of man:pkg[7] understand `pkg -N` as a test to see if "
"man:pkg[8] is installed without triggering the installation, and conversely, "
-"pkg bootstrap[-f] to install man:pkg[8] (or force it to be reinstalled) "
+"`pkg bootstrap[-f]` to install man:pkg[8] (or force it to be reinstalled) "
"without performing any other actions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:170
msgid ""
"Usage information for pkg is available in the man:pkg[8] manual page or by "
"running `pkg` without additional arguments. Additional pkg configuration "
"options are described in man:pkg.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:172
msgid ""
"Each pkg command argument is documented in a command-specific manual page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:174
msgid ""
"To read the manual page for `pkg install`, for example, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:178
#, no-wrap
msgid "# pkg help install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:183
msgid ""
"The rest of this section demonstrates common binary package management tasks "
"which can be performed using man:pkg[8]. 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:185
#, no-wrap
msgid "Quarterly and Latest Ports Branches"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:194
msgid ""
-"The `Quarterly` branch provides users with a more predictable and stable "
+"Quarterly branches 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 2023, is named 2023Q1. And the `Latest` "
-"branch provides the latest versions of the packages to the users."
+"commits), bug fixes and ports compliance or framework changes. A quarterly "
+"is branched from `main` 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 2023, is named `2023Q1`. `latest` provides the "
+"latest versions of ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:196
msgid ""
-"To switch man:pkg[8] from Quarterly to Latest run the following commands:"
+"To switch man:pkg.conf[5] from quarterly to latest -- if you do not already "
+"have a [.filename]#FreeBSD.conf# at [.filename]#/usr/local/etc/pkg/repos# -- "
+"run the following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:201
#, no-wrap
msgid ""
"# mkdir -p /usr/local/etc/pkg/repos\n"
"# echo 'FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/${ABI}/latest\" }' > /usr/local/etc/pkg/repos/FreeBSD.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:204
msgid ""
-"Then run this command to update the local package repositories catalogues "
-"for the Latest branch:"
+"Then run this command to update the local package repositories catalogues:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:208
#, no-wrap
-msgid "# pkg update -f\n"
+msgid "# pkg update\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:211
#, no-wrap
msgid "Configure pkg"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:215
msgid ""
"man:pkg.conf[5] is the system-wide configuration file used by the man:pkg[8] "
"tools. The default location of this file is `/usr/local/etc/pkg.conf`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:220
msgid ""
"FreeBSD does not need to have a `pkg.conf` file. Many installations will "
"work well with no `pkg.conf` at all or with an empty `pkg.conf` (other than "
"comment lines)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:223
msgid "Lines in the file beginning with a \"#\" are\tcomments and are ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:226
msgid ""
"The file is in UCL format. For more information on the syntax of man:"
"libucl[3], please visit the link:https://github.com/vstakhov/libucl[official "
"UCL website]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:228
msgid ""
"The following types of options are recognized - boolean, string and list "
"options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:230
msgid ""
"A boolean option is marked as enabled if one of the following values is "
"specified in the configuration file - YES, TRUE and ON."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:232
#, no-wrap
msgid "Searching Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:235
msgid "To search a package man:pkg-search[8] can be used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:239
#, no-wrap
msgid "# pkg search nginx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:259
#, no-wrap
msgid ""
"modsecurity3-nginx-1.0.3 Instruction detection and prevention engine / nginx Wrapper\n"
"nginx-1.22.1_2,3 Robust and small WWW server\n"
"nginx-devel-1.23.2_4 Robust and small WWW server\n"
"nginx-full-1.22.1_1,3 Robust and small WWW server (full package)\n"
"nginx-lite-1.22.1,3 Robust and small WWW server (lite package)\n"
"nginx-naxsi-1.22.1,3 Robust and small WWW server (plus NAXSI)\n"
"nginx-prometheus-exporter-0.10.0_7 Prometheus exporter for NGINX and NGINX Plus stats\n"
"nginx-ultimate-bad-bot-blocker-4.2020.03.2005_1 Nginx bad bot and other things blocker\n"
"nginx-vts-exporter-0.10.7_7 Server that scraps NGINX vts stats and export them via HTTP\n"
"p5-Nginx-ReadBody-0.07_1 Nginx embeded perl module to read and evaluate a request body\n"
"p5-Nginx-Simple-0.07_1 Perl 5 module for easy to use interface for Nginx Perl Module\n"
"p5-Test-Nginx-0.30 Testing modules for Nginx C module development\n"
"py39-certbot-nginx-2.0.0 NGINX plugin for Certbot\n"
"rubygem-passenger-nginx-6.0.15 Modules for running Ruby on Rails and Rack applications\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:262
#, no-wrap
msgid "Installing and Fetching Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:267
msgid ""
"To install a binary package man:pkg-install[8] can be used. 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:271
#, no-wrap
msgid "# pkg install curl\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:281
#, no-wrap
msgid ""
"Updating FreeBSD repository catalogue...\n"
"FreeBSD repository is up to date.\n"
"All repositories are up to date.\n"
"The following 9 package(s) will be affected (of 0 checked):\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:292
#, no-wrap
msgid ""
"New packages to be INSTALLED:\n"
" ca_root_nss: 3.83\n"
" curl: 7.86.0\n"
" gettext-runtime: 0.21\n"
" indexinfo: 0.3.1\n"
" libidn2: 2.3.3\n"
" libnghttp2: 1.48.0\n"
" libpsl: 0.21.1_4\n"
" libssh2: 1.10.0.3\n"
" libunistring: 1.0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:294
#, no-wrap
msgid "Number of packages to be installed: 9\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:297
#, no-wrap
msgid ""
"The process will require 11 MiB more space.\n"
"3 MiB to be downloaded\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:299
#, no-wrap
msgid "Proceed with this action? [y/N]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:302
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:306
#, no-wrap
msgid "# pkg info\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:322
#, no-wrap
msgid ""
"ca_root_nss-3.83 Root certificate bundle from the Mozilla Project\n"
"curl-7.86.0 Command line tool and library for transferring data with URLs\n"
"gettext-runtime-0.21.1 GNU gettext runtime libraries and programs\n"
"indexinfo-0.3.1 Utility to regenerate the GNU info page index\n"
"libidn2-2.3.3 Implementation of IDNA2008 internationalized domain names\n"
"libnghttp2-1.48.0 HTTP/2.0 C Library\n"
"libpsl-0.21.1_6 C library to handle the Public Suffix List\n"
"libssh2-1.10.0.3 Library implementing the SSH2 protocol\n"
"libunistring-1.0 Unicode string library\n"
"pkg-1.18.4 Package manager\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:326
msgid ""
"To fetch a package and install it later or in another place use man:pkg-"
"fetch[8]. For example, to download `nginx-lite`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:330
#, no-wrap
msgid "# pkg fetch -d -o /usr/home/user/packages/ nginx-lite\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:333
msgid "`-d`: used to fetch all the dependencies"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:334
msgid "`-o`: used to specify the download directory"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:343
#, no-wrap
msgid ""
"Updating FreeBSD repository catalogue...\n"
"FreeBSD repository is up to date.\n"
"All repositories are up to date.\n"
"The following packages will be fetched:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:347
#, no-wrap
msgid ""
"New packages to be FETCHED:\n"
" nginx-lite: 1.22.1,3 (342 KiB: 22.20% of the 2 MiB to download)\n"
" pcre: 8.45_3 (1 MiB: 77.80% of the 2 MiB to download)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:349
#, no-wrap
msgid "Number of packages to be fetched: 2\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:352
#, no-wrap
msgid ""
"The process will require 2 MiB more space.\n"
"2 MiB to be downloaded.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:354
#, no-wrap
msgid "Proceed with fetching packages? [y/N]:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:357
msgid ""
"To install the downloaded packages man:pkg-install[8] can be used as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:361
#, no-wrap
msgid "# cd /usr/home/user/packages/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:366
#, no-wrap
msgid "# pkg install nginx-lite-1.22.1,3.pkg\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:369
#, no-wrap
msgid "Obtaining Information About Installed Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:372
msgid ""
"Information about the packages installed on a system can be viewed by "
"running man:pkg-info[8] 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:374
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:378
#, no-wrap
msgid "# pkg info pkg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:407
#, no-wrap
msgid ""
"pkg-1.19.0\n"
"Name : pkg\n"
"Version : 1.19.0\n"
"Installed on : Sat Dec 17 11:05:28 2022 CET\n"
"Origin : ports-mgmt/pkg\n"
"Architecture : FreeBSD:13:amd64\n"
"Prefix : /usr/local\n"
"Categories : ports-mgmt\n"
"Licenses : BSD2CLAUSE\n"
"Maintainer : pkg@FreeBSD.org\n"
"WWW : https://github.com/freebsd/pkg\n"
"Comment : Package manager\n"
"Options :\n"
" DOCS : on\n"
"Shared Libs provided:\n"
" libpkg.so.4\n"
"Annotations :\n"
" FreeBSD_version: 1301000\n"
" repo_type : binary\n"
" repository : FreeBSD\n"
"Flat size : 33.2MiB\n"
"Description :\n"
"Package management tool\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:409
#, no-wrap
msgid "WWW: https://github.com/freebsd/pkg\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:412
#, no-wrap
msgid "Upgrading Installed Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:415
msgid ""
"Installed packages can be upgraded to their latest versions using man:pkg-"
"upgrade[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:419
#, no-wrap
msgid "# pkg upgrade\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:422
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:424
#, no-wrap
msgid "Auditing Installed Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:429
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, use man:pkg-audit[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:433
#, no-wrap
msgid "# pkg audit -F\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:448
#, no-wrap
msgid ""
"Fetching vuln.xml.xz: 100% 976 KiB 499.5kB/s 00:02 \n"
"chromium-108.0.5359.98 is vulnerable:\n"
" chromium -- multiple vulnerabilities\n"
" CVE: CVE-2022-4440\n"
" CVE: CVE-2022-4439\n"
" CVE: CVE-2022-4438\n"
" CVE: CVE-2022-4437\n"
" CVE: CVE-2022-4436\n"
" WWW: https://vuxml.FreeBSD.org/freebsd/83eb9374-7b97-11ed-be8f-3065ec8fd3ec.html\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:451
#, no-wrap
msgid "Removing Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:454
msgid ""
"Packages that are no longer needed can be removed with man:pkg-delete[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:456
msgid "For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:460
#, no-wrap
msgid "# pkg delete curl\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:468
#, no-wrap
msgid ""
"Checking integrity... done (0 conflicting)\n"
"Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:471
#, no-wrap
msgid ""
"Installed packages to be REMOVED:\n"
" curl :7.86.0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:473
#: documentation/content/en/books/handbook/ports/_index.adoc:503
#, no-wrap
msgid "Number of packages to be removed: 1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:475
#, no-wrap
msgid "The operation will free 4 MiB.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:479
#, no-wrap
msgid ""
"Proceed with deinstallation packages? [y/N]: y\n"
"[1/1] Deinstalling curl-7.86.0...\n"
"[1/1] Deleting files for curl-7.86.0: 100%\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:482
#, no-wrap
msgid "Automatically Removing Unused Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:486
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 man:pkg-"
"autoremove[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:490
#, no-wrap
msgid "# pkg autoremove\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:498
#, no-wrap
msgid ""
"Checking integrity... done (0 conflicting)\n"
"Deinstallation has been requested for the following 1 packages:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:501
#, no-wrap
msgid ""
"Installed packages to be REMOVED:\n"
" ca_root_nss-3.83\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:505
#, no-wrap
msgid "The operation will free 723 KiB.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:507
#, no-wrap
msgid "Proceed with deinstalling packages? [y/N]: \n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:511
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:515
#, no-wrap
msgid "# pkg prime-list\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:524
#, no-wrap
msgid ""
"nginx\n"
"openvpn\n"
"sudo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:529
msgid ""
"`pkg prime-list` is an alias command declared in `/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:533
#, no-wrap
msgid "# pkg prime-origins\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:542
#, no-wrap
msgid ""
"www/nginx\n"
"security/openvpn\n"
"security/sudo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:545
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:547
msgid "Marking an installed package as automatic can be done using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:551
#, no-wrap
msgid "# pkg set -A 1 devel/cmake\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:554
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:556
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:560
#, no-wrap
msgid "# pkg set -A 0 devel/cmake\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:563
#, no-wrap
msgid "Restoring the Package Database"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:567
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:571
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:575
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:579
#, no-wrap
msgid "# pkg backup -r /path/to/pkg.sql\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:584
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:588
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:592
#, no-wrap
msgid "# pkg backup -d /path/to/pkg.sql\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:595
#, no-wrap
msgid "Removing Stale Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:600
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:604
#, no-wrap
msgid "# pkg clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:607
msgid "The entire cache may be cleared by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:611
#, no-wrap
msgid "# pkg clean -a\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:614
#, no-wrap
msgid "Locking and Unlocking Packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:620
msgid ""
"man:pkg-lock[8] is used to lock packages against reinstallation, "
"modification or deletion. man:pkg-unlock[8] unlocks the named packages. "
"Either variant only has an effect on currently installed packages. "
"Consequently it is impossible to block installation of a new package by "
"using this mechanism, unless such an installation implies updating a locked "
"package."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:622
msgid "For example, to lock `nginx-lite`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:626
#, no-wrap
msgid "# pkg lock nginx-lite\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:629
msgid "And to unlock `nginx-lite`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:633
#, no-wrap
msgid "# pkg unlock nginx-lite\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:636
#, no-wrap
msgid "Modifying Package Metadata"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:641
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/python3[] "
"is renamed to package:lang/python311[] so that package:lang/python3[] can "
"now represent version `3.11`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:643
msgid "To change the package origin for the above example, run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:647
#, no-wrap
msgid "# pkg set -o lang/python3:lang/python311\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:650
msgid ""
"As another example, to update package:lang/ruby31[] to package:lang/"
"ruby32[], run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:654
#, no-wrap
msgid "# pkg set -o lang/ruby31:lang/ruby32\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:660
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:664
#, no-wrap
msgid "# pkg install -Rf lang/ruby32\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:668
#, no-wrap
msgid "Using the Ports Collection"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:672
msgid ""
"The Ports Collection is a set of `Makefiles`, 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:674
msgid ""
"By default, the Ports Collection itself is stored as a subdirectory of `/usr/"
"ports`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:681
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."
+"binary packages provided via pkg to install software. In RELEASE versions "
+"of FreeBSD: man:pkg.conf[5] defaults to quarterly, not latest. Dependencies "
+"could be different for a port in latest, compared to its counterpart (if "
+"any) in quarterly, 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 of the ports tree."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:687
msgid ""
-"The Ports Collection contains directories for software categories. Inside "
+"The Ports Collection contains directories for software categories. Within "
"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:689
#, no-wrap
msgid "*Makefile*: contains statements that specify how the application should be compiled and where its components should be installed.\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:690
#, no-wrap
msgid "*distinfo*: contains the names and checksums of the files that must be downloaded to build the port.\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:691
#, no-wrap
msgid "*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.\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:692
#, no-wrap
msgid "*pkg-descr*: provides a more detailed description of the program.\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:693
#, no-wrap
msgid "*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.\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:696
msgid ""
"Some ports include `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:699
msgid ""
"The port does not include the actual source code, also known as a "
"`distfile`. The extract portion of building a port will automatically save "
"the downloaded source to `/usr/ports/distfiles`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:701
#, no-wrap
msgid "Installing the Ports Collection"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:705
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:710
#, no-wrap
msgid "*Procedure: Git Method*\n"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/ports/_index.adoc:714
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: delimited block * 4
#: documentation/content/en/books/handbook/ports/_index.adoc:716
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:721
#, 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:724
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:728
#, no-wrap
msgid "# pkg install git\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:731
-msgid "Check out a copy of the HEAD branch of the ports tree:"
+msgid "Check out the `main` branch of the ports repo:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:735
#, 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:738
-msgid "Or, check out a copy of a quarterly branch:"
+msgid "Or, check out a quarterly branch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:742
#, no-wrap
msgid "# git clone https://git.FreeBSD.org/ports.git -b 2023Q1 /usr/ports\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:745
msgid "As needed, update `/usr/ports` after the initial Git checkout:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:749
#, no-wrap
msgid "# git -C /usr/ports pull\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:752
msgid "As needed, switch `/usr/ports` to a different quarterly branch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:756
#, no-wrap
msgid "# git -C /usr/ports switch 2023Q1\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:759
#, no-wrap
msgid "Installing Ports"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/ports/_index.adoc:763
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:771
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. Alternatively, 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:775
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:778
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:800
#, 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:813
#, 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:817
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:822
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:825
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:831
#, 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:836
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:838
#, no-wrap
msgid "Customizing Ports Installation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:846
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[] and package:security/"
"gpgme[]. 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:852
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:859
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:863
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:868
msgid ""
"For users who cannot be connected to the Internet all the time, `make fetch` "
"can be run within `/usr/ports`, to fetch all distfiles, or within a "
"category, such as `/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:871
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 `Makefile`. When using, specify the alternate "
"location:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:877
#, 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:880
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:884
#, no-wrap
msgid "# make WRKDIRPREFIX=/usr/home/example/ports install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:887
msgid ""
"will compile the port in `/usr/home/example/ports` and install everything "
"under `/usr/local`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:891
#, no-wrap
msgid "# make PREFIX=/usr/home/example/local install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:894
msgid ""
"will compile the port in `/usr/ports` and install it in `/usr/home/example/"
"local`. And:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:898
#, no-wrap
msgid "# make WRKDIRPREFIX=../ports PREFIX=../local install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:901
msgid "will combine the two."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:904
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:906
#, no-wrap
msgid "Removing Installed Ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:910
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:912
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:920
#, 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:922
#, no-wrap
msgid "\tlsof-4.88.d,8\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:925
#, 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:930
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:932
#, no-wrap
msgid "Upgrading Ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:936
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:940
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 <<ports-using-git-method, \"Git Method\">>. 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:944
#, no-wrap
msgid "# pkg version -l \"<\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:951
msgid ""
"Before attempting an upgrade, read `/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:954
#, no-wrap
msgid "Tools to Upgrade and Manage Ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:958
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:961
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:966
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:969
#, no-wrap
msgid "Upgrading Ports Using Portmaster"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:974
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:979
#, 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:982
msgid "Portmaster defines four categories of ports:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:984
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:985
msgid "Trunk port: has no dependencies, but other ports depend upon it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:986
msgid "Branch port: has dependencies and other ports depend upon it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:987
msgid "Leaf port: has dependencies but no other ports depend upon it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:989
msgid "To list these categories and search for updates:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1010
#, 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:1013
#, 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:1016
msgid "This command is used to upgrade all outdated ports:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1020
#, no-wrap
msgid "# portmaster -a\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1030
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:1033
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:1037
#, no-wrap
msgid "# portmaster -af\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1041
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:1045
#, no-wrap
msgid "# portmaster shells/bash\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1048
msgid ""
"More information about package:ports-mgmt/portmaster[] may be found in its "
"`pkg-descr`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/ports/_index.adoc:1050
#, no-wrap
msgid "Upgrading Ports Using Portupgrade"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1055
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:1060
#, 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:1063
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:1066
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:1070
#, no-wrap
msgid "# portupgrade -ai\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1074
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:1078
#, no-wrap
msgid "# portupgrade -R firefox\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1085
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:1089
#, no-wrap
msgid "# portupgrade -PP gnome3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1093
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:1095
msgid ""
"More information about package:ports-mgmt/portupgrade[] may be found in its "
"`pkg-descr`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ports/_index.adoc:1097
#, no-wrap
msgid "Ports and Disk Space"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1103
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 `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 `work` directories "
"found within the local copy of the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1107
#, no-wrap
msgid "# portsclean -C\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1111
msgid ""
"In addition, outdated source distribution files accumulate in `/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:1115
#, no-wrap
msgid "# portsclean -D\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1118
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:1122
#, no-wrap
msgid "# portsclean -DD\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1125
msgid "If Portmaster is installed, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1129
#, no-wrap
msgid "# portmaster --clean-distfiles\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1132
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:1134
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:1136
#, no-wrap
msgid "Building Packages with Poudriere"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1143
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:1148
msgid ""
"Poudriere is installed using the package:ports-mgmt/poudriere[] package or "
"port. The installation includes a sample configuration file `/usr/local/etc/"
"poudriere.conf.sample`. Copy this file to `/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:1154
msgid ""
"While `ZFS` is not required on the system running poudriere, it is "
"beneficial. When `ZFS` is used, `ZPOOL` must be specified in `/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 `/"
"poudriere`. Defaults for the other configuration values are adequate."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1158
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:1160
#, no-wrap
msgid "Initialize Jails and Port Trees"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1166
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:1213
#, no-wrap
msgid ""
"# 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 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 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/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 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"
"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"
"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"
"13.1-RELEASE-p1\n"
"[00:04:06] Recording filesystem state for clean... done\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:1220
#, 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:1225
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:1229
msgid ""
"The basic configuration shown here puts a single jail-, port-, and set-"
"specific `make.conf` in `/usr/local/etc/poudriere.d`. The filename in this "
"example is created by combining the jail name, port name, and set name: "
"`13amd64-local-workstation-make.conf`. The system `make.conf` and this new "
"file are combined at build time to create the `make.conf` used by the build "
"jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1231
msgid ""
"Packages to be built are entered in `13amd64-local-workstation-pkglist`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1238
#, 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:1241
msgid "Options and dependencies for the specified ports are configured:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1245
#, no-wrap
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:1248
msgid "Finally, packages are built and a package repository is created:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1252
#, no-wrap
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:1256
msgid ""
"While running, pressing kbd:[Ctrl+t] displays the current state of the "
"build. Poudriere also builds files in `/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:1258
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:1260
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:1261
#, no-wrap
msgid "Configuring pkg Clients to Use a Poudriere Repository"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1266
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 `/usr/local/etc/pkg/"
"repos/FreeBSD.conf` that contains the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1272
#, no-wrap
msgid ""
"FreeBSD: {\n"
"\tenabled: no\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1276
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: `/usr/local/poudriere/data/packages/13amd64`, where `13amd64` is "
"the name of the build."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1279
msgid ""
"If the URL to the package repository is: `http://pkg.example.com/13amd64`, "
"then the repository configuration file in `/usr/local/etc/pkg/repos/custom."
"conf` would look like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:1286
#, no-wrap
msgid ""
"custom: {\n"
"\turl: \"http://pkg.example.com/13amd64\",\n"
"\tenabled: yes,\n"
"}\n"
msgstr ""
-#. type: Title ==
+#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:1289
+msgid ""
+"If exposing the package repository to the internet is not desired, the "
+"`file://` protocol can be used to point to the repository directly:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:1296
+#, no-wrap
+msgid ""
+"custom: {\n"
+"\turl: \"file:///usr/local/poudriere/data/packages/11amd64\",\n"
+"\tenabled: yes,\n"
+"}\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/handbook/ports/_index.adoc:1299
#, no-wrap
msgid "Post-Installation Considerations"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1293
+#: documentation/content/en/books/handbook/ports/_index.adoc:1303
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:1295
+#: documentation/content/en/books/handbook/ports/_index.adoc:1305
msgid ""
"Most applications install at least one default configuration file in `/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 `."
"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 `."
"sample` extension."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1296
+#: documentation/content/en/books/handbook/ports/_index.adoc:1306
msgid ""
"Applications which provide documentation will install it into `/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:1297
+#: documentation/content/en/books/handbook/ports/_index.adoc:1307
msgid ""
"Some applications run services which must be added to `/etc/rc.conf` before "
"starting the application. These applications usually install a startup "
"script in `/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:1302
+#: documentation/content/en/books/handbook/ports/_index.adoc:1312
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:1305
+#: documentation/content/en/books/handbook/ports/_index.adoc:1315
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:1306
+#: documentation/content/en/books/handbook/ports/_index.adoc:1316
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:1308
+#: documentation/content/en/books/handbook/ports/_index.adoc:1318
#, no-wrap
msgid "Dealing with Broken Ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1311
+#: documentation/content/en/books/handbook/ports/_index.adoc:1321
msgid "When a port does not build or install, try the following:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1313
+#: documentation/content/en/books/handbook/ports/_index.adoc:1323
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:1314
+#: documentation/content/en/books/handbook/ports/_index.adoc:1324
msgid ""
"Ask the maintainer of the port for help. Type `make maintainer` in the ports "
"skeleton or read the port's `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:1320
+#: documentation/content/en/books/handbook/ports/_index.adoc:1330
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:1323
+#: documentation/content/en/books/handbook/ports/_index.adoc:1333
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:1326
+#: documentation/content/en/books/handbook/ports/_index.adoc:1336
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:1327
+#: documentation/content/en/books/handbook/ports/_index.adoc:1337
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:1327
+#: documentation/content/en/books/handbook/ports/_index.adoc:1337
msgid ""
"Install the package instead of the port using the instructions in <<pkgng-"
"intro>>."
msgstr ""
diff --git a/documentation/content/en/books/handbook/virtualization/_index.po b/documentation/content/en/books/handbook/virtualization/_index.po
index 878abed658..50c309022f 100644
--- a/documentation/content/en/books/handbook/virtualization/_index.po
+++ b/documentation/content/en/books/handbook/virtualization/_index.po
@@ -1,2305 +1,2226 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/virtualization/_index.adoc:1
#, no-wrap
msgid "Virtualization software allows multiple operating systems to run simultaneously on the same computer"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1
#, no-wrap
msgid "Chapter 23. Virtualization"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/virtualization/_index.adoc:14
#, no-wrap
msgid "Virtualization"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:56
msgid ""
"Virtualization software allows multiple operating systems to run "
"simultaneously on the same computer. Such software systems for PCs often "
"involve a host operating system which runs the virtualization software and "
"supports any number of guest operating systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:58
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:60
msgid ""
"The difference between a host operating system and a guest operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:61
msgid "How to install FreeBSD on the following virtualization platforms:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:62
msgid "Parallels Desktop(Apple(R) macOS(R))"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:63
msgid "VMware Fusion(Apple(R) macOS(R))"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:64
msgid ""
"VirtualBox(TM)(Microsoft(R) Windows(R), Intel(R)-based Apple(R) macOS(R), "
"Linux)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:65
msgid "bhyve(FreeBSD)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:66
msgid "How to tune a FreeBSD system for best performance under virtualization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:68
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:70
msgid "Understand the crossref:basics[basics,basics of UNIX(R) and FreeBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:71
msgid "Know how to crossref:bsdinstall[bsdinstall,install FreeBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:72
msgid ""
"Know how to crossref:advanced-networking[advanced-networking,set up a "
"network connection]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:73
msgid ""
"Know how to crossref:ports[ports,install additional third-party software]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:75
#, no-wrap
msgid "FreeBSD as a Guest on Parallels Desktop for macOS(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:80
msgid ""
"Parallels Desktop for Mac(R) is a commercial software product available for "
"Apple(R) Mac(R) computers running macOS(R) 10.14.6 or higher. FreeBSD is a "
"fully supported guest operating system. Once Parallels has been installed "
"on macOS(R), the user must configure a virtual machine and then install the "
"desired guest operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:82
#, no-wrap
msgid "Installing FreeBSD on Parallels Desktop on Mac(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:85
msgid ""
"The first step in installing FreeBSD on Parallels is to create a new virtual "
"machine for installing FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:87
msgid ""
"Choose menu:Install Windows or another OS from a DVD or image file[] and "
"proceed."
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/virtualization/_index.adoc:88
#, no-wrap
msgid "Parallels setup wizard showing Install Windows or another OS from a DVD or image file chosen"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:88
#, no-wrap
msgid "parallels-freebsd1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:91
msgid "Select the FreeBSD image file."
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/virtualization/_index.adoc:92
#, no-wrap
msgid "Parallels setup wizard showing FreeBSD image file selected"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:92
#, no-wrap
msgid "parallels-freebsd2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:95
msgid "Choose menu:Other as operating system[]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:99
msgid "Choosing FreeBSD will cause boot error on startup."
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/virtualization/_index.adoc:101
#, no-wrap
msgid "Parallels setup wizard showing Other selected as operating system"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:101
#, no-wrap
msgid "parallels-freebsd3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:104
msgid ""
"Name the virtual machine and check menu:Customize settings before "
"installation[]"
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/virtualization/_index.adoc:105
#, no-wrap
msgid "Parallels setup wizard showing the checkbox checked for customizing settings before installation"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:105
#, no-wrap
msgid "parallels-freebsd4.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:109
msgid ""
"When the configuration window pops up, go to menu:Hardware[] tab, choose "
"menu:Boot order[], and click menu:Advanced[]. Then, choose *EFI 64-bit* as "
"menu:BIOS[]."
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/virtualization/_index.adoc:110
#, no-wrap
msgid "Parallels setup wizard showing EFI 64-bit chosen as BIOS"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:110
#, no-wrap
msgid "parallels-freebsd5.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:113
msgid ""
"Click menu:OK[], close the configuration window, and click menu:Continue[]."
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/virtualization/_index.adoc:114
#, no-wrap
msgid "Parallels setup wizard showing the summary of the new virtual machine"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:114
#, no-wrap
msgid "parallels-freebsd6.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:118
msgid ""
"The virtual machine will automatically boot. Install FreeBSD following the "
"general steps."
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/virtualization/_index.adoc:119
#, no-wrap
msgid "FreeBSD booted on Parallels"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:119
#, no-wrap
msgid "parallels-freebsd7.png"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:122
#, no-wrap
msgid "Configuring FreeBSD on Parallels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:125
msgid ""
"After FreeBSD has been successfully installed on macOS(R) X with Parallels, "
"there are a number of configuration steps that can be taken to optimize the "
"system for virtualized operation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:128
#: documentation/content/en/books/handbook/virtualization/_index.adoc:234
msgid "Set Boot Loader Variables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:131
msgid ""
"The most important step is to reduce the `kern.hz` tunable to reduce the CPU "
"utilization of FreeBSD under the Parallels environment. This is "
"accomplished by adding the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:135
#: documentation/content/en/books/handbook/virtualization/_index.adoc:241
#, no-wrap
msgid "kern.hz=100\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:139
msgid ""
"Without this setting, an idle FreeBSD Parallels guest will use roughly 15% "
"of the CPU of a single processor iMac(R). After this change the usage will "
"be closer to 5%."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:140
#: documentation/content/en/books/handbook/virtualization/_index.adoc:246
msgid "Create a New Kernel Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:143
msgid ""
"All of the SCSI, FireWire, and USB device drivers can be removed from a "
"custom kernel configuration file. Parallels provides a virtual network "
"adapter used by the man:ed[4] driver, so all network devices except for man:"
"ed[4] and man:miibus[4] can be removed from the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:144
#: documentation/content/en/books/handbook/virtualization/_index.adoc:250
msgid "Configure Networking"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:148
msgid ""
"The most basic networking setup uses DHCP to connect the virtual machine to "
"the same local area network as the host Mac(R). This can be accomplished by "
"adding `ifconfig_ed0=\"DHCP\"` to [.filename]#/etc/rc.conf#. More advanced "
"networking setups are described in crossref:advanced-networking[advanced-"
"networking,Advanced Networking]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:150
#, no-wrap
msgid "FreeBSD as a Guest on VMware Fusion for macOS(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:155
msgid ""
"VMware Fusion for Mac(R) is a commercial software product available for "
"Apple(R) Mac(R) computers running macOS(R) 12 or higher. FreeBSD is a fully "
"supported guest operating system. Once VMware Fusion has been installed on "
"macOS(R), the user can configure a virtual machine and then install the "
"desired guest operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:157
#, no-wrap
msgid "Installing FreeBSD on VMware Fusion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:161
msgid ""
"The first step is to start VMware Fusion which will load the Virtual Machine "
"Library. Click [.guimenuitem]#+->New# to create the virtual machine:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:162
#, no-wrap
msgid "vmware-freebsd01.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:166
msgid ""
"This will load the New Virtual Machine Assistant. Choose [."
"guimenuitem]#Create a custom virtual machine# and click [."
"guimenuitem]#Continue# to proceed:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:167
#, no-wrap
msgid "vmware-freebsd02.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:170
msgid ""
"Select [.guimenuitem]#Other# as the [.guimenuitem]#Operating System# and "
"either [.guimenuitem]#FreeBSD X# or [.guimenuitem]#FreeBSD X 64-bit#, as the "
"menu:Version[] when prompted:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:171
#, no-wrap
msgid "vmware-freebsd03.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:174
msgid "Choose the firmware(UEFI is recommended):"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:175
#, no-wrap
msgid "vmware-freebsd04.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:178
msgid ""
"Choose [.guimenuitem]#Create a new virtual disk# and click [."
"guimenuitem]#Continue#:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:179
#, no-wrap
msgid "vmware-freebsd05.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:182
msgid "Check the configuration and click [.guimenuitem]#Finish#:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:183
#, no-wrap
msgid "vmware-freebsd06.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:186
msgid ""
"Choose the name of the virtual machine and the directory where it should be "
"saved:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:187
#, no-wrap
msgid "vmware-freebsd07.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:190
msgid ""
"Press command+E to open virtual machine settings and click [.guimenuitem]#CD/"
"DVD#:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:191
#, no-wrap
msgid "vmware-freebsd08.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:194
msgid "Choose FreeBSD ISO image or from a CD/DVD:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:195
#: documentation/content/en/books/handbook/virtualization/_index.adoc:217
#, no-wrap
msgid "vmware-freebsd09.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:198
msgid "Start the virtual machine:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:199
#, no-wrap
msgid "vmware-freebsd10.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:202
msgid "Install FreeBSD as usual:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:203
#, no-wrap
msgid "vmware-freebsd11.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:206
msgid ""
"Once the install is complete, the settings of the virtual machine can be "
"modified, such as memory usage and the number of CPUs the virtual machine "
"will have access to:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:210
msgid ""
"The System Hardware settings of the virtual machine cannot be modified while "
"the virtual machine is running."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:212
#, no-wrap
msgid "vmware-freebsd12.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:216
msgid ""
"The status of the CD-ROM device. Normally the CD/DVD/ISO is disconnected "
"from the virtual machine when it is no longer needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:222
msgid ""
"The last thing to change is how the virtual machine will connect to the "
"network. To allow connections to the virtual machine from other machines "
"besides the host, choose [.guimenuitem]#Connect directly to the physical "
"network (Bridged)#. Otherwise, [.guimenuitem]#Share the host's internet "
"connection (NAT)# is preferred so that the virtual machine can have access "
"to the Internet, but the network cannot access the virtual machine."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:223
#, no-wrap
msgid "vmware-freebsd13.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:226
msgid ""
"After modifying the settings, boot the newly installed FreeBSD virtual "
"machine."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:228
#, no-wrap
msgid "Configuring FreeBSD on VMware Fusion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:231
msgid ""
"After FreeBSD has been successfully installed on macOS(R) X with VMware "
"Fusion, there are a number of configuration steps that can be taken to "
"optimize the system for virtualized operation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:237
msgid ""
"The most important step is to reduce the `kern.hz` tunable to reduce the CPU "
"utilization of FreeBSD under the VMware Fusion environment. This is "
"accomplished by adding the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:245
msgid ""
"Without this setting, an idle FreeBSD VMware Fusion guest will use roughly "
"15% of the CPU of a single processor iMac(R). After this change, the usage "
"will be closer to 5%."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:249
msgid ""
"All of the FireWire, and USB device drivers can be removed from a custom "
"kernel configuration file. VMware Fusion provides a virtual network adapter "
"used by the man:em[4] driver, so all network devices except for man:em[4] "
"can be removed from the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:254
msgid ""
"The most basic networking setup uses DHCP to connect the virtual machine to "
"the same local area network as the host Mac(R). This can be accomplished by "
"adding `ifconfig_em0=\"DHCP\"` to [.filename]#/etc/rc.conf#. More advanced "
"networking setups are described in crossref:advanced-networking[advanced-"
"networking,Advanced Networking]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:256
msgid "Install drivers and open-vm-tools"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:258
msgid "To run FreeBSD smoothly on VMWare, drivers should be installed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:262
#, no-wrap
msgid "# pkg install xf86-video-vmware xf86-input-vmmouse open-vm-tools\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:265
#, no-wrap
msgid "FreeBSD as a Guest on VirtualBox(TM)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:269
msgid ""
"FreeBSD works well as a guest in VirtualBox(TM). The virtualization "
"software is available for most common operating systems, including FreeBSD "
"itself."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:271
msgid "The VirtualBox(TM) guest additions provide support for:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:273
msgid "Clipboard sharing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:274
msgid "Mouse pointer integration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:275
msgid "Host time synchronization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:276
msgid "Window scaling."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:277
msgid "Seamless mode."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:281
msgid "These commands are run in the FreeBSD guest."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:285
msgid ""
"First, install the package:emulators/virtualbox-ose-additions[] package or "
"port in the FreeBSD guest. This will install the port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:289
#, no-wrap
msgid "# cd /usr/ports/emulators/virtualbox-ose-additions && make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:292
msgid "Add these lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:297
#, no-wrap
msgid ""
"vboxguest_enable=\"YES\"\n"
"vboxservice_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:300
msgid ""
"If man:ntpd[8] or man:ntpdate[8] is used, disable host time synchronization:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:304
#, no-wrap
msgid "vboxservice_flags=\"--disable-timesync\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:308
msgid ""
"Xorg will automatically recognize the `vboxvideo` driver. It can also be "
"manually entered in [.filename]#/etc/X11/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:317
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"vboxvideo\"\n"
"\tVendorName \"InnoTek Systemberatung GmbH\"\n"
"\tBoardName \"VirtualBox Graphics Adapter\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:320
msgid ""
"To use the `vboxmouse` driver, adjust the mouse section in [.filename]#/etc/"
"X11/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:327
#, no-wrap
msgid ""
"Section \"InputDevice\"\n"
"\tIdentifier \"Mouse0\"\n"
"\tDriver \"vboxmouse\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:330
-msgid ""
-"HAL users should create the following [.filename]#/usr/local/etc/hal/fdi/"
-"policy/90-vboxguest.fdi# or copy it from [.filename]#/usr/local/share/hal/"
-"fdi/policy/10osvendor/90-vboxguest.fdi#:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:338
-#, no-wrap
-msgid ""
-"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
-"<!--\n"
-"# Sun VirtualBox\n"
-"# Hal driver description for the vboxmouse driver\n"
-"# $Id: chapter.xml,v 1.33 2012-03-17 04:53:52 eadler Exp $\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:340
-#, no-wrap
-msgid "\tCopyright (C) 2008-2009 Sun Microsystems, Inc.\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:348
-#, no-wrap
-msgid ""
-"\tThis file is part of VirtualBox Open Source Edition (OSE, as\n"
-"\tavailable from http://www.virtualbox.org. This file is free software;\n"
-"\tyou can redistribute it and/or modify it under the terms of the GNU\n"
-"\tGeneral Public License (GPL) as published by the Free Software\n"
-"\tFoundation, in version 2 as it comes in the \"COPYING\" file of the\n"
-"\tVirtualBox OSE distribution. VirtualBox OSE is distributed in the\n"
-"\thope that it will be useful, but WITHOUT ANY WARRANTY of any kind.\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:365
-#, no-wrap
-msgid ""
-"\tPlease contact Sun Microsystems, Inc., 4150 Network Circle, Santa\n"
-"\tClara, CA 95054 USA or visit http://www.sun.com if you need\n"
-"\tadditional information or have any questions.\n"
-"-->\n"
-"<deviceinfo version=\"0.2\">\n"
-" <device>\n"
-" <match key=\"info.subsystem\" string=\"pci\">\n"
-" <match key=\"info.product\" string=\"VirtualBox guest Service\">\n"
-" <append key=\"info.capabilities\" type=\"strlist\">input</append>\n"
-"\t<append key=\"info.capabilities\" type=\"strlist\">input.mouse</append>\n"
-" <merge key=\"input.x11_driver\" type=\"string\">vboxmouse</merge>\n"
-"\t<merge key=\"input.device\" type=\"string\">/dev/vboxguest</merge>\n"
-" </match>\n"
-" </match>\n"
-" </device>\n"
-"</deviceinfo>\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:370
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:332
msgid ""
"Shared folders for file transfers between host and VM are accessible by "
"mounting them using `mount_vboxvfs`. A shared folder can be created on the "
"host using the VirtualBox GUI or via `vboxmanage`. For example, to create a "
"shared folder called _myshare_ under [.filename]#/mnt/bsdboxshare# for the "
"VM named _BSDBox_, run:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:374
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:336
#, no-wrap
msgid "# vboxmanage sharedfolder add 'BSDBox' --name myshare --hostpath /mnt/bsdboxshare\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:378
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:340
msgid ""
"Note that the shared folder name must not contain spaces. Mount the shared "
"folder from within the guest system like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:382
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:344
#, no-wrap
msgid "# mount_vboxvfs -w myshare /mnt\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:385
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:347
#, no-wrap
msgid "FreeBSD as a Host with VirtualBox(TM)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:393
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:355
msgid ""
"VirtualBox(TM) is an actively developed, complete virtualization package, "
"that is available for most operating systems including Windows(R), macOS(R), "
"Linux(R) and FreeBSD. It is equally capable of running Windows(R) or "
"UNIX(R)-like guests. It is released as open source software, but with "
"closed-source components available in a separate extension pack. These "
"components include support for USB 2.0 devices. More information may be "
"found on the http://www.virtualbox.org/wiki/Downloads[Downloads page of the "
"VirtualBox(TM) wiki]. Currently, these extensions are not available for "
"FreeBSD."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:395
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:357
#, no-wrap
msgid "Installing VirtualBox(TM)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:399
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:361
msgid ""
"VirtualBox(TM) is available as a FreeBSD package or port in package:"
"emulators/virtualbox-ose[]. The port can be installed using these commands:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:404
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:366
#, no-wrap
msgid ""
"# cd /usr/ports/emulators/virtualbox-ose\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:409
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:371
msgid ""
"One useful option in the port's configuration menu is the `GuestAdditions` "
"suite of programs. These provide a number of useful features in guest "
"operating systems, like mouse pointer integration (allowing the mouse to be "
"shared between host and guest without the need to press a special keyboard "
"shortcut to switch) and faster video rendering, especially in Windows(R) "
"guests. The guest additions are available in the menu:Devices[] menu, after "
"the installation of the guest is finished."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:412
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:374
msgid ""
"A few configuration changes are needed before VirtualBox(TM) is started for "
"the first time. The port installs a kernel module in [.filename]#/boot/"
"modules# which must be loaded into the running kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:416
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:378
#, no-wrap
msgid "# kldload vboxdrv\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:419
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:381
msgid ""
"To ensure the module is always loaded after a reboot, add this line to [."
"filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:423
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:385
#, no-wrap
msgid "vboxdrv_load=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:426
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:388
msgid ""
"To use the kernel modules that allow bridged or host-only networking, add "
"this line to [.filename]#/etc/rc.conf# and reboot the computer:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:430
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:392
#, no-wrap
msgid "vboxnet_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:435
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:397
msgid ""
"The `vboxusers` group is created during installation of VirtualBox(TM). All "
"users that need access to VirtualBox(TM) will have to be added as members of "
"this group. `pw` can be used to add new members:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:439
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:401
#, no-wrap
msgid "# pw groupmod vboxusers -m yourusername\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:442
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:404
msgid ""
"The default permissions for [.filename]#/dev/vboxnetctl# are restrictive and "
"need to be changed for bridged networking:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:447
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:409
#, no-wrap
msgid ""
"# chown root:vboxusers /dev/vboxnetctl\n"
"# chmod 0660 /dev/vboxnetctl\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:450
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:412
msgid ""
"To make this permissions change permanent, add these lines to [.filename]#/"
"etc/devfs.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:455
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:417
#, no-wrap
msgid ""
"own vboxnetctl root:vboxusers\n"
"perm vboxnetctl 0660\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:458
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:420
msgid "To launch VirtualBox(TM), type from an Xorg session:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:462
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:424
#, no-wrap
msgid "% VirtualBox\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:466
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:428
msgid ""
"For more information on configuring and using VirtualBox(TM), refer to the "
"http://www.virtualbox.org[official website]. For FreeBSD-specific "
"information and troubleshooting instructions, refer to the http://wiki."
"FreeBSD.org/VirtualBox[relevant page in the FreeBSD wiki]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:468
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:430
#, no-wrap
msgid "VirtualBox(TM) USB Support"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:472
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:434
msgid ""
"VirtualBox(TM) can be configured to pass USB devices through to the guest "
"operating system. The host controller of the OSE version is limited to "
"emulating USB 1.1 devices until the extension pack supporting USB 2.0 and "
"3.0 devices becomes available on FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:474
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:436
msgid ""
"For VirtualBox(TM) to be aware of USB devices attached to the machine, the "
"user needs to be a member of the `operator` group."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:478
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:440
#, no-wrap
msgid "# pw groupmod operator -m yourusername\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:481
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:443
msgid ""
"Then, add the following to [.filename]#/etc/devfs.rules#, or create this "
"file if it does not exist yet:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:486
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:448
#, no-wrap
msgid ""
"[system=10]\n"
"add path 'usb/*' mode 0660 group operator\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:489
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:451
msgid ""
"To load these new rules, add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:493
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:455
#, no-wrap
msgid "devfs_system_ruleset=\"system\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:496
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:458
msgid "Then, restart devfs:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:500
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:540
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:462
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:490
#, no-wrap
msgid "# service devfs restart\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:503
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:465
msgid ""
"Restart the login session and VirtualBox(TM) for these changes to take "
"effect, and create USB filters as necessary."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:505
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:467
#, no-wrap
msgid "VirtualBox(TM) Host DVD/CD Access"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:513
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:475
msgid ""
"Access to the host DVD/CD drives from guests is achieved through the sharing "
"of the physical drives. Within VirtualBox(TM), this is set up from the "
"Storage window in the Settings of the virtual machine. If needed, create an "
"empty IDECD/DVD device first. Then choose the Host Drive from the popup "
"menu for the virtual CD/DVD drive selection. A checkbox labeled "
"`Passthrough` will appear. This allows the virtual machine to use the "
"hardware directly. For example, audio CDs or the burner will only function "
"if this option is selected."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:515
-msgid ""
-"HAL needs to run for VirtualBox(TM)DVD/CD functions to work, so enable it in "
-"[.filename]#/etc/rc.conf# and start it if it is not already running:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:519
-#, no-wrap
-msgid "hald_enable=\"YES\"\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:524
-#, no-wrap
-msgid "# service hald start\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:529
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:479
msgid ""
"In order for users to be able to use VirtualBox(TM)DVD/CD functions, they "
"need access to [.filename]#/dev/xpt0#, [.filename]#/dev/cdN#, and [."
"filename]#/dev/passN#. This is usually achieved by making the user a member "
"of `operator`. Permissions to these devices have to be corrected by adding "
"these lines to [.filename]#/etc/devfs.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:535
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:485
#, no-wrap
msgid ""
"perm cd* 0660\n"
"perm xpt0 0660\n"
"perm pass* 0660\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:543
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:493
#, no-wrap
msgid "FreeBSD as a Host with bhyve"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:549
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:499
msgid ""
"The bhyve BSD-licensed hypervisor became part of the base system with "
"FreeBSD 10.0-RELEASE. This hypervisor supports a number of guests, "
"including FreeBSD, OpenBSD, and many Linux(R) distributions. By default, "
"bhyve provides access to serial console and does not emulate a graphical "
"console. Virtualization offload features of newer CPUs are used to avoid "
"the legacy methods of translating instructions and manually managing memory "
"mappings."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:557
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:507
msgid ""
"The bhyve design requires a processor that supports Intel(R) Extended Page "
"Tables (EPT) or AMD(R) Rapid Virtualization Indexing (RVI) or Nested Page "
"Tables (NPT). Hosting Linux(R) guests or FreeBSD guests with more than one "
"vCPU requires VMX unrestricted mode support (UG). Most newer processors, "
"specifically the Intel(R) Core(TM) i3/i5/i7 and Intel(R) Xeon(TM) E3/E5/E7, "
"support these features. UG support was introduced with Intel's Westmere "
"micro-architecture. For a complete list of Intel(R) processors that support "
"EPT, refer to https://ark.intel.com/content/www/us/en/ark/search/"
"featurefilter.html?productType=873&0_ExtendedPageTables=True[]. RVI is "
"found on the third generation and later of the AMD Opteron(TM) (Barcelona) "
"processors. The easiest way to tell if a processor supports bhyve is to run "
"`dmesg` or look in [.filename]#/var/run/dmesg.boot# for the `POPCNT` "
"processor feature flag on the `Features2` line for AMD(R) processors or "
"`EPT` and `UG` on the `VT-x` line for Intel(R) processors."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:559
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:509
#, no-wrap
msgid "Preparing the Host"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:563
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:513
msgid ""
"The first step to creating a virtual machine in bhyve is configuring the "
"host system. First, load the bhyve kernel module:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:567
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:517
#, no-wrap
msgid "# kldload vmm\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:572
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:522
msgid ""
"Then, create a [.filename]#tap# interface for the network device in the "
"virtual machine to attach to. In order for the network device to "
"participate in the network, also create a bridge interface containing the [."
"filename]#tap# interface and the physical interface as members. In this "
"example, the physical interface is _igb0_:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:581
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:531
#, no-wrap
msgid ""
"# ifconfig tap0 create\n"
"# sysctl net.link.tap.up_on_open=1\n"
"net.link.tap.up_on_open: 0 -> 1\n"
"# ifconfig bridge0 create\n"
"# ifconfig bridge0 addm igb0 addm tap0\n"
"# ifconfig bridge0 up\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:584
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:534
#, no-wrap
msgid "Creating a FreeBSD Guest"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:588
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:538
msgid ""
"Create a file to use as the virtual disk for the guest machine. Specify the "
"size and name of the virtual disk:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:592
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:542
#, no-wrap
msgid "# truncate -s 16G guest.img\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:595
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:545
msgid "Download an installation image of FreeBSD to install:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:600
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:550
#, no-wrap
msgid ""
"# fetch https://download.freebsd.org/releases/ISO-IMAGES/13.1/FreeBSD-13.1-RELEASE-amd64-bootonly.iso\n"
"FreeBSD-13.1-RELEASE-amd64-bootonly.iso 366 MB 16 MBps 22s\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:607
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:557
msgid ""
"FreeBSD comes with an example script for running a virtual machine in "
"bhyve. The script will start the virtual machine and run it in a loop, so "
"it will automatically restart if it crashes. The script takes a number of "
"options to control the configuration of the machine: `-c` controls the "
"number of virtual CPUs, `-m` limits the amount of memory available to the "
"guest, `-t` defines which [.filename]#tap# device to use, `-d` indicates "
"which disk image to use, `-i` tells bhyve to boot from the CD image instead "
"of the disk, and `-I` defines which CD image to use. The last parameter is "
"the name of the virtual machine, used to track the running machines. This "
"example starts the virtual machine in installation mode:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:611
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:561
#, no-wrap
msgid "# sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 1024M -t tap0 -d guest.img -i -I FreeBSD-13.1-RELEASE-amd64-bootonly.iso guestname\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:615
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:565
msgid ""
"The virtual machine will boot and start the installer. After installing a "
"system in the virtual machine, when the system asks about dropping in to a "
"shell at the end of the installation, choose btn:[Yes]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:620
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:570
msgid ""
"Reboot the virtual machine. While rebooting the virtual machine causes "
"bhyve to exit, the [.filename]#vmrun.sh# script runs `bhyve` in a loop and "
"will automatically restart it. When this happens, choose the reboot option "
"from the boot loader menu in order to escape the loop. Now the guest can be "
"started from the virtual disk:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:624
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:574
#, no-wrap
msgid "# sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img guestname\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:627
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:577
#, no-wrap
msgid "Creating a Linux(R) Guest"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:630
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:580
msgid ""
"In order to boot operating systems other than FreeBSD, the package:sysutils/"
"grub2-bhyve[] port must be first installed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:632
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:582
msgid "Next, create a file to use as the virtual disk for the guest machine:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:636
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:586
#, no-wrap
msgid "# truncate -s 16G linux.img\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:642
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:592
msgid ""
"Starting a virtual machine with bhyve is a two step process. First a kernel "
"must be loaded, then the guest can be started. The Linux(R) kernel is "
"loaded with package:sysutils/grub2-bhyve[]. Create a [.filename]#device."
"map# that grub will use to map the virtual devices to the files on the host "
"system:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:647
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:597
#, no-wrap
msgid ""
"(hd0) ./linux.img\n"
"(cd0) ./somelinux.iso\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:650
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:600
msgid ""
"Use package:sysutils/grub2-bhyve[] to load the Linux(R) kernel from the ISO "
"image:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:654
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:604
#, no-wrap
msgid "# grub-bhyve -m device.map -r cd0 -M 1024M linuxguest\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:659
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:609
msgid ""
"This will start grub. If the installation CD contains a [.filename]#grub."
"cfg#, a menu will be displayed. If not, the `vmlinuz` and `initrd` files "
"must be located and loaded manually:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:670
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:620
#, no-wrap
msgid ""
"grub> ls\n"
"(hd0) (cd0) (cd0,msdos1) (host)\n"
"grub> ls (cd0)/isolinux\n"
"boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest\n"
"splash.jpg TRANS.TBL vesamenu.c32 vmlinuz\n"
"grub> linux (cd0)/isolinux/vmlinuz\n"
"grub> initrd (cd0)/isolinux/initrd.img\n"
"grub> boot\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:673
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:623
msgid "Now that the Linux(R) kernel is loaded, the guest can be started:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:678
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:628
#, no-wrap
msgid ""
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./linux.img \\\n"
" -s 4:0,ahci-cd,./somelinux.iso -l com1,stdio -c 4 -m 1024M linuxguest\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:684
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:634
msgid ""
"The system will boot and start the installer. After installing a system in "
"the virtual machine, reboot the virtual machine. This will cause bhyve to "
"exit. The instance of the virtual machine needs to be destroyed before it "
"can be started again:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:688
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:724
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:638
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:674
#, no-wrap
msgid "# bhyvectl --destroy --vm=linuxguest\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:692
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:642
msgid ""
"Now the guest can be started directly from the virtual disk. Load the "
"kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:706
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:656
#, no-wrap
msgid ""
"# grub-bhyve -m device.map -r hd0,msdos1 -M 1024M linuxguest\n"
"grub> ls\n"
"(hd0) (hd0,msdos2) (hd0,msdos1) (cd0) (cd0,msdos1) (host)\n"
"(lvm/VolGroup-lv_swap) (lvm/VolGroup-lv_root)\n"
"grub> ls (hd0,msdos1)/\n"
"lost+found/ grub/ efi/ System.map-2.6.32-431.el6.x86_64 config-2.6.32-431.el6.x\n"
"86_64 symvers-2.6.32-431.el6.x86_64.gz vmlinuz-2.6.32-431.el6.x86_64\n"
"initramfs-2.6.32-431.el6.x86_64.img\n"
"grub> linux (hd0,msdos1)/vmlinuz-2.6.32-431.el6.x86_64 root=/dev/mapper/VolGroup-lv_root\n"
"grub> initrd (hd0,msdos1)/initramfs-2.6.32-431.el6.x86_64.img\n"
"grub> boot\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:709
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:659
msgid "Boot the virtual machine:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:714
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:664
#, no-wrap
msgid ""
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 \\\n"
" -s 3:0,virtio-blk,./linux.img -l com1,stdio -c 4 -m 1024M linuxguest\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:720
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:670
msgid ""
"Linux(R) will now boot in the virtual machine and eventually present you "
"with the login prompt. Login and use the virtual machine. When you are "
"finished, reboot the virtual machine to exit bhyve. Destroy the virtual "
"machine instance:"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:727
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:677
#, no-wrap
msgid "Booting bhyve Virtual Machines with UEFI Firmware"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:731
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:681
msgid ""
"In addition to bhyveload and grub-bhyve, the bhyve hypervisor can also boot "
"virtual machines using the UEFI userspace firmware. This option may support "
"guest operating systems that are not supported by the other loaders."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:734
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:684
msgid ""
"In order to make use of the UEFI support in bhyve, first obtain the UEFI "
"firmware images. This can be done by installing package:sysutils/bhyve-"
"firmware[] port or package."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:737
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:687
msgid ""
"With the firmware in place, add the flags `-l bootrom,_/path/to/firmware_` "
"to your bhyve command line. The actual bhyve command may look like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:745
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:695
#, no-wrap
msgid ""
"# bhyve -AHP -s 0:0,hostbridge -s 1:0,lpc \\\n"
"-s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./disk.img \\\n"
"-s 4:0,ahci-cd,./install.iso -c 4 -m 1024M \\\n"
"-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\\n"
"guest\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:748
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:698
msgid ""
"package:sysutils/bhyve-firmware[] also contains a CSM-enabled firmware, to "
"boot guests with no UEFI support in legacy BIOS mode:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:756
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:706
#, no-wrap
msgid ""
"# bhyve -AHP -s 0:0,hostbridge -s 1:0,lpc \\\n"
"-s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./disk.img \\\n"
"-s 4:0,ahci-cd,./install.iso -c 4 -m 1024M \\\n"
"-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CSM.fd \\\n"
"guest\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:759
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:709
#, no-wrap
msgid "Graphical UEFI Framebuffer for bhyve Guests"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:762
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:712
msgid ""
"The UEFI firmware support is particularly useful with predominantly "
"graphical guest operating systems such as Microsoft Windows(R)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:767
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:717
msgid ""
"Support for the UEFI-GOP framebuffer may also be enabled with the `-s 29,"
"fbuf,tcp=_0.0.0.0:5900_` flags. The framebuffer resolution may be "
"configured with `w=_800_` and `h=_600_`, and bhyve can be instructed to wait "
"for a VNC connection before booting the guest by adding `wait`. The "
"framebuffer may be accessed from the host or over the network via the VNC "
"protocol. Additionally, `-s 30,xhci,tablet` can be added to achieve precise "
"mouse cursor synchronization with the host."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:769
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:719
msgid "The resulting bhyve command would look like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:779
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:729
#, no-wrap
msgid ""
"# bhyve -AHP -s 0:0,hostbridge -s 31:0,lpc \\\n"
"-s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./disk.img \\\n"
"-s 4:0,ahci-cd,./install.iso -c 4 -m 1024M \\\n"
"-s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \\\n"
"-s 30,xhci,tablet \\\n"
"-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\\n"
"guest\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:782
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:732
msgid ""
"Note, in BIOS emulation mode, the framebuffer will cease receiving updates "
"once control is passed from firmware to guest operating system."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:784
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:734
#, no-wrap
msgid "Using ZFS with bhyve Guests"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:788
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:738
msgid ""
"If ZFS is available on the host machine, using ZFS volumes instead of disk "
"image files can provide significant performance benefits for the guest VMs. "
"A ZFS volume can be created by:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:792
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:742
#, no-wrap
msgid "# zfs create -V16G -o volmode=dev zroot/linuxdisk0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:795
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:745
msgid "When starting the VM, specify the ZFS volume as the disk drive:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:800
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:750
#, no-wrap
msgid ""
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s3:0,virtio-blk,/dev/zvol/zroot/linuxdisk0 \\\n"
" -l com1,stdio -c 4 -m 1024M linuxguest\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:803
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:753
#, no-wrap
msgid "Virtual Machine Consoles"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:810
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:760
msgid ""
"It is advantageous to wrap the bhyve console in a session management tool "
"such as package:sysutils/tmux[] or package:sysutils/screen[] in order to "
"detach and reattach to the console. It is also possible to have the console "
"of bhyve be a null modem device that can be accessed with `cu`. To do this, "
"load the [.filename]#nmdm# kernel module and replace `-l com1,stdio` with `-"
"l com1,/dev/nmdm0A`. The [.filename]#/dev/nmdm# devices are created "
"automatically as needed, where each is a pair, corresponding to the two ends "
"of the null modem cable ([.filename]#/dev/nmdm0A# and [.filename]#/dev/"
"nmdm0B#). See man:nmdm[4] for more information."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:818
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:768
#, no-wrap
msgid ""
"# kldload nmdm\n"
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./linux.img \\\n"
" -l com1,/dev/nmdm0A -c 4 -m 1024M linuxguest\n"
"# cu -l /dev/nmdm0B\n"
"Connected\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:820
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:770
#, no-wrap
msgid "Ubuntu 13.10 handbook ttyS0\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:822
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:772
#, no-wrap
msgid "handbook login:\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:825
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:775
#, no-wrap
msgid "Managing Virtual Machines"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:829
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:779
msgid ""
"A device node is created in [.filename]#/dev/vmm# for each virtual machine. "
"This allows the administrator to easily see a list of the running virtual "
"machines:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:839
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:789
#, no-wrap
msgid ""
"# ls -al /dev/vmm\n"
"total 1\n"
"dr-xr-xr-x 2 root wheel 512 Mar 17 12:19 ./\n"
"dr-xr-xr-x 14 root wheel 512 Mar 17 06:38 ../\n"
"crw------- 1 root wheel 0x1a2 Mar 17 12:20 guestname\n"
"crw------- 1 root wheel 0x19f Mar 17 12:19 linuxguest\n"
"crw------- 1 root wheel 0x1a1 Mar 17 12:19 otherguest\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:842
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:792
msgid "A specified virtual machine can be destroyed using `bhyvectl`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:846
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:796
#, no-wrap
msgid "# bhyvectl --destroy --vm=guestname\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:849
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:799
#, no-wrap
msgid "Persistent Configuration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:852
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:802
msgid ""
"In order to configure the system to start bhyve guests at boot time, the "
"following configurations must be made in the specified files:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:855
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:805
msgid "[.filename]#/etc/sysctl.conf#"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:859
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:809
#, no-wrap
msgid "net.link.tap.up_on_open=1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:862
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:812
msgid "[.filename]#/etc/rc.conf#"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:868
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:818
#, no-wrap
msgid ""
"cloned_interfaces=\"bridge0 tap0\"\n"
"ifconfig_bridge0=\"addm igb0 addm tap0\"\n"
"kld_list=\"nmdm vmm\"\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:871
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:821
#, no-wrap
msgid "FreeBSD as a Xen(TM)-Host"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:876
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:826
msgid ""
"Xen is a GPLv2-licensed https://en.wikipedia.org/wiki/"
"Hypervisor#Classification[type 1 hypervisor] for Intel(R) and ARM(R) "
"architectures. FreeBSD has included i386(TM) and AMD(R) 64-Bit https://wiki."
"xenproject.org/wiki/DomU[DomU] and https://en.wikipedia.org/wiki/"
"Amazon_Elastic_Compute_Cloud[Amazon EC2] unprivileged domain (virtual "
"machine) support since FreeBSD 8.0 and includes Dom0 control domain (host) "
"support in FreeBSD 11.0. Support for para-virtualized (PV) domains has been "
"removed from FreeBSD 11 in favor of hardware virtualized (HVM) domains, "
"which provides better performance."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:884
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:834
msgid ""
"Xen(TM) is a bare-metal hypervisor, which means that it is the first program "
"loaded after the BIOS. A special privileged guest called the Domain-0 "
"(`Dom0` for short) is then started. The Dom0 uses its special privileges to "
"directly access the underlying physical hardware, making it a high-"
"performance solution. It is able to access the disk controllers and network "
"adapters directly. The Xen(TM) management tools to manage and control the "
"Xen(TM) hypervisor are also used by the Dom0 to create, list, and destroy "
"VMs. Dom0 provides virtual disks and networking for unprivileged domains, "
"often called `DomU`. Xen(TM) Dom0 can be compared to the service console of "
"other hypervisor solutions, while the DomU is where individual guest VMs are "
"run."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:891
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:841
msgid ""
"Xen(TM) can migrate VMs between different Xen(TM) servers. When the two xen "
"hosts share the same underlying storage, the migration can be done without "
"having to shut the VM down first. Instead, the migration is performed live "
"while the DomU is running and there is no need to restart it or plan a "
"downtime. This is useful in maintenance scenarios or upgrade windows to "
"ensure that the services provided by the DomU are still provided. Many more "
"features of Xen(TM) are listed on the https://wiki.xenproject.org/wiki/"
"Category:Overview[Xen Wiki Overview page]. Note that not all features are "
"supported on FreeBSD yet."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:893
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:843
#, no-wrap
msgid "Hardware Requirements for Xen(TM) Dom0"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:897
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:847
msgid ""
"To run the Xen(TM) hypervisor on a host, certain hardware functionality is "
"required. Hardware virtualized domains require Extended Page Table (http://"
"en.wikipedia.org/wiki/Extended_Page_Table[EPT]) and Input/Output Memory "
"Management Unit (http://en.wikipedia.org/wiki/List_of_IOMMU-"
"supporting_hardware[IOMMU]) support in the host processor."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:901
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:851
msgid ""
"In order to run a FreeBSD Xen(TM) Dom0 the box must be booted using legacy "
"boot (BIOS)."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:904
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:854
#, no-wrap
msgid "Xen(TM) Dom0 Control Domain Setup"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:907
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:857
msgid ""
"Users of FreeBSD 11 should install the package:emulators/xen-kernel47[] and "
"package:sysutils/xen-tools47[] packages that are based on Xen version 4.7. "
"Systems running on FreeBSD-12.0 or newer can use Xen 4.11 provided by "
"package:emulators/xen-kernel411[] and package:sysutils/xen-tools411[], "
"respectively."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:911
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:861
msgid ""
"Configuration files must be edited to prepare the host for the Dom0 "
"integration after the Xen packages are installed. An entry to [.filename]#/"
"etc/sysctl.conf# disables the limit on how many pages of memory are allowed "
"to be wired. Otherwise, DomU VMs with higher memory requirements will not "
"run."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:915
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:865
#, no-wrap
msgid "# echo 'vm.max_wired=-1' >> /etc/sysctl.conf\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:921
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:871
msgid ""
"Another memory-related setting involves changing [.filename]#/etc/login."
"conf#, setting the `memorylocked` option to `unlimited`. Otherwise, "
"creating DomU domains may fail with `Cannot allocate memory` errors. After "
"making the change to [.filename]#/etc/login.conf#, run `cap_mkdb` to update "
"the capability database. See crossref:security[security-resourcelimits,"
"\"Resource Limits\"] for details."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:926
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:876
#, no-wrap
msgid ""
"# sed -i '' -e 's/memorylocked=64K/memorylocked=unlimited/' /etc/login.conf\n"
"# cap_mkdb /etc/login.conf\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:929
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:879
msgid "Add an entry for the Xen(TM) console to [.filename]#/etc/ttys#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:933
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:883
#, no-wrap
msgid "# echo 'xc0 \"/usr/libexec/getty Pc\" xterm onifconsole secure' >> /etc/ttys\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:940
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:890
msgid ""
"Selecting a Xen(TM) kernel in [.filename]#/boot/loader.conf# activates the "
"Dom0. Xen(TM) also requires resources like CPU and memory from the host "
"machine for itself and other DomU domains. How much CPU and memory depends "
"on the individual requirements and hardware capabilities. In this example, "
"8 GB of memory and 4 virtual CPUs are made available for the Dom0. The "
"serial console is also activated and logging options are defined."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:942
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:892
msgid "The following command is used for Xen 4.7 packages:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:949
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:899
#, no-wrap
msgid ""
"# echo 'hw.pci.mcfg=0' >> /boot/loader.conf\n"
"# echo 'if_tap_load=\"YES\"' >> /boot/loader.conf\n"
"# echo 'xen_kernel=\"/boot/xen\"' >> /boot/loader.conf\n"
"# echo 'xen_cmdline=\"dom0_mem=8192M dom0_max_vcpus=4 dom0pvh=1 console=com1,vga com1=115200,8n1 guest_loglvl=all loglvl=all\"' >> /boot/loader.conf\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:952
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:902
msgid ""
"For Xen versions 4.11 and higher, the following command should be used "
"instead:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:958
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:908
#, no-wrap
msgid ""
"# echo 'if_tap_load=\"YES\"' >> /boot/loader.conf\n"
"# echo 'xen_kernel=\"/boot/xen\"' >> /boot/loader.conf\n"
"# echo 'xen_cmdline=\"dom0_mem=8192M dom0_max_vcpus=4 dom0=pvh console=com1,vga com1=115200,8n1 guest_loglvl=all loglvl=all\"' >> /boot/loader.conf\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:965
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:915
msgid ""
"Log files that Xen(TM) creates for the DomU VMs are stored in [.filename]#/"
"var/log/xen#. Please be sure to check the contents of that directory if "
"experiencing issues."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:968
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:918
msgid "Activate the xencommons service during system startup:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:972
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:922
#, no-wrap
msgid "# sysrc xencommons_enable=yes\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:978
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:928
msgid ""
"These settings are enough to start a Dom0-enabled system. However, it lacks "
"network functionality for the DomU machines. To fix that, define a bridged "
"interface with the main NIC of the system which the DomU VMs can use to "
"connect to the network. Replace _em0_ with the host network interface name."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:984
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:934
#, no-wrap
msgid ""
"# sysrc cloned_interfaces=\"bridge0\"\n"
"# sysrc ifconfig_bridge0=\"addm em0 SYNCDHCP\"\n"
"# sysrc ifconfig_em0=\"up\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:987
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:937
msgid "Restart the host to load the Xen(TM) kernel and start the Dom0."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:991
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:941
#, no-wrap
msgid "# reboot\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:994
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:944
msgid ""
"After successfully booting the Xen(TM) kernel and logging into the system "
"again, the Xen(TM) management tool `xl` is used to show information about "
"the domains."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1000
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:950
#, no-wrap
msgid ""
"# xl list\n"
"Name ID Mem VCPUs State Time(s)\n"
"Domain-0 0 8192 4 r----- 962.0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1006
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:956
msgid ""
"The output confirms that the Dom0 (called `Domain-0`) has the ID `0` and is "
"running. It also has the memory and virtual CPUs that were defined in [."
"filename]#/boot/loader.conf# earlier. More information can be found in the "
"https://www.xenproject.org/help/documentation.html[Xen(TM) Documentation]. "
"DomU guest VMs can now be created."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1008
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:958
#, no-wrap
msgid "Xen(TM) DomU Guest VM Configuration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1015
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:965
msgid ""
"Unprivileged domains consist of a configuration file and virtual or physical "
"hard disks. Virtual disk storage for the DomU can be files created by man:"
"truncate[1] or ZFS volumes as described in crossref:zfs[zfs-zfs-"
"volume,“Creating and Destroying Volumes”]. In this example, a 20 GB volume "
"is used. A VM is created with the ZFS volume, a FreeBSD ISO image, 1 GB of "
"RAM and two virtual CPUs. The ISO installation file is retrieved with man:"
"fetch[1] and saved locally in a file called [.filename]#freebsd.iso#."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1019
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:969
#, no-wrap
msgid "# fetch https://download.freebsd.org/releases/ISO-IMAGES/13.1/FreeBSD-13.1-RELEASE-amd64-bootonly.iso -o freebsd.iso\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1022
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:972
msgid ""
"A ZFS volume of 20 GB called [.filename]#xendisk0# is created to serve as "
"the disk space for the VM."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1026
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:976
#, no-wrap
msgid "# zfs create -V20G -o volmode=dev zroot/xendisk0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1031
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:981
msgid ""
"The new DomU guest VM is defined in a file. Some specific definitions like "
"name, keymap, and VNC connection details are also defined. The following [."
"filename]#freebsd.cfg# contains a minimum DomU configuration for this "
"example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1048
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:998
#, no-wrap
msgid ""
"# cat freebsd.cfg\n"
"builder = \"hvm\" <.>\n"
"name = \"freebsd\" <.>\n"
"memory = 1024 <.>\n"
"vcpus = 2 <.>\n"
"vif = [ 'mac=00:16:3E:74:34:32,bridge=bridge0' ] <.>\n"
"disk = [\n"
"'/dev/zvol/tank/xendisk0,raw,hda,rw', <.>\n"
"'/root/freebsd.iso,raw,hdc:cdrom,r' <.>\n"
" ]\n"
"vnc = 1 <.>\n"
"vnclisten = \"0.0.0.0\"\n"
"serial = \"pty\"\n"
"usbdevice = \"tablet\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1051
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1001
msgid "These lines are explained in more detail:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1053
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1003
msgid ""
"This defines what kind of virtualization to use. `hvm` refers to hardware-"
"assisted virtualization or hardware virtual machine. Guest operating systems "
"can run unmodified on CPUs with virtualization extensions, providing nearly "
"the same performance as running on physical hardware. `generic` is the "
"default value and creates a PV domain."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1054
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1004
msgid ""
"Name of this virtual machine to distinguish it from others running on the "
"same Dom0. Required."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1055
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1005
msgid ""
"Quantity of RAM in megabytes to make available to the VM. This amount is "
"subtracted from the hypervisor's total available memory, not the memory of "
"the Dom0."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1056
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1006
msgid ""
"Number of virtual CPUs available to the guest VM. For best performance, do "
"not create guests with more virtual CPUs than the number of physical CPUs on "
"the host."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1057
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1007
msgid ""
"Virtual network adapter. This is the bridge connected to the network "
"interface of the host. The `mac` parameter is the MAC address set on the "
"virtual network interface. This parameter is optional, if no MAC is provided "
"Xen(TM) will generate a random one."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1058
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1008
msgid ""
"Full path to the disk, file, or ZFS volume of the disk storage for this VM. "
"Options and multiple disk definitions are separated by commas."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1059
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1009
msgid ""
"Defines the Boot medium from which the initial operating system is "
"installed. In this example, it is the ISO image downloaded earlier. Consult "
"the Xen(TM) documentation for other kinds of devices and options to set."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1060
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1010
msgid ""
"Options controlling VNC connectivity to the serial console of the DomU. In "
"order, these are: active VNC support, define IP address on which to listen, "
"device node for the serial console, and the input method for precise "
"positioning of the mouse and other input methods. `keymap` defines which "
"keymap to use, and is `english` by default."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1062
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1012
msgid ""
"After the file has been created with all the necessary options, the DomU is "
"created by passing it to `xl create` as a parameter."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1066
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1016
#, no-wrap
msgid "# xl create freebsd.cfg\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1075
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1025
msgid ""
"Each time the Dom0 is restarted, the configuration file must be passed to "
"`xl create` again to re-create the DomU. By default, only the Dom0 is "
"created after a reboot, not the individual VMs. The VMs can continue where "
"they left off as they stored the operating system on the virtual disk. The "
"virtual machine configuration can change over time (for example, when adding "
"more memory). The virtual machine configuration files must be properly "
"backed up and kept available to be able to re-create the guest VM when "
"needed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1078
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1028
msgid "The output of `xl list` confirms that the DomU has been created."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1085
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1035
#, no-wrap
msgid ""
"# xl list\n"
"Name ID Mem VCPUs State Time(s)\n"
"Domain-0 0 8192 4 r----- 1653.4\n"
"freebsd 1 1024 1 -b---- 663.9\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1092
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1042
msgid ""
"To begin the installation of the base operating system, start the VNC "
"client, directing it to the main network address of the host or to the IP "
"address defined on the `vnclisten` line of [.filename]#freebsd.cfg#. After "
"the operating system has been installed, shut down the DomU and disconnect "
"the VNC viewer. Edit [.filename]#freebsd.cfg#, removing the line with the "
"`cdrom` definition or commenting it out by inserting a `+#+` character at "
"the beginning of the line. To load this new configuration, it is necessary "
"to remove the old DomU with `xl destroy`, passing either the name or the id "
"as the parameter. Afterwards, recreate it using the modified [."
"filename]*freebsd.cfg*."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1097
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1047
#, no-wrap
msgid ""
"# xl destroy freebsd\n"
"# xl create freebsd.cfg\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1101
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1051
msgid ""
"The machine can then be accessed again using the VNC viewer. This time, it "
"will boot from the virtual disk where the operating system has been "
"installed and can be used as a virtual machine."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1103
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1053
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1106
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1056
msgid ""
"This section contains basic information in order to help troubleshoot issues "
"found when using FreeBSD as a Xen(TM) host or guest."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1108
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1058
#, no-wrap
msgid "Host Boot Troubleshooting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1112
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1062
msgid ""
"Please note that the following troubleshooting tips are intended for Xen(TM) "
"4.11 or newer. If you are still using Xen(TM) 4.7 and having issues "
"consider migrating to a newer version of Xen(TM)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1116
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1066
msgid ""
"In order to troubleshoot host boot issues you will likely need a serial "
"cable, or a debug USB cable. Verbose Xen(TM) boot output can be obtained by "
"adding options to the `xen_cmdline` option found in [.filename]#loader."
"conf#. A couple of relevant debug options are:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1118
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1068
msgid ""
"`iommu=debug`: can be used to print additional diagnostic information about "
"the iommu."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1119
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1069
msgid ""
"`dom0=verbose`: can be used to print additional diagnostic information about "
"the dom0 build process."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1120
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1070
msgid ""
"`sync_console`: flag to force synchronous console output. Useful for "
"debugging to avoid losing messages due to rate limiting. Never use this "
"option in production environments since it can allow malicious guests to "
"perform DoS attacks against Xen(TM) using the console."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1123
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1073
msgid ""
"FreeBSD should also be booted in verbose mode in order to identify any "
"issues. To activate verbose booting, run this command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1127
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1077
#, no-wrap
msgid "# echo 'boot_verbose=\"YES\"' >> /boot/loader.conf\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1130
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1080
msgid ""
"If none of these options help solving the problem, please send the serial "
"boot log to mailto:freebsd-xen@FreeBSD.org[freebsd-xen@FreeBSD.org] and "
"mailto:xen-devel@lists.xenproject.org[xen-devel@lists.xenproject.org] for "
"further analysis."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1132
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1082
#, no-wrap
msgid "Guest Creation Troubleshooting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1135
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1085
msgid ""
"Issues can also arise when creating guests, the following attempts to "
"provide some help for those trying to diagnose guest creation issues."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1138
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1088
msgid ""
"The most common cause of guest creation failures is the `xl` command "
"spitting some error and exiting with a return code different than 0. If the "
"error provided is not enough to help identify the issue, more verbose output "
"can also be obtained from `xl` by using the `v` option repeatedly."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1154
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1104
#, no-wrap
msgid ""
"# xl -vvv create freebsd.cfg\n"
"Parsing config from freebsd.cfg\n"
"libxl: debug: libxl_create.c:1693:do_domain_create: Domain 0:ao 0x800d750a0: create: how=0x0 callback=0x0 poller=0x800d6f0f0\n"
"libxl: debug: libxl_device.c:397:libxl__device_disk_set_backend: Disk vdev=xvda spec.backend=unknown\n"
"libxl: debug: libxl_device.c:432:libxl__device_disk_set_backend: Disk vdev=xvda, using backend phy\n"
"libxl: debug: libxl_create.c:1018:initiate_domain_create: Domain 1:running bootloader\n"
"libxl: debug: libxl_bootloader.c:328:libxl__bootloader_run: Domain 1:not a PV/PVH domain, skipping bootloader\n"
"libxl: debug: libxl_event.c:689:libxl__ev_xswatch_deregister: watch w=0x800d96b98: deregister unregistered\n"
"domainbuilder: detail: xc_dom_allocate: cmdline=\"\", features=\"\"\n"
"domainbuilder: detail: xc_dom_kernel_file: filename=\"/usr/local/lib/xen/boot/hvmloader\"\n"
"domainbuilder: detail: xc_dom_malloc_filemap : 326 kB\n"
"libxl: debug: libxl_dom.c:988:libxl__load_hvm_firmware_module: Loading BIOS: /usr/local/share/seabios/bios.bin\n"
"...\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/virtualization/_index.adoc:1159
+#: documentation/content/en/books/handbook/virtualization/_index.adoc:1109
msgid ""
"If the verbose output does not help diagnose the issue there are also QEMU "
"and Xen(TM) toolstack logs in [.filename]#/var/log/xen#. Note that the name "
"of the domain is appended to the log name, so if the domain is named "
"`freebsd` you should find a [.filename]#/var/log/xen/xl-freebsd.log# and "
"likely a [.filename]#/var/log/xen/qemu-dm-freebsd.log#. Both log files can "
"contain useful information for debugging. If none of this helps solve the "
"issue, please send the description of the issue you are facing and as much "
"information as possible to mailto:freebsd-xen@FreeBSD.org[freebsd-"
"xen@FreeBSD.org] and mailto:xen-devel@lists.xenproject.org[xen-devel@lists."
"xenproject.org] in order to get help."
msgstr ""
diff --git a/documentation/content/en/books/handbook/x11/_index.po b/documentation/content/en/books/handbook/x11/_index.po
index 335878d177..f62fb0980c 100644
--- a/documentation/content/en/books/handbook/x11/_index.po
+++ b/documentation/content/en/books/handbook/x11/_index.po
@@ -1,1466 +1,1466 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/x11/_index.adoc:1
#, no-wrap
msgid "This chapter describes how to install and configure Xorg on FreeBSD, which provides the open source X Window System used to provide a graphical environment"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/x11/_index.adoc:1
#, no-wrap
msgid "Part I. Getting Started"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/x11/_index.adoc:1
#, no-wrap
msgid "Chapter 5. The X Window System"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/x11/_index.adoc:14
#, no-wrap
msgid "The X Window System"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:52
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:57
msgid ""
"An installation of FreeBSD using bsdinstall does not automatically install a "
"graphical user interface. This chapter describes how to install and "
"configure Xorg, which provides the open source X Window System used to "
"provide a graphical environment. It then describes how to find and install "
"a desktop environment or window manager."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:59
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:61
msgid ""
"Know how to install additional third-party software as described in crossref:"
"ports[ports,Installing Applications: Packages and Ports]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:63
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:65
msgid ""
"The various components of the X Window System, and how they interoperate."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:66
msgid "How to install and configure Xorg."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:67
msgid "How to use TrueType(R) fonts in Xorg."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:68
msgid "How to set up your system for graphical logins (XDM)."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:70
#, no-wrap
msgid "Installing Xorg"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:73
msgid "On FreeBSD, Xorg can be installed as a package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:75
msgid ""
"The binary meta package can be installed quickly but with fewer options for "
"customization:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:79
#, no-wrap
msgid "# pkg install xorg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:82
msgid ""
"Either of these installations results in the complete Xorg system being "
"installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:85
msgid ""
"The current user must be a member of the `video` group. To add a user to "
"`video` group, execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:89
#, no-wrap
msgid "# pw groupmod video -m username\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:96
msgid ""
"A smaller version of the X system suitable for experienced users is "
"available in package:x11/xorg-minimal[]. Most of the documents, libraries, "
"and applications will not be installed. Some applications require these "
"additional components to function."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:102
msgid ""
"Video cards, monitors, and input devices are automatically detected and do "
"not require any manual configuration. Do not create `xorg.conf` or run a `-"
"configure` step unless automatic configuration fails."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:105
#, no-wrap
msgid "Graphic card drivers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:108
msgid ""
"The following table shows the different graphics cards supported by FreeBSD, "
"which package should be installed and its corresponding module."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:109
#, no-wrap
msgid "Graphic card packages"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:112
#, no-wrap
msgid "Brand"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:112
#, no-wrap
msgid "Type"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:112
#: documentation/content/en/books/handbook/x11/_index.adoc:259
#, no-wrap
msgid "Package"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:114
#, no-wrap
msgid "Module"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:115
#: documentation/content/en/books/handbook/x11/_index.adoc:190
#, no-wrap
msgid "Intel(R)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:116
#: documentation/content/en/books/handbook/x11/_index.adoc:121
#: documentation/content/en/books/handbook/x11/_index.adoc:131
#: documentation/content/en/books/handbook/x11/_index.adoc:136
#: documentation/content/en/books/handbook/x11/_index.adoc:141
#: documentation/content/en/books/handbook/x11/_index.adoc:146
#, no-wrap
msgid "Open Source"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:117
#: documentation/content/en/books/handbook/x11/_index.adoc:122
#, no-wrap
msgid "drm-kmod"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:119
#, no-wrap
msgid "`i915kms`"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:120
#: documentation/content/en/books/handbook/x11/_index.adoc:222
#, no-wrap
msgid "AMD(R)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:124
#, no-wrap
msgid "`amdgpu` and `radeonkms`"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:125
#: documentation/content/en/books/handbook/x11/_index.adoc:250
#, no-wrap
msgid "NVIDIA(R)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:126
#, no-wrap
msgid "Proprietary"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:127
#, no-wrap
msgid "nvidia-driver"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:129
#, no-wrap
msgid "`nvidia` or `nvidia-modeset`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:130
#, no-wrap
msgid "VESA"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:132
#, no-wrap
msgid "xf86-video-vesa"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:134
#, no-wrap
msgid "vesa"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:135
#, no-wrap
msgid "SCFB"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:137
#, no-wrap
msgid "xf86-video-scfb"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:139
#, no-wrap
msgid "scfb"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:140
#, no-wrap
msgid "Virtualbox"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:142
#, no-wrap
msgid "virtualbox-ose-additions"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:144
#, no-wrap
msgid "Virtualbox OSE additions include the `vboxvideo` driver."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:145
#, no-wrap
msgid "VMware(R)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:147
#, no-wrap
msgid "xf86-video-vmware"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:149
#, no-wrap
msgid "vmwgfx"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:152
msgid ""
"The following command can be used to identify which graphics card is "
"installed in the system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:156
#, no-wrap
msgid "% pciconf -lv|grep -B4 VGA\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:159
#: documentation/content/en/books/handbook/x11/_index.adoc:182
#: documentation/content/en/books/handbook/x11/_index.adoc:435
#: documentation/content/en/books/handbook/x11/_index.adoc:492
msgid "The output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:167
#, no-wrap
msgid ""
"vgapci0@pci0:0:2:0: class=0x030000 rev=0x07 hdr=0x00 vendor=0x8086 device=0x2a42 subvendor=0x17aa subdevice=0x20e4\n"
" vendor = 'Intel Corporation'\n"
" device = 'Mobile 4 Series Chipset Integrated Graphics Controller'\n"
" class = display\n"
" subclass = VGA\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:173
msgid ""
"If the graphics card is not supported by Intel(R), AMD(R) or NVIDIA(R) "
"drivers, then VESA or SCFB modules should be used. VESA module must be used "
"when booting in BIOS mode and SCFB module must be used when booting in UEFI "
"mode."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:175
msgid "This command can be used to check the booting mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:179
#, no-wrap
msgid "% sysctl machdep.bootmethod\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:186
#, no-wrap
msgid "machdep.bootmethod: BIOS\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:194
msgid ""
"Intel(R) Graphics refers to the class of graphics chips that are integrated "
"on the same die as an Intel(R) CPU. Wikipedia offers link:https://en."
"wikipedia.org/wiki/List_of_Intel_graphics_processing_units[a good overview "
"of the variations and names used for generations of Intel HD Graphics]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:197
msgid ""
"The package:graphics/drm-kmod[] package indirectly provides a range of "
"kernel modules for use with Intel(R) Graphics cards. The Intel(R) driver "
"can be installed by executing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:201
#: documentation/content/en/books/handbook/x11/_index.adoc:233
#, no-wrap
msgid "# pkg install drm-kmod\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:204
#: documentation/content/en/books/handbook/x11/_index.adoc:291
msgid ""
"Then add the module to `/etc/rc.conf` file, executing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:208
#, no-wrap
msgid "# sysrc kld_list+=i915kms\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:214
msgid ""
"If a high CPU usage is noticed or excessive tearing with HD video, the "
"installation of package:multimedia/libva-intel-driver[] may help. To "
"install the package execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:218
#, no-wrap
msgid "# pkg install libva-intel-driver mesa-libs mesa-dri\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:227
msgid ""
"The package:graphics/drm-kmod[] package indirectly provides a range of "
"kernel modules for use with AMD(R) Graphics cards. The modules `amdgpu` and "
"`radeonkms` can be used depending the generation of the hardware. The "
"FreeBSD project maintains an link:https://wiki.freebsd.org/Graphics/AMD-GPU-"
"Matrix[AMD graphics support matrix to determine which driver must be used]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:229
msgid "AMD(R) driver can be installed by executing the following command:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:236
msgid ""
"For post-HD7000 or Tahiti graphic cards add the module to `/etc/rc.conf` "
"file, executing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:240
#, no-wrap
msgid "# sysrc kld_list+=amdgpu\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:243
msgid ""
"For older graphic cards (pre-HD7000 or pre-Tahiti) add the module to `/etc/"
"rc.conf` file, executing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:247
#, no-wrap
msgid "# sysrc kld_list+=radeonkms\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:255
msgid ""
"FreeBSD supports different versions of the proprietary NVIDIA(R) driver. "
"Users of newer graphics cards should install the package:x11/nvidia-driver[] "
"package. Those with older cards will have to check below which version "
"supports them."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:256
#, no-wrap
msgid "Supported versions of NVIDIA(R) drivers"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:261
#, no-wrap
msgid "Supported hardware"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:262
#, no-wrap
msgid "x11/nvidia-driver-304"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:264
#, no-wrap
msgid "link:https://www.nvidia.com/Download/driverResults.aspx/123712/en-us/[supported hardware]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:265
#, no-wrap
msgid "x11/nvidia-driver-340"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:267
#, no-wrap
msgid "link:https://www.nvidia.com/Download/driverResults.aspx/156167/en-us/[supported hardware]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:268
#, no-wrap
msgid "x11/nvidia-driver-390"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:270
#, no-wrap
msgid "link:https://www.nvidia.com/Download/driverResults.aspx/191122/en-us/[supported hardware]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:271
#, no-wrap
msgid "x11/nvidia-driver-470"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:273
#, no-wrap
msgid "link:https://www.nvidia.com/Download/driverResults.aspx/191234/en-us/[supported hardware]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:274
#, no-wrap
msgid "x11/nvidia-driver"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:276
#, no-wrap
-msgid "link:https://www.nvidia.com/Download/driverResults.aspx/187164/en-us/[supported hardware]"
+msgid "link:https://www.nvidia.com/Download/driverResults.aspx/202352/en-us/[supported hardware]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:281
msgid ""
"Version 304 of the NVIDIA(R) graphics driver (nvidia-driver-304) does not "
"support xorg-server 1.20 or later."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:284
msgid ""
"The latest NVIDIA(R) driver can be installed by running the following "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:288
#, no-wrap
msgid "# pkg install nvidia-driver\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:295
#, no-wrap
msgid "# sysrc kld_list+=nvidia-modeset\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:300
msgid ""
"The `nvidia` driver must be used if the packages x11/nvidia-driver-304 or "
"x11/nvidia-driver-340 have been installed."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:304
#, no-wrap
msgid "# sysrc kld_list+=nvidia\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:308
#, no-wrap
msgid "Xorg Configuration"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:311
msgid "Xorg supports most common video cards, keyboards, and pointing devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:316
msgid ""
"Video cards, monitors, and input devices are automatically detected and do "
"not require any manual configuration. Do not create [.filename]#xorg.conf# "
"or run a `Xorg -configure` step unless automatic configuration fails."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:319
#, no-wrap
msgid "Configuration Files"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:324
msgid ""
"Xorg looks in several directories for configuration files. [.filename]#/usr/"
"local/etc/X11/# is the *recommended* directory for these files on FreeBSD. "
"Using this directory helps keep application files separate from operating "
"system files."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:326
#, no-wrap
msgid "Single or Multiple Files"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:330
msgid ""
"It is easier to use multiple files that each configure a specific setting "
"than the traditional single [.filename]#xorg.conf#. These files are stored "
"in the [.filename]#/usr/local/etc/X11/xorg.conf.d/# subdirectory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:334
msgid ""
"The traditional single [.filename]#xorg.conf# still works, but is neither as "
"clear nor as flexible as multiple files in the [.filename]#/usr/local/etc/"
"X11/xorg.conf.d/# subdirectory."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:337
#, no-wrap
msgid "Video Cards"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:340
msgid ""
"The driver for the graphics card can be specified in the [.filename]#/usr/"
"local/etc/X11/xorg.conf.d/# directory."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:342
msgid "To configure the Intel(R) driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:344
#, no-wrap
msgid "Select Intel(R) Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:348
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/20-intel.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:355
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"intel\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:359
msgid "To configure the AMD(R) driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:361
#, no-wrap
msgid "Select AMD(R) Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:365
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/20-radeon.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:372
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"radeon\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:376
msgid "To configure the NVIDIA(R) driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:378
#, no-wrap
msgid "Select NVIDIA(R) Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:382
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/20-nvidia.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:389
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"nvidia\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:393
msgid "To configure the VESA driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:395
#, no-wrap
msgid "Select VESA Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:399
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/20-vesa.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:406
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"vesa\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:410
msgid "To configure the SCFB driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:412
#, no-wrap
msgid "Select SCFB Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:416
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/20-scfb.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:423
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"scfb\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:428
msgid ""
"To configure multiple video cards, the `BusID` can be added. A list of "
"video card bus ``ID``s can be displayed by executing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:432
#, no-wrap
msgid "% pciconf -lv | grep -B3 display\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:442
#, no-wrap
msgid ""
"vgapci0@pci0:0:2:0: class=0x030000 rev=0x07 hdr=0x00 vendor=0x8086 device=0x2a42 subvendor=0x17aa subdevice=0x20e4\n"
" vendor = 'Intel Corporation'\n"
" device = 'Mobile 4 Series Chipset Integrated Graphics Controller'\n"
" class = display\n"
"--\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:447
#, no-wrap
msgid ""
"vgapci1@pci0:0:2:1: class=0x038000 rev=0x07 hdr=0x00 vendor=0x8086 device=0x2a43 subvendor=0x17aa subdevice=0x20e4\n"
" vendor = 'Intel Corporation'\n"
" device = 'Mobile 4 Series Chipset Integrated Graphics Controller'\n"
" class = display\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:450
#, no-wrap
msgid "Select Intel(R) Video Driver and NVIDIA(R) Video Driver in a File"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:455
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/20-drivers.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:463
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"intel\"\n"
"\tBusID \"pci0:0:2:0\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:469
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"nvidia\"\n"
"\tBusID \"pci0:0:2:1\"\n"
"EndSection\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:473
#, no-wrap
msgid "Monitors"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:478
msgid ""
"Almost all monitors support the Extended Display Identification Data "
"standard (`EDID`). Xorg uses `EDID` to communicate with the monitor and "
"detect the supported resolutions and refresh rates. Then it selects the "
"most appropriate combination of settings to use with that monitor."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:480
msgid ""
"Other resolutions supported by the monitor can be chosen by setting the "
"desired resolution in configuration files, or after the X server has been "
"started with man:xrandr[1]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:482
#, no-wrap
msgid "Using RandR (Resize and Rotate)"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:485
msgid ""
"Run man:xrandr[1] without any parameters to see a list of video outputs and "
"detected monitor modes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:489
#, no-wrap
msgid "% xrandr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:523
#, no-wrap
msgid ""
"Screen 0: minimum 320 x 200, current 2560 x 960, maximum 8192 x 8192\n"
"LVDS-1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm\n"
" 1280x800 59.99*+ 59.81 59.91 50.00 \n"
" 1280x720 59.86 59.74 \n"
" 1024x768 60.00 \n"
" 1024x576 59.90 59.82 \n"
" 960x540 59.63 59.82 \n"
" 800x600 60.32 56.25 \n"
" 864x486 59.92 59.57 \n"
" 640x480 59.94 \n"
" 720x405 59.51 58.99 \n"
" 640x360 59.84 59.32 \n"
"VGA-1 connected primary 1280x960+1280+0 (normal left inverted right x axis y axis) 410mm x 257mm\n"
" 1280x1024 75.02 60.02 \n"
" 1440x900 74.98 60.07 \n"
" 1280x960 60.00* \n"
" 1280x800 74.93 59.81 \n"
" 1152x864 75.00 \n"
" 1024x768 75.03 70.07 60.00 \n"
" 832x624 74.55 \n"
" 800x600 72.19 75.00 60.32 56.25 \n"
" 640x480 75.00 72.81 66.67 59.94 \n"
" 720x400 70.08 \n"
"HDMI-1 disconnected (normal left inverted right x axis y axis)\n"
"DP-1 disconnected (normal left inverted right x axis y axis)\n"
"HDMI-2 disconnected (normal left inverted right x axis y axis)\n"
"DP-2 disconnected (normal left inverted right x axis y axis)\n"
"DP-3 disconnected (normal left inverted right x axis y axis)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:528
msgid ""
"This shows that the `VGA-1` output is being used to display a screen "
"resolution of 1280x960 pixels at a refresh rate of about 60 Hz. The "
"`LVDS-1` is being used as a secondary monitor to display a screen resolution "
"of 1280x800 pixels at a refresh rate of about 60 Hz. Monitors are not "
"attached to the `HDMI-1`, `HDMI-2`, `DP-1`, `DP-2` and `DP-3` connectors."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:531
msgid ""
"Any of the other display modes can be selected with man:xrandr[1]. For "
"example, to switch to 1280x1024 at 60 Hz:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:535
#, no-wrap
msgid "% xrandr --output LVDS-1 --mode 1280x720 --rate 60\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:538
#, no-wrap
msgid "Using the Xorg configuration file"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:541
msgid "The monitor configuration can also be set in a configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:543
msgid "To set a screen resolution of 1024x768 in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:544
#, no-wrap
msgid "Set Screen Resolution in a File"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:548
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/10-monitor.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:558
#, no-wrap
msgid ""
"Section \"Screen\"\n"
"\tIdentifier \"Screen0\"\n"
"\tDevice \"Card0\"\n"
"\tSubSection \"Display\"\n"
"\tModes \"1024x768\"\n"
"\tEndSubSection\n"
"EndSection\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:562
#, no-wrap
msgid "Input Devices"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:565
msgid ""
"Xorg supports the vast majority of input devices via package:x11/libinput[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:570
msgid ""
"Some desktop environments (such as KDE Plasma) provide a graphical UI for "
"setting these parameters. Check if this is the case before resorting to "
"manual configuration editing."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:574
msgid "For example, to configure the keyboard layout:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:575
#, no-wrap
msgid "Setting a Keyboard Layout"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:579
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/00-keyboard.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:590
#, no-wrap
msgid ""
"Section \"InputClass\"\n"
" Identifier \"Keyboard1\"\n"
" MatchIsKeyboard \"on\"\n"
" Option \"XkbLayout\" \"es, fr\"\n"
" Option \"XkbModel\" \"pc104\"\n"
" Option \"XkbVariant\" \",qwerty\"\n"
" Option \"XkbOptions\" \"grp:win_space_toggle\"\n"
"EndSection\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:594
#, no-wrap
msgid "Using Fonts in Xorg"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:599
msgid ""
"The default fonts that ship with Xorg are less than ideal for typical "
"desktop publishing applications. Large presentation fonts show up jagged "
"and unprofessional looking, and small fonts are almost completely "
"unintelligible. However, there are several free, high quality Type1 "
"(PostScript(R)) fonts available which can be readily used with Xorg."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:601
#, no-wrap
msgid "Type1 Fonts"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:607
msgid ""
"The URW font collection (package:x11-fonts/urwfonts[]) includes high quality "
"versions of standard type1 fonts (Times Roman(TM), Helvetica(TM), "
"Palatino(TM) and others). The Freefonts collection (package:x11-fonts/"
"freefonts[]) includes many more fonts, but most of them are intended for use "
"in graphics software such as the Gimp, and are not complete enough to serve "
"as screen fonts. In addition, Xorg can be configured to use TrueType(R) "
"fonts with a minimum of effort. For more details on this, see the man:X[7] "
"manual page or <<truetype>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:609
msgid ""
"To install the above Type1 font collections from binary packages, run the "
"following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:613
#, no-wrap
msgid "# pkg install urwfonts\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:617
msgid ""
"And likewise with the freefont or other collections. To have the X server "
"detect these fonts, add an appropriate line to the X server configuration "
"file ([.filename]#/usr/local/etc/X11/xorg.conf.d/90-fonts.conf#), which "
"reads:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:623
#, no-wrap
msgid ""
"Section \"Files\"\n"
" FontPath \"/usr/local/share/fonts/urwfonts/\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:626
msgid "Alternatively, at the command line in the X session run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:631
#, no-wrap
msgid ""
"% xset fp+ /usr/local/share/fonts/urwfonts\n"
"% xset fp rehash\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:635
msgid ""
"This will work but will be lost when the X session is closed, unless it is "
"added to the startup file ([.filename]#~/.xinitrc# for a normal `startx` "
"session, or [.filename]#~/.xsession# when logging in through a graphical "
"login manager like XDM). A third way is to use the new [.filename]#/usr/"
"local/etc/fonts/local.conf# as demonstrated in <<antialias>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:637
#, no-wrap
msgid "TrueType(R) Fonts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:643
msgid ""
"Xorg has built in support for rendering TrueType(R) fonts. There are two "
"different modules that can enable this functionality. The freetype module "
"is used in this example because it is more consistent with the other font "
"rendering back-ends. To enable the freetype module just add the following "
"line to the `\"Module\"` section of [.filename]#/usr/local/etc/X11/xorg.conf."
"d/90-fonts.conf#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:647
#, no-wrap
msgid "Load \"freetype\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:653
msgid ""
"Now make a directory for the TrueType(R) fonts (for example, [.filename]#/"
"usr/local/share/fonts/TrueType#) and copy all of the TrueType(R) fonts into "
"this directory. Keep in mind that TrueType(R) fonts cannot be directly "
"taken from an Apple(R) Mac(R); they must be in UNIX(R)/MS-DOS(R)/Windows(R) "
"format for use by Xorg. Once the files have been copied into this "
"directory, use mkfontscale to create a [.filename]#fonts.dir#, so that the X "
"font renderer knows that these new files have been installed. `mkfontscale` "
"can be installed as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:657
#, no-wrap
msgid "# pkg install mkfontscale\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:660
msgid "Then create an index of X font files in a directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:665
#, no-wrap
msgid ""
"# cd /usr/local/share/fonts/TrueType\n"
"# mkfontscale\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:669
msgid ""
"Now add the TrueType(R) directory to the font path. This is just the same "
"as described in <<type1>>:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:674
#, no-wrap
msgid ""
"% xset fp+ /usr/local/share/fonts/TrueType\n"
"% xset fp rehash\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:677
msgid "or add a `FontPath` line to [.filename]#xorg.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:680
msgid ""
"Now Gimp, LibreOffice, and all of the other X applications should now "
"recognize the installed TrueType(R) fonts. Extremely small fonts (as with "
"text in a high resolution display on a web page) and extremely large fonts "
"(within LibreOffice) will look much better now."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:682
#, no-wrap
msgid "Anti-Aliased Fonts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:685
msgid ""
"All fonts in Xorg that are found in [.filename]#/usr/local/share/fonts/# and "
"[.filename]#~/.fonts/# are automatically made available for anti-aliasing to "
"Xft-aware applications. Most recent applications are Xft-aware, including "
"KDE, GNOME, and Firefox."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:689
msgid ""
"To control which fonts are anti-aliased, or to configure anti-aliasing "
"properties, create (or edit, if it already exists) the file [.filename]#/usr/"
"local/etc/fonts/local.conf#. Several advanced features of the Xft font "
"system can be tuned using this file; this section describes only some simple "
"possibilities. For more details, please see man:fonts-conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:693
msgid ""
"This file must be in XML format. Pay careful attention to case, and make "
"sure all tags are properly closed. The file begins with the usual XML "
"header followed by a DOCTYPE definition, and then the `<fontconfig>` tag:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:699
#, no-wrap
msgid ""
"<?xml version=\"1.0\"?>\n"
" <!DOCTYPE fontconfig SYSTEM \"fonts.dtd\">\n"
" <fontconfig>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:703
msgid ""
"As previously stated, all fonts in [.filename]#/usr/local/share/fonts/# as "
"well as [.filename]#~/.fonts/# are already made available to Xft-aware "
"applications. To add another directory outside of these two directory "
"trees, add a line like this to [.filename]#/usr/local/etc/fonts/local.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:707
#, no-wrap
msgid "<dir>/path/to/my/fonts</dir>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:710
msgid ""
"After adding new fonts, and especially new font directories, rebuild the "
"font caches:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:714
#, no-wrap
msgid "# fc-cache -f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:718
msgid ""
"Anti-aliasing makes borders slightly fuzzy, which makes very small text more "
"readable and removes \"staircases\" from large text, but can cause eyestrain "
"if applied to normal text. To exclude font sizes smaller than 14 point from "
"anti-aliasing, include these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:737
#, no-wrap
msgid ""
"\t<match target=\"font\">\n"
"\t <test name=\"size\" compare=\"less\">\n"
"\t\t<double>14</double>\n"
"\t </test>\n"
"\t <edit name=\"antialias\" mode=\"assign\">\n"
"\t\t<bool>false</bool>\n"
"\t </edit>\n"
"\t</match>\n"
"\t<match target=\"font\">\n"
"\t <test name=\"pixelsize\" compare=\"less\" qual=\"any\">\n"
"\t\t<double>14</double>\n"
"\t </test>\n"
"\t <edit mode=\"assign\" name=\"antialias\">\n"
"\t\t<bool>false</bool>\n"
"\t </edit>\n"
"\t</match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:743
msgid ""
"Spacing for some monospaced fonts might also be inappropriate with anti-"
"aliasing. This seems to be an issue with KDE, in particular. One possible "
"fix is to force the spacing for such fonts to be 100. Add these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:762
#, no-wrap
msgid ""
"\t<match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t <string>fixed</string>\n"
"\t </test>\n"
"\t <edit name=\"family\" mode=\"assign\">\n"
"\t <string>mono</string>\n"
"\t </edit>\n"
"\t</match>\n"
"\t<match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t\t<string>console</string>\n"
"\t </test>\n"
"\t <edit name=\"family\" mode=\"assign\">\n"
"\t\t<string>mono</string>\n"
"\t </edit>\n"
"\t</match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:765
msgid ""
"(this aliases the other common names for fixed fonts as `\"mono\"`), and "
"then add:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:776
#, no-wrap
msgid ""
"\t<match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t\t <string>mono</string>\n"
"\t </test>\n"
"\t <edit name=\"spacing\" mode=\"assign\">\n"
"\t\t <int>100</int>\n"
"\t </edit>\n"
"\t </match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:782
msgid ""
"Certain fonts, such as Helvetica, may have a problem when anti-aliased. "
"Usually this manifests itself as a font that seems cut in half vertically. "
"At worst, it may cause applications to crash. To avoid this, consider "
"adding the following to [.filename]#local.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:793
#, no-wrap
msgid ""
"\t<match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t\t <string>Helvetica</string>\n"
"\t </test>\n"
"\t <edit name=\"family\" mode=\"assign\">\n"
"\t\t <string>sans-serif</string>\n"
"\t </edit>\n"
"\t </match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:797
msgid ""
"After editing [.filename]#local.conf#, make certain to end the file with the "
"`</fontconfig>` tag. Not doing this will cause changes to be ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:800
msgid ""
"Users can add personalized settings by creating their own [.filename]#~/."
"config/fontconfig/fonts.conf#. This file uses the same `XML` format "
"described above."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:804
msgid ""
"One last point: with an LCD screen, sub-pixel sampling may be desired. This "
"basically treats the (horizontally separated) red, green and blue components "
"separately to improve the horizontal resolution; the results can be "
"dramatic. To enable this, add the line somewhere in [.filename]#local.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:815
#, no-wrap
msgid ""
"\t <match target=\"font\">\n"
"\t <test qual=\"all\" name=\"rgba\">\n"
"\t\t <const>unknown</const>\n"
"\t </test>\n"
"\t <edit name=\"rgba\" mode=\"assign\">\n"
"\t\t <const>rgb</const>\n"
"\t </edit>\n"
"\t </match>\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:820
msgid ""
"Depending on the sort of display, `rgb` may need to be changed to `bgr`, "
"`vrgb` or `vbgr`: experiment and see which works best."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:822
msgid ""
"For more information about how to install and configure fonts on FreeBSD, "
"please read the article link:{fonts}[Fonts and FreeBSD]."
msgstr ""
diff --git a/documentation/content/en/books/handbook/zfs/_index.po b/documentation/content/en/books/handbook/zfs/_index.po
index e322e0de16..edbb9be33c 100644
--- a/documentation/content/en/books/handbook/zfs/_index.po
+++ b/documentation/content/en/books/handbook/zfs/_index.po
@@ -1,5039 +1,5036 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/zfs/_index.adoc:1
#, no-wrap
msgid "ZFS is an advanced file system designed to solve major problems found in previous storage subsystem software"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/zfs/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/zfs/_index.adoc:1
#, no-wrap
msgid "Chapter 21. The Z File System (ZFS)"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/zfs/_index.adoc:14
#, no-wrap
msgid "The Z File System (ZFS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:52
msgid ""
"ZFS is an advanced file system designed to solve major problems found in "
"previous storage subsystem software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:54
msgid ""
"Originally developed at Sun(TM), ongoing open source ZFS development has "
"moved to the http://open-zfs.org[OpenZFS Project]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:56
msgid "ZFS has three major design goals:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:58
msgid ""
"Data integrity: All data includes a <<zfs-term-checksum,checksum>> of the "
"data. ZFS calculates checksums and writes them along with the data. When "
"reading that data later, ZFS recalculates the checksums. If the checksums do "
"not match, meaning detecting one or more data errors, ZFS will attempt to "
"automatically correct errors when ditto-, mirror-, or parity-blocks are "
"available."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:59
msgid ""
"Pooled storage: adding physical storage devices to a pool, and allocating "
"storage space from that shared pool. Space is available to all file systems "
"and volumes, and increases by adding new storage devices to the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:60
msgid ""
"Performance: caching mechanisms provide increased performance. <<zfs-term-"
"arc,ARC>> is an advanced memory-based read cache. ZFS provides a second "
"level disk-based read cache with <<zfs-term-l2arc,L2ARC>>, and a disk-based "
"synchronous write cache named <<zfs-term-zil,ZIL>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:62
msgid "A complete list of features and terminology is in <<zfs-term>>."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:64
#, no-wrap
msgid "What Makes ZFS Different"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:77
msgid ""
"More than a file system, ZFS is fundamentally different from traditional "
"file systems. Combining the traditionally separate roles of volume manager "
"and file system provides ZFS with unique advantages. The file system is now "
"aware of the underlying structure of the disks. Traditional file systems "
"could exist on a single disk alone at a time. If there were two disks then "
"creating two separate file systems was necessary. A traditional hardware "
"RAID configuration avoided this problem by presenting the operating system "
"with a single logical disk made up of the space provided by physical disks "
"on top of which the operating system placed a file system. Even with "
"software RAID solutions like those provided by GEOM, the UFS file system "
"living on top of the RAID believes it's dealing with a single device. ZFS' "
"combination of the volume manager and the file system solves this and allows "
"the creation of file systems that all share a pool of available storage. "
"One big advantage of ZFS' awareness of the physical disk layout is that "
"existing file systems grow automatically when adding extra disks to the "
"pool. This new space then becomes available to the file systems. ZFS can "
"also apply different properties to each file system. This makes it useful to "
"create separate file systems and datasets instead of a single monolithic "
"file system."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:79
#, no-wrap
msgid "Quick Start Guide"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:83
msgid ""
"FreeBSD can mount ZFS pools and datasets during system initialization. To "
"enable it, add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:87
#, no-wrap
msgid "zfs_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:90
msgid "Then start the service:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:94
#, no-wrap
msgid "# service zfs start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:98
msgid ""
"The examples in this section assume three SCSI disks with the device names [."
"filename]#da0#, [.filename]#da1#, and [.filename]#da2#. Users of SATA "
"hardware should instead use [.filename]#ada# device names."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:100
#, no-wrap
msgid "Single Disk Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:103
msgid "To create a simple, non-redundant pool using a single disk device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:107
#, no-wrap
msgid "# zpool create example /dev/da0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:110
msgid "To view the new pool, review the output of `df`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:119
#, no-wrap
msgid ""
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235230 1628718 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032846 48737598 2% /usr\n"
"example 17547136 0 17547136 0% /example\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:123
msgid ""
"This output shows creating and mounting of the `example` pool, and that is "
"now accessible as a file system. Create files for users to browse:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:134
#, no-wrap
msgid ""
"# cd /example\n"
"# ls\n"
"# touch testfile\n"
"# ls -al\n"
"total 4\n"
"drwxr-xr-x 2 root wheel 3 Aug 29 23:15 .\n"
"drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..\n"
"-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:138
msgid ""
"This pool is not using any advanced ZFS features and properties yet. To "
"create a dataset on this pool with compression enabled:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:143
#, no-wrap
msgid ""
"# zfs create example/compressed\n"
"# zfs set compression=gzip example/compressed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:147
msgid ""
"The `example/compressed` dataset is now a ZFS compressed file system. Try "
"copying some large files to [.filename]#/example/compressed#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:149
msgid "Disable compression with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:153
#, no-wrap
msgid "# zfs set compression=off example/compressed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:156
msgid "To unmount a file system, use `zfs umount` and then verify with `df`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:166
#, no-wrap
msgid ""
"# zfs umount example/compressed\n"
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235232 1628716 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032864 48737580 2% /usr\n"
"example 17547008 0 17547008 0% /example\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:169
msgid ""
"To re-mount the file system to make it accessible again, use `zfs mount` and "
"verify with `df`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:180
#, no-wrap
msgid ""
"# zfs mount example/compressed\n"
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235234 1628714 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032864 48737580 2% /usr\n"
"example 17547008 0 17547008 0% /example\n"
"example/compressed 17547008 0 17547008 0% /example/compressed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:183
msgid "Running `mount` shows the pool and file systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:192
#, no-wrap
msgid ""
"# mount\n"
"/dev/ad0s1a on / (ufs, local)\n"
"devfs on /dev (devfs, local)\n"
"/dev/ad0s1d on /usr (ufs, local, soft-updates)\n"
"example on /example (zfs, local)\n"
"example/compressed on /example/compressed (zfs, local)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:198
msgid ""
"Use ZFS datasets like any file system after creation. Set other available "
"features on a per-dataset basis when needed. The example below creates a "
"new file system called `data`. It assumes the file system contains "
"important files and configures it to store two copies of each data block."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:203
#, no-wrap
msgid ""
"# zfs create example/data\n"
"# zfs set copies=2 example/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:206
msgid "Use `df` to see the data and space usage:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:217
#, no-wrap
msgid ""
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235234 1628714 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032864 48737580 2% /usr\n"
"example 17547008 0 17547008 0% /example\n"
"example/compressed 17547008 0 17547008 0% /example/compressed\n"
"example/data 17547008 0 17547008 0% /example/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:222
msgid ""
"Notice that all file systems in the pool have the same available space. "
"Using `df` in these examples shows that the file systems use the space they "
"need and all draw from the same pool. ZFS gets rid of concepts such as "
"volumes and partitions, and allows several file systems to share the same "
"pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:224
msgid "To destroy the file systems and then the pool that is no longer needed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:230
#, no-wrap
msgid ""
"# zfs destroy example/compressed\n"
"# zfs destroy example/data\n"
"# zpool destroy example\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:233
#, no-wrap
msgid "RAID-Z"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:239
msgid ""
"Disks fail. One way to avoid data loss from disk failure is to use RAID. "
"ZFS supports this feature in its pool design. RAID-Z pools require three or "
"more disks but provide more usable space than mirrored pools."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:241
msgid ""
"This example creates a RAID-Z pool, specifying the disks to add to the pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:245
#, no-wrap
msgid "# zpool create storage raidz da0 da1 da2\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:253
msgid ""
"Sun(TM) recommends that the number of devices used in a RAID-Z configuration "
"be between three and nine. For environments requiring a single pool "
"consisting of 10 disks or more, consider breaking it up into smaller RAID-Z "
"groups. If two disks are available, ZFS mirroring provides redundancy if "
"required. Refer to man:zpool[8] for more details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:257
msgid ""
"The previous example created the `storage` zpool. This example makes a new "
"file system called `home` in that pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:261
#, no-wrap
msgid "# zfs create storage/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:264
msgid "Enable compression and store an extra copy of directories and files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:269
#, no-wrap
msgid ""
"# zfs set copies=2 storage/home\n"
"# zfs set compression=gzip storage/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:272
msgid ""
"To make this the new home directory for users, copy the user data to this "
"directory and create the appropriate symbolic links:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:279
#, no-wrap
msgid ""
"# cp -rp /home/* /storage/home\n"
"# rm -rf /home /usr/home\n"
"# ln -s /storage/home /home\n"
"# ln -s /storage/home /usr/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:283
msgid ""
"Users data is now stored on the freshly-created [.filename]#/storage/home#. "
"Test by adding a new user and logging in as that user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:285
msgid "Create a file system snapshot to roll back to later:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:289
#, no-wrap
msgid "# zfs snapshot storage/home@08-30-08\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:292
msgid "ZFS creates snapshots of a dataset, not a single directory or file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:295
msgid ""
"The `@` character is a delimiter between the file system name or the volume "
"name. Before deleting an important directory, back up the file system, then "
"roll back to an earlier snapshot in which the directory still exists:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:299
#, no-wrap
msgid "# zfs rollback storage/home@08-30-08\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:303
msgid ""
"To list all available snapshots, run `ls` in the file system's [.filename]#."
"zfs/snapshot# directory. For example, to see the snapshot taken:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:307
#, no-wrap
msgid "# ls /storage/home/.zfs/snapshot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:312
msgid ""
"Write a script to take regular snapshots of user data. Over time, snapshots "
"can use up a lot of disk space. Remove the previous snapshot using the "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:316
#, no-wrap
msgid "# zfs destroy storage/home@08-30-08\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:320
msgid ""
"After testing, make [.filename]#/storage/home# the real [.filename]#/home# "
"with this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:324
#, no-wrap
msgid "# zfs set mountpoint=/home storage/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:327
msgid ""
"Run `df` and `mount` to confirm that the system now treats the file system "
"as the real [.filename]#/home#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:343
#, no-wrap
msgid ""
"# mount\n"
"/dev/ad0s1a on / (ufs, local)\n"
"devfs on /dev (devfs, local)\n"
"/dev/ad0s1d on /usr (ufs, local, soft-updates)\n"
"storage on /storage (zfs, local)\n"
"storage/home on /home (zfs, local)\n"
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235240 1628708 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032826 48737618 2% /usr\n"
"storage 26320512 0 26320512 0% /storage\n"
"storage/home 26320512 0 26320512 0% /home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:347
msgid ""
"This completes the RAID-Z configuration. Add daily status updates about the "
"created file systems to the nightly man:periodic[8] runs by adding this line "
"to [.filename]#/etc/periodic.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:351
#, no-wrap
msgid "daily_status_zfs_enable=\"YES\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:354
#, no-wrap
msgid "Recovering RAID-Z"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:358
msgid ""
"Every software RAID has a method of monitoring its `state`. View the status "
"of RAID-Z devices using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:362
#, no-wrap
msgid "# zpool status -x\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:365
msgid ""
"If all pools are <<zfs-term-online,Online>> and everything is normal, the "
"message shows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:369
#, no-wrap
msgid "all pools are healthy\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:372
msgid ""
"If there is a problem, perhaps a disk being in the <<zfs-term-offline,"
"Offline>> state, the pool state will look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:384
#, no-wrap
msgid ""
" pool: storage\n"
" state: DEGRADED\n"
"status: One or more devices has been taken offline by the administrator.\n"
"\tSufficient replicas exist for the pool to continue functioning in a\n"
"\tdegraded state.\n"
"action: Online the device using 'zpool online' or replace the device with\n"
"\t'zpool replace'.\n"
" scrub: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:391
#, no-wrap
msgid ""
"\tNAME STATE READ WRITE CKSUM\n"
"\tstorage DEGRADED 0 0 0\n"
"\t raidz1 DEGRADED 0 0 0\n"
"\t da0 ONLINE 0 0 0\n"
"\t da1 OFFLINE 0 0 0\n"
"\t da2 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:393
#: documentation/content/en/books/handbook/zfs/_index.adoc:428
#: documentation/content/en/books/handbook/zfs/_index.adoc:474
#: documentation/content/en/books/handbook/zfs/_index.adoc:517
#: documentation/content/en/books/handbook/zfs/_index.adoc:540
#: documentation/content/en/books/handbook/zfs/_index.adoc:572
#: documentation/content/en/books/handbook/zfs/_index.adoc:651
#: documentation/content/en/books/handbook/zfs/_index.adoc:705
#: documentation/content/en/books/handbook/zfs/_index.adoc:742
#: documentation/content/en/books/handbook/zfs/_index.adoc:771
#: documentation/content/en/books/handbook/zfs/_index.adoc:851
#: documentation/content/en/books/handbook/zfs/_index.adoc:924
#: documentation/content/en/books/handbook/zfs/_index.adoc:955
#: documentation/content/en/books/handbook/zfs/_index.adoc:1055
#: documentation/content/en/books/handbook/zfs/_index.adoc:1099
#: documentation/content/en/books/handbook/zfs/_index.adoc:1124
#: documentation/content/en/books/handbook/zfs/_index.adoc:1144
#, no-wrap
msgid "errors: No known data errors\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:396
msgid ""
"\"OFFLINE\" shows the administrator took [.filename]#da1# offline using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:400
#, no-wrap
msgid "# zpool offline storage da1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:404
msgid ""
"Power down the computer now and replace [.filename]#da1#. Power up the "
"computer and return [.filename]#da1# to the pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:408
#, no-wrap
msgid "# zpool replace storage da1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:411
msgid ""
"Next, check the status again, this time without `-x` to display all pools:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:419
#, no-wrap
msgid ""
"# zpool status storage\n"
" pool: storage\n"
" state: ONLINE\n"
" scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:426
#: documentation/content/en/books/handbook/zfs/_index.adoc:472
#, no-wrap
msgid ""
"\tNAME STATE READ WRITE CKSUM\n"
"\tstorage ONLINE 0 0 0\n"
"\t raidz1 ONLINE 0 0 0\n"
"\t da0 ONLINE 0 0 0\n"
"\t da1 ONLINE 0 0 0\n"
"\t da2 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:431
msgid "In this example, everything is normal."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:433
#, no-wrap
msgid "Data Verification"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:437
msgid ""
"ZFS uses checksums to verify the integrity of stored data. Creating file "
"systems automatically enables them."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:444
msgid ""
"Disabling Checksums is possible but _not_ recommended! Checksums take little "
"storage space and provide data integrity. Most ZFS features will not work "
"properly with checksums disabled. Disabling these checksums will not "
"increase performance noticeably."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:447
msgid ""
"Verifying the data checksums (called _scrubbing_) ensures integrity of the "
"`storage` pool with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:451
#, no-wrap
msgid "# zpool scrub storage\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:457
msgid ""
"The duration of a scrub depends on the amount of data stored. Larger "
"amounts of data will take proportionally longer to verify. Since scrubbing "
"is I/O intensive, ZFS allows a single scrub to run at a time. After "
"scrubbing completes, view the status with `zpool status`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:465
#, no-wrap
msgid ""
"# zpool status storage\n"
" pool: storage\n"
" state: ONLINE\n"
" scrub: scrub completed with 0 errors on Sat Jan 26 19:57:37 2013\n"
"config:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:478
msgid ""
"Displaying the completion date of the last scrubbing helps decide when to "
"start another. Routine scrubs help protect data from silent corruption and "
"ensure the integrity of the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:480
msgid "Refer to man:zfs[8] and man:zpool[8] for other ZFS options."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:482
#, no-wrap
msgid "`zpool` Administration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:487
msgid ""
"ZFS administration uses two main utilities. The `zpool` utility controls "
"the operation of the pool and allows adding, removing, replacing, and "
"managing disks. The <<zfs-zfs,`zfs`>> utility allows creating, destroying, "
"and managing datasets, both <<zfs-term-filesystem,file systems>> and <<zfs-"
"term-volume,volumes>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:489
#, no-wrap
msgid "Creating and Destroying Storage Pools"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:498
msgid ""
"Creating a ZFS storage pool requires permanent decisions, as the pool "
"structure cannot change after creation. The most important decision is "
"which types of vdevs to group the physical disks into. See the list of "
"<<zfs-term-vdev,vdev types>> for details about the possible options. After "
"creating the pool, most vdev types do not allow adding disks to the vdev. "
"The exceptions are mirrors, which allow adding new disks to the vdev, and "
"stripes, which upgrade to mirrors by attaching a new disk to the vdev. "
"Although adding new vdevs expands a pool, the pool layout cannot change "
"after pool creation. Instead, back up the data, destroy the pool, and "
"recreate it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:500
msgid "Create a simple mirror pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:509
#, no-wrap
msgid ""
"# zpool create mypool mirror /dev/ada1 /dev/ada2\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:515
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 0\n"
" ada2 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:520
msgid ""
"To create more than one vdev with a single command, specify groups of disks "
"separated by the vdev type keyword, `mirror` in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:529
#, no-wrap
msgid ""
"# zpool create mypool mirror /dev/ada1 /dev/ada2 mirror /dev/ada3 /dev/ada4\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:538
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 0\n"
" ada2 ONLINE 0 0 0\n"
" mirror-1 ONLINE 0 0 0\n"
" ada3 ONLINE 0 0 0\n"
" ada4 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:549
msgid ""
"Pools can also use partitions rather than whole disks. Putting ZFS in a "
"separate partition allows the same disk to have other partitions for other "
"purposes. In particular, it allows adding partitions with bootcode and file "
"systems needed for booting. This allows booting from disks that are also "
"members of a pool. ZFS adds no performance penalty on FreeBSD when using a "
"partition rather than a whole disk. Using partitions also allows the "
"administrator to _under-provision_ the disks, using less than the full "
"capacity. If a future replacement disk of the same nominal size as the "
"original actually has a slightly smaller capacity, the smaller partition "
"will still fit, using the replacement disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:551
msgid "Create a <<zfs-term-vdev-raidz,RAID-Z2>> pool using partitions:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:560
#, no-wrap
msgid ""
"# zpool create mypool raidz2 /dev/ada0p3 /dev/ada1p3 /dev/ada2p3 /dev/ada3p3 /dev/ada4p3 /dev/ada5p3\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:570
#: documentation/content/en/books/handbook/zfs/_index.adoc:769
#: documentation/content/en/books/handbook/zfs/_index.adoc:953
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" raidz2-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
" ada3p3 ONLINE 0 0 0\n"
" ada4p3 ONLINE 0 0 0\n"
" ada5p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:579
msgid ""
"Destroy a pool that is no longer needed to reuse the disks. Destroying a "
"pool requires unmounting the file systems in that pool first. If any "
"dataset is in use, the unmount operation fails without destroying the pool. "
"Force the pool destruction with `-f`. This can cause undefined behavior in "
"applications which had open files on those datasets."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:581
#, no-wrap
msgid "Adding and Removing Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:585
msgid ""
"Two ways exist for adding disks to a pool: attaching a disk to an existing "
"vdev with `zpool attach`, or adding vdevs to the pool with `zpool add`. "
"Some <<zfs-term-vdev,vdev types>> allow adding disks to the vdev after "
"creation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:594
msgid ""
"A pool created with a single disk lacks redundancy. It can detect "
"corruption but can not repair it, because there is no other copy of the "
"data. The <<zfs-term-copies,copies>> property may be able to recover from a "
"small failure such as a bad sector, but does not provide the same level of "
"protection as mirroring or RAID-Z. Starting with a pool consisting of a "
"single disk vdev, use `zpool attach` to add a new disk to the vdev, creating "
"a mirror. Also use `zpool attach` to add new disks to a mirror group, "
"increasing redundancy and read performance. When partitioning the disks "
"used for the pool, replicate the layout of the first disk on to the second. "
"Use `gpart backup` and `gpart restore` to make this process easier."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:596
msgid ""
"Upgrade the single disk (stripe) vdev [.filename]#ada0p3# to a mirror by "
"attaching [.filename]#ada1p3#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:604
#: documentation/content/en/books/handbook/zfs/_index.adoc:801
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:608
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:612
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool attach mypool ada0p3 ada1p3\n"
"Make sure to wait until resilvering finishes before rebooting.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:614
#, no-wrap
msgid "If you boot from pool 'mypool', you may need to update boot code on newly attached disk _ada1p3_.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:616
#, no-wrap
msgid "Assuming you use GPT partitioning and _da0_ is your new boot disk you may use the following command:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:630
#, no-wrap
msgid ""
" gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1\n"
"bootcode written to ada1\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: One or more devices is currently being resilvered. The pool will\n"
" continue to function, possibly in a degraded state.\n"
"action: Wait for the resilver to complete.\n"
" scan: resilver in progress since Fri May 30 08:19:19 2014\n"
" 527M scanned out of 781M at 47.9M/s, 0h0m to go\n"
" 527M resilvered, 67.53% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:636
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0 (resilvering)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:643
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Fri May 30 08:15:58 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:649
#: documentation/content/en/books/handbook/zfs/_index.adoc:682
#: documentation/content/en/books/handbook/zfs/_index.adoc:740
#: documentation/content/en/books/handbook/zfs/_index.adoc:807
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:659
msgid ""
"When adding disks to the existing vdev is not an option, as for RAID-Z, an "
"alternative method is to add another vdev to the pool. Adding vdevs "
"provides higher performance by distributing writes across the vdevs. Each "
"vdev provides its own redundancy. Mixing vdev types like `mirror` and `RAID-"
"Z` is possible but discouraged. Adding a non-redundant vdev to a pool "
"containing mirror or RAID-Z vdevs risks the data on the entire pool. "
"Distributing writes means a failure of the non-redundant disk will result in "
"the loss of a fraction of every block written to the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:664
msgid ""
"ZFS stripes data across each of the vdevs. For example, with two mirror "
"vdevs, this is effectively a RAID 10 that stripes writes across two sets of "
"mirrors. ZFS allocates space so that each vdev reaches 100% full at the "
"same time. Having vdevs with different amounts of free space will lower "
"performance, as more data writes go to the less full vdev."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:666
msgid ""
"When attaching new devices to a boot pool, remember to update the bootcode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:668
msgid ""
"Attach a second mirror group ([.filename]#ada2p3# and [.filename]#ada3p3#) "
"to the existing mirror:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:676
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Fri May 30 08:19:35 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:694
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool add mypool mirror ada2p3 ada3p3\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2\n"
"bootcode written to ada2\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada3\n"
"bootcode written to ada3\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:703
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" mirror-1 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
" ada3p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:709
msgid ""
"Removing vdevs from a pool is impossible and removal of disks from a mirror "
"is exclusive if there is enough remaining redundancy. If a single disk "
"remains in a mirror group, that group ceases to be a mirror and becomes a "
"stripe, risking the entire pool if that remaining disk fails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:711
msgid "Remove a disk from a three-way mirror group:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:719
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:726
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:734
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool detach mypool ada2p3\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014\n"
"config:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:745
#, no-wrap
msgid "Checking the Status of a Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:751
msgid ""
"Pool status is important. If a drive goes offline or ZFS detects a read, "
"write, or checksum error, the corresponding error count increases. The "
"`status` output shows the configuration and status of each device in the "
"pool and the status of the entire pool. Actions to take and details about "
"the last <<zfs-zpool-scrub,`scrub`>> are also shown."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:759
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 2h25m with 0 errors on Sat Sep 14 04:25:50 2013\n"
"config:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:774
#, no-wrap
msgid "Clearing Errors"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:780
msgid ""
"When detecting an error, ZFS increases the read, write, or checksum error "
"counts. Clear the error message and reset the counts with `zpool clear "
"_mypool_`. Clearing the error state can be important for automated scripts "
"that alert the administrator when the pool encounters an error. Without "
"clearing old errors, the scripts may fail to report further errors."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:782
#, no-wrap
msgid "Replacing a Functioning Device"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:791
msgid ""
"It may be desirable to replace one disk with a different disk. When "
"replacing a working disk, the process keeps the old disk online during the "
"replacement. The pool never enters a <<zfs-term-degraded,degraded>> state, "
"reducing the risk of data loss. Running `zpool replace` copies the data "
"from the old disk to the new one. After the operation completes, ZFS "
"disconnects the old disk from the vdev. If the new disk is larger than the "
"old disk, it may be possible to grow the zpool, using the new space. See "
"<<zfs-zpool-online,Growing a Pool>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:793
msgid "Replace a functioning device in the pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:811
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool replace mypool ada1p3 ada2p3\n"
"Make sure to wait until resilvering finishes before rebooting.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:813
#, no-wrap
msgid "When booting from the pool 'zroot', update the boot code on the newly attached disk 'ada2p3'.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:815
#, no-wrap
msgid "Assuming GPT partitioning is used and [.filename]#da0# is the new boot disk, use the following command:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:828
#, no-wrap
msgid ""
" gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: One or more devices is currently being resilvered. The pool will\n"
" continue to function, possibly in a degraded state.\n"
"action: Wait for the resilver to complete.\n"
" scan: resilver in progress since Mon Jun 2 14:21:35 2014\n"
" 604M scanned out of 781M at 46.5M/s, 0h0m to go\n"
" 604M resilvered, 77.39% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:836
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" replacing-1 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0 (resilvering)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:843
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Mon Jun 2 14:21:52 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:849
#: documentation/content/en/books/handbook/zfs/_index.adoc:922
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:854
#, no-wrap
msgid "Dealing with Failed Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:862
msgid ""
"When a disk in a pool fails, the vdev to which the disk belongs enters the "
"<<zfs-term-degraded,degraded>> state. The data is still available, but with "
"reduced performance because ZFS computes missing data from the available "
"redundancy. To restore the vdev to a fully functional state, replace the "
"failed physical device. ZFS is then instructed to begin the <<zfs-term-"
"resilver,resilver>> operation. ZFS recomputes data on the failed device "
"from available redundancy and writes it to the replacement device. After "
"completion, the vdev returns to <<zfs-term-online,online>> status."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:865
msgid ""
"If the vdev does not have any redundancy, or if devices have failed and "
"there is not enough redundancy to compensate, the pool enters the <<zfs-term-"
"faulted,faulted>> state. Unless enough devices can reconnect the pool "
"becomes inoperative requiring a data restore from backups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:868
msgid ""
"When replacing a failed disk, the name of the failed disk changes to the "
"GUID of the new disk. A new device name parameter for `zpool replace` is "
"not required if the replacement device has the same device name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:870
msgid "Replace a failed disk using `zpool replace`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:882
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: DEGRADED\n"
"status: One or more devices could not be opened. Sufficient replicas exist for\n"
" the pool to continue functioning in a degraded state.\n"
"action: Attach the missing device and online it using 'zpool online'.\n"
" see: http://illumos.org/msg/ZFS-8000-2Q\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:888
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool DEGRADED 0 0 0\n"
" mirror-0 DEGRADED 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" 316502962686821739 UNAVAIL 0 0 0 was /dev/ada1p3\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:901
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool replace mypool 316502962686821739 ada2p3\n"
"# zpool status\n"
" pool: mypool\n"
" state: DEGRADED\n"
"status: One or more devices is currently being resilvered. The pool will\n"
" continue to function, possibly in a degraded state.\n"
"action: Wait for the resilver to complete.\n"
" scan: resilver in progress since Mon Jun 2 14:52:21 2014\n"
" 641M scanned out of 781M at 49.3M/s, 0h0m to go\n"
" 640M resilvered, 82.04% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:909
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool DEGRADED 0 0 0\n"
" mirror-0 DEGRADED 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" replacing-1 UNAVAIL 0 0 0\n"
" 15732067398082357289 UNAVAIL 0 0 0 was /dev/ada1p3/old\n"
" ada2p3 ONLINE 0 0 0 (resilvering)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:916
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Mon Jun 2 14:52:38 2014\n"
"config:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:927
#, no-wrap
msgid "Scrubbing a Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:932
msgid ""
"Routinely <<zfs-term-scrub,scrub>> pools, ideally at least once every "
"month. The `scrub` operation is disk-intensive and will reduce performance "
"while running. Avoid high-demand periods when scheduling `scrub` or use "
"<<zfs-advanced-tuning-scrub_delay,`vfs.zfs.scrub_delay`>> to adjust the "
"relative priority of the `scrub` to keep it from slowing down other "
"workloads."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:943
#, no-wrap
msgid ""
"# zpool scrub mypool\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub in progress since Wed Feb 19 20:52:54 2014\n"
" 116G scanned out of 8.60T at 649M/s, 3h48m to go\n"
" 0 repaired, 1.32% done\n"
"config:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:958
msgid "To cancel a scrub operation if needed, run `zpool scrub -s _mypool_`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:960
#, no-wrap
msgid "Self-Healing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:971
msgid ""
"The checksums stored with data blocks enable the file system to _self-"
"heal_. This feature will automatically repair data whose checksum does not "
"match the one recorded on another device that is part of the storage pool. "
"For example, a mirror configuration with two disks where one drive is "
"starting to malfunction and cannot properly store the data any more. This "
"is worse when the data was not accessed for a long time, as with long term "
"archive storage. Traditional file systems need to run commands that check "
"and repair the data like man:fsck[8]. These commands take time, and in "
"severe cases, an administrator has to decide which repair operation to "
"perform. When ZFS detects a data block with a mismatched checksum, it tries "
"to read the data from the mirror disk. If that disk can provide the correct "
"data, ZFS will give that to the application and correct the data on the disk "
"with the wrong checksum. This happens without any interaction from a system "
"administrator during normal pool operation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:973
msgid ""
"The next example shows this self-healing behavior by creating a mirrored "
"pool of disks [.filename]#/dev/ada0# and [.filename]#/dev/ada1#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:982
#, no-wrap
msgid ""
"# zpool create healer mirror /dev/ada0 /dev/ada1\n"
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:988
#: documentation/content/en/books/handbook/zfs/_index.adoc:1142
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:993
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"healer 960M 92.5K 960M - - 0% 0% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:996
msgid ""
"Copy some important data to the pool to protect from data errors using the "
"self-healing feature and create a checksum of the pool for later comparison."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1006
#, no-wrap
msgid ""
"# cp /some/important/data /healer\n"
"# zfs list\n"
"NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT\n"
"healer 960M 67.7M 892M 7% 1.00x ONLINE -\n"
"# sha1 /healer > checksum.txt\n"
"# cat checksum.txt\n"
"SHA1 (/healer) = 2753eff56d77d9a536ece6694bf0a82740344d1f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1010
msgid ""
"Simulate data corruption by writing random data to the beginning of one of "
"the disks in the mirror. To keep ZFS from healing the data when detected, "
"export the pool before the corruption and import it again afterwards."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1018
msgid ""
"This is a dangerous operation that can destroy vital data, shown here for "
"demonstration alone. *Do not try* it during normal operation of a storage "
"pool. Nor should this intentional corruption example run on any disk with a "
"file system not using ZFS on another partition in it. Do not use any other "
"disk device names other than the ones that are part of the pool. Ensure "
"proper backups of the pool exist and test them before running the command!"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1028
#, no-wrap
msgid ""
"# zpool export healer\n"
"# dd if=/dev/random of=/dev/ada1 bs=1m count=200\n"
"200+0 records in\n"
"200+0 records out\n"
"209715200 bytes transferred in 62.992162 secs (3329227 bytes/sec)\n"
"# zpool import healer\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1034
msgid ""
"The pool status shows that one device has experienced an error. Note that "
"applications reading data from the pool did not receive any incorrect data. "
"ZFS provided data from the [.filename]#ada0# device with the correct "
"checksums. To find the device with the wrong checksum, look for one whose "
"`CKSUM` column contains a nonzero value."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1047
#, no-wrap
msgid ""
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
" status: One or more devices has experienced an unrecoverable error. An\n"
" attempt was made to correct the error. Applications are unaffected.\n"
" action: Determine if the device needs to be replaced, and clear the errors\n"
" using 'zpool clear' or replace the device with 'zpool replace'.\n"
" see: http://illumos.org/msg/ZFS-8000-4J\n"
" scan: none requested\n"
" config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1053
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1059
msgid ""
"ZFS detected the error and handled it by using the redundancy present in the "
"unaffected [.filename]#ada0# mirror disk. A checksum comparison with the "
"original one will reveal whether the pool is consistent again."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1066
#, no-wrap
msgid ""
"# sha1 /healer >> checksum.txt\n"
"# cat checksum.txt\n"
"SHA1 (/healer) = 2753eff56d77d9a536ece6694bf0a82740344d1f\n"
"SHA1 (/healer) = 2753eff56d77d9a536ece6694bf0a82740344d1f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1075
msgid ""
"Generate checksums before and after the intentional tampering while the pool "
"data still matches. This shows how ZFS is capable of detecting and "
"correcting any errors automatically when the checksums differ. Note this is "
"possible with enough redundancy present in the pool. A pool consisting of a "
"single device has no self-healing capabilities. That is also the reason why "
"checksums are so important in ZFS; do not disable them for any reason. ZFS "
"requires no man:fsck[8] or similar file system consistency check program to "
"detect and correct this, and keeps the pool available while there is a "
"problem. A scrub operation is now required to overwrite the corrupted data "
"on [.filename]#ada1#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1091
#, no-wrap
msgid ""
"# zpool scrub healer\n"
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
"status: One or more devices has experienced an unrecoverable error. An\n"
" attempt was made to correct the error. Applications are unaffected.\n"
"action: Determine if the device needs to be replaced, and clear the errors\n"
" using 'zpool clear' or replace the device with 'zpool replace'.\n"
" see: http://illumos.org/msg/ZFS-8000-4J\n"
" scan: scrub in progress since Mon Dec 10 12:23:30 2012\n"
" 10.4M scanned out of 67.0M at 267K/s, 0h3m to go\n"
" 9.63M repaired, 15.56% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1097
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 627 (repairing)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1103
msgid ""
"The scrub operation reads data from [.filename]#ada0# and rewrites any data "
"with a wrong checksum on [.filename]#ada1#, shown by the `(repairing)` "
"output from `zpool status`. After the operation is complete, the pool "
"status changes to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1116
#, no-wrap
msgid ""
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
"status: One or more devices has experienced an unrecoverable error. An\n"
" attempt was made to correct the error. Applications are unaffected.\n"
"action: Determine if the device needs to be replaced, and clear the errors\n"
" using 'zpool clear' or replace the device with 'zpool replace'.\n"
" see: http://illumos.org/msg/ZFS-8000-4J\n"
" scan: scrub repaired 66.5M in 0h2m with 0 errors on Mon Dec 10 12:26:25 2012\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1122
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 2.72K\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1127
msgid ""
"After the scrubbing operation completes with all the data synchronized from "
"[.filename]#ada0# to [.filename]#ada1#, <<zfs-zpool-clear,clear>> the error "
"messages from the pool status by running `zpool clear`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1136
#, no-wrap
msgid ""
"# zpool clear healer\n"
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
" scan: scrub repaired 66.5M in 0h2m with 0 errors on Mon Dec 10 12:26:25 2012\n"
"config:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1147
msgid ""
"The pool is now back to a fully working state, with all error counts now "
"zero."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1149
#, no-wrap
msgid "Growing a Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1158
msgid ""
"The smallest device in each vdev limits the usable size of a redundant "
"pool. Replace the smallest device with a larger device. After completing a "
"<<zfs-zpool-replace,replace>> or <<zfs-term-resilver,resilver>> operation, "
"the pool can grow to use the capacity of the new device. For example, "
"consider a mirror of a 1 TB drive and a 2 TB drive. The usable space is 1 "
"TB. When replacing the 1 TB drive with another 2 TB drive, the resilvering "
"process copies the existing data onto the new drive. As both of the devices "
"now have 2 TB capacity, the mirror's available space grows to 2 TB."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1161
msgid ""
"Start expansion by using `zpool online -e` on each device. After expanding "
"all devices, the extra space becomes available to the pool."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1163
#, no-wrap
msgid "Importing and Exporting Pools"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1171
msgid ""
"_Export_ pools before moving them to another system. ZFS unmounts all "
"datasets, marking each device as exported but still locked to prevent use by "
"other disks. This allows pools to be _imported_ on other machines, other "
"operating systems that support ZFS, and even different hardware "
"architectures (with some caveats, see man:zpool[8]). When a dataset has "
"open files, use `zpool export -f` to force exporting the pool. Use this "
"with caution. The datasets are forcibly unmounted, potentially resulting in "
"unexpected behavior by the applications which had open files on those "
"datasets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1173
msgid "Export a pool that is not in use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1177
#, no-wrap
msgid "# zpool export mypool\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1185
msgid ""
"Importing a pool automatically mounts the datasets. If this is undesired "
"behavior, use `zpool import -N` to prevent it. `zpool import -o` sets "
"temporary properties for this specific import. `zpool import altroot=` "
"allows importing a pool with a base mount point instead of the root of the "
"file system. If the pool was last used on a different system and was not "
"properly exported, force the import using `zpool import -f`. `zpool import -"
"a` imports all pools that do not appear to be in use by another system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1187
msgid "List all available pools for import:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1196
#, no-wrap
msgid ""
"# zpool import\n"
" pool: mypool\n"
" id: 9930174748043525076\n"
" state: ONLINE\n"
" action: The pool can be imported using its name or numeric identifier.\n"
" config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1199
#, no-wrap
msgid ""
" mypool ONLINE\n"
" ada2p3 ONLINE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1202
msgid "Import the pool with an alternative root directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1210
#, no-wrap
msgid ""
"# zpool import -o altroot=/mnt mypool\n"
"# zfs list\n"
"zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 110K 47.0G 31K /mnt/mypool\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1213
#, no-wrap
msgid "Upgrading a Storage Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1219
msgid ""
"After upgrading FreeBSD, or if importing a pool from a system using an older "
"version, manually upgrade the pool to the latest ZFS version to support "
"newer features. Consider whether the pool may ever need importing on an "
"older system before upgrading. Upgrading is a one-way process. Upgrade "
"older pools is possible, but downgrading pools with newer features is not."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1221
msgid "Upgrade a v28 pool to support `Feature Flags`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1234
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: The pool is formatted using a legacy on-disk format. The pool can\n"
" still be used, but some features are unavailable.\n"
"action: Upgrade the pool using 'zpool upgrade'. Once this is done, the\n"
" pool will no longer be accessible on software that does not support feat\n"
" flags.\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1240
#: documentation/content/en/books/handbook/zfs/_index.adoc:1288
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
"\t ada0 ONLINE 0 0 0\n"
"\t ada1 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1244
#: documentation/content/en/books/handbook/zfs/_index.adoc:1292
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool upgrade\n"
"This system supports ZFS pool feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1247
#, no-wrap
msgid ""
"The following pools are formatted with legacy version numbers and are upgraded to use feature flags.\n"
"After being upgraded, these pools will no longer be accessible by software that does not support feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1251
#, no-wrap
msgid ""
"VER POOL\n"
"--- ------------\n"
"28 mypool\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1256
#, no-wrap
msgid ""
"Use 'zpool upgrade -v' for a list of available legacy versions.\n"
"Every feature flags pool has all supported features enabled.\n"
"# zpool upgrade mypool\n"
"This system supports ZFS pool feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1263
#, no-wrap
msgid ""
"Successfully upgraded 'mypool' from version 28 to feature flags.\n"
"Enabled the following features on 'mypool':\n"
" async_destroy\n"
" empty_bpobj\n"
" lz4_compress\n"
" multi_vdev_crash_dump\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1267
msgid ""
"The newer features of ZFS will not be available until `zpool upgrade` has "
"completed. Use `zpool upgrade -v` to see what new features the upgrade "
"provides, as well as which features are already supported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1269
msgid "Upgrade a pool to support new feature flags:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1282
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: Some supported features are not enabled on the pool. The pool can\n"
" still be used, but some features are unavailable.\n"
"action: Enable all features using 'zpool upgrade'. Once this is done,\n"
" the pool may no longer be accessible by software that does not support\n"
" the features. See zpool-features(7) for details.\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1294
#, no-wrap
msgid "All pools are formatted using feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1298
#, no-wrap
msgid ""
"Some supported features are not enabled on the following pools. Once a\n"
"feature is enabled the pool may become incompatible with software\n"
"that does not support the feature. See zpool-features(7) for details.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1311
#, no-wrap
msgid ""
"POOL FEATURE\n"
"---------------\n"
"zstore\n"
" multi_vdev_crash_dump\n"
" spacemap_histogram\n"
" enabled_txg\n"
" hole_birth\n"
" extensible_dataset\n"
" bookmarks\n"
" filesystem_limits\n"
"# zpool upgrade mypool\n"
"This system supports ZFS pool feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1319
#, no-wrap
msgid ""
"Enabled the following features on 'mypool':\n"
" spacemap_histogram\n"
" enabled_txg\n"
" hole_birth\n"
" extensible_dataset\n"
" bookmarks\n"
" filesystem_limits\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1326
msgid ""
"Update the boot code on systems that boot from a pool to support the new "
"pool version. Use `gpart bootcode` on the partition that contains the boot "
"code. Two types of bootcode are available, depending on way the system "
"boots: GPT (the most common option) and EFI (for more modern systems)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1328
msgid "For legacy boot using GPT, use the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1332
#, no-wrap
msgid "# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1335
msgid "For systems using EFI to boot, execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1339
#, no-wrap
msgid "# gpart bootcode -p /boot/boot1.efifat -i 1 ada1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1343
msgid ""
"Apply the bootcode to all bootable disks in the pool. See man:gpart[8] for "
"more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1346
#, no-wrap
msgid "Displaying Recorded Pool History"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1352
msgid ""
"ZFS records commands that change the pool, including creating datasets, "
"changing properties, or replacing a disk. Reviewing history about a pool's "
"creation is useful, as is checking which user performed a specific action "
"and when. History is not kept in a log file, but is part of the pool "
"itself. The command to review this history is aptly named `zpool history`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1361
#, no-wrap
msgid ""
"# zpool history\n"
"History for 'tank':\n"
"2013-02-26.23:02:35 zpool create tank mirror /dev/ada0 /dev/ada1\n"
"2013-02-27.18:50:58 zfs set atime=off tank\n"
"2013-02-27.18:51:09 zfs set checksum=fletcher4 tank\n"
"2013-02-27.18:51:18 zfs create tank/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1366
msgid ""
"The output shows `zpool` and `zfs` commands altering the pool in some way "
"along with a timestamp. Commands like `zfs list` are not included. When "
"specifying no pool name, ZFS displays history of all pools."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1369
msgid ""
"`zpool history` can show even more information when providing the options `-"
"i` or `-l`. `-i` displays user-initiated events as well as internally "
"logged ZFS events."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1381
#, no-wrap
msgid ""
"# zpool history -i\n"
"History for 'tank':\n"
"2013-02-26.23:02:35 [internal pool create txg:5] pool spa 28; zfs spa 28; zpl 5;uts 9.1-RELEASE 901000 amd64\n"
"2013-02-27.18:50:53 [internal property set txg:50] atime=0 dataset = 21\n"
"2013-02-27.18:50:58 zfs set atime=off tank\n"
"2013-02-27.18:51:04 [internal property set txg:53] checksum=7 dataset = 21\n"
"2013-02-27.18:51:09 zfs set checksum=fletcher4 tank\n"
"2013-02-27.18:51:13 [internal create txg:55] dataset = 39\n"
"2013-02-27.18:51:18 zfs create tank/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1385
msgid ""
"Show more details by adding `-l`. Showing history records in a long format, "
"including information like the name of the user who issued the command and "
"the hostname on which the change happened."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1394
#, no-wrap
msgid ""
"# zpool history -l\n"
"History for 'tank':\n"
"2013-02-26.23:02:35 zpool create tank mirror /dev/ada0 /dev/ada1 [user 0 (root) on :global]\n"
"2013-02-27.18:50:58 zfs set atime=off tank [user 0 (root) on myzfsbox:global]\n"
"2013-02-27.18:51:09 zfs set checksum=fletcher4 tank [user 0 (root) on myzfsbox:global]\n"
"2013-02-27.18:51:18 zfs create tank/backup [user 0 (root) on myzfsbox:global]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1400
msgid ""
"The output shows that the `root` user created the mirrored pool with disks [."
"filename]#/dev/ada0# and [.filename]#/dev/ada1#. The hostname `myzfsbox` is "
"also shown in the commands after the pool's creation. The hostname display "
"becomes important when exporting the pool from one system and importing on "
"another. It's possible to distinguish the commands issued on the other "
"system by the hostname recorded for each command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1403
msgid ""
"Combine both options to `zpool history` to give the most detailed "
"information possible for any given pool. Pool history provides valuable "
"information when tracking down the actions performed or when needing more "
"detailed output for debugging."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1405
#, no-wrap
msgid "Performance Monitoring"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1412
msgid ""
"A built-in monitoring system can display pool I/O statistics in real time. "
"It shows the amount of free and used space on the pool, read and write "
"operations performed per second, and I/O bandwidth used. By default, ZFS "
"monitors and displays all pools in the system. Provide a pool name to limit "
"monitoring to that pool. A basic example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1420
#, no-wrap
msgid ""
"# zpool iostat\n"
" capacity operations bandwidth\n"
"pool alloc free read write read write\n"
"---------- ----- ----- ----- ----- ----- -----\n"
"data 288G 1.53T 2 11 11.3K 57.1K\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1426
msgid ""
"To continuously see I/O activity, specify a number as the last parameter, "
"indicating an interval in seconds to wait between updates. The next "
"statistic line prints after each interval. Press kbd:[Ctrl+C] to stop this "
"continuous monitoring. Give a second number on the command line after the "
"interval to specify the total number of statistics to display."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1431
msgid ""
"Display even more detailed I/O statistics with `-v`. Each device in the "
"pool appears with a statistics line. This is useful for seeing read and "
"write operations performed on each device, and can help determine if any "
"individual device is slowing down the pool. This example shows a mirrored "
"pool with two devices:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1443
#, no-wrap
msgid ""
"# zpool iostat -v \n"
" capacity operations bandwidth\n"
"pool alloc free read write read write\n"
"----------------------- ----- ----- ----- ----- ----- -----\n"
"data 288G 1.53T 2 12 9.23K 61.5K\n"
" mirror 288G 1.53T 2 12 9.23K 61.5K\n"
" ada1 - - 0 4 5.61K 61.7K\n"
" ada2 - - 1 4 5.04K 61.7K\n"
"----------------------- ----- ----- ----- ----- ----- -----\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1446
#, no-wrap
msgid "Splitting a Storage Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1453
msgid ""
"ZFS can split a pool consisting of one or more mirror vdevs into two pools. "
"Unless otherwise specified, ZFS detaches the last member of each mirror and "
"creates a new pool containing the same data. Be sure to make a dry run of "
"the operation with `-n` first. This displays the details of the requested "
"operation without actually performing it. This helps confirm that the "
"operation will do what the user intends."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:1455
#, no-wrap
msgid "`zfs` Administration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1459
msgid ""
"The `zfs` utility can create, destroy, and manage all existing ZFS datasets "
"within a pool. To manage the pool itself, use <<zfs-zpool,`zpool`>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1461
#, no-wrap
msgid "Creating and Destroying Datasets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1471
msgid ""
"Unlike traditional disks and volume managers, space in ZFS is _not_ "
"preallocated. With traditional file systems, after partitioning and "
"assigning the space, there is no way to add a new file system without adding "
"a new disk. With ZFS, creating new file systems is possible at any time. "
"Each <<zfs-term-dataset,_dataset_>> has properties including features like "
"compression, deduplication, caching, and quotas, as well as other useful "
"properties like readonly, case sensitivity, network file sharing, and a "
"mount point. Nesting datasets within each other is possible and child "
"datasets will inherit properties from their ancestors. <<zfs-zfs-allow,"
"Delegate>>, <<zfs-zfs-send,replicate>>, <<zfs-zfs-snapshot,snapshot>>, <<zfs-"
"zfs-jail,jail>> allows administering and destroying each dataset as a unit. "
"Creating a separate dataset for each different type or set of files has "
"advantages. The drawbacks to having a large number of datasets are that "
"some commands like `zfs list` will be slower, and that mounting of hundreds "
"or even thousands of datasets will slow the FreeBSD boot process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1473
msgid ""
"Create a new dataset and enable <<zfs-term-compression-lz4,LZ4 compression>> "
"on it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1508
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 781M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.20M 93.2G 608K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
"# zfs create -o compress=lz4 mypool/usr/mydataset\n"
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 781M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 704K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/mydataset 87.5K 93.2G 87.5K /usr/mydataset\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.20M 93.2G 610K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1511
msgid ""
"Destroying a dataset is much quicker than deleting the files on the dataset, "
"as it does not involve scanning the files and updating the corresponding "
"metadata."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1513
msgid "Destroy the created dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1548
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 880M 93.1G 144K none\n"
"mypool/ROOT 777M 93.1G 144K none\n"
"mypool/ROOT/default 777M 93.1G 777M /\n"
"mypool/tmp 176K 93.1G 176K /tmp\n"
"mypool/usr 101M 93.1G 144K /usr\n"
"mypool/usr/home 184K 93.1G 184K /usr/home\n"
"mypool/usr/mydataset 100M 93.1G 100M /usr/mydataset\n"
"mypool/usr/ports 144K 93.1G 144K /usr/ports\n"
"mypool/usr/src 144K 93.1G 144K /usr/src\n"
"mypool/var 1.20M 93.1G 610K /var\n"
"mypool/var/crash 148K 93.1G 148K /var/crash\n"
"mypool/var/log 178K 93.1G 178K /var/log\n"
"mypool/var/mail 144K 93.1G 144K /var/mail\n"
"mypool/var/tmp 152K 93.1G 152K /var/tmp\n"
"# zfs destroy mypool/usr/mydataset\n"
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 781M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.21M 93.2G 612K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1556
msgid ""
"In modern versions of ZFS, `zfs destroy` is asynchronous, and the free space "
"might take minutes to appear in the pool. Use `zpool get freeing "
"_poolname_` to see the `freeing` property, that shows which datasets are "
"having their blocks freed in the background. If there are child datasets, "
"like <<zfs-term-snapshot,snapshots>> or other datasets, destroying the "
"parent is impossible. To destroy a dataset and its children, use `-r` to "
"recursively destroy the dataset and its children. Use `-n -v` to list "
"datasets and snapshots destroyed by this operation, without actually destroy "
"anything. Space reclaimed by destroying snapshots is also shown."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1558
#, no-wrap
msgid "Creating and Destroying Volumes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1563
msgid ""
"A volume is a special dataset type. Rather than mounting as a file system, "
"expose it as a block device under [.filename]#/dev/zvol/poolname/dataset#. "
"This allows using the volume for other file systems, to back the disks of a "
"virtual machine, or to make it available to other network hosts using "
"protocols like iSCSI or HAST."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1568
msgid ""
"Format a volume with any file system or without a file system to store raw "
"data. To the user, a volume appears to be a regular disk. Putting ordinary "
"file systems on these _zvols_ provides features that ordinary disks or file "
"systems do not have. For example, using the compression property on a 250 "
"MB volume allows creation of a compressed FAT file system."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1582
#, no-wrap
msgid ""
"# zfs create -V 250m -o compression=on tank/fat32\n"
"# zfs list tank\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"tank 258M 670M 31K /tank\n"
"# newfs_msdos -F32 /dev/zvol/tank/fat32\n"
"# mount -t msdosfs /dev/zvol/tank/fat32 /mnt\n"
"# df -h /mnt | grep fat32\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"/dev/zvol/tank/fat32 249M 24k 249M 0% /mnt\n"
"# mount | grep fat32\n"
"/dev/zvol/tank/fat32 on /mnt (msdosfs, local)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1586
msgid ""
"Destroying a volume is much the same as destroying a regular file system "
"dataset. The operation is nearly instantaneous, but it may take minutes to "
"reclaim the free space in the background."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1588
#, no-wrap
msgid "Renaming a Dataset"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1595
msgid ""
"To change the name of a dataset, use `zfs rename`. To change the parent of "
"a dataset, use this command as well. Renaming a dataset to have a different "
"parent dataset will change the value of those properties inherited from the "
"parent dataset. Renaming a dataset unmounts then remounts it in the new "
"location (inherited from the new parent dataset). To prevent this behavior, "
"use `-u`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1597
msgid "Rename a dataset and move it to be under a different parent dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1633
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 780M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 704K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/mydataset 87.5K 93.2G 87.5K /usr/mydataset\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.21M 93.2G 614K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
"# zfs rename mypool/usr/mydataset mypool/var/newname\n"
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 780M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.29M 93.2G 614K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/newname 87.5K 93.2G 87.5K /var/newname\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1638
msgid ""
"Renaming snapshots uses the same command. Due to the nature of snapshots, "
"rename cannot change their parent dataset. To rename a recursive snapshot, "
"specify `-r`; this will also rename all snapshots with the same name in "
"child datasets."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1648
#, no-wrap
msgid ""
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/newname@first_snapshot 0 - 87.5K -\n"
"# zfs rename mypool/var/newname@first_snapshot new_snapshot_name\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/newname@new_snapshot_name 0 - 87.5K -\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1651
#, no-wrap
msgid "Setting Dataset Properties"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1661
msgid ""
"Each ZFS dataset has properties that control its behavior. Most properties "
"are automatically inherited from the parent dataset, but can be overridden "
"locally. Set a property on a dataset with `zfs set _property=value "
"dataset_`. Most properties have a limited set of valid values, `zfs get` "
"will display each possible property and valid values. Using `zfs inherit` "
"reverts most properties to their inherited values. User-defined properties "
"are also possible. They become part of the dataset configuration and "
"provide further information about the dataset or its contents. To "
"distinguish these custom properties from the ones supplied as part of ZFS, "
"use a colon (`:`) to create a custom namespace for the property."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1668
#, no-wrap
msgid ""
"# zfs set custom:costcenter=1234 tank\n"
"# zfs get custom:costcenter tank\n"
"NAME PROPERTY VALUE SOURCE\n"
"tank custom:costcenter 1234 local\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1672
msgid ""
"To remove a custom property, use `zfs inherit` with `-r`. If the custom "
"property is not defined in any of the parent datasets, this option removes "
"it (but the pool's history still records the change)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1681
#, no-wrap
msgid ""
"# zfs inherit -r custom:costcenter tank\n"
"# zfs get custom:costcenter tank\n"
"NAME PROPERTY VALUE SOURCE\n"
"tank custom:costcenter - -\n"
"# zfs get all tank | grep custom:costcenter\n"
"#\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1684
#, no-wrap
msgid "Getting and Setting Share Properties"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1690
msgid ""
"Two commonly used and useful dataset properties are the NFS and SMB share "
"options. Setting these defines if and how ZFS shares datasets on the "
"network. At present, FreeBSD supports setting NFS sharing alone. To get "
"the current status of a share, enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1699
#, no-wrap
msgid ""
"# zfs get sharenfs mypool/usr/home\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/usr/home sharenfs on local\n"
"# zfs get sharesmb mypool/usr/home\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/usr/home sharesmb off local\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1702
msgid "To enable sharing of a dataset, enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1706
#, no-wrap
msgid "# zfs set sharenfs=on mypool/usr/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1710
msgid ""
"Set other options for sharing datasets through NFS, such as `-alldirs`, `-"
"maproot` and `-network`. To set options on a dataset shared through NFS, "
"enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1714
#, no-wrap
msgid "# zfs set sharenfs=\"-alldirs,-maproot=root,-network=192.168.1.0/24\" mypool/usr/home\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1717
#, no-wrap
msgid "Managing Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1731
msgid ""
"<<zfs-term-snapshot,Snapshots>> are one of the most powerful features of "
"ZFS. A snapshot provides a read-only, point-in-time copy of the dataset. "
"With Copy-On-Write (COW), ZFS creates snapshots fast by preserving older "
"versions of the data on disk. If no snapshots exist, ZFS reclaims space for "
"future use when data is rewritten or deleted. Snapshots preserve disk space "
"by recording just the differences between the current dataset and a previous "
"version. Allowing snapshots on whole datasets, not on individual files or "
"directories. A snapshot from a dataset duplicates everything contained in "
"it. This includes the file system properties, files, directories, "
"permissions, and so on. Snapshots use no extra space when first created, "
"but consume space as the blocks they reference change. Recursive snapshots "
"taken with `-r` create snapshots with the same name on the dataset and its "
"children, providing a consistent moment-in-time snapshot of the file "
"systems. This can be important when an application has files on related "
"datasets or that depend upon each other. Without snapshots, a backup would "
"have copies of the files from different points in time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1740
msgid ""
"Snapshots in ZFS provide a variety of features that even other file systems "
"with snapshot functionality lack. A typical example of snapshot use is as a "
"quick way of backing up the current state of the file system when performing "
"a risky action like a software installation or a system upgrade. If the "
"action fails, rolling back to the snapshot returns the system to the same "
"state when creating the snapshot. If the upgrade was successful, delete the "
"snapshot to free up space. Without snapshots, a failed upgrade often "
"requires restoring backups, which is tedious, time consuming, and may "
"require downtime during which the system is unusable. Rolling back to "
"snapshots is fast, even while the system is running in normal operation, "
"with little or no downtime. The time savings are enormous with multi-"
"terabyte storage systems considering the time required to copy the data from "
"backup. Snapshots are not a replacement for a complete backup of a pool, "
"but offer a quick and easy way to store a dataset copy at a specific time."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1742
#, no-wrap
msgid "Creating Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1746
msgid ""
"To create snapshots, use `zfs snapshot _dataset_@_snapshotname_`. Adding `-"
"r` creates a snapshot recursively, with the same name on all child datasets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1748
msgid "Create a recursive snapshot of the entire pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1786
#, no-wrap
msgid ""
"# zfs list -t all\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 780M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.29M 93.2G 616K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/newname 87.5K 93.2G 87.5K /var/newname\n"
"mypool/var/newname@new_snapshot_name 0 - 87.5K -\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
"# zfs snapshot -r mypool@my_recursive_snapshot\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool@my_recursive_snapshot 0 - 144K -\n"
"mypool/ROOT@my_recursive_snapshot 0 - 144K -\n"
"mypool/ROOT/default@my_recursive_snapshot 0 - 777M -\n"
"mypool/tmp@my_recursive_snapshot 0 - 176K -\n"
"mypool/usr@my_recursive_snapshot 0 - 144K -\n"
"mypool/usr/home@my_recursive_snapshot 0 - 184K -\n"
"mypool/usr/ports@my_recursive_snapshot 0 - 144K -\n"
"mypool/usr/src@my_recursive_snapshot 0 - 144K -\n"
"mypool/var@my_recursive_snapshot 0 - 616K -\n"
"mypool/var/crash@my_recursive_snapshot 0 - 148K -\n"
"mypool/var/log@my_recursive_snapshot 0 - 178K -\n"
"mypool/var/mail@my_recursive_snapshot 0 - 144K -\n"
"mypool/var/newname@new_snapshot_name 0 - 87.5K -\n"
"mypool/var/newname@my_recursive_snapshot 0 - 87.5K -\n"
"mypool/var/tmp@my_recursive_snapshot 0 - 152K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1791
msgid ""
"Snapshots are not shown by a normal `zfs list` operation. To list "
"snapshots, append `-t snapshot` to `zfs list`. `-t all` displays both file "
"systems and snapshots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1795
msgid ""
"Snapshots are not mounted directly, showing no path in the `MOUNTPOINT` "
"column. ZFS does not mention available disk space in the `AVAIL` column, as "
"snapshots are read-only after their creation. Compare the snapshot to the "
"original dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1802
#, no-wrap
msgid ""
"# zfs list -rt all mypool/usr/home\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/home@my_recursive_snapshot 0 - 184K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1808
msgid ""
"Displaying both the dataset and the snapshot together reveals how snapshots "
"work in <<zfs-term-cow,COW>> fashion. They save the changes (_delta_) made "
"and not the complete file system contents all over again. This means that "
"snapshots take little space when making changes. Observe space usage even "
"more by copying a file to the dataset, then creating a second snapshot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1818
#, no-wrap
msgid ""
"# cp /etc/passwd /var/tmp\n"
"# zfs snapshot mypool/var/tmp@after_cp\n"
"# zfs list -rt all mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp 206K 93.2G 118K /var/tmp\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 0 - 118K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1823
msgid ""
"The second snapshot contains the changes to the dataset after the copy "
"operation. This yields enormous space savings. Notice that the size of the "
"snapshot `_mypool/var/tmp@my_recursive_snapshot_` also changed in the `USED` "
"column to show the changes between itself and the snapshot taken afterwards."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1825
#, no-wrap
msgid "Comparing Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1831
msgid ""
"ZFS provides a built-in command to compare the differences in content "
"between two snapshots. This is helpful with a lot of snapshots taken over "
"time when the user wants to see how the file system has changed over time. "
"For example, `zfs diff` lets a user find the latest snapshot that still "
"contains a file deleted by accident. Doing this for the two snapshots "
"created in the previous section yields this output:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1842
#, no-wrap
msgid ""
"# zfs list -rt all mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp 206K 93.2G 118K /var/tmp\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 0 - 118K -\n"
"# zfs diff mypool/var/tmp@my_recursive_snapshot\n"
"M /var/tmp/\n"
"+ /var/tmp/passwd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1846
msgid ""
"The command lists the changes between the specified snapshot (in this case "
"`_mypool/var/tmp@my_recursive_snapshot_`) and the live file system. The "
"first column shows the change type:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1852
#, no-wrap
msgid "+"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1854
#, no-wrap
msgid "Adding the path or file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1855
#, no-wrap
msgid "-"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1857
#, no-wrap
msgid "Deleting the path or file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1858
#, no-wrap
msgid "M"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1860
#, no-wrap
msgid "Modifying the path or file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1861
#, no-wrap
msgid "R"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1862
#, no-wrap
msgid "Renaming the path or file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1867
msgid ""
"Comparing the output with the table, it becomes clear that ZFS added [."
"filename]#passwd# after creating the snapshot `_mypool/var/"
"tmp@my_recursive_snapshot_`. This also resulted in a modification to the "
"parent directory mounted at `_/var/tmp_`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1869
msgid ""
"Comparing two snapshots is helpful when using the ZFS replication feature to "
"transfer a dataset to a different host for backup purposes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1871
msgid ""
"Compare two snapshots by providing the full dataset name and snapshot name "
"of both datasets:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1883
#, no-wrap
msgid ""
"# cp /var/tmp/passwd /var/tmp/passwd.copy\n"
"# zfs snapshot mypool/var/tmp@diff_snapshot\n"
"# zfs diff mypool/var/tmp@my_recursive_snapshot mypool/var/tmp@diff_snapshot\n"
"M /var/tmp/\n"
"+ /var/tmp/passwd\n"
"+ /var/tmp/passwd.copy\n"
"# zfs diff mypool/var/tmp@my_recursive_snapshot mypool/var/tmp@after_cp\n"
"M /var/tmp/\n"
"+ /var/tmp/passwd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1887
msgid ""
"A backup administrator can compare two snapshots received from the sending "
"host and determine the actual changes in the dataset. See the <<zfs-zfs-"
"send,Replication>> section for more information."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1889
#, no-wrap
msgid "Snapshot Rollback"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1902
msgid ""
"When at least one snapshot is available, roll back to it at any time. Most "
"often this is the case when the current state of the dataset is no longer "
"and if preferring an older version. Scenarios such as local development "
"tests gone wrong, botched system updates hampering the system functionality, "
"or the need to restore deleted files or directories are all too common "
"occurrences. To roll back a snapshot, use `zfs rollback _snapshotname_`. "
"If a lot of changes are present, the operation will take a long time. "
"During that time, the dataset always remains in a consistent state, much "
"like a database that conforms to ACID principles is performing a rollback. "
"This is happening while the dataset is live and accessible without requiring "
"a downtime. Once the snapshot rolled back, the dataset has the same state "
"as it had when the snapshot was originally taken. Rolling back to a "
"snapshot discards all other data in that dataset not part of the snapshot. "
"Taking a snapshot of the current state of the dataset before rolling back to "
"a previous one is a good idea when requiring some data later. This way, the "
"user can roll back and forth between snapshots without losing data that is "
"still valuable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1904
msgid ""
"In the first example, roll back a snapshot because of a careless `rm` "
"operation that removes too much data than intended."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1918
#, no-wrap
msgid ""
"# zfs list -rt all mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp 262K 93.2G 120K /var/tmp\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 53.5K - 118K -\n"
"mypool/var/tmp@diff_snapshot 0 - 120K -\n"
"# ls /var/tmp\n"
"passwd passwd.copy vi.recover\n"
"# rm /var/tmp/passwd*\n"
"# ls /var/tmp\n"
"vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1923
msgid ""
"At this point, the user notices the removal of extra files and wants them "
"back. ZFS provides an easy way to get them back using rollbacks, when "
"performing snapshots of important data on a regular basis. To get the files "
"back and start over from the last snapshot, issue the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1929
#, no-wrap
msgid ""
"# zfs rollback mypool/var/tmp@diff_snapshot\n"
"# ls /var/tmp\n"
"passwd passwd.copy vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1934
msgid ""
"The rollback operation restored the dataset to the state of the last "
"snapshot. Rolling back to a snapshot taken much earlier with other "
"snapshots taken afterwards is also possible. When trying to do this, ZFS "
"will issue this warning:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1947
#, no-wrap
msgid ""
"# zfs list -rt snapshot mypool/var/tmp\n"
"AME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 53.5K - 118K -\n"
"mypool/var/tmp@diff_snapshot 0 - 120K -\n"
"# zfs rollback mypool/var/tmp@my_recursive_snapshot\n"
"cannot rollback to 'mypool/var/tmp@my_recursive_snapshot': more recent snapshots exist\n"
"use '-r' to force deletion of the following snapshots:\n"
"mypool/var/tmp@after_cp\n"
"mypool/var/tmp@diff_snapshot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1954
msgid ""
"This warning means that snapshots exist between the current state of the "
"dataset and the snapshot to which the user wants to roll back. To complete "
"the rollback delete these snapshots. ZFS cannot track all the changes "
"between different states of the dataset, because snapshots are read-only. "
"ZFS will not delete the affected snapshots unless the user specifies `-r` to "
"confirm that this is the desired action. If that is the intention, and "
"understanding the consequences of losing all intermediate snapshots, issue "
"the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1963
#, no-wrap
msgid ""
"# zfs rollback -r mypool/var/tmp@my_recursive_snapshot\n"
"# zfs list -rt snapshot mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp@my_recursive_snapshot 8K - 152K -\n"
"# ls /var/tmp\n"
"vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1966
msgid ""
"The output from `zfs list -t snapshot` confirms the removal of the "
"intermediate snapshots as a result of `zfs rollback -r`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1968
#, no-wrap
msgid "Restoring Individual Files from Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1975
msgid ""
"Snapshots live in a hidden directory under the parent dataset: [.filename]#."
"zfs/snapshots/snapshotname#. By default, these directories will not show "
"even when executing a standard `ls -a` . Although the directory doesn't "
"show, access it like any normal directory. The property named `snapdir` "
"controls whether these hidden directories show up in a directory listing. "
"Setting the property to `visible` allows them to appear in the output of "
"`ls` and other commands that deal with directory contents."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1986
#, no-wrap
msgid ""
"# zfs get snapdir mypool/var/tmp\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/var/tmp snapdir hidden default\n"
"# ls -a /var/tmp\n"
". .. passwd vi.recover\n"
"# zfs set snapdir=visible mypool/var/tmp\n"
"# ls -a /var/tmp\n"
". .. .zfs passwd vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1991
msgid ""
"Restore individual files to a previous state by copying them from the "
"snapshot back to the parent dataset. The directory structure below [."
"filename]#.zfs/snapshot# has a directory named like the snapshots taken "
"earlier to make it easier to identify them. The next example shows how to "
"restore a file from the hidden [.filename]#.zfs# directory by copying it "
"from the snapshot containing the latest version of the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2002
#, no-wrap
msgid ""
"# rm /var/tmp/passwd\n"
"# ls -a /var/tmp\n"
". .. .zfs vi.recover\n"
"# ls /var/tmp/.zfs/snapshot\n"
"after_cp my_recursive_snapshot\n"
"# ls /var/tmp/.zfs/snapshot/after_cp\n"
"passwd vi.recover\n"
"# cp /var/tmp/.zfs/snapshot/after_cp/passwd /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2009
msgid ""
"Even if the `snapdir` property is set to hidden, running `ls .zfs/snapshot` "
"will still list the contents of that directory. The administrator decides "
"whether to display these directories. This is a per-dataset setting. "
"Copying files or directories from this hidden [.filename]#.zfs/snapshot# is "
"simple enough. Trying it the other way around results in this error:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2014
#, no-wrap
msgid ""
"# cp /etc/rc.conf /var/tmp/.zfs/snapshot/after_cp/\n"
"cp: /var/tmp/.zfs/snapshot/after_cp/rc.conf: Read-only file system\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2018
msgid ""
"The error reminds the user that snapshots are read-only and cannot change "
"after creation. Copying files into and removing them from snapshot "
"directories are both disallowed because that would change the state of the "
"dataset they represent."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2021
msgid ""
"Snapshots consume space based on how much the parent file system has changed "
"since the time of the snapshot. The `written` property of a snapshot tracks "
"the space the snapshot uses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2025
msgid ""
"To destroy snapshots and reclaim the space, use `zfs destroy "
"_dataset_@_snapshot_`. Adding `-r` recursively removes all snapshots with "
"the same name under the parent dataset. Adding `-n -v` to the command "
"displays a list of the snapshots to be deleted and an estimate of the space "
"it would reclaim without performing the actual destroy operation."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2027
#, no-wrap
msgid "Managing Clones"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2036
msgid ""
"A clone is a copy of a snapshot treated more like a regular dataset. Unlike "
"a snapshot, a clone is writeable and mountable, and has its own properties. "
"After creating a clone using `zfs clone`, destroying the originating "
"snapshot is impossible. To reverse the child/parent relationship between "
"the clone and the snapshot use `zfs promote`. Promoting a clone makes the "
"snapshot become a child of the clone, rather than of the original parent "
"dataset. This will change how ZFS accounts for the space, but not actually "
"change the amount of space consumed. Mounting the clone anywhere within the "
"ZFS file system hierarchy is possible, not only below the original location "
"of the snapshot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2038
msgid "To show the clone feature use this example dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2046
#, no-wrap
msgid ""
"# zfs list -rt all camino/home/joe\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"camino/home/joe 108K 1.3G 87K /usr/home/joe\n"
"camino/home/joe@plans 21K - 85.5K -\n"
"camino/home/joe@backup 0K - 87K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2052
msgid ""
"A typical use for clones is to experiment with a specific dataset while "
"keeping the snapshot around to fall back to in case something goes wrong. "
"Since snapshots cannot change, create a read/write clone of a snapshot. "
"After achieving the desired result in the clone, promote the clone to a "
"dataset and remove the old file system. Removing the parent dataset is not "
"strictly necessary, as the clone and dataset can coexist without problems."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2059
#, no-wrap
msgid ""
"# zfs clone camino/home/joe@backup camino/home/joenew\n"
"# ls /usr/home/joe*\n"
"/usr/home/joe:\n"
"backup.txz plans.txt\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2066
#, no-wrap
msgid ""
"/usr/home/joenew:\n"
"backup.txz plans.txt\n"
"# df -h /usr/home\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"usr/home/joe 1.3G 31k 1.3G 0% /usr/home/joe\n"
"usr/home/joenew 1.3G 31k 1.3G 0% /usr/home/joenew\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2075
msgid ""
"Creating a clone makes it an exact copy of the state the dataset as it was "
"when taking the snapshot. Changing the clone independently from its "
"originating dataset is possible now. The connection between the two is the "
"snapshot. ZFS records this connection in the property `origin`. Promoting "
"the clone with `zfs promote` makes the clone an independent dataset. This "
"removes the value of the `origin` property and disconnects the newly "
"independent dataset from the snapshot. This example shows it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2085
#, no-wrap
msgid ""
"# zfs get origin camino/home/joenew\n"
"NAME PROPERTY VALUE SOURCE\n"
"camino/home/joenew origin camino/home/joe@backup -\n"
"# zfs promote camino/home/joenew\n"
"# zfs get origin camino/home/joenew\n"
"NAME PROPERTY VALUE SOURCE\n"
"camino/home/joenew origin - -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2090
msgid ""
"After making some changes like copying [.filename]#loader.conf# to the "
"promoted clone, for example, the old directory becomes obsolete in this "
"case. Instead, the promoted clone can replace it. To do this, `zfs "
"destroy` the old dataset first and then `zfs rename` the clone to the old "
"dataset name (or to an entirely different name)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2101
#, no-wrap
msgid ""
"# cp /boot/defaults/loader.conf /usr/home/joenew\n"
"# zfs destroy -f camino/home/joe\n"
"# zfs rename camino/home/joenew camino/home/joe\n"
"# ls /usr/home/joe\n"
"backup.txz loader.conf plans.txt\n"
"# df -h /usr/home\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"usr/home/joe 1.3G 128k 1.3G 0% /usr/home/joe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2110
msgid ""
"The cloned snapshot is now an ordinary dataset. It contains all the data "
"from the original snapshot plus the files added to it like [."
"filename]#loader.conf#. Clones provide useful features to ZFS users in "
"different scenarios. For example, provide jails as snapshots containing "
"different sets of installed applications. Users can clone these snapshots "
"and add their own applications as they see fit. Once satisfied with the "
"changes, promote the clones to full datasets and provide them to end users "
"to work with like they would with a real dataset. This saves time and "
"administrative overhead when providing these jails."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2112
#, no-wrap
msgid "Replication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2120
msgid ""
"Keeping data on a single pool in one location exposes it to risks like theft "
"and natural or human disasters. Making regular backups of the entire pool "
"is vital. ZFS provides a built-in serialization feature that can send a "
"stream representation of the data to standard output. Using this feature, "
"storing this data on another pool connected to the local system is possible, "
"as is sending it over a network to another system. Snapshots are the basis "
"for this replication (see the section on <<zfs-zfs-snapshot,ZFS "
"snapshots>>). The commands used for replicating data are `zfs send` and "
"`zfs receive`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2122
msgid "These examples show ZFS replication with these two pools:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2129
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 77K 896M - - 0% 0% 1.00x ONLINE -\n"
"mypool 984M 43.7M 940M - - 0% 4% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2137
msgid ""
"The pool named _mypool_ is the primary pool where writing and reading data "
"happens on a regular basis. Using a second standby pool _backup_ in case "
"the primary pool becomes unavailable. Note that this fail-over is not done "
"automatically by ZFS, but must be manually done by a system administrator "
"when needed. Use a snapshot to provide a consistent file system version to "
"replicate. After creating a snapshot of _mypool_, copy it to the _backup_ "
"pool by replicating snapshots. This does not include changes made since the "
"most recent snapshot."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2144
#, no-wrap
msgid ""
"# zfs snapshot mypool@backup1\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool@backup1 0 - 43.6M -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2149
msgid ""
"Now that a snapshot exists, use `zfs send` to create a stream representing "
"the contents of the snapshot. Store this stream as a file or receive it on "
"another pool. Write the stream to standard output, but redirect to a file "
"or pipe or an error appears:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2155
#, no-wrap
msgid ""
"# zfs send mypool@backup1\n"
"Error: Stream can not be written to a terminal.\n"
"You must redirect standard output.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2159
msgid ""
"To back up a dataset with `zfs send`, redirect to a file located on the "
"mounted backup pool. Ensure that the pool has enough free space to "
"accommodate the size of the sent snapshot, which means the data contained in "
"the snapshot, not the changes from the previous snapshot."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2167
#, no-wrap
msgid ""
"# zfs send mypool@backup1 > /backup/backup1\n"
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 63.7M 896M - - 0% 6% 1.00x ONLINE -\n"
"mypool 984M 43.7M 940M - - 0% 4% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2171
msgid ""
"The `zfs send` transferred all the data in the snapshot called _backup1_ to "
"the pool named _backup_. To create and send these snapshots automatically, "
"use a man:cron[8] job."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2177
msgid ""
"Instead of storing the backups as archive files, ZFS can receive them as a "
"live file system, allowing direct access to the backed up data. To get to "
"the actual data contained in those streams, use `zfs receive` to transform "
"the streams back into files and directories. The example below combines "
"`zfs send` and `zfs receive` using a pipe to copy the data from one pool to "
"another. Use the data directly on the receiving pool after the transfer is "
"complete. It is only possible to replicate a dataset to an empty dataset."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2185
#, no-wrap
msgid ""
"# zfs snapshot mypool@replica1\n"
"# zfs send -v mypool@replica1 | zfs receive backup/mypool\n"
"send from @ to mypool@replica1 estimated size is 50.1M\n"
"total estimated size is 50.1M\n"
"TIME SENT SNAPSHOT\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2190
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 63.7M 896M - - 0% 6% 1.00x ONLINE -\n"
"mypool 984M 43.7M 940M - - 0% 4% 1.00x ONLINE -\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2193
#, no-wrap
msgid "Incremental Backups"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2198
msgid ""
"`zfs send` can also determine the difference between two snapshots and send "
"individual differences between the two. This saves disk space and transfer "
"time. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2210
#, no-wrap
msgid ""
"# zfs snapshot mypool@replica2\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool@replica1 5.72M - 43.6M -\n"
"mypool@replica2 0 - 44.1M -\n"
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 61.7M 898M - - 0% 6% 1.00x ONLINE -\n"
"mypool 960M 50.2M 910M - - 0% 5% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2216
msgid ""
"Create a second snapshot called _replica2_. This second snapshot contains "
"changes made to the file system between now and the previous snapshot, "
"_replica1_. Using `zfs send -i` and indicating the pair of snapshots "
"generates an incremental replica stream containing the changed data. This "
"succeeds if the initial snapshot already exists on the receiving side."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2223
#, no-wrap
msgid ""
"# zfs send -v -i mypool@replica1 mypool@replica2 | zfs receive /backup/mypool\n"
"send from @replica1 to mypool@replica2 estimated size is 5.02M\n"
"total estimated size is 5.02M\n"
"TIME SENT SNAPSHOT\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2228
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 80.8M 879M - - 0% 8% 1.00x ONLINE -\n"
"mypool 960M 50.2M 910M - - 0% 5% 1.00x ONLINE -\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2234
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"backup 55.4M 240G 152K /backup\n"
"backup/mypool 55.3M 240G 55.2M /backup/mypool\n"
"mypool 55.6M 11.6G 55.0M /mypool\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2241
#, no-wrap
msgid ""
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"backup/mypool@replica1 104K - 50.2M -\n"
"backup/mypool@replica2 0 - 55.2M -\n"
"mypool@replica1 29.9K - 50.0M -\n"
"mypool@replica2 0 - 55.0M -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2246
msgid ""
"The incremental stream replicated the changed data rather than the entirety "
"of _replica1_. Sending the differences alone took much less time to "
"transfer and saved disk space by not copying the whole pool each time. This "
"is useful when replicating over a slow network or one charging per "
"transferred byte."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2251
msgid ""
"A new file system, _backup/mypool_, is available with the files and data "
"from the pool _mypool_. Specifying `-p` copies the dataset properties "
"including compression settings, quotas, and mount points. Specifying `-R` "
"copies all child datasets of the dataset along with their properties. "
"Automate sending and receiving to create regular backups on the second pool."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2253
#, no-wrap
msgid "Sending Encrypted Backups over SSH"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2261
msgid ""
"Sending streams over the network is a good way to keep a remote backup, but "
"it does come with a drawback. Data sent over the network link is not "
"encrypted, allowing anyone to intercept and transform the streams back into "
"data without the knowledge of the sending user. This is undesirable when "
"sending the streams over the internet to a remote host. Use SSH to securely "
"encrypt data sent over a network connection. Since ZFS requires redirecting "
"the stream from standard output, piping it through SSH is easy. To keep the "
"contents of the file system encrypted in transit and on the remote system, "
"consider using https://wiki.freebsd.org/PEFS[PEFS]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2264
msgid ""
"Change some settings and take security precautions first. This describes "
"the necessary steps required for the `zfs send` operation; for more "
"information on SSH, see crossref:security[openssh,\"OpenSSH\"]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2266
msgid "Change the configuration as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2268
msgid ""
"Passwordless SSH access between sending and receiving host using SSH keys"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2269
msgid ""
"ZFS requires the privileges of the `root` user to send and receive streams. "
"This requires logging in to the receiving system as `root`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2270
msgid "Security reasons prevent `root` from logging in by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2272
msgid ""
"Use the <<zfs-zfs-allow,ZFS Delegation>> system to allow a non-`root` user "
"on each system to perform the respective send and receive operations. On "
"the sending system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2276
#, no-wrap
msgid "# zfs allow -u someuser send,snapshot mypool\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2279
msgid ""
"To mount the pool, the unprivileged user must own the directory, and regular "
"users need permission to mount file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2281
msgid "On the receiving system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2290
#, no-wrap
msgid ""
"# sysctl vfs.usermount=1\n"
"vfs.usermount: 0 -> 1\n"
"# echo vfs.usermount=1 >> /etc/sysctl.conf\n"
"# zfs create recvpool/backup\n"
"# zfs allow -u someuser create,mount,receive recvpool/backup\n"
"# chown someuser /recvpool/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2293
msgid ""
"The unprivileged user can receive and mount datasets now, and replicates the "
"_home_ dataset to the remote system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2298
#, no-wrap
msgid ""
"% zfs snapshot -r mypool/home@monday\n"
"% zfs send -R mypool/home@monday | ssh someuser@backuphost zfs recv -dvu recvpool/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2308
msgid ""
"Create a recursive snapshot called _monday_ of the file system dataset "
"_home_ on the pool _mypool_. Then `zfs send -R` includes the dataset, all "
"child datasets, snapshots, clones, and settings in the stream. Pipe the "
"output through SSH to the waiting `zfs receive` on the remote host "
"_backuphost_. Using an IP address or fully qualified domain name is good "
"practice. The receiving machine writes the data to the _backup_ dataset on "
"the _recvpool_ pool. Adding `-d` to `zfs recv` overwrites the name of the "
"pool on the receiving side with the name of the snapshot. `-u` causes the "
"file systems to not mount on the receiving side. Using `-v` shows more "
"details about the transfer, including the elapsed time and the amount of "
"data transferred."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2310
#, no-wrap
msgid "Dataset, User, and Group Quotas"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2315
msgid ""
"Use <<zfs-term-quota,Dataset quotas>> to restrict the amount of space "
"consumed by a particular dataset. <<zfs-term-refquota,Reference Quotas>> "
"work in much the same way, but count the space used by the dataset itself, "
"excluding snapshots and child datasets. Similarly, use <<zfs-term-userquota,"
"user>> and <<zfs-term-groupquota,group>> quotas to prevent users or groups "
"from using up all the space in the pool or dataset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2320
msgid ""
"The following examples assume that the users already exist in the system. "
"Before adding a user to the system, make sure to create their home dataset "
"first and set the `mountpoint` to `/home/_bob_`. Then, create the user and "
"make the home directory point to the dataset's `mountpoint` location. This "
"will properly set owner and group permissions without shadowing any pre-"
"existing home directory paths that might exist."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2322
msgid "To enforce a dataset quota of 10 GB for [.filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2326
#, no-wrap
msgid "# zfs set quota=10G storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2329
msgid ""
"To enforce a reference quota of 10 GB for [.filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2333
#, no-wrap
msgid "# zfs set refquota=10G storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2336
msgid "To remove a quota of 10 GB for [.filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2340
#, no-wrap
msgid "# zfs set quota=none storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2343
msgid ""
"The general format is `userquota@_user_=_size_`, and the user's name must be "
"in one of these formats:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2345
msgid "POSIX compatible name such as _joe_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2346
msgid "POSIX numeric ID such as _789_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2347
msgid "SID name such as _joe.bloggs@example.com_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2348
msgid "SID numeric ID such as _S-1-123-456-789_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2350
msgid "For example, to enforce a user quota of 50 GB for the user named _joe_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2354
#, no-wrap
msgid "# zfs set userquota@joe=50G\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2357
msgid "To remove any quota:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2361
#, no-wrap
msgid "# zfs set userquota@joe=none\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2368
msgid ""
"User quota properties are not displayed by `zfs get all`. Non-`root` users "
"can't see other's quotas unless granted the `userquota` privilege. Users "
"with this privilege are able to view and set everyone's quota."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2371
msgid ""
"The general format for setting a group quota is: `groupquota@_group_=_size_`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2373
msgid "To set the quota for the group _firstgroup_ to 50 GB, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2377
#, no-wrap
msgid "# zfs set groupquota@firstgroup=50G\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2380
msgid ""
"To remove the quota for the group _firstgroup_, or to make sure that one is "
"not set, instead use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2384
#, no-wrap
msgid "# zfs set groupquota@firstgroup=none\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2388
msgid ""
"As with the user quota property, non-`root` users can see the quotas "
"associated with the groups to which they belong. A user with the "
"`groupquota` privilege or `root` can view and set all quotas for all groups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2392
msgid ""
"To display the amount of space used by each user on a file system or "
"snapshot along with any quotas, use `zfs userspace`. For group information, "
"use `zfs groupspace`. For more information about supported options or how "
"to display specific options alone, refer to man:zfs[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2394
msgid ""
"Privileged users and `root` can list the quota for [.filename]#storage/home/"
"bob# using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2398
#, no-wrap
msgid "# zfs get quota storage/home/bob\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2401
#, no-wrap
msgid "Reservations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2406
msgid ""
"<<zfs-term-reservation,Reservations>> guarantee an always-available amount "
"of space on a dataset. The reserved space will not be available to any "
"other dataset. This useful feature ensures that free space is available for "
"an important dataset or log files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2408
msgid ""
"The general format of the `reservation` property is `reservation=_size_`, so "
"to set a reservation of 10 GB on [.filename]#storage/home/bob#, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2412
#, no-wrap
msgid "# zfs set reservation=10G storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2415
msgid "To clear any reservation:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2419
#, no-wrap
msgid "# zfs set reservation=none storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2422
msgid ""
"The same principle applies to the `refreservation` property for setting a "
"<<zfs-term-refreservation,Reference Reservation>>, with the general format "
"`refreservation=_size_`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2424
msgid ""
"This command shows any reservations or refreservations that exist on [."
"filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2429
#, no-wrap
msgid ""
"# zfs get reservation storage/home/bob\n"
"# zfs get refreservation storage/home/bob\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2432
#, no-wrap
msgid "Compression"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2438
msgid ""
"ZFS provides transparent compression. Compressing data written at the block "
"level saves space and also increases disk throughput. If data compresses by "
"25% the compressed data writes to the disk at the same rate as the "
"uncompressed version, resulting in an effective write speed of 125%. "
"Compression can also be a great alternative to <<zfs-zfs-deduplication,"
"Deduplication>> because it does not require extra memory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2444
msgid ""
"ZFS offers different compression algorithms, each with different trade-"
"offs. The introduction of LZ4 compression in ZFS v5000 enables compressing "
"the entire pool without the large performance trade-off of other "
"algorithms. The biggest advantage to LZ4 is the _early abort_ feature. If "
"LZ4 does not achieve at least 12.5% compression in the header part of the "
"data, ZFS writes the block uncompressed to avoid wasting CPU cycles trying "
"to compress data that is either already compressed or uncompressible. For "
"details about the different compression algorithms available in ZFS, see the "
"<<zfs-term-compression,Compression>> entry in the terminology section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2446
msgid ""
"The administrator can see the effectiveness of compression using dataset "
"properties."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2455
#, no-wrap
msgid ""
"# zfs get used,compressratio,compression,logicalused mypool/compressed_dataset\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/compressed_dataset used 449G -\n"
"mypool/compressed_dataset compressratio 1.11x -\n"
"mypool/compressed_dataset compression lz4 local\n"
"mypool/compressed_dataset logicalused 496G -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2460
msgid ""
"The dataset is using 449 GB of space (the used property). Without "
"compression, it would have taken 496 GB of space (the `logicalused` "
"property). This results in a 1.11:1 compression ratio."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2466
msgid ""
"Compression can have an unexpected side effect when combined with <<zfs-term-"
"userquota,User Quotas>>. User quotas restrict how much actual space a user "
"consumes on a dataset _after compression_. If a user has a quota of 10 GB, "
"and writes 10 GB of compressible data, they will still be able to store more "
"data. If they later update a file, say a database, with more or less "
"compressible data, the amount of space available to them will change. This "
"can result in the odd situation where a user did not increase the actual "
"amount of data (the `logicalused` property), but the change in compression "
"caused them to reach their quota limit."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2470
msgid ""
"Compression can have a similar unexpected interaction with backups. Quotas "
"are often used to limit data storage to ensure there is enough backup space "
"available. Since quotas do not consider compression ZFS may write more data "
"than would fit with uncompressed backups."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2472
#, no-wrap
msgid "Zstandard Compression"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2476
msgid ""
"OpenZFS 2.0 added a new compression algorithm. Zstandard (Zstd) offers "
"higher compression ratios than the default LZ4 while offering much greater "
"speeds than the alternative, gzip. OpenZFS 2.0 is available starting with "
"FreeBSD 12.1-RELEASE via package:sysutils/openzfs[] and has been the default "
"in since FreeBSD 13.0-RELEASE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2480
msgid ""
"Zstd provides a large selection of compression levels, providing fine-"
"grained control over performance versus compression ratio. One of the main "
"advantages of Zstd is that the decompression speed is independent of the "
"compression level. For data written once but read often, Zstd allows the "
"use of the highest compression levels without a read performance penalty."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2485
msgid ""
"Even with frequent data updates, enabling compression often provides higher "
"performance. One of the biggest advantages comes from the compressed ARC "
"feature. ZFS's Adaptive Replacement Cache (ARC) caches the compressed "
"version of the data in RAM, decompressing it each time. This allows the "
"same amount of RAM to store more data and metadata, increasing the cache hit "
"ratio."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2491
msgid ""
"ZFS offers 19 levels of Zstd compression, each offering incrementally more "
"space savings in exchange for slower compression. The default level is "
"`zstd-3` and offers greater compression than LZ4 without being much slower. "
"Levels above 10 require large amounts of memory to compress each block and "
"systems with less than 16 GB of RAM should not use them. ZFS uses a "
"selection of the Zstd_fast_ levels also, which get correspondingly faster "
"but supports lower compression ratios. ZFS supports `zstd-fast-1` through "
"`zstd-fast-10`, `zstd-fast-20` through `zstd-fast-100` in increments of 10, "
"and `zstd-fast-500` and `zstd-fast-1000` which provide minimal compression, "
"but offer high performance."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2495
msgid ""
"If ZFS is not able to get the required memory to compress a block with Zstd, "
"it will fall back to storing the block uncompressed. This is unlikely to "
"happen except at the highest levels of Zstd on memory constrained systems. "
"ZFS counts how often this has occurred since loading the ZFS module with "
"`kstat.zfs.misc.zstd.compress_alloc_fail`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2497
#, no-wrap
msgid "Deduplication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2503
msgid ""
"When enabled, <<zfs-term-deduplication,deduplication>> uses the checksum of "
"each block to detect duplicate blocks. When a new block is a duplicate of "
"an existing block, ZFS writes a new reference to the existing data instead "
"of the whole duplicate block. Tremendous space savings are possible if the "
"data contains a lot of duplicated files or repeated information. Warning: "
"deduplication requires a large amount of memory, and enabling compression "
"instead provides most of the space savings without the extra cost."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2505
msgid "To activate deduplication, set the `dedup` property on the target pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2509
#, no-wrap
msgid "# zfs set dedup=on pool\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2514
msgid ""
"Deduplicating only affects new data written to the pool. Merely activating "
"this option will not deduplicate data already written to the pool. A pool "
"with a freshly activated deduplication property will look like this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2520
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"pool 2.84G 2.19M 2.83G - - 0% 0% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2525
msgid ""
"The `DEDUP` column shows the actual rate of deduplication for the pool. A "
"value of `1.00x` shows that data has not deduplicated yet. The next example "
"copies some system binaries three times into different directories on the "
"deduplicated pool created above."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2531
#, no-wrap
msgid ""
"# for d in dir1 dir2 dir3; do\n"
"> mkdir $d && cp -R /usr/bin $d &\n"
"> done\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2534
msgid "To observe deduplicating of redundant data, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2540
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"pool 2.84G 20.9M 2.82G - - 0% 0% 3.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2545
msgid ""
"The `DEDUP` column shows a factor of `3.00x`. Detecting and deduplicating "
"copies of the data uses a third of the space. The potential for space "
"savings can be enormous, but comes at the cost of having enough memory to "
"keep track of the deduplicated blocks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2548
msgid ""
"Deduplication is not always beneficial when the data in a pool is not "
"redundant. ZFS can show potential space savings by simulating deduplication "
"on an existing pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2553
#, no-wrap
msgid ""
"# zdb -S pool\n"
"Simulated DDT histogram:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2569
#, no-wrap
msgid ""
"bucket allocated referenced\n"
"______ ______________________________ ______________________________\n"
"refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE\n"
"------ ------ ----- ----- ----- ------ ----- ----- -----\n"
" 1 2.58M 289G 264G 264G 2.58M 289G 264G 264G\n"
" 2 206K 12.6G 10.4G 10.4G 430K 26.4G 21.6G 21.6G\n"
" 4 37.6K 692M 276M 276M 170K 3.04G 1.26G 1.26G\n"
" 8 2.18K 45.2M 19.4M 19.4M 20.0K 425M 176M 176M\n"
" 16 174 2.83M 1.20M 1.20M 3.33K 48.4M 20.4M 20.4M\n"
" 32 40 2.17M 222K 222K 1.70K 97.2M 9.91M 9.91M\n"
" 64 9 56K 10.5K 10.5K 865 4.96M 948K 948K\n"
" 128 2 9.50K 2K 2K 419 2.11M 438K 438K\n"
" 256 5 61.5K 12K 12K 1.90K 23.0M 4.47M 4.47M\n"
" 1K 2 1K 1K 1K 2.98K 1.49M 1.49M 1.49M\n"
" Total 2.82M 303G 275G 275G 3.20M 319G 287G 287G\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2571
#, no-wrap
msgid "dedup = 1.05, compress = 1.11, copies = 1.00, dedup * compress / copies = 1.16\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2580
msgid ""
"After `zdb -S` finishes analyzing the pool, it shows the space reduction "
"ratio that activating deduplication would achieve. In this case, `1.16` is "
"a poor space saving ratio mainly provided by compression. Activating "
"deduplication on this pool would not save any amount of space, and is not "
"worth the amount of memory required to enable deduplication. Using the "
"formula _ratio = dedup * compress / copies_, system administrators can plan "
"the storage allocation, deciding whether the workload will contain enough "
"duplicate blocks to justify the memory requirements. If the data is "
"reasonably compressible, the space savings may be good. Good practice is to "
"enable compression first as compression also provides greatly increased "
"performance. Enable deduplication in cases where savings are considerable "
"and with enough available memory for the <<zfs-term-deduplication,DDT>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2582
#, no-wrap
msgid "ZFS and Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2588
msgid ""
"Use `zfs jail` and the corresponding `jailed` property to delegate a ZFS "
"dataset to a crossref:jails[jails,Jail]. `zfs jail _jailid_` attaches a "
"dataset to the specified jail, and `zfs unjail` detaches it. To control the "
"dataset from within a jail, set the `jailed` property. ZFS forbids mounting "
"a jailed dataset on the host because it may have mount points that would "
"compromise the security of the host."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2590
#, no-wrap
msgid "Delegated Administration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2598
msgid ""
"A comprehensive permission delegation system allows unprivileged users to "
"perform ZFS administration functions. For example, if each user's home "
"directory is a dataset, users need permission to create and destroy "
"snapshots of their home directories. A user performing backups can get "
"permission to use replication features. ZFS allows a usage statistics "
"script to run with access to only the space usage data for all users. "
"Delegating the ability to delegate permissions is also possible. Permission "
"delegation is possible for each subcommand and most properties."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2600
#, no-wrap
msgid "Delegating Dataset Creation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2606
msgid ""
"`zfs allow _someuser_ create _mydataset_` gives the specified user "
"permission to create child datasets under the selected parent dataset. A "
"caveat: creating a new dataset involves mounting it. That requires setting "
"the FreeBSD `vfs.usermount` man:sysctl[8] to `1` to allow non-root users to "
"mount a file system. Another restriction aimed at preventing abuse: non-"
"`root` users must own the mountpoint where mounting the file system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2608
#, no-wrap
msgid "Delegating Permission Delegation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2612
msgid ""
"`zfs allow _someuser_ allow _mydataset_` gives the specified user the "
"ability to assign any permission they have on the target dataset, or its "
"children, to other users. If a user has the `snapshot` permission and the "
"`allow` permission, that user can then grant the `snapshot` permission to "
"other users."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2614
#, no-wrap
msgid "Advanced Topics"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2617
#, no-wrap
msgid "Tuning"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2620
msgid "Adjust tunables to make ZFS perform best for different workloads."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2622
msgid ""
"[[zfs-advanced-tuning-arc_max]] `_vfs.zfs.arc.max_` starting with 13.x (`vfs."
"zfs.arc_max` for 12.x) - Upper size of the <<zfs-term-arc,ARC>>. The default "
"is all RAM but 1 GB, or 5/8 of all RAM, whichever is more. Use a lower value "
"if the system runs any other daemons or processes that may require memory. "
"Adjust this value at runtime with man:sysctl[8] and set it in [.filename]#/"
"boot/loader.conf# or [.filename]#/etc/sysctl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2623
msgid ""
"[[zfs-advanced-tuning-arc_meta_limit]] `_vfs.zfs.arc.meta_limit_` starting "
"with 13.x (`vfs.zfs.arc_meta_limit` for 12.x)` - Limit the amount of the "
"<<zfs-term-arc,ARC>> used to store metadata. The default is one fourth of "
"`vfs.zfs.arc.max`. Increasing this value will improve performance if the "
"workload involves operations on a large number of files and directories, or "
"frequent metadata operations, at the cost of less file data fitting in the "
"<<zfs-term-arc,ARC>>. Adjust this value at runtime with man:sysctl[8] in [."
"filename]#/boot/loader.conf# or [.filename]#/etc/sysctl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2624
msgid ""
"[[zfs-advanced-tuning-arc_min]] `_vfs.zfs.arc.min_` starting with 13.x (`vfs."
"zfs.arc_min` for 12.x) - Lower size of the <<zfs-term-arc,ARC>>. The default "
"is one half of `vfs.zfs.arc.meta_limit`. Adjust this value to prevent other "
"applications from pressuring out the entire <<zfs-term-arc,ARC>>. Adjust "
"this value at runtime with man:sysctl[8] and in [.filename]#/boot/loader."
"conf# or [.filename]#/etc/sysctl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2625
msgid ""
"[[zfs-advanced-tuning-vdev-cache-size]] `_vfs.zfs.vdev.cache.size_` - A "
"preallocated amount of memory reserved as a cache for each device in the "
"pool. The total amount of memory used will be this value multiplied by the "
"number of devices. Set this value at boot time and in [.filename]#/boot/"
"loader.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2626
msgid ""
"[[zfs-advanced-tuning-min-auto-ashift]] `_vfs.zfs.min_auto_ashift_` - Lower "
"`ashift` (sector size) used automatically at pool creation time. The value "
"is a power of two. The default value of `9` represents `2^9 = 512`, a sector "
"size of 512 bytes. To avoid _write amplification_ and get the best "
"performance, set this value to the largest sector size used by a device in "
"the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2632
msgid ""
"Common drives have 4 KB sectors. Using the default `ashift` of `9` with "
"these drives results in write amplification on these devices. Data "
"contained in a single 4 KB write is instead written in eight 512-byte "
"writes. ZFS tries to read the native sector size from all devices when "
"creating a pool, but drives with 4 KB sectors report that their sectors are "
"512 bytes for compatibility. Setting `vfs.zfs.min_auto_ashift` to `12` "
"(`2^12 = 4096`) before creating a pool forces ZFS to use 4 KB blocks for "
"best performance on these drives."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2635
msgid ""
"Forcing 4 KB blocks is also useful on pools with planned disk upgrades. "
"Future disks use 4 KB sectors, and `ashift` values cannot change after "
"creating a pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2639
msgid ""
"In some specific cases, the smaller 512-byte block size might be "
"preferable. When used with 512-byte disks for databases or as storage for "
"virtual machines, less data transfers during small random reads. This can "
"provide better performance when using a smaller ZFS record size."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2640
msgid ""
"[[zfs-advanced-tuning-prefetch_disable]] `_vfs.zfs.prefetch_disable_` - "
"Disable prefetch. A value of `0` enables and `1` disables it. The default is "
"`0`, unless the system has less than 4 GB of RAM. Prefetch works by reading "
"larger blocks than requested into the <<zfs-term-arc,ARC>> in hopes to soon "
"need the data. If the workload has a large number of random reads, disabling "
"prefetch may actually improve performance by reducing unnecessary reads. "
"Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2641
msgid ""
"[[zfs-advanced-tuning-vdev-trim_on_init]] `_vfs.zfs.vdev.trim_on_init_` - "
"Control whether new devices added to the pool have the `TRIM` command run on "
"them. This ensures the best performance and longevity for SSDs, but takes "
"extra time. If the device has already been secure erased, disabling this "
"setting will make the addition of the new device faster. Adjust this value "
"at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2642
msgid ""
"[[zfs-advanced-tuning-vdev-max_pending]] `_vfs.zfs.vdev.max_pending_` - "
"Limit the number of pending I/O requests per device. A higher value will "
"keep the device command queue full and may give higher throughput. A lower "
"value will reduce latency. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2643
msgid ""
"[[zfs-advanced-tuning-top_maxinflight]] `_vfs.zfs.top_maxinflight_` - Upper "
"number of outstanding I/Os per top-level <<zfs-term-vdev,vdev>>. Limits the "
"depth of the command queue to prevent high latency. The limit is per top-"
"level vdev, meaning the limit applies to each <<zfs-term-vdev-mirror,"
"mirror>>, <<zfs-term-vdev-raidz,RAID-Z>>, or other vdev independently. "
"Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2644
msgid ""
"[[zfs-advanced-tuning-l2arc_write_max]] `_vfs.zfs.l2arc_write_max_` - Limit "
"the amount of data written to the <<zfs-term-l2arc,L2ARC>> per second. This "
"tunable extends the longevity of SSDs by limiting the amount of data written "
"to the device. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2645
msgid ""
"[[zfs-advanced-tuning-l2arc_write_boost]] `_vfs.zfs.l2arc_write_boost_` - "
"Adds the value of this tunable to <<zfs-advanced-tuning-l2arc_write_max,`vfs."
"zfs.l2arc_write_max`>> and increases the write speed to the SSD until "
"evicting the first block from the <<zfs-term-l2arc,L2ARC>>. This \"Turbo "
"Warmup Phase\" reduces the performance loss from an empty <<zfs-term-l2arc,"
"L2ARC>> after a reboot. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2646
msgid ""
"[[zfs-advanced-tuning-scrub_delay]]`_vfs.zfs.scrub_delay_` - Number of ticks "
"to delay between each I/O during a <<zfs-term-scrub,`scrub`>>. To ensure "
"that a `scrub` does not interfere with the normal operation of the pool, if "
"any other I/O is happening the `scrub` will delay between each command. This "
"value controls the limit on the total IOPS (I/Os Per Second) generated by "
"the `scrub`. The granularity of the setting is determined by the value of "
"`kern.hz` which defaults to 1000 ticks per second. Changing this setting "
"results in a different effective IOPS limit. The default value is `4`, "
"resulting in a limit of: 1000 ticks/sec / 4 = 250 IOPS. Using a value of "
"_20_ would give a limit of: 1000 ticks/sec / 20 = 50 IOPS. Recent activity "
"on the pool limits the speed of `scrub`, as determined by <<zfs-advanced-"
"tuning-scan_idle,`vfs.zfs.scan_idle`>>. Adjust this value at any time with "
"man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2647
msgid ""
"[[zfs-advanced-tuning-resilver_delay]] `_vfs.zfs.resilver_delay_` - Number "
"of milliseconds of delay inserted between each I/O during a <<zfs-term-"
"resilver,resilver>>. To ensure that a resilver does not interfere with the "
"normal operation of the pool, if any other I/O is happening the resilver "
"will delay between each command. This value controls the limit of total IOPS "
"(I/Os Per Second) generated by the resilver. ZFS determins the granularity "
"of the setting by the value of `kern.hz` which defaults to 1000 ticks per "
"second. Changing this setting results in a different effective IOPS limit. "
"The default value is 2, resulting in a limit of: 1000 ticks/sec / 2 = 500 "
"IOPS. Returning the pool to an <<zfs-term-online,Online>> state may be more "
"important if another device failing could <<zfs-term-faulted,Fault>> the "
"pool, causing data loss. A value of 0 will give the resilver operation the "
"same priority as other operations, speeding the healing process. Other "
"recent activity on the pool limits the speed of resilver, as determined by "
"<<zfs-advanced-tuning-scan_idle,`vfs.zfs.scan_idle`>>. Adjust this value at "
"any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2648
msgid ""
"[[zfs-advanced-tuning-scan_idle]] `_vfs.zfs.scan_idle_` - Number of "
"milliseconds since the last operation before considering the pool is idle. "
"ZFS disables the rate limiting for <<zfs-term-scrub,`scrub`>> and <<zfs-term-"
"resilver,resilver>> when the pool is idle. Adjust this value at any time "
"with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2649
msgid ""
"[[zfs-advanced-tuning-txg-timeout]] `_vfs.zfs.txg.timeout_` - Upper number "
"of seconds between <<zfs-term-txg,transaction group>>s. The current "
"transaction group writes to the pool and a fresh transaction group starts if "
"this amount of time elapsed since the previous transaction group. A "
"transaction group may trigger earlier if writing enough data. The default "
"value is 5 seconds. A larger value may improve read performance by delaying "
"asynchronous writes, but this may cause uneven performance when writing the "
"transaction group. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2651
#, no-wrap
msgid "ZFS on i386"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2654
msgid ""
"Some of the features provided by ZFS are memory intensive, and may require "
"tuning for upper efficiency on systems with limited RAM."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2655
#, no-wrap
msgid "Memory"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2663
msgid ""
"As a lower value, the total system memory should be at least one gigabyte. "
"The amount of recommended RAM depends upon the size of the pool and which "
"features ZFS uses. A general rule of thumb is 1 GB of RAM for every 1 TB of "
"storage. If using the deduplication feature, a general rule of thumb is 5 "
"GB of RAM per TB of storage to deduplicate. While some users use ZFS with "
"less RAM, systems under heavy load may panic due to memory exhaustion. ZFS "
"may require further tuning for systems with less than the recommended RAM "
"requirements."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2664
#, no-wrap
msgid "Kernel Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2667
msgid ""
"Due to the address space limitations of the i386(TM) platform, ZFS users on "
"the i386(TM) architecture must add this option to a custom kernel "
"configuration file, rebuild the kernel, and reboot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2671
#, no-wrap
msgid "options KVA_PAGES=512\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2676
msgid ""
"This expands the kernel address space, allowing the `vm.kvm_size` tunable to "
"push beyond the imposed limit of 1 GB, or the limit of 2 GB for PAE. To "
"find the most suitable value for this option, divide the desired address "
"space in megabytes by four. In this example `512` for 2 GB."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2677
#, no-wrap
msgid "Loader Tunables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2681
msgid ""
"Increases the [.filename]#kmem# address space on all FreeBSD architectures. "
"A test system with 1 GB of physical memory benefitted from adding these "
"options to [.filename]#/boot/loader.conf# and then restarting:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2688
#, no-wrap
msgid ""
"vm.kmem_size=\"330M\"\n"
"vm.kmem_size_max=\"330M\"\n"
"vfs.zfs.arc.max=\"40M\"\n"
"vfs.zfs.vdev.cache.size=\"5M\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2691
msgid ""
"For a more detailed list of recommendations for ZFS-related tuning, see "
"https://wiki.freebsd.org/ZFSTuningGuide[]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2693
#, no-wrap
msgid "Further Resources"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2696
msgid "https://openzfs.org/[OpenZFS]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2697
msgid "https://wiki.freebsd.org/ZFSTuningGuide[FreeBSD Wiki - ZFS Tuning]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2698
msgid ""
"https://calomel.org/zfs_raid_speed_capacity.html[Calomel Blog - ZFS Raidz "
"Performance, Capacity and Integrity]"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2700
#, no-wrap
msgid "ZFS Features and Terminology"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2709
msgid ""
"More than a file system, ZFS is fundamentally different. ZFS combines the "
"roles of file system and volume manager, enabling new storage devices to add "
"to a live system and having the new space available on the existing file "
"systems in that pool at once. By combining the traditionally separate "
"roles, ZFS is able to overcome previous limitations that prevented RAID "
"groups being able to grow. A _vdev_ is a top level device in a pool and can "
"be a simple disk or a RAID transformation such as a mirror or RAID-Z array. "
"ZFS file systems (called _datasets_) each have access to the combined free "
"space of the entire pool. Used blocks from the pool decrease the space "
"available to each file system. This approach avoids the common pitfall with "
"extensive partitioning where free space becomes fragmented across the "
"partitions."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2715
#, no-wrap
msgid "[[zfs-term-pool]]pool"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2718
#, no-wrap
msgid ""
"A storage _pool_ is the most basic building block of ZFS. A pool consists of one or more vdevs, the underlying devices that store the data. A pool is then used to create one or more file systems (datasets) or block devices (volumes).\n"
"These datasets and volumes share the pool of remaining free space. Each pool is uniquely identified by a name and a GUID. The ZFS version number on the pool determines the features available."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2719
#, no-wrap
msgid "[[zfs-term-vdev]]vdev Types"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2749
#, no-wrap
msgid ""
"A pool consists of one or more vdevs, which themselves are a single disk or a group of disks, transformed to a RAID. When using a lot of vdevs, ZFS spreads data across the vdevs to increase performance and maximize usable space. All vdevs must be at least 128 MB in size. \n"
"\n"
"* [[zfs-term-vdev-disk]] _Disk_ - The most basic vdev type is a standard block device. This can be an entire disk (such as [.filename]#/dev/ada0# or [.filename]#/dev/da0#) or a partition ([.filename]#/dev/ada0p3#). On FreeBSD, there is no performance penalty for using a partition rather than the entire disk. This differs from recommendations made by the Solaris documentation.\n"
"+\n"
"[CAUTION]\n"
"====\n"
"Using an entire disk as part of a bootable pool is strongly discouraged, as this may render the pool unbootable.\n"
"Likewise, you should not use an entire disk as part of a mirror or RAID-Z vdev.\n"
"Reliably determining the size of an unpartitioned disk at boot time is impossible and there's no place to put in boot code.\n"
"====\n"
"\n"
"* [[zfs-term-vdev-file]] _File_ - Regular files may make up ZFS pools, which is useful for testing and experimentation. Use the full path to the file as the device path in `zpool create`.\n"
"* [[zfs-term-vdev-mirror]] _Mirror_ - When creating a mirror, specify the `mirror` keyword followed by the list of member devices for the mirror. A mirror consists of two or more devices, writing all data to all member devices. A mirror vdev will hold as much data as its smallest member. A mirror vdev can withstand the failure of all but one of its members without losing any data.\n"
"+\n"
"[NOTE]\n"
"====\n"
"To upgrade a regular single disk vdev to a mirror vdev at any time, use `zpool <<zfs-zpool-attach,attach>>`.\n"
"====\n"
"\n"
"* [[zfs-term-vdev-raidz]] _RAID-Z_ - ZFS uses RAID-Z, a variation on standard RAID-5 that offers better distribution of parity and eliminates the \"RAID-5 write hole\" in which the data and parity information become inconsistent after an unexpected restart. ZFS supports three levels of RAID-Z which provide varying levels of redundancy in exchange for decreasing levels of usable storage. ZFS uses RAID-Z1 through RAID-Z3 based on the number of parity devices in the array and the number of disks which can fail before the pool stops being operational.\n"
"+\n"
"In a RAID-Z1 configuration with four disks, each 1 TB, usable storage is 3 TB and the pool will still be able to operate in degraded mode with one faulted disk. If another disk goes offline before replacing and resilvering the faulted disk would result in losing all pool data.\n"
"+\n"
"In a RAID-Z3 configuration with eight disks of 1 TB, the volume will provide 5 TB of usable space and still be able to operate with three faulted disks. Sun(TM) recommends no more than nine disks in a single vdev. If more disks make up the configuration, the recommendation is to divide them into separate vdevs and stripe the pool data across them.\n"
"+\n"
"A configuration of two RAID-Z2 vdevs consisting of 8 disks each would create something like a RAID-60 array. A RAID-Z group's storage capacity is about the size of the smallest disk multiplied by the number of non-parity disks. Four 1 TB disks in RAID-Z1 has an effective size of about 3 TB, and an array of eight 1 TB disks in RAID-Z3 will yield 5 TB of usable space.\n"
"* [[zfs-term-vdev-spare]] _Spare_ - ZFS has a special pseudo-vdev type for keeping track of available hot spares. Note that installed hot spares are not deployed automatically; manually configure them to replace the failed device using `zfs replace`.\n"
"* [[zfs-term-vdev-log]] _Log_ - ZFS Log Devices, also known as ZFS Intent Log (<<zfs-term-zil,ZIL>>) move the intent log from the regular pool devices to a dedicated device, typically an SSD. Having a dedicated log device improves the performance of applications with a high volume of synchronous writes like databases. Mirroring of log devices is possible, but RAID-Z is not supported. If using a lot of log devices, writes will be load-balanced across them.\n"
"* [[zfs-term-vdev-cache]] _Cache_ - Adding a cache vdev to a pool will add the storage of the cache to the <<zfs-term-l2arc,L2ARC>>. Mirroring cache devices is impossible. Since a cache device stores only new copies of existing data, there is no risk of data loss."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2750
#, no-wrap
msgid "[[zfs-term-txg]] Transaction Group (TXG)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2756
#, no-wrap
msgid ""
"Transaction Groups are the way ZFS groups blocks changes together and writes them to the pool. Transaction groups are the atomic unit that ZFS uses to ensure consistency. ZFS assigns each transaction group a unique 64-bit consecutive identifier. There can be up to three active transaction groups at a time, one in each of these three states: \n"
"\n"
"* _Open_ - A new transaction group begins in the open state and accepts new writes. There is always a transaction group in the open state, but the transaction group may refuse new writes if it has reached a limit. Once the open transaction group has reached a limit, or reaching the <<zfs-advanced-tuning-txg-timeout,`vfs.zfs.txg.timeout`>>, the transaction group advances to the next state.\n"
"* _Quiescing_ - A short state that allows any pending operations to finish without blocking the creation of a new open transaction group. Once all the transactions in the group have completed, the transaction group advances to the final state.\n"
"* _Syncing_ - Write all the data in the transaction group to stable storage. This process will in turn change other data, such as metadata and space maps, that ZFS will also write to stable storage. The process of syncing involves several passes. On the first and biggest, all the changed data blocks; next come the metadata, which may take several passes to complete. Since allocating space for the data blocks generates new metadata, the syncing state cannot finish until a pass completes that does not use any new space. The syncing state is also where _synctasks_ complete. Synctasks are administrative operations such as creating or destroying snapshots and datasets that complete the uberblock change. Once the sync state completes the transaction group in the quiescing state advances to the syncing state. All administrative functions, such as <<zfs-term-snapshot,`snapshot`>> write as part of the transaction group. ZFS adds a created synctask to the open transaction group, and that group advances as fast as possible to the syncing state to reduce the latency of administrative commands."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2757
#, no-wrap
msgid "[[zfs-term-arc]]Adaptive Replacement Cache (ARC)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2759
#, no-wrap
msgid "ZFS uses an Adaptive Replacement Cache (ARC), rather than a more traditional Least Recently Used (LRU) cache. An LRU cache is a simple list of items in the cache, sorted by how recently object was used, adding new items to the head of the list. When the cache is full, evicting items from the tail of the list makes room for more active objects. An ARC consists of four lists; the Most Recently Used (MRU) and Most Frequently Used (MFU) objects, plus a ghost list for each. These ghost lists track evicted objects to prevent adding them back to the cache. This increases the cache hit ratio by avoiding objects that have a history of occasional use. Another advantage of using both an MRU and MFU is that scanning an entire file system would evict all data from an MRU or LRU cache in favor of this freshly accessed content. With ZFS, there is also an MFU that tracks the most frequently used objects, and the cache of the most commonly accessed blocks remains."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2760
#, no-wrap
msgid "[[zfs-term-l2arc]]L2ARC"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2762
#, no-wrap
msgid "L2ARC is the second level of the ZFS caching system. RAM stores the primary ARC. Since the amount of available RAM is often limited, ZFS can also use <<zfs-term-vdev-cache,cache vdevs>>. Solid State Disks (SSDs) are often used as these cache devices due to their higher speed and lower latency compared to traditional spinning disks. L2ARC is entirely optional, but having one will increase read speeds for cached files on the SSD instead of having to read from the regular disks. L2ARC can also speed up <<zfs-term-deduplication,deduplication>> because a deduplication table (DDT) that does not fit in RAM but does fit in the L2ARC will be much faster than a DDT that must read from disk. Limits on the data rate added to the cache devices prevents prematurely wearing out SSDs with extra writes. Until the cache is full (the first block evicted to make room), writes to the L2ARC limit to the sum of the write limit and the boost limit, and afterwards limit to the write limit. A pair of man:sysctl[8] values control these rate limits. <<zfs-advanced-tuning-l2arc_write_max,`vfs.zfs.l2arc_write_max`>> controls the number of bytes written to the cache per second, while <<zfs-advanced-tuning-l2arc_write_boost,`vfs.zfs.l2arc_write_boost`>> adds to this limit during the \"Turbo Warmup Phase\" (Write Boost)."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2763
#, no-wrap
msgid "[[zfs-term-zil]]ZIL"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2765
#, no-wrap
msgid "ZIL accelerates synchronous transactions by using storage devices like SSDs that are faster than those used in the main storage pool. When an application requests a synchronous write (a guarantee that the data is stored to disk rather than merely cached for later writes), writing the data to the faster ZIL storage then later flushing it out to the regular disks greatly reduces latency and improves performance. Synchronous workloads like databases will profit from a ZIL alone. Regular asynchronous writes such as copying files will not use the ZIL at all."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2766
#, no-wrap
msgid "[[zfs-term-cow]]Copy-On-Write"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2768
#, no-wrap
msgid "Unlike a traditional file system, ZFS writes a different block rather than overwriting the old data in place. When completing this write the metadata updates to point to the new location. When a shorn write (a system crash or power loss in the middle of writing a file) occurs, the entire original contents of the file are still available and ZFS discards the incomplete write. This also means that ZFS does not require a man:fsck[8] after an unexpected shutdown."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2769
#, no-wrap
msgid "[[zfs-term-dataset]]Dataset"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2771
#, no-wrap
msgid "_Dataset_ is the generic term for a ZFS file system, volume, snapshot or clone. Each dataset has a unique name in the format _poolname/path@snapshot_. The root of the pool is a dataset as well. Child datasets have hierarchical names like directories. For example, _mypool/home_, the home dataset, is a child of _mypool_ and inherits properties from it. Expand this further by creating _mypool/home/user_. This grandchild dataset will inherit properties from the parent and grandparent. Set properties on a child to override the defaults inherited from the parent and grandparent. Administration of datasets and their children can be <<zfs-zfs-allow,delegated>>."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2772
#, no-wrap
msgid "[[zfs-term-filesystem]]File system"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2774
#, no-wrap
msgid "A ZFS dataset is most often used as a file system. Like most other file systems, a ZFS file system mounts somewhere in the systems directory hierarchy and contains files and directories of its own with permissions, flags, and other metadata."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2775
#, no-wrap
msgid "[[zfs-term-volume]]Volume"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2777
#, no-wrap
msgid "ZFS can also create volumes, which appear as disk devices. Volumes have a lot of the same features as datasets, including copy-on-write, snapshots, clones, and checksumming. Volumes can be useful for running other file system formats on top of ZFS, such as UFS virtualization, or exporting iSCSI extents."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2778
#, no-wrap
msgid "[[zfs-term-snapshot]]Snapshot"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2780
#, no-wrap
msgid "The <<zfs-term-cow,copy-on-write>> (COW) design of ZFS allows for nearly instantaneous, consistent snapshots with arbitrary names. After taking a snapshot of a dataset, or a recursive snapshot of a parent dataset that will include all child datasets, new data goes to new blocks, but without reclaiming the old blocks as free space. The snapshot contains the original file system version and the live file system contains any changes made since taking the snapshot using no other space. New data written to the live file system uses new blocks to store this data. The snapshot will grow as the blocks are no longer used in the live file system, but in the snapshot alone. Mount these snapshots read-only allows recovering of previous file versions. A <<zfs-zfs-snapshot,rollback>> of a live file system to a specific snapshot is possible, undoing any changes that took place after taking the snapshot. Each block in the pool has a reference counter which keeps track of the snapshots, clones, datasets, or volumes use that block. As files and snapshots get deleted, the reference count decreases, reclaiming the free space when no longer referencing a block. Marking snapshots with a <<zfs-zfs-snapshot,hold>> results in any attempt to destroy it will returns an `EBUSY` error. Each snapshot can have holds with a unique name each. The <<zfs-zfs-snapshot,release>> command removes the hold so the snapshot can deleted. Snapshots, cloning, and rolling back works on volumes, but independently mounting does not."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2781
#, no-wrap
msgid "[[zfs-term-clone]]Clone"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2783
#, no-wrap
msgid "Cloning a snapshot is also possible. A clone is a writable version of a snapshot, allowing the file system to fork as a new dataset. As with a snapshot, a clone initially consumes no new space. As new data written to a clone uses new blocks, the size of the clone grows. When blocks are overwritten in the cloned file system or volume, the reference count on the previous block decreases. Removing the snapshot upon which a clone bases is impossible because the clone depends on it. The snapshot is the parent, and the clone is the child. Clones can be _promoted_, reversing this dependency and making the clone the parent and the previous parent the child. This operation requires no new space. Since the amount of space used by the parent and child reverses, it may affect existing quotas and reservations."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2784
#, no-wrap
msgid "[[zfs-term-checksum]]Checksum"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2791
#, no-wrap
msgid ""
"Every block is also checksummed. The checksum algorithm used is a per-dataset property, see <<zfs-zfs-set,`set`>>. The checksum of each block is transparently validated when read, allowing ZFS to detect silent corruption. If the data read does not match the expected checksum, ZFS will attempt to recover the data from any available redundancy, like mirrors or RAID-Z. Triggering a validation of all checksums with <<zfs-term-scrub,`scrub`>>. Checksum algorithms include:\n"
"\n"
"* `fletcher2`\n"
"* `fletcher4`\n"
"* `sha256`\n"
" The `fletcher` algorithms are faster, but `sha256` is a strong cryptographic hash and has a much lower chance of collisions at the cost of some performance. Deactivating checksums is possible, but strongly discouraged."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2792
#, no-wrap
msgid "[[zfs-term-compression]]Compression"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2806
#, no-wrap
msgid ""
"Each dataset has a compression property, which defaults to off. Set this property to an available compression algorithm. This causes compression of all new data written to the dataset. Beyond a reduction in space used, read and write throughput often increases because fewer blocks need reading or writing. \n"
"\n"
"[[zfs-term-compression-lz4]]\n"
"* _LZ4_ - Added in ZFS pool version 5000 (feature flags), LZ4 is now the recommended compression algorithm. LZ4 works about 50% faster than LZJB when operating on compressible data, and is over three times faster when operating on uncompressible data. LZ4 also decompresses about 80% faster than LZJB. On modern CPUs, LZ4 can often compress at over 500 MB/s, and decompress at over 1.5 GB/s (per single CPU core).\n"
"\n"
"[[zfs-term-compression-lzjb]]\n"
"* _LZJB_ - The default compression algorithm. Created by Jeff Bonwick (one of the original creators of ZFS). LZJB offers good compression with less CPU overhead compared to GZIP. In the future, the default compression algorithm will change to LZ4.\n"
"\n"
"[[zfs-term-compression-gzip]]\n"
"* _GZIP_ - A popular stream compression algorithm available in ZFS. One of the main advantages of using GZIP is its configurable level of compression. When setting the `compress` property, the administrator can choose the level of compression, ranging from `gzip1`, the lowest level of compression, to `gzip9`, the highest level of compression. This gives the administrator control over how much CPU time to trade for saved disk space.\n"
"\n"
"[[zfs-term-compression-zle]]\n"
"* _ZLE_ - Zero Length Encoding is a special compression algorithm that compresses continuous runs of zeros alone. This compression algorithm is useful when the dataset contains large blocks of zeros."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2807
#, no-wrap
msgid "[[zfs-term-copies]]Copies"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2809
#, no-wrap
msgid "When set to a value greater than 1, the `copies` property instructs ZFS to maintain copies of each block in the <<zfs-term-filesystem,file system>> or <<zfs-term-volume,volume>>. Setting this property on important datasets provides added redundancy from which to recover a block that does not match its checksum. In pools without redundancy, the copies feature is the single form of redundancy. The copies feature can recover from a single bad sector or other forms of minor corruption, but it does not protect the pool from the loss of an entire disk."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2810
#, no-wrap
msgid "[[zfs-term-deduplication]]Deduplication"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2812
#, no-wrap
msgid "Checksums make it possible to detect duplicate blocks when writing data. With deduplication, the reference count of an existing, identical block increases, saving storage space. ZFS keeps a deduplication table (DDT) in memory to detect duplicate blocks. The table contains a list of unique checksums, the location of those blocks, and a reference count. When writing new data, ZFS calculates checksums and compares them to the list. When finding a match it uses the existing block. Using the SHA256 checksum algorithm with deduplication provides a secure cryptographic hash. Deduplication is tunable. If `dedup` is `on`, then a matching checksum means that the data is identical. Setting `dedup` to `verify`, ZFS performs a byte-for-byte check on the data ensuring they are actually identical. If the data is not identical, ZFS will note the hash collision and store the two blocks separately. As the DDT must store the hash of each unique block, it consumes a large amount of memory. A general rule of thumb is 5-6 GB of ram per 1 TB of deduplicated data). In situations not practical to have enough RAM to keep the entire DDT in memory, performance will suffer greatly as the DDT must read from disk before writing each new block. Deduplication can use L2ARC to store the DDT, providing a middle ground between fast system memory and slower disks. Consider using compression instead, which often provides nearly as much space savings without the increased memory."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2813
#, no-wrap
msgid "[[zfs-term-scrub]]Scrub"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2815
#, no-wrap
msgid "Instead of a consistency check like man:fsck[8], ZFS has `scrub`. `scrub` reads all data blocks stored on the pool and verifies their checksums against the known good checksums stored in the metadata. A periodic check of all the data stored on the pool ensures the recovery of any corrupted blocks before needing them. A scrub is not required after an unclean shutdown, but good practice is at least once every three months. ZFS verifies the checksum of each block during normal use, but a scrub makes certain to check even infrequently used blocks for silent corruption. ZFS improves data security in archival storage situations. Adjust the relative priority of `scrub` with <<zfs-advanced-tuning-scrub_delay,`vfs.zfs.scrub_delay`>> to prevent the scrub from degrading the performance of other workloads on the pool."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2816
#, no-wrap
msgid "[[zfs-term-quota]]Dataset Quota"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2827
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2824
#, no-wrap
msgid ""
"ZFS provides fast and accurate dataset, user, and group space accounting as well as quotas and space reservations. This gives the administrator fine grained control over space allocation and allows reserving space for critical file systems. \n"
"\n"
"ZFS supports different types of quotas: the dataset quota, the <<zfs-term-refquota,reference quota (refquota)>>, the <<zfs-term-userquota,user quota>>, and the <<zfs-term-groupquota,group quota>>.\n"
"\n"
"Quotas limit the total size of a dataset and its descendants, including snapshots of the dataset, child datasets, and the snapshots of those datasets.\n"
"\n"
-"[NOTE]\n"
-"====\n"
-"Volumes do not support quotas, as the `volsize` property acts as an implicit quota.\n"
-"===="
+"Quotas cannot be set on ZFS volumes, as the `volsize` property acts as an implicit quota."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2828
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2825
#, no-wrap
msgid "[[zfs-term-refquota]]Reference Quota"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2830
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2827
#, no-wrap
msgid "A reference quota limits the amount of space a dataset can consume by enforcing a hard limit. This hard limit includes space referenced by the dataset alone and does not include space used by descendants, such as file systems or snapshots."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2831
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2828
#, no-wrap
msgid "[[zfs-term-userquota]]User Quota"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2833
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2830
#, no-wrap
msgid "User quotas are useful to limit the amount of space used by the specified user."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2834
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2831
#, no-wrap
msgid "[[zfs-term-groupquota]]Group Quota"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2836
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2833
#, no-wrap
msgid "The group quota limits the amount of space that a specified group can consume."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2837
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2834
#, no-wrap
msgid "[[zfs-term-reservation]]Dataset Reservation"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2841
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2838
#, no-wrap
msgid ""
"The `reservation` property makes it possible to guarantee an amount of space for a specific dataset and its descendants. This means that setting a 10 GB reservation on [.filename]#storage/home/bob# prevents other datasets from using up all free space, reserving at least 10 GB of space for this dataset. Unlike a regular <<zfs-term-refreservation,`refreservation`>>, space used by snapshots and descendants is not counted against the reservation. For example, if taking a snapshot of [.filename]#storage/home/bob#, enough disk space other than the `refreservation` amount must exist for the operation to succeed. Descendants of the main data set are not counted in the `refreservation` amount and so do not encroach on the space set.\n"
"\n"
"Reservations of any sort are useful in situations such as planning and testing the suitability of disk space allocation in a new system, or ensuring that enough space is available on file systems for audio logs or system recovery procedures and files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2842
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2839
#, no-wrap
msgid "[[zfs-term-refreservation]]Reference Reservation"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2844
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2841
#, no-wrap
msgid "The `refreservation` property makes it possible to guarantee an amount of space for the use of a specific dataset _excluding_ its descendants. This means that setting a 10 GB reservation on [.filename]#storage/home/bob#, and another dataset tries to use the free space, reserving at least 10 GB of space for this dataset. In contrast to a regular <<zfs-term-reservation,reservation>>, space used by snapshots and descendant datasets is not counted against the reservation. For example, if taking a snapshot of [.filename]#storage/home/bob#, enough disk space other than the `refreservation` amount must exist for the operation to succeed. Descendants of the main data set are not counted in the `refreservation` amount and so do not encroach on the space set."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2845
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2842
#, no-wrap
msgid "[[zfs-term-resilver]]Resilver"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2846
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2843
#, no-wrap
msgid "When replacing a failed disk, ZFS must fill the new disk with the lost data. _Resilvering_ is the process of using the parity information distributed across the remaining drives to calculate and write the missing data to the new drive."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2847
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2844
#, no-wrap
msgid "[[zfs-term-online]]Online"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2849
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2846
#, no-wrap
msgid "A pool or vdev in the `Online` state has its member devices connected and fully operational. Individual devices in the `Online` state are functioning."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2850
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2847
#, no-wrap
msgid "[[zfs-term-offline]]Offline"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2852
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2849
#, no-wrap
msgid "The administrator puts individual devices in an `Offline` state if enough redundancy exists to avoid putting the pool or vdev into a <<zfs-term-faulted,Faulted>> state. An administrator may choose to offline a disk in preparation for replacing it, or to make it easier to identify."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2853
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2850
#, no-wrap
msgid "[[zfs-term-degraded]]Degraded"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2855
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2852
#, no-wrap
msgid "A pool or vdev in the `Degraded` state has one or more disks that disappeared or failed. The pool is still usable, but if other devices fail, the pool may become unrecoverable. Reconnecting the missing devices or replacing the failed disks will return the pool to an <<zfs-term-online,Online>> state after the reconnected or new device has completed the <<zfs-term-resilver,Resilver>> process."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2856
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2853
#, no-wrap
msgid "[[zfs-term-faulted]]Faulted"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/zfs/_index.adoc:2857
+#: documentation/content/en/books/handbook/zfs/_index.adoc:2854
#, no-wrap
msgid "A pool or vdev in the `Faulted` state is no longer operational. Accessing the data is no longer possible. A pool or vdev enters the `Faulted` state when the number of missing or failed devices exceeds the level of redundancy in the vdev. If reconnecting missing devices the pool will return to an <<zfs-term-online,Online>> state. Insufficient redundancy to compensate for the number of failed disks loses the pool contents and requires restoring from backups."
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/makefiles/_index.po b/documentation/content/en/books/porters-handbook/makefiles/_index.po
index 129074bae6..29382d2a94 100644
--- a/documentation/content/en/books/porters-handbook/makefiles/_index.po
+++ b/documentation/content/en/books/porters-handbook/makefiles/_index.po
@@ -1,11623 +1,11623 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-01-21 20:00-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 <<makefile-distname,`DISTNAME`>>."
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 <<porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` or "
"`PKGNAMESUFFIX`>>."
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 "
"<<makefile-versions-ex-pkg-version>>."
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 "
"<<makefile-distname>>."
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 <<makefile-options,options>>."
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
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:303
+msgid "Changes to `MAINTAINER`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:305
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
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:307
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
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:308
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
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:309
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
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:310
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 <<porting-pkgname,guidelines for a good package "
"name>>. In particular, the use of a hyphen (`-`) in `PORTVERSION` is _not_ "
"allowed. Also, if the package name has the _language-_ or the _-compiled."
"specifics_ part (see below), use `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, "
"respectively. Do not make them part of `PORTNAME`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 <<makefile-masterdir,hardcoded "
"defaults>> (usually part of the directory name in a family of ports), the _-"
"compiled.specifics_ part states the compiled-in defaults. The hyphen is "
"optional. Examples are paper size and font units."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 "
"<<porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` or `PKGNAMESUFFIX`>>."
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:4784
#, 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 <<porting-categories,current list of categories>> "
"and pick the ones that are suitable for the port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 <<choosing-categories,"
"below>> for more discussion about how to pick the right categories."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 <<porting-categories,"
"above>>). This is necessary to make the packaging work. Virtual categories "
"and physical categories may be intermixed after that."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 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"
"< <.>\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"
"CATEGORIES=\tdns net\n"
"MASTER_SITES=\tISC/bind9/${ISCVERSION}\n"
"PKGNAMESUFFIX=\t99\n"
"DISTNAME=\t${PORTNAME}-${ISCVERSION}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 <<makefile-dist_subdir,`DIST_SUBDIR`>> 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:4814
#, 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:4796
#, 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:4797
#, 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:4799
#, 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:4798
#, 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 <<makefile-master_sites-github-multiple>> 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:4800
#, 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 <<makefile-versions-ex-pkg-version>> 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 <<makefile-versions-ex-pkg-version>> 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 "
"<<porting-master-sites-n>>."
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 <<makefile-master_sites-github-description>>."
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 "
"<<porting-master-sites-n>>"
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 <<makefile-master_sites-github-multi>>, "
"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:4804
#, 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:4801
#, 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:4803
#, 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:4802
#, 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:4805
#, 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 <<makefile-master_sites-gitlab-multiple>> 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:4806
#, 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 <<porting-master-sites-n>> and <<makefile-"
"master_sites-gitlab-multiple>>."
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. <<makefile-"
"master_sites-gitlab-description>>."
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 <<porting-order-portname,top block>>. 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 <<makefile-master_sites-gitlab-multi>>, "
"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:4793
#, 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:4794
#, 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:4815
#, 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 <<porting-master-sites-n,the master site "
"grouping feature>>, adding a group also works:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 <<ports-master-sites-n-detailed>>."
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 <<ports-master-sites-n-example-simple-use-one-file-per-"
"site>>."
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 <<ports-master-sites-n-"
"example-simple-use-more-than-one-file-per-site>>."
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 <<porting-master-sites-n-what-changes-in-port-targets, ii>>). "
"Furthermore, `DEFAULT` is a special purpose word (check item <<porting-"
"master-sites-n-DEFAULT-group,3>>)."
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 <<porting-master-sites-n-comma-operator,5>>)."
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 <<ports-master-sites-n-"
"example-detailed-use-master-site-subdir>> and <<ports-master-sites-n-example-"
"detailed-use-complete-example-master-sites>>."
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 <<ports-master-sites-n-"
"example-detailed-use-master-site-sourceforge>>."
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 <<ports-master-sites-n-example-detailed-use-"
"patch-sites>>."
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 "
"<<porting-master-sites-n-group-semantics, 7>>."
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 <<ports-master-sites-n-"
"example-detailed-use-complete-example-master-sites>>."
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 <<porting-master-sites-n-new-port-targets-master-sites-all, B>> "
"for more information on these new port targets."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 <<licenses-license-list>>, only "
"`LICENSE_FILE` and `LICENSE_DISTFILES` variables can be set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2562
msgid ""
"If this is a license that has not been defined in the ports framework (see "
"<<licenses-license-list>>), the `LICENSE_PERMS` and `LICENSE_NAME` must be "
"set, along with either `LICENSE_FILE` or `LICENSE_TEXT`. "
"`LICENSE_DISTFILES` and `LICENSE_GROUPS` can also be set, but are not "
"required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2565
msgid ""
"The predefined licenses are shown in <<licenses-license-list>>. The current "
"list is always available in [.filename]#Mk/bsd.licenses.db.mk#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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 <<licenses-license_text,`LICENSE_TEXT`>>, "
"put it in a new file in [.filename]#${FILESDIR}#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc: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:4747
#, 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:4748
#, 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:4746
#, 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:4745
#, 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:4743
#, 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:4744
#, 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:4825
#, 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:4128
#, 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:3635
#, no-wrap
msgid ""
"The port requires GCC (`gcc` or `{g-plus-plus}`) to build.\n"
"Some ports need a specific, old GCC version, some require modern, recent versions.\n"
"It is typically set to `yes` (means always use stable, modern GCC from ports per `GCC_DEFAULT` in [.filename]#Mk/bsd.default-versions.mk#).\n"
"This is also the default value.\n"
"The exact version can also be specified, with a value such as `10`.\n"
"GCC from the base system is used when it satisfies the requested version, otherwise an appropriate compiler is built from ports, and `CC` and `CXX` are adjusted accordingly.\n"
"The `:build` argument following the version specifier adds only a build time dependency to the port.\n"
"\n"
"For example:\n"
"[example]\n"
"====\n"
"[.programlisting]\n"
"....\n"
"USE_GCC=yes\t\t# port requires a current version of GCC\n"
"USE_GCC=11:build\t# port requires GCC 11 at build time only\n"
"....\n"
"====\n"
"\n"
"[NOTE]\n"
"====\n"
"`USE_GCC=any` is deprecated and should not be used in new ports\n"
"===="
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3644
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:3646
#, no-wrap
msgid "Minimal Version of a Dependency"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3649
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:3653
#, no-wrap
msgid "p5-Spiffy>=0.26:devel/p5-Spiffy\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3657
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:3659
#, no-wrap
msgid "Notes on Dependencies"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3665
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:3669
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:3674
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:3678
#, no-wrap
msgid "BUILD_DEPENDS=\t${NONEXISTENT}:graphics/jpeg:extract\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3681
msgid "will always descend to the `jpeg` port and extract it."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3683
#, no-wrap
msgid "Circular Dependencies Are Fatal"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3688
msgid "Do not introduce any circular dependencies into the ports tree!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3695
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:3697
#, no-wrap
msgid "Problems Caused by Automatic Dependencies"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3701
msgid ""
"Dependencies must be declared either explicitly or by using the <<makefile-"
"options,OPTIONS framework>>. Using other methods like automatic detection "
"complicates indexing, which causes problems for port and package management."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3703
#, no-wrap
msgid "Wrong Declaration of an Optional Dependency"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3710
#, no-wrap
msgid ".include <bsd.port.pre.mk>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3714
#, 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:3723
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:3725
#, no-wrap
msgid "Correct Declaration of an Optional Dependency"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3733
#, 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:3735
#, 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:3742
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:3744
#, no-wrap
msgid "Slave Ports and `MASTERDIR`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3750
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 <<porting-pkgname,"
"`PKGNAMESUFFIX`>> so the packages will have different names."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3753
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:3759
#, 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:3761
#, 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:3774
#, 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:3778
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:3780
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:3785
#, 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:3787
#, no-wrap
msgid ".include\t\"${MASTERDIR}/Makefile\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3792
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:3794
#, no-wrap
msgid "Man Pages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3799
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:3801
#, no-wrap
msgid "Info Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3808
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:3812
#, no-wrap
msgid "INFO=\tgcc34/cpp gcc34/cppinternals gcc34/g77 ...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3815
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:3817
#, no-wrap
msgid "Makefile Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3822
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:3824
#, no-wrap
msgid "`OPTIONS`"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3827
#, no-wrap
msgid "Background"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3833
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:3837
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:3839
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:3842
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:3844
#, no-wrap
msgid "Syntax"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3848
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:3852
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4276
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4572
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4629
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4692
#, no-wrap
msgid "OPTIONS_DEFINE=\tOPT1 OPT2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3855
msgid ""
"Once defined, `OPTIONS` are described (optional, but strongly recommended):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3864
#, 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:3868
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:3874
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:3880
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:3883
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:3888
#, 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:3894
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:3897
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:3902
#, 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:3905
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:3910
#, 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:3913
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:3918
#, 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:3921
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:3925
#, no-wrap
msgid "OPTIONS_DEFAULT=\tOPT1 OPT3 OPT6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3931
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:3933
#, no-wrap
msgid "Simple Use of `OPTIONS`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3941
#, 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:3944
#, 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:3948
#, 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:3950
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4014
#, no-wrap
msgid ".include <bsd.port.mk>\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3955
#, no-wrap
msgid "Check for Unset Port `OPTIONS`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3964
#, 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:3968
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:3973
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4010
#, 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:3978
#, no-wrap
msgid "Practical Use of `OPTIONS`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3986
#, 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:3989
#, 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:3992
#, 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:4000
#, 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:4005
#, 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:4007
#, 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:4012
#, no-wrap
msgid "# Check other OPTIONS\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4019
#, no-wrap
msgid "Default Options"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4022
msgid "These options are always on by default."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4024
msgid "`DOCS` - build and install documentation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4025
msgid "`NLS` - Native Language Support."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4026
msgid "`EXAMPLES` - build and install examples."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4027
msgid "`IPV6` - IPv6 protocol support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4032
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:4035
#, no-wrap
msgid "Feature Auto-Activation"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4039
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:4041
#, no-wrap
msgid "Wrong Handling of an Option"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4051
#, 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:4059
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:4061
#, no-wrap
msgid "Correct Handling of an Option"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4070
#, 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:4078
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:4082
#, no-wrap
msgid ".if !empty(VARIABLE:MVALUE)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4085
msgid "as an alternative to"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4089
#, no-wrap
msgid ".if ${VARIABLE:MVALUE}\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4094
#, no-wrap
msgid "Options Helpers"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4098
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:4099
#, no-wrap
msgid "`PLIST_SUB`, `SUB_LIST`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4101
msgid ""
"For automatic `%%_OPT_%%` and `%%NO__OPT__%%` generation, see "
"<<options_sub>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4103
msgid "For more complex usage, see <<options-variables>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4104
#, no-wrap
msgid "`CONFIGURE_ARGS`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4106
msgid ""
"For `--enable-_x_` and `--disable-_x_`, see <<options-configure_enable>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4108
msgid "For `--with-_x_` and `--without-_x_`, see <<options-configure_with>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4110
msgid "For all other cases, see <<options-configure_on>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4111
#, no-wrap
msgid "`CMAKE_ARGS`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4113
msgid ""
"For arguments that are booleans (`on`, `off`, `true`, `false`, `0`, `1`) see "
"<<options-cmake_bool>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4115
msgid "For all other cases, see <<options-cmake_on>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4116
#, no-wrap
msgid "`MESON_ARGS`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4118
msgid "For arguments that take `true` or `false`, see <<options-meson_true>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4120
msgid "For arguments that take `yes` or `no`, use <<options-meson_yes>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4122
msgid ""
"For arguments that take `enabled` or `disabled`, see <<options-"
"meson_enabled>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4124
msgid "For all other cases, use <<options-meson_on>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4125
#, no-wrap
msgid "`QMAKE_ARGS`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4127
msgid "See <<options-qmake_on>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4130
msgid "See <<options-use>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4131
#, no-wrap
msgid "`*_DEPENDS`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4133
msgid "See <<options-dependencies>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4134
#, no-wrap
msgid "`*` (Any variable)"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4136
msgid "The most used variables have direct helpers, see <<options-variables>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4138
msgid "For any variable without a specific helper, see <<options-vars>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4139
#, no-wrap
msgid "Options dependencies"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4141
msgid "When an option need another option to work, see <<options-implies>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4142
#, no-wrap
msgid "Options conflicts"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4144
msgid ""
"When an option cannot work if another is also enabled, see <<options-"
"prevents>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4145
#, no-wrap
msgid "Build targets"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4147
msgid "When an option need some extra processing, see <<options-targets>>."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4149
#, no-wrap
msgid "`OPTIONS_SUB`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4152
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:4157
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPTIONS_SUB=\tyes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4160
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4199
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4235
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4272
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4307
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4343
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4379
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4413
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4443
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4475
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4507
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4536
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4688
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4761
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4838
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4928
msgid "is equivalent to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4164
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4203
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4239
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4311
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4347
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4383
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4417
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4447
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4479
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4511
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4540
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4765
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4842
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4919
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4932
#, no-wrap
msgid "OPTIONS_DEFINE=\tOPT1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4166
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4205
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4241
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4278
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4313
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4349
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4385
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4419
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4449
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4481
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4513
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4542
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4574
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4631
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4696
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4767
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4844
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4934
#, no-wrap
msgid ".include <bsd.port.options.mk>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4174
#, 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:4180
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:4183
#, no-wrap
msgid "`OPT_USE` and `OPT_USE_OFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4189
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:4196
#, 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:4213
#, 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:4216
#, no-wrap
msgid "`CONFIGURE_ARGS` Helpers"
msgstr ""
#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4219
#, no-wrap
msgid "`OPT_CONFIGURE_ENABLE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4226
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:4232
#, 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:4247
#, 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:4253
#, 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:4256
#, no-wrap
msgid "`OPT_CONFIGURE_WITH`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4263
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:4269
#, 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:4284
#, 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:4290
#, 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:4293
#, no-wrap
msgid "`OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4298
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:4304
#, 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:4319
#, 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:4324
msgid ""
"Most of the time, the helpers in <<options-configure_enable>> and <<options-"
"configure_with>> provide a shorter and more comprehensive functionality."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4327
#, no-wrap
msgid "`CMAKE_ARGS` Helpers"
msgstr ""
#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4330
#, no-wrap
msgid "`OPT_CMAKE_ON` and `OPT_CMAKE_OFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4334
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:4340
#, 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:4355
#, 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:4361
msgid ""
"See <<options-cmake_bool>> for a shorter helper when the value is boolean."
msgstr ""
#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4364
#, no-wrap
msgid "`OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4370
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:4376
#, 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:4393
#, 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:4396
#, no-wrap
msgid "`MESON_ARGS` Helpers"
msgstr ""
#. type: Title =====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4399
#, no-wrap
msgid "`OPT_MESON_ON` and `OPT_MESON_OFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4404
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:4410
#, 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:4425
#, 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:4428
#, no-wrap
msgid "`OPT_MESON_TRUE` and `OPT_MESON_FALSE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4434
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:4440
#, 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:4457
#, 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:4460
#, no-wrap
msgid "`OPT_MESON_YES` and `OPT_MESON_NO`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4466
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:4472
#, 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:4489
#, 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:4492
#, no-wrap
msgid "`OPT_MESON_ENABLED` and `OPT_MESON_DISABLED`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4498
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:4504
#, 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:4519
#, 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:4522
#, no-wrap
msgid "`OPT_QMAKE_ON` and `OPT_QMAKE_OFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4527
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:4533
#, 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:4548
#, 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:4551
#, no-wrap
msgid "`OPT_IMPLIES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4554
msgid "Provides a way to add dependencies between options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4557
msgid ""
"When _OPT_ is selected, all the options listed in this variable will be "
"selected too. Using the <<options-configure_enable,`OPT_CONFIGURE_ENABLE`>> "
"described earlier to illustrate:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4562
#, 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:4565
#, 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:4568
msgid "Is equivalent to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4580
#, 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:4586
#, 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:4589
#, no-wrap
msgid "Simple Use of `OPT_IMPLIES`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4594
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:4599
#, 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:4604
#, 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:4609
#, no-wrap
msgid "`OPT_PREVENTS` and `OPT_PREVENTS_MSG`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4612
msgid "Provides a way to add conflicts between options."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4616
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:4622
#, 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:4625
msgid "Is roughly equivalent to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4635
#, 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:4638
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:4640
#, no-wrap
msgid "Simple Use of `OPT_PREVENTS`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4646
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:4650
#, no-wrap
msgid "OPTIONS_DEFINE=\tX509 SCTP\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4653
#, 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:4658
#, 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:4663
#, no-wrap
msgid "`OPT_VARS` and `OPT_VARS_OFF`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4666
msgid "Provides a generic way to set and append to variables."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4670
msgid ""
"Before using `OPT_VARS` and `OPT_VARS_OFF`, see if there is already a more "
"specific helper available in <<options-variables>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4675
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:4683
#, 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:4685
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4694
#, 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:4700
#, 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:4704
#, 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:4710
#, 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:4715
msgid "Values containing whitespace must be enclosed in quotes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4719
#, no-wrap
msgid "OPT_VARS=\tfoo=\"bar baz\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4725
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:4728
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:4732
#, no-wrap
msgid "OPT_VARS=\tfoo=\tbar\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4737
#, no-wrap
msgid "Dependencies, `OPT_DEPTYPE` and `OPT_DEPTYPE_OFF`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4740
msgid "For any of these dependency types:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4742
msgid "`PKG_DEPENDS`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4752
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:4758
#, 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:4773
#, 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:4776
#, 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:4779
msgid "For any of these variables:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4781
msgid "`ALL_TARGET`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4782
msgid "`BINARY_ALIAS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4783
msgid "`BROKEN`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4785
msgid "`CFLAGS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4786
msgid "`CONFIGURE_ENV`"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4787
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5026
#, no-wrap
msgid "`CONFLICTS`"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4788
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5021
#, no-wrap
msgid "`CONFLICTS_BUILD`"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4789
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5016
#, no-wrap
msgid "`CONFLICTS_INSTALL`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4790
msgid "`CPPFLAGS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4791
msgid "`CXXFLAGS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4792
msgid "`DESKTOP_ENTRIES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4795
msgid "`EXTRA_PATCHES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4807
msgid "`IGNORE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4808
msgid "`INFO`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4809
msgid "`INSTALL_TARGET`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4810
msgid "`LDFLAGS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4811
msgid "`LIBS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4812
msgid "`MAKE_ARGS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4813
msgid "`MAKE_ENV`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4816
msgid "`PATCH_SITES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4817
msgid "`PLIST_DIRS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4818
msgid "`PLIST_FILES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4819
msgid "`PLIST_SUB`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4820
msgid "`PORTDOCS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4821
msgid "`PORTEXAMPLES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4822
msgid "`SUB_FILES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4823
msgid "`SUB_LIST`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4824
msgid "`TEST_TARGET`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4829
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:4835
#, 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:4850
#, 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:4857
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:4862
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:4864
msgid "With these lines in the [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4868
#, no-wrap
msgid "ALL_TARGET=\tall\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4870
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4879
#, no-wrap
msgid "DOCS_ALL_TARGET=\tdoc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4873
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:4875
msgid "With only the options helper line in the [.filename]#Makefile#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4882
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:4885
#, 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:4888
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:4890
msgid "`pre-fetch`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4891
msgid "`do-fetch`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4892
msgid "`post-fetch`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4893
msgid "`pre-extract`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4894
msgid "`do-extract`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4895
msgid "`post-extract`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4896
msgid "`pre-patch`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4897
msgid "`do-patch`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4898
msgid "`post-patch`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4899
msgid "`pre-configure`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4900
msgid "`do-configure`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4901
msgid "`post-configure`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4902
msgid "`pre-build`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4903
msgid "`do-build`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4904
msgid "`post-build`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4905
msgid "`pre-install`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4906
msgid "`do-install`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4907
msgid "`post-install`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4908
msgid "`post-stage`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4909
msgid "`pre-package`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4910
msgid "`do-package`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4911
msgid "`post-package`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4915
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:4922
#, 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:4925
#, 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:4941
#, 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:4944
#, no-wrap
msgid "Specifying the Working Directory"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4949
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:4954
#, no-wrap
msgid ""
"PORTNAME=\tfoo\n"
"DISTVERSION=\t1.0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4957
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:4959
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:4961
#, no-wrap
msgid "`WRKSRC`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4965
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:4969
#, no-wrap
msgid "WRKSRC=\t${WRKDIR}/foo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4972
msgid "or possibly"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4976
#, no-wrap
msgid "WRKSRC=\t${WRKDIR}/${PORTNAME}\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4979
#, no-wrap
msgid "`WRKSRC_SUBDIR`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4982
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:4986
#, no-wrap
msgid "WRKSRC_SUBDIR=\tsrc\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4989
#, no-wrap
msgid "`NO_WRKSUBDIR`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4992
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:4996
#, no-wrap
msgid "NO_WRKSUBDIR=\tyes\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5001
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:5004
#, no-wrap
msgid "Conflict Handling"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5007
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:5011
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:5014
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:5019
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:5024
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:5029
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:5033
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:5036
#, 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:5039
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:5042
#, 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:5045
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:5048
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:5050
#, no-wrap
msgid "Basic usage of `CONFLICTS*`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5056
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:5063
#, 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:5066
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:5070
#, no-wrap
msgid "CONFLICTS_INSTALL=\tbind910\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5073
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:5077
#, no-wrap
msgid "CONFLICTS_INSTALL=\tbind99\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5084
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:5086
#, no-wrap
msgid "Using `CONFLICTS*` With Globs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5091
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:5093
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:5099
#, 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:5102
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:5104
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:5108
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:5112
#, no-wrap
msgid "% make -DDISABLE_CONFLICTS patch\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5115
#, no-wrap
msgid "Installing Files"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5122
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:5125
#, no-wrap
msgid "`INSTALL_*` Macros"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5132
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:5134
msgid "`INSTALL_PROGRAM` is a command to install binary executables."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5135
msgid "`INSTALL_SCRIPT` is a command to install executable scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5136
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:5137
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:5138
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:5139
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:5141
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:5145
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:5148
#, no-wrap
msgid "Stripping Binaries and Shared Libraries"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5153
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:5156
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:5161
#, 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:5164
msgid "When multiple files need to be stripped:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5171
#, 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:5176
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:5180
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:5182
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:5184
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:5187
#, no-wrap
msgid "Installing a Whole Tree of Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5192
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:5197
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:5203
#, 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:5206
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:5212
#, 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:5215
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:5218
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:5225
#, 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:5230
msgid ""
"These macros do not add the installed files to [.filename]#pkg-plist#. They "
"must be added manually. For optional documentation (`PORTDOCS`, see "
"<<install-documentation>>) and examples (`PORTEXAMPLES`), the `%%PORTDOCS%%` "
"or `%%PORTEXAMPLES%%` prefixes must be prepended in [.filename]#pkg-plist#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5232
#, no-wrap
msgid "Install Additional Documentation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5236
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:5241
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:5244
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:5250
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${DOCSDIR}\n"
"\t${INSTALL_DATA} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5254
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 <<options-targets>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5256
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:5258
msgid "`DATADIR` gets expanded to [.filename]#PREFIX/share/PORTNAME#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5259
msgid "`DATADIR_REL` gets expanded to [.filename]#share/PORTNAME#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5260
msgid "`DOCSDIR` gets expanded to [.filename]#PREFIX/share/doc/PORTNAME#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5261
msgid "`DOCSDIR_REL` gets expanded to [.filename]#share/doc/PORTNAME#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5262
msgid ""
"`EXAMPLESDIR` gets expanded to [.filename]#PREFIX/share/examples/PORTNAME#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5263
msgid ""
"`EXAMPLESDIR_REL` gets expanded to [.filename]#share/examples/PORTNAME#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5269
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:5275
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:5277
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:5282
#, no-wrap
msgid ""
"%%PORTDOCS%%%%DOCSDIR%%/AUTHORS\n"
"%%PORTDOCS%%%%DOCSDIR%%/CONTACT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5291
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:5295
#, no-wrap
msgid "PORTDOCS=\tREADME.* ChangeLog docs/*\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5300
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:5304
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:5307
#, no-wrap
msgid "Subdirectories Under `PREFIX`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5316
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:5318
#, 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:5321
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:5323
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:5325
#, 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:5330
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:5332
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:5338
#, 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:5343
#, 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:5348
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:5354
#, 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:5357
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:5364
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/porting-dads/_index.po b/documentation/content/en/books/porters-handbook/porting-dads/_index.po
index 98f3082246..346864fc55 100644
--- a/documentation/content/en/books/porters-handbook/porting-dads/_index.po
+++ b/documentation/content/en/books/porters-handbook/porting-dads/_index.po
@@ -1,1149 +1,1157 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/porting-dads/_index.adoc:1
#, no-wrap
msgid "A list of common dos and don'ts that are encountered during the FreeBSD porting process"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:1
#, no-wrap
msgid "Chapter 13. Dos and Don'ts"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:13
#, no-wrap
msgid "Dos and Don'ts"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:53
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:59
msgid ""
"Here is a list of common dos and don'ts that are encountered during the "
"porting process. Check the port against this list, but also check ports in "
"the https://bugs.FreeBSD.org/search/[PR database] that others have "
"submitted. Submit any comments on ports as described in extref:"
"{contributing}[Bug Reports and General Commentary, CONTRIB-GENERAL]. "
"Checking ports in the PR database will both make it faster for us to commit "
"them, and prove that you know what you are doing."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:61
#, no-wrap
msgid "`WRKDIR`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:65
msgid ""
"Do not write anything to files outside `WRKDIR`. `WRKDIR` is the only place "
"that is guaranteed to be writable during the port build (see extref:"
"{handbook}[ installing ports from a CDROM, PORTS-CD] for an example of "
"building ports from a read-only tree). The [.filename]##pkg-*## files can "
"be modified by crossref:pkg-files[pkg-names,redefining a variable] rather "
"than overwriting the file."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:67
#, no-wrap
msgid "`WRKDIRPREFIX`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:72
msgid ""
"Make sure the port honors `WRKDIRPREFIX`. Most ports do not have to worry "
"about this. In particular, when referring to a `WRKDIR` of another port, "
"note that the correct location is [.filename]#${WRKDIRPREFIX}${PORTSDIR}/"
"subdir/name/work# not [.filename]#${PORTSDIR}/subdir/name/work# or [."
"filename]#${.CURDIR}/../../subdir/name/work# or some such."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:74
#, no-wrap
msgid "Differentiating Operating Systems and OS Versions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:78
msgid ""
"Some code needs modifications or conditional compilation based upon what "
"version of FreeBSD Unix it is running under. The preferred way to tell "
"FreeBSD versions apart are the `{freebsd-version}` and `{freebsd}` macros "
"defined in https://cgit.freebsd.org/src/tree/sys/sys/param.h[sys/param.h]. "
"If this file is not included add the code,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:82
#, no-wrap
msgid "#include <sys/param.h>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:85
msgid "to the proper place in the [.filename]#.c# file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:88
msgid ""
"`{freebsd}` is defined in all versions of FreeBSD as their major version "
"number. For example, in FreeBSD 9.x, `{freebsd}` is defined to be `9`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:96
#, no-wrap
msgid ""
"#if __FreeBSD__ >= 9\n"
"# if __FreeBSD_version >= 901000\n"
"\t /* 9.1+ release specific code here */\n"
"# endif\n"
"#endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:99
msgid ""
"A complete list of `{freebsd-version}` values is available in crossref:"
"versions[versions,__FreeBSD_version Values]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:101
#, no-wrap
msgid "Writing Something After bsd.port.mk"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:105
msgid ""
"Do not write anything after the `.include <bsd.port.mk>` line. It usually "
"can be avoided by including [.filename]#bsd.port.pre.mk# somewhere in the "
"middle of the [.filename]#Makefile# and [.filename]#bsd.port.post.mk# at the "
"end."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:109
msgid ""
"Include either the [.filename]#bsd.port.pre.mk#/[.filename]#bsd.port.post."
"mk# pair or [.filename]#bsd.port.mk# only; do not mix these two usages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:112
msgid ""
"[.filename]#bsd.port.pre.mk# only defines a few variables, which can be used "
"in tests in the [.filename]#Makefile#, [.filename]#bsd.port.post.mk# defines "
"the rest."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:114
msgid ""
"Here are some important variables defined in [.filename]#bsd.port.pre.mk# "
"(this is not the complete list, please read [.filename]#bsd.port.mk# for the "
"complete list)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:119
#, no-wrap
msgid "Variable"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:121
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:122
#, no-wrap
msgid "`ARCH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:124
#, no-wrap
msgid "The architecture as returned by `uname -m` (for example, `i386`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:125
#, no-wrap
msgid "`OPSYS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:127
#, no-wrap
msgid "The operating system type, as returned by `uname -s` (for example, `FreeBSD`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:128
#, no-wrap
msgid "`OSREL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:130
#, no-wrap
msgid "The release version of the operating system (for example, `2.1.5` or `2.2.7`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:131
#, no-wrap
msgid "`OSVERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:133
#, no-wrap
msgid "The numeric version of the operating system; the same as crossref:versions[versions,`{freebsd-version}`]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:134
#, no-wrap
msgid "`LOCALBASE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:136
#, no-wrap
msgid "The base of the \"local\" tree (for example, `/usr/local`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:137
#, no-wrap
msgid "`PREFIX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:138
#, no-wrap
msgid "Where the port installs itself (see crossref:testing[porting-prefix,more on `PREFIX`])."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:143
msgid ""
"When `MASTERDIR` is needed, always define it before including [."
"filename]#bsd.port.pre.mk#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:146
msgid ""
"Here are some examples of things that can be added after [.filename]#bsd."
"port.pre.mk#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:153
#, no-wrap
msgid ""
"# no need to compile lang/perl5 if perl5 is already in system\n"
".if ${OSVERSION} > 300003\n"
"BROKEN=\tperl is in system\n"
".endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:156
msgid "Always use tab instead of spaces after `BROKEN=`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:158
#, no-wrap
msgid "Use the `exec` Statement in Wrapper Scripts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:163
msgid ""
"If the port installs a shell script whose purpose is to launch another "
"program, and if launching that program is the last action performed by the "
"script, make sure to launch the program using the `exec` statement, for "
"instance:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:168
#, no-wrap
msgid ""
"#!/bin/sh\n"
"exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar \"$@\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:173
msgid ""
"The `exec` statement replaces the shell process with the specified program. "
"If `exec` is omitted, the shell process remains in memory while the program "
"is executing, and needlessly consumes system resources."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:175
#, no-wrap
msgid "Do Things Rationally"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:180
msgid ""
"The [.filename]#Makefile# should do things in a simple and reasonable "
"manner. Making it a couple of lines shorter or more readable is always "
"better. Examples include using a make `.if` construct instead of a shell "
"`if` construct, not redefining `do-extract` if redefining `EXTRACT*` is "
"enough, and using `GNU_CONFIGURE` instead of `CONFIGURE_ARGS += --"
"prefix=${PREFIX}`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:183
msgid ""
"If a lot of new code is needed to do something, there may already be an "
"implementation of it in [.filename]#bsd.port.mk#. While hard to read, there "
"are a great many seemingly-hard problems for which [.filename]#bsd.port.mk# "
"already provides a shorthand solution."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:185
#, no-wrap
msgid "Respect Both `CC` and `CXX`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:191
msgid ""
"The port must respect both `CC` and `CXX`. What we mean by this is that the "
"port must not set the values of these variables absolutely, overriding "
"existing values; instead, it may append whatever values it needs to the "
"existing values. This is so that build options that affect all ports can be "
"set globally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:193
msgid ""
"If the port does not respect these variables, please add `NO_PACKAGE=ignores "
"either cc or cxx` to the [.filename]#Makefile#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:196
msgid ""
"Here is an example of a [.filename]#Makefile# respecting both `CC` and "
"`CXX`. Note the `?=`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:200
#, no-wrap
msgid "CC?= gcc\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:205
#, no-wrap
msgid "CXX?= g++\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:208
msgid "Here is an example which respects neither `CC` nor `CXX`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:212
#, no-wrap
msgid "CC= gcc\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:217
#, no-wrap
msgid "CXX= g++\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:222
msgid ""
"Both `CC` and `CXX` can be defined on FreeBSD systems in [.filename]#/etc/"
"make.conf#. The first example defines a value if it was not previously set "
"in [.filename]#/etc/make.conf#, preserving any system-wide definitions. The "
"second example clobbers anything previously defined."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:224
#, no-wrap
msgid "Respect `CFLAGS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:230
msgid ""
"The port must respect `CFLAGS`. What we mean by this is that the port must "
"not set the value of this variable absolutely, overriding the existing "
"value. Instead, it may append whatever values it needs to the existing "
"value. This is so that build options that affect all ports can be set "
"globally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:232
msgid ""
"If it does not, please add `NO_PACKAGE=ignores cflags` to the [."
"filename]#Makefile#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:234
msgid ""
"Here is an example of a [.filename]#Makefile# respecting `CFLAGS`. Note the "
"`+=`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:238
#, no-wrap
msgid "CFLAGS+= -Wall -Werror\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:241
msgid "Here is an example which does not respect `CFLAGS`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:245
#, no-wrap
msgid "CFLAGS= -Wall -Werror\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:250
msgid ""
"`CFLAGS` is defined on FreeBSD systems in [.filename]#/etc/make.conf#. The "
"first example appends additional flags to `CFLAGS`, preserving any system-"
"wide definitions. The second example clobbers anything previously defined."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:254
msgid ""
"Remove optimization flags from the third party [.filename]##Makefile##s. "
"The system `CFLAGS` contains system-wide optimization flags. An example "
"from an unmodified [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:258
#, no-wrap
msgid "CFLAGS= -O3 -funroll-loops -DHAVE_SOUND\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:261
msgid ""
"Using system optimization flags, the [.filename]#Makefile# would look "
"similar to this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:265
#, no-wrap
msgid "CFLAGS+= -DHAVE_SOUND\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:268
#, no-wrap
msgid "Verbose Build Logs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:272
msgid ""
"Make the port build system display all commands executed during the build "
"stage. Complete build logs are crucial to debugging port problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:274
msgid "Non-informative build log example (bad):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:280
#, no-wrap
msgid ""
" CC source1.o\n"
" CC source2.o\n"
" CCLD someprogram\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:283
msgid "Verbose build log example (good):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:289
#, no-wrap
msgid ""
"cc -O2 -pipe -I/usr/local/include -c -o source1.o source1.c\n"
"cc -O2 -pipe -I/usr/local/include -c -o source2.o source2.c\n"
"cc -o someprogram source1.o source2.o -L/usr/local/lib -lsomelib\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:293
msgid ""
"Some build systems such as CMake, ninja, and GNU configure are set up for "
"verbose logging by the ports framework. In other cases, ports might need "
"individual tweaks."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:295
#, no-wrap
msgid "Feedback"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:299
msgid ""
"Do send applicable changes and patches to the upstream maintainer for "
"inclusion in the next release of the code. This makes updating to the next "
"release that much easier."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:301
#, no-wrap
msgid "README.html"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:305
msgid ""
"[.filename]#README.html# is not part of the port, but generated by `make "
"readme`. Do not include this file in patches or commits."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:309
msgid ""
"If `make readme` fails, make sure that the default value of `ECHO_MSG` has "
"not been modified by the port."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:312
#, no-wrap
msgid "Marking a Port Not Installable with `BROKEN`, `FORBIDDEN`, or `IGNORE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:319
msgid ""
"In certain cases, users must be prevented from installing a port. There are "
"several variables that can be used in a port's [.filename]#Makefile# to tell "
"the user that the port cannot be installed. The value of these make "
"variables will be the reason that is shown to users for why the port refuses "
"to install itself. Please use the correct make variable. Each variable "
"conveys radically different meanings, both to users and to automated systems "
"that depend on [.filename]##Makefile##s, such as crossref:keeping-up[build-"
"cluster,the ports build cluster], and crossref:keeping-up[freshports,"
"FreshPorts]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:321
#, no-wrap
msgid "Variables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:324
msgid ""
"`BROKEN` is reserved for ports that currently do not compile, install, "
"deinstall, or run correctly. Use it for ports where the problem is believed "
"to be temporary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:327
msgid ""
"If instructed, the build cluster will still attempt to try to build them to "
"see if the underlying problem has been resolved. (However, in general, the "
"cluster is run without this.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:329
msgid "For instance, use `BROKEN` when a port:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:331
msgid "does not compile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:332
msgid "fails its configuration or installation process"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:333
msgid "installs files outside of [.filename]#${PREFIX}#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:334
msgid ""
"does not remove all its files cleanly upon deinstall (however, it may be "
"acceptable, and desirable, for the port to leave user-modified files behind)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:335
msgid "has runtime issues on systems where it is supposed to run fine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:337
msgid ""
"`FORBIDDEN` is used for ports that contain a security vulnerability or "
"induce grave concern regarding the security of a FreeBSD system with a given "
"port installed (for example, a reputably insecure program or a program that "
"provides easily exploitable services). Mark ports as `FORBIDDEN` as soon as "
"a particular piece of software has a vulnerability and there is no released "
"upgrade. Ideally upgrade ports as soon as possible when a security "
"vulnerability is discovered so as to reduce the number of vulnerable FreeBSD "
"hosts (we like being known for being secure), however sometimes there is a "
"noticeable time gap between disclosure of a vulnerability and an updated "
"release of the vulnerable software. Do not mark a port `FORBIDDEN` for any "
"reason other than security."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:338
msgid ""
"`IGNORE` is reserved for ports that must not be built for some other reason. "
"Use it for ports where the problem is believed to be structural. The build "
"cluster will not, under any circumstances, build ports marked as `IGNORE`. "
"For instance, use `IGNORE` when a port:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:340
msgid "does not work on the installed version of FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:341
msgid ""
"has a distfile which may not be automatically fetched due to licensing "
"restrictions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:342
msgid ""
"does not work with some other currently installed port (for instance, the "
"port depends on package:www/drupal7[] but package:www/drupal8[] is installed)"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:347
msgid ""
"If a port would conflict with a currently installed port (for example, if "
"they install a file in the same place that performs a different function), "
"crossref:makefiles[conflicts,use `CONFLICTS` instead]. `CONFLICTS` will set "
"`IGNORE` by itself."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:350
#, no-wrap
msgid "Implementation Notes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:354
msgid ""
"Do not quote the values of `BROKEN`, `IGNORE`, and related variables. Due "
"to the way the information is shown to the user, the wording of messages for "
"each variable differ:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:358
#, no-wrap
msgid "BROKEN=\tfails to link with base -lcrypto\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:363
#, no-wrap
msgid "IGNORE=\tunsupported on recent versions\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:366
msgid "resulting in this output from `make describe`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:370
#, no-wrap
msgid "===> foobar-0.1 is marked as broken: fails to link with base -lcrypto.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:375
#, no-wrap
msgid "===> foobar-0.1 is unsupported on recent versions.\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:378
#, no-wrap
msgid "Architectural Considerations"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:381
#, no-wrap
msgid "General Notes on Architectures"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:385
msgid ""
"FreeBSD runs on many more processor architectures than just the well-known "
"x86-based ones. Some ports have constraints which are particular to one or "
"more of these architectures."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:387
msgid "For the list of supported architectures, run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:391
#, no-wrap
msgid "cd ${SRCDIR}; make targets\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:396
msgid ""
"The values are shown in the form `TARGET`/`TARGET_ARCH`. The ports read-"
"only makevar `ARCH` is set based on the value of `TARGET_ARCH`. Port [."
"filename]##Makefile##s should test the value of this Makevar."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:398
#, no-wrap
msgid "Marking a Port as Architecture Neutral"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:401
msgid ""
"Ports that do not have any architecture-dependent files or requirements are "
"identified by setting `NO_ARCH=yes`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:403
msgid ""
"Packages built from such ports have their architecture string ending in `:*` "
"(wildcard architecture) as opposed to, for example, `freebsd:13:x86:64` "
"(amd64 architecture)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:409
msgid ""
"`NO_ARCH` is meant to indicate that there is no need to build a package for "
"each of the supported architectures. The goal is to reduce the amount of "
"resources spent on building and distributing the packages such as network "
"bandwidth and disk space on mirrors and on distribution media. Currently, "
"however, our package infrastructure (e.g., package managers, mirrors, and "
"package builders) is not set up to fully benefit from `NO_ARCH`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:412
#, no-wrap
msgid "Marking a Port as Ignored Only On Certain Architectures"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:415
msgid ""
"To mark a port as ``IGNORE``d only on certain architectures, there are two "
"other convenience variables that will automatically set `IGNORE`: "
"`ONLY_FOR_ARCHS` and `NOT_FOR_ARCHS`. Examples:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:419
#, no-wrap
msgid "ONLY_FOR_ARCHS=\ti386 amd64\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:424
#, no-wrap
msgid "NOT_FOR_ARCHS=\tia64 sparc64\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:428
msgid ""
"A custom `IGNORE` message can be set using `ONLY_FOR_ARCHS_REASON` and "
"`NOT_FOR_ARCHS_REASON`. Per architecture entries are possible with "
"`ONLY_FOR_ARCHS_REASON_ARCH` and `NOT_FOR_ARCHS_REASON_ARCH`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:431
msgid ""
"If a port fetches i386 binaries and installs them, set `IA32_BINARY_PORT`. "
"If this variable is set, [.filename]#/usr/lib32# must be present for IA32 "
"versions of libraries and the kernel must support IA32 compatibility. If one "
"of these two dependencies is not satisfied, `IGNORE` will be set "
"automatically."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:433
#, no-wrap
msgid "Cluster-Specific Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:436
msgid ""
"Some ports attempt to tune themselves to the exact machine they are being "
"built on by specifying `-march=native` to the compiler. This should be "
"avoided: either list it under an off-by-default option, or delete it "
"entirely."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:438
msgid ""
"Otherwise, the default package produced by the build cluster might not run "
"on every single machine of that `ARCH`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:440
#, no-wrap
msgid "Marking a Port for Removal with `DEPRECATED` or `EXPIRATION_DATE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:444
msgid ""
"Do remember that `BROKEN` and `FORBIDDEN` are to be used as a temporary "
"resort if a port is not working. Permanently broken ports will be removed "
"from the tree entirely."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:448
msgid ""
"When it makes sense to do so, users can be warned about a pending port "
"removal with `DEPRECATED` and `EXPIRATION_DATE`. The former is a string "
"stating why the port is scheduled for removal; the latter is a string in ISO "
"8601 format (YYYY-MM-DD). Both will be shown to the user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:450
msgid ""
"It is possible to set `DEPRECATED` without an `EXPIRATION_DATE` (for "
"instance, recommending a newer version of the port), but the converse does "
"not make any sense."
msgstr ""
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:456
+msgid ""
+"When marking a port as `DEPRECATED`, if there are any alternative ports that "
+"can be used as a replacement for the one being deprecated, it is convenient "
+"to mention them in the commit message."
+msgstr ""
+
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:454
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:461
msgid ""
"There is no set policy on how much notice to give. Current practice seems "
"to be one month for security-related issues and two months for build "
"issues. This also gives any interested committers a little time to fix the "
"problems."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:456
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:463
#, no-wrap
msgid "Avoid Use of the `.error` Construct"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:460
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:467
msgid ""
"The correct way for a [.filename]#Makefile# to signal that the port cannot "
"be installed due to some external factor (for instance, the user has "
"specified an illegal combination of build options) is to set a non-blank "
"value to `IGNORE`. This value will be formatted and shown to the user by "
"`make install`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:466
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:473
msgid ""
"It is a common mistake to use `.error` for this purpose. The problem with "
"this is that many automated tools that work with the ports tree will fail in "
"this situation. The most common occurrence of this is seen when trying to "
"build [.filename]#/usr/ports/INDEX# (see crossref:testing[make-describe,"
"Running `make describe`]). However, even more trivial commands such as "
"`make maintainer` also fail in this scenario. This is not acceptable."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:468
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:475
#, no-wrap
msgid "How to Avoid Using `.error`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:473
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:480
msgid ""
"The first of the next two [.filename]#Makefile# snippets will cause `make "
"index` to fail, while the second one will not:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:477
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:484
#, no-wrap
msgid ".error \"option is not supported\"\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:482
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:489
#, no-wrap
msgid "IGNORE=option is not supported\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:487
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:494
#, no-wrap
msgid "Usage of sysctl"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:492
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:499
msgid ""
"The usage of [.filename]#sysctl# is discouraged except in targets. This is "
"because the evaluation of any ``makevar``s, such as used during `make "
"index`, then has to run the command, further slowing down that process."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:494
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:501
msgid ""
"Only use man:sysctl[8] through `SYSCTL`, as it contains the fully qualified "
"path and can be overridden, if one has such a special need."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:496
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:503
#, no-wrap
msgid "Rerolling Distfiles"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:501
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:508
msgid ""
"Sometimes the authors of software change the content of released distfiles "
"without changing the file's name. Verify that the changes are official and "
"have been performed by the author. It has happened in the past that the "
"distfile was silently altered on the download servers with the intent to "
"cause harm or compromise end user security."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:504
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:511
msgid ""
"Put the old distfile aside, download the new one, unpack them and compare "
"the content with man:diff[1]. If there is nothing suspicious, update [."
"filename]#distinfo#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:508
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:515
msgid ""
"Be sure to summarize the differences in the PR and commit log, so that other "
"people know that nothing bad has happened."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:511
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:518
msgid "Contact the authors of the software and confirm the changes with them."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:513
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:520
#, no-wrap
msgid "Use POSIX Standards"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:517
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:524
msgid ""
"FreeBSD ports generally expect POSIX compliance. Some software and build "
"systems make assumptions based on a particular operating system or "
"environment that can cause problems when used in a port."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:520
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:527
msgid ""
"Do not use [.filename]#/proc# if there are any other ways of getting the "
"information. For example, `setprogname(argv[0])` in `main()` and then man:"
"getprogname[3] to know the executable name."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:522
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:529
msgid "Do not rely on behavior that is undocumented by POSIX."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:526
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:533
msgid ""
"Do not record timestamps in the critical path of the application if it also "
"works without. Getting timestamps may be slow, depending on the accuracy of "
"timestamps in the OS. If timestamps are really needed, determine how "
"precise they have to be and use an API which is documented to just deliver "
"the needed precision."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:530
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:537
msgid ""
"A number of simple syscalls (for example man:gettimeofday[2], man:getpid[2]) "
"are much faster on Linux(R) than on any other operating system due to "
"caching and the vsyscall performance optimizations. Do not rely on them "
"being cheap in performance-critical applications. In general, try hard to "
"avoid syscalls if possible."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:533
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:540
msgid ""
"Do not rely on Linux(R)-specific socket behavior. In particular, default "
"socket buffer sizes are different (call man:setsockopt[2] with `SO_SNDBUF` "
"and `SO_RCVBUF`, and while Linux(R)'s man:send[2] blocks when the socket "
"buffer is full, FreeBSD's will fail and set `ENOBUFS` in errno."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:535
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:542
msgid ""
"If relying on non-standard behavior is required, encapsulate it properly "
"into a generic API, do a check for the behavior in the configure stage, and "
"stop if it is missing."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:537
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:544
msgid ""
"Check the https://man.freebsd.org/cgi/man.cgi[man pages] to see if the "
"function used is a POSIX interface (in the \"STANDARDS\" section of the man "
"page)."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:540
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:547
msgid ""
"Do not assume that [.filename]#/bin/sh# is bash. Ensure that a command line "
"passed to man:system[3] will work with a POSIX compliant shell."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:542
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:549
msgid ""
"A list of common bashisms is available https://wiki.ubuntu.com/"
"DashAsBinSh[here]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:545
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:552
msgid ""
"Check that headers are included in the POSIX or man page recommended way. "
"For example, [.filename]#sys/types.h# is often forgotten, which is not as "
"much of a problem for Linux(R) as it is for FreeBSD."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:547
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:554
#, no-wrap
msgid "Miscellanea"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:551
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:558
msgid ""
"Always double-check [.filename]#pkg-descr# and [.filename]#pkg-plist#. If "
"reviewing a port and a better wording can be achieved, do so."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:552
+#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:559
msgid ""
"Please be careful to note any legal issues! Do not let us illegally "
"distribute software!"
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/testing/_index.po b/documentation/content/en/books/porters-handbook/testing/_index.po
index f5adf6d6f6..f5c5d71be1 100644
--- a/documentation/content/en/books/porters-handbook/testing/_index.po
+++ b/documentation/content/en/books/porters-handbook/testing/_index.po
@@ -1,1251 +1,1154 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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."
+"errors, both functional and stylistic. For a new 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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:89
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}."
+"limitations in the ports framework. pass:[<!-- vale Vale.Terms = NO -->] "
+"When in doubt, the best thing to do is ask on {freebsd-ports}. pass:[<!-- "
+"vale Vale.Terms = YES -->]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:89
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:91
#, no-wrap
msgid "Port Tools"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:92
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:94
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:99
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 <<testing-portlint,`portlint`>> "
"checking. This command also detects and lists any files that are not listed "
-"in [.filename]#pkg-plist#. For example:"
+"in [.filename]#pkg-plist#. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:100
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:103
#, no-wrap
msgid "# port test /usr/ports/net/csup\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:103
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:106
#, no-wrap
msgid "`PREFIX` and `DESTDIR`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:108
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:111
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:116
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:119
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:123
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:126
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:130
#, 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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:133
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:135
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:139
#, 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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:142
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:143
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:146
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 -"
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:149
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:153
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:157
#, no-wrap
msgid "-DPAGER=\\\"${LOCALBASE}/bin/less\\\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:157
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:160
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:166
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 <<testing-poudriere>> for more "
"information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:166
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:169
#, no-wrap
-msgid "Poudriere"
+msgid "poudriere"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:170
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:173
msgid ""
-"For a ports contributor, Poudriere is one of the most important and helpful "
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:175
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:176
msgid "Automatic packaging of build results"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:174
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:177
msgid "Generation of build log files per port"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:175
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:178
msgid "Providing a signed man:pkg[8] repository"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:176
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:179
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:180
msgid "Testing for successful ports builds using different options"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:180
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:183
msgid ""
-"Because Poudriere performs its building in a clean man:jail[8] environment "
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:185
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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:186
msgid "Verify [.filename]#pkg-plist# for missing or superfluous entries"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:184
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:187
msgid ""
-"Ports committers sometimes ask for a Poudriere log alongside a patch "
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:190
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 "
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:195
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."
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:197
#, no-wrap
-msgid "Installing Poudriere"
+msgid "Installing poudriere"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:198
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:201
msgid ""
-"Poudriere is available in the ports tree in package:ports-mgmt/poudriere[]. "
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:205
#, 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:208
msgid "or"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:209
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:212
#, 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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:223
msgid ""
-"There is also a work-in-progress version of Poudriere which will eventually "
+"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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:225
#, no-wrap
-msgid "Setting Up Poudriere"
+msgid "Setting Up poudriere"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:227
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:230
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 "
+"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`"
+msgid "`BASEFS`"
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`."
+"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: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
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:252
msgid ""
-"Defines where distfiles are stored. In this example, Poudriere and the host "
+"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."
+"does not already exist so that poudriere can find it."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:257
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:253
#, no-wrap
msgid "`RESOLV_CONF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:262
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:258
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:271
-msgid ""
-"The server from where jails are installed and updated when using "
-"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:273
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:260
#, no-wrap
-msgid "Creating Poudriere Jails"
+msgid "Creating poudriere Jails"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:276
-msgid "Create the base jails which Poudriere will use for building:"
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:263
+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:280
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:267
#, no-wrap
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:285
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:272
msgid ""
"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/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:289
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:276
#, no-wrap
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:294
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:281
msgid ""
"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#."
+"jails/12i386#, then check out the tip of the Git branch of `FreeBSD-12-"
+"STABLE` from `GIT_HOST` in [.filename]#poudriere.conf# or the default `git."
+"freebsd.org` 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: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:303
-#, no-wrap
-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:312
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:287
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/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:317
-msgid "To create a Poudriere jail for `14.0-CURRENT`:"
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:292
+msgid "To create a poudriere jail for `14.0-CURRENT`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:321
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:296
#, 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:327
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:301
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 `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: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."
+"In order to run a `14.0-CURRENT` poudriere jail the host 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 `12.4-STABLE` if "
+"the `COMPAT_FREEBSD12` kernel option was compiled in (on by default in `14.0-"
+"CURRENT`[.filename]#GENERIC# kernel config)."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:337
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:304
msgid ""
-"A list of jails currently known to Poudriere can be shown with `poudriere "
+"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:344
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:311
#, no-wrap
msgid ""
"# poudriere jail -l\n"
"JAILNAME VERSION ARCH METHOD\n"
"131Ramd64 13.1-RELEASE amd64 ftp\n"
-"12i386 12.3-STABLE i386 git+https\n"
+"12i386 12.4-STABLE i386 git+https\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:347
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:314
#, no-wrap
-msgid "Keeping Poudriere Jails Updated"
+msgid "Keeping poudriere Jails Updated"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:351
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:318
msgid "Managing updates is very straightforward. The command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:355
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:322
#, no-wrap
msgid "# poudriere jail -u -j JAILNAME\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:360
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:329
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."
+"updates the specified jail to the latest version available. pass:[<!-- vale "
+"Vale.Terms = NO -->] For FreeBSD releases, update to the latest patchlevel "
+"with man:freebsd-update[8]. pass:[<!-- vale Vale.Terms = YES -->] For "
+"FreeBSD versions built from source, update to the latest git revision in the "
+"branch."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:365
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:334
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:369
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:338
#, no-wrap
msgid "# poudriere jail -u -J 6 -j JAILNAME\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:374
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:343
#, no-wrap
-msgid "Setting Up Ports Trees for Use with Poudriere"
+msgid "Setting Up Ports Trees for Use with poudriere"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:378
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:347
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 "
+"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 link:{handbook}mirrors/#git[Git]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:382
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:351
#, 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:386
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:355
msgid ""
"These commands create `tank/poudriere/ports/default`, mount it on [."
"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:392
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:361
#, 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:399
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:368
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:405
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:373
msgid ""
"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: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: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."
+"checking out the tree via git (as described above) is preferable."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:420
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:375
#, no-wrap
-msgid "Using Manually Managed Ports Trees with Poudriere"
+msgid "Using Manually Managed Ports Trees with poudriere"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:424
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:379
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:426
-msgid "For Poudriere older than version 3.1.20:"
+"the ports tree in [.filename]#/work/ports#, point poudriere to the location:"
msgstr ""
#. type: delimited block . 4
-#: 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:433
-msgid "For Poudriere version 3.1.20 and later:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:437
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:383
#, 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:440
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:386
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:446
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:392
#, 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:452
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:398
msgid ""
-"The dash or `null` in the `METHOD` column means that Poudriere will not "
+"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:455
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:401
#, no-wrap
-msgid "Keeping Poudriere Ports Trees Updated"
+msgid "Keeping poudriere Ports Trees Updated"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:458
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:404
msgid "As straightforward as with jails described earlier:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:462
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:408
#, no-wrap
msgid "# poudriere ports -u -p PORTSTREE\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:465
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:411
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:470
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:415
msgid ""
"Ports trees without a method, see <<testing-poudriere-ports-tree-manual>>, "
-"cannot be updated like this. They must be updated manually by the porter."
+"cannot be updated like this and must be updated manually by the porter."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:473
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:418
#, no-wrap
msgid "Testing Ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:476
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:421
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:478
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:423
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 13.1-RELEASE jail:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:482
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:427
#, no-wrap
msgid "# poudriere testport -j 131Ramd64 -p development -o www/firefox\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:488
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:433
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:490
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:435
msgid ""
"The complete build of every port is logged to [.filename]#/poudriere/data/"
"logs/bulk/131Ri386-development/build-time/logs#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:495
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:440
msgid ""
"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/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:498
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:443
msgid ""
-"By default, Poudriere cleans up the jails and leaves log files in the "
+"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:502
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:447
#, no-wrap
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:509
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:454
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 "
+"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:523
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:468
#, no-wrap
msgid ""
"# 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 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 131Ramd64 -p development\n"
"====>> Umounting file systems\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:527
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:473
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`:"
+"poudriere as well. Adding the `-c`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:531
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:477
#, no-wrap
msgid "# poudriere testport -c -o www/firefox\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:536
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:482
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 "
"<<testing-poudriere-sets>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:541
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:487
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:544
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:490
#, no-wrap
msgid "Using Sets"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:549
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:495
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:555
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:501
msgid ""
-"To use sets, Poudriere expects an existing directory structure similar to "
+"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:"
+"add the `-z devset` parameter to the `testport` command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:559
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:602
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:505
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:549
#, no-wrap
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:562
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:508
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:564
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:510
msgid ""
"[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-options#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:565
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:511
msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-options#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:566
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:512
msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-options#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:567
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:513
msgid "[.filename]#/usr/local/etc/poudriere.d/devset-options#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:568
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:514
msgid "[.filename]#/usr/local/etc/poudriere.d/development-options#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:569
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:515
msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-options#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:570
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:516
msgid "[.filename]#/usr/local/etc/poudriere.d/options#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:573
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:519
msgid ""
-"From this list, Poudriere man:nullfs[5]-mounts the _first existing_ "
+"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:576
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:522
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:580
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:526
#, no-wrap
msgid "# poudriere options -c www/firefox -z devset\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:584
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:530
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:590
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:536
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."
+"poudriere is very flexible in the option configuration. poudriere 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:593
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:539
#, no-wrap
msgid "Providing a Custom [.filename]#make.conf# File"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:598
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:545
msgid ""
-"Similar to using sets, Poudriere will also use a custom [.filename]#make."
+"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:"
+"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:605
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:552
msgid ""
-"causes Poudriere to check for the existence of these files in this order:"
+"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:607
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:554
msgid "[.filename]#/usr/local/etc/poudriere.d/make.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:608
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:555
msgid "[.filename]#/usr/local/etc/poudriere.d/devset-make.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:609
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:556
msgid "[.filename]#/usr/local/etc/poudriere.d/development-make.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:610
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:557
msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-make.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:611
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:558
msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-make.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:612
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:559
msgid "[.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-make.conf#"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:613
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:560
msgid ""
"[.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-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:564
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/131Ramd64-development-devset-make.conf#."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:619
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:566
#, 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:624
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:571
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:628
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:575
#, no-wrap
msgid "DEFAULT_VERSIONS+= perl=5.20\n"
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:632
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:579
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:637
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:584
#, no-wrap
msgid "Pruning no Longer Needed Distfiles"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:641
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:588
msgid ""
-"Poudriere comes with a built-in mechanism to remove outdated distfiles that "
+"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:645
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:592
#, no-wrap
msgid "# poudriere distclean -p portstree\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/testing/_index.adoc:650
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:597
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:654
+#: documentation/content/en/books/porters-handbook/testing/_index.adoc:601
#, no-wrap
msgid "# poudriere distclean -p portstree -y\n"
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/versions/_index.po b/documentation/content/en/books/porters-handbook/versions/_index.po
index 5ff67fe00d..921aa22eb4 100644
--- a/documentation/content/en/books/porters-handbook/versions/_index.po
+++ b/documentation/content/en/books/porters-handbook/versions/_index.po
@@ -1,32014 +1,32023 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2023-04-20 20:56-0300\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/versions/_index.adoc:1
#, no-wrap
msgid "A list of changes to the sys/param.h file"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1
#, no-wrap
msgid "Chapter 18. __FreeBSD_version Values"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:12
#, no-wrap
msgid "`__FreeBSD_version` Values"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:50
msgid ""
"Here is a convenient list of `__FreeBSD_version` values as defined in "
"https://cgit.freebsd.org/src/tree/sys/sys/param.h[sys/param.h]:"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:52
#, no-wrap
msgid "FreeBSD 14 Versions"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:55
#, no-wrap
msgid "FreeBSD 14 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:59
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:452
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1410
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2213
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3196
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3884
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4327
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5100
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5568
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5946
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6574
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6932
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7050
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4331
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7154
#, no-wrap
msgid "Value"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:60
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:453
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1411
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2214
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3197
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3885
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4328
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5101
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5569
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5947
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6575
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6933
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7051
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6581
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7155
#, no-wrap
msgid "Revision"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:61
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:454
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1412
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2215
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3198
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3886
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4329
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5102
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5570
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5948
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6576
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6934
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7052
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5108
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5576
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5954
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6940
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7156
#, no-wrap
msgid "Date"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:63
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:456
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1414
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2217
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3200
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3888
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4331
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5104
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5572
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5950
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6578
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6936
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7054
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4335
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7158
#, no-wrap
msgid "Release"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:64
#, no-wrap
msgid "1400000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:65
#, no-wrap
msgid "gitref:a53ce3fc4938e37d5ec89304846203d2083c61a2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:66
#, no-wrap
msgid "January 22, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:68
#, no-wrap
msgid "14.0-CURRENT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:69
#, no-wrap
msgid "1400001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:70
#, no-wrap
msgid "gitref:739ecbcf1c4fd22b5f6ee0bb180a67644046a3e0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:71
#, no-wrap
msgid "January 23, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:73
#, no-wrap
msgid "14.0-CURRENT after adding symlink support to lockless lookup."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:74
#, no-wrap
msgid "1400002"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:75
#, no-wrap
msgid "gitref:2cf84258922f306a3f84866685d2f5346f67db58[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:76
#, no-wrap
msgid "January 26, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:78
#, no-wrap
msgid "14.0-CURRENT after fixing a clang assertion when building the package:devel/onetbb[] port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:79
#, no-wrap
msgid "1400003"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:80
#, no-wrap
msgid "gitref:d386f3a3c32f0396aa7995349dd65d6c59711393[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:81
#, no-wrap
msgid "January 28, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:83
#, no-wrap
msgid "14.0-CURRENT after adding various LinuxKPI bits conflicting with drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:84
#, no-wrap
msgid "1400004"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:85
#, no-wrap
msgid "gitref:68f6800ce05c386ff045b4416d8595d09c4d8fdd[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:86
#, no-wrap
msgid "February 8, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:88
#, no-wrap
msgid "14.0-CURRENT after kernel interfaces for dispatching cryptographic operations were changed."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:89
#, no-wrap
msgid "1400005"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:90
#, no-wrap
msgid "gitref:45eabf5754ac1d291bd677fdf29f59ce4bbc2c8f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:91
#, no-wrap
msgid "February 17, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:93
#, no-wrap
msgid "14.0-CURRENT after changing the API of man:ptrace[2] `PT_GETDBREGS`/`PT_SETDBREGS` on arm64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:94
#, no-wrap
msgid "1400006"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:95
#, no-wrap
msgid "gitref:c96151d33509655efb7fb26768cb56a041c176f1[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:96
#, no-wrap
msgid "March 17, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:98
#, no-wrap
msgid "14.0-CURRENT after adding man:sndstat[4] enumeration ioctls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:99
#, no-wrap
msgid "1400007"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:100
#, no-wrap
msgid "gitref:d36d6816151705907393889d661cbfd25c630ca8[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:101
#, no-wrap
msgid "April 6, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:103
#, no-wrap
msgid "14.0-CURRENT after fixing wrong `dlpi_tls_data`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:104
#, no-wrap
msgid "1400008"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:105
#, no-wrap
msgid "gitref:e152bbecb221a592e7dbcabe3d1170a60f0d0dfe[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:106
#, no-wrap
msgid "April 11, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:108
#, no-wrap
-msgid "14.0-CURRENT after changing the internal KAPI between the krpc and NFS modules."
+msgid "14.0-CURRENT after changing the internal KAPI between the `krpc` and NFS modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:109
#, no-wrap
msgid "1400009"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:110
#, no-wrap
msgid "gitref:9ca874cf740ee68c5742df8b5f9e20910085c011[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:111
#, no-wrap
msgid "April 20, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:113
#, no-wrap
msgid "14.0-CURRENT after adding TCP LRO support for VLAN and VxLAN."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:114
#, no-wrap
msgid "1400010"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:115
#, no-wrap
msgid "gitref:a3a02acde1009f03dc78e979e051acee9f9247c2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:116
#, no-wrap
msgid "April 21, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:118
#, no-wrap
-msgid "14.0-CURRENT after changing the man:sndstat[4] ioctls nvlist schema and definitions."
+msgid "14.0-CURRENT after changing the man:sndstat[4] ioctls `nvlist` schema and definitions."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:119
#, no-wrap
msgid "1400015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:120
#, no-wrap
msgid "gitref:d72cd275187c6399caf0ca4125292dc7e55fa478[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:121
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:126
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:131
#, no-wrap
msgid "May 25, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:123
#, no-wrap
msgid "14.0-CURRENT after adding more LinuxKPI changes needing adjustments to drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:124
#, no-wrap
msgid "1400016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:125
#, no-wrap
msgid "gitref:21e3c1fbe2460f144f6d4dfd61c3346b2de59667[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:128
#, no-wrap
msgid "14.0-CURRENT after removing support for KTLS software backends."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:129
#, no-wrap
msgid "1400017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:130
#, no-wrap
msgid "gitref:beb817edfe22cdea91e19a60c42caabd9404da48[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:133
#, no-wrap
msgid "14.0-CURRENT after adding `crypto_cursor_segment()`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:134
#, no-wrap
msgid "1400018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:135
#, no-wrap
msgid "gitref:a4b07a2701f568c2c0f0c0426091f1489244a92d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:136
#, no-wrap
msgid "May 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:138
#, no-wrap
msgid "14.0-CURRENT after allowing the man:VFS_QUOTACTL[9] implementation to indicate busy state changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:139
#, no-wrap
msgid "1400019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:140
#, no-wrap
msgid "gitref:37d64dcdfa519157aff9711f1f226ad7bd778f46[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:141
#, no-wrap
msgid "June 7, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:143
#, no-wrap
msgid "14.0-CURRENT after including `pr_err_once()` in the LinuxKPI [.filename]#printk.h#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:144
#, no-wrap
msgid "1400020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:145
#, no-wrap
msgid "gitref:8a1a42b2a7a428fb97fda9f19fd0d67a4eec7535[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:146
#, no-wrap
msgid "June 9, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:148
#, no-wrap
msgid "14.0-CURRENT after adding macros for `might_lock_nested()` and `lockdep_(re/un/)pin_lock()` to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:149
#, no-wrap
msgid "1400021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:150
#, no-wrap
msgid "gitref:b47f461c8e67253fdb394968428b760e880baa08[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:151
#, no-wrap
msgid "June 10, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:153
#, no-wrap
msgid "14.0-CURRENT after adding a `list_for_each_entry_lockless()` macro to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:154
#, no-wrap
msgid "1400022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:155
#, no-wrap
msgid "gitref:40cc9a3a6b81a65a03712dfd93bbed48552a97ad[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:156
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1219
#, no-wrap
msgid "June 11, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:158
#, no-wrap
-msgid "14.0-CURRENT after commit gitref:e1a907a25cfa422c0d1acaf9f91352ada04f4bca[repository=\"src\",length=12] changed the internal KAPI between the krpc and nfsserver modules."
+msgid "14.0-CURRENT after commit gitref:e1a907a25cfa422c0d1acaf9f91352ada04f4bca[repository=\"src\",length=12] changed the internal KAPI between the `krpc` and nfsserver modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:159
#, no-wrap
msgid "1400023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:160
#, no-wrap
msgid "gitref:d409305fa3838fb39b38c26fc085fb729b8766d5[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:161
#, no-wrap
msgid "June 13, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:163
#, no-wrap
msgid "14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-12.0.0-0-gd28af7c654d8, a.k.a. 12.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:164
#, no-wrap
msgid "1400024"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:165
#, no-wrap
msgid "gitref:41dfd8bd6466fd39957dee2614d88c81cdf420a7[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:166
#, no-wrap
msgid "June 18, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:168
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:173
#, no-wrap
msgid "14.0-CURRENT after various additions to LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:169
#, no-wrap
msgid "1400025"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:170
#, no-wrap
msgid "gitref:5fa1eb1cd927219070b5753b64114a9240d76bf8[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:171
#, no-wrap
msgid "July 5, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:174
#, no-wrap
msgid "1400026"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:175
#, no-wrap
msgid "gitref:fad3f322efb53d4924fdda34f9f23f881659c269[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:176
#, no-wrap
msgid "July 16, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:178
#, no-wrap
msgid "14.0-CURRENT after changing the internal KAPI between the nfscommon and nfsd modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:179
#, no-wrap
msgid "1400027"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:180
#, no-wrap
msgid "gitref:cc55ee8009a550810d38777fd6ace9abf3a2f6b4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:181
#, no-wrap
msgid "July 28, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:183
#, no-wrap
msgid "14.0-CURRENT after adding out-of-line LSE atomics helpers to [.filename]#libcompiler_rt.a# on aarch64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:184
#, no-wrap
msgid "1400028"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:185
#, no-wrap
msgid "gitref:792b602a337ddc5efaa5e5326d9433fe3da7f303[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:186
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1244
#, no-wrap
msgid "July 31, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:188
#, no-wrap
msgid "14.0-CURRENT after making FPU sections thread-safe in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:189
#, no-wrap
msgid "1400029"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:190
#, no-wrap
msgid "gitref:245ec7651e4221043d1032fb3f82f335dc65fc7f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:191
#, no-wrap
msgid "August 5, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:193
#, no-wrap
msgid "14.0-CURRENT after adding man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:194
#, no-wrap
msgid "1400030"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:195
#, no-wrap
msgid "gitref:95941b963606f6e03282cd6f866f3166dcedfa5b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:196
#, no-wrap
msgid "August 12, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:198
#, no-wrap
msgid "14.0-CURRENT after man:VOP_DEALLOCATE[9] parameter changes and addition of man:fspacectl[2] support to POSIX shared memory."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:199
#, no-wrap
msgid "1400031"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:200
#, no-wrap
msgid "gitref:1a4c5061fc5ba8f2eee41456a6873547915f268a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:201
#, no-wrap
msgid "August 24, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:203
#, no-wrap
msgid "14.0-CURRENT after changing man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9] to update rmsr.r_offset to a meaningful value."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:204
#, no-wrap
msgid "1400032"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:205
#, no-wrap
msgid "gitref:76321d2d432ed270d93b282e54e59b708c0cf3b4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:206
#, no-wrap
msgid "August 25, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:208
#, no-wrap
msgid "14.0-CURRENT after changing man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9] to make calculating the number of bytes zeroed easier."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:209
#, no-wrap
msgid "1400033"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:210
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:215
#, no-wrap
msgid "gitref:c751d067c166db71ce8bf3a323c62ac3428bd32a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:211
#, no-wrap
msgid "September 7, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:213
#, no-wrap
msgid "14.0-CURRENT after moving the socket buffer locks into the containing socket and renaming sb(un)lock to SOCK_IO_RECV_LOCK, SOCK_IO_RECV_UNLOCK, SOCK_IO_SEND_LOCK, and SOCK_IO_SEND_UNLOCK."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:214
#, no-wrap
msgid "1400034"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:216
#, no-wrap
msgid "September 29, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:218
#, no-wrap
msgid "14.0-CURRENT after LinuxKPI changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:219
#, no-wrap
msgid "1400035"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:220
#, no-wrap
msgid "gitref:16f1ee11e6574d7f8d8a9dc6ebc9be3036ff9fd0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:221
#, no-wrap
msgid "October 4, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:223
#, no-wrap
msgid "14.0-CURRENT after splitting libtinfow from libncurses."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:224
#, no-wrap
msgid "1400036"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:225
#, no-wrap
msgid "gitref:ac847dbf73685a5df9f70bbcdefa9fdeb559071d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:226
#, no-wrap
msgid "October 6, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:228
#, no-wrap
msgid "14.0-CURRENT after extending the AES-CCM and Chacha20-Poly1305 ciphers in OCF to support multiple nonce lengths."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:229
#, no-wrap
msgid "1400037"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:230
#, no-wrap
msgid "gitref:2b68eb8e1dbbdaf6a0df1c83b26f5403ca52d4c3[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:231
#, no-wrap
msgid "October 11, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:233
#, no-wrap
-msgid "14.0-CURRENT after removal of thread argument from man:VOP_STAT[9] and fo_stat."
+msgid "14.0-CURRENT after removal of thread argument from man:VOP_STAT[9] and `fo_stat`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:234
#, no-wrap
msgid "1400038"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:235
#, no-wrap
msgid "gitref:0d6516b453469ce1d92ec903c4c4df9ee08be0f9[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:236
#, no-wrap
msgid "October 17, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:238
#, no-wrap
msgid "14.0-CURRENT after LinuxKPI gained support of lazy BAR allocation."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:239
#, no-wrap
msgid "1400039"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:240
#, no-wrap
msgid "gitref:bd49c454ca62170506a98959c1acab7ad50c3276[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:241
#, no-wrap
msgid "October 19, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:243
#, no-wrap
msgid "14.0-CURRENT after page allocator changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:244
#, no-wrap
msgid "1400040"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:245
#, no-wrap
msgid "gitref:f38bef2ce417d6270f32b4ed17cec84bfd95d548[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:246
#, no-wrap
msgid "October 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:248
#, no-wrap
msgid "14.0-CURRENT after libdialog shared library version number bump."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:249
#, no-wrap
msgid "1400041"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:250
#, no-wrap
msgid "gitref:0c276dee030b241e12e1ceb1b2ab619004f08ce1[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:251
#, no-wrap
msgid "November 6, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:253
#, no-wrap
msgid "14.0-CURRENT after changing the arguments for man:VOP_ALLOCATE[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:254
#, no-wrap
msgid "1400042"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:255
#, no-wrap
msgid "gitref:20aa359773befc8182f6b5dcb5aad7390cab6c26[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:256
#, no-wrap
msgid "November 13, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:258
#, no-wrap
msgid "14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-13.0.0-0-gd7b669b3a303, a.k.a. 13.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:259
#, no-wrap
msgid "1400043"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:260
#, no-wrap
msgid "gitref:7e1d3eefd410ca0fbae5a217422821244c3eeee4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:261
#, no-wrap
msgid "November 25, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:263
#, no-wrap
msgid "14.0-CURRENT after removing the unused thread argument from man:NDINIT[9]*."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:264
#, no-wrap
msgid "1400044"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:265
#, no-wrap
msgid "gitref:ec434c85b46dd715da1940e2a8911bf476b0e477[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:266
#, no-wrap
msgid "December 9, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:268
#, no-wrap
msgid "14.0-CURRENT after changing in-kernel software crypto ciphers transforms to support AEAD ciphers and changing the Blake-2S/B auth transforms to support Init before Setkey like other auth transforms."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:269
#, no-wrap
msgid "1400045"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:270
#, no-wrap
msgid "gitref:b214fcceacad6b842545150664bd2695c1c2b34f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:271
#, no-wrap
msgid "December 15, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:273
#, no-wrap
msgid "14.0-CURRENT after changing man:VOP_READDIR[9]'s cookies argument to a `**uint64_t`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:274
#, no-wrap
msgid "1400046"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:275
#, no-wrap
msgid "gitref:e2650af157bc7489deaf2c9054995f0f88a6e5da[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:276
#, no-wrap
msgid "December 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:278
#, no-wrap
msgid "14.0-CURRENT after making the CPU_SET macros compatible with glibc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:279
#, no-wrap
msgid "1400047"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:280
#, no-wrap
msgid "gitref:ed6417cd8d0bb5a2c175fce9d8e4a495fae9e9f4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:281
#, no-wrap
msgid "January 17, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:283
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:363
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:373
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:378
#, no-wrap
msgid "14.0-CURRENT after multiple LinuxKPI changes required by drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:284
#, no-wrap
msgid "1400048"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:285
#, no-wrap
msgid "gitref:dd2f7a4b45eb1285e710cfce60cb77f7c11f8075[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:286
#, no-wrap
msgid "January 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:288
#, no-wrap
msgid "14.0-CURRENT after adding <crypto/chacha20_poly1305.h>."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:289
#, no-wrap
msgid "1400049"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:290
#, no-wrap
msgid "gitref:2c4b65cc3d227f31864e183c15f6c42e2c596cd9[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:291
#, no-wrap
msgid "January 24, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:293
#, no-wrap
msgid "14.0-CURRENT after adding <crypto/curve25519.h>."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:294
#, no-wrap
msgid "1400050"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:295
#, no-wrap
msgid "gitref:213e91399b7998554d787bb290109ebe602aa279[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:296
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:301
#, no-wrap
msgid "January 25, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:298
#, no-wrap
-msgid "14.0-CURRENT after iflib adds the feature that a driver can set its own TX queue selection function as ift_txq_select in struct if_txrx."
+msgid "14.0-CURRENT after iflib adds the feature that a driver can set its own TX queue selection function as `ift_txq_select` in struct `if_txrx`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:299
#, no-wrap
msgid "1400051"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:300
#, no-wrap
msgid "gitref:59d465e200bb7058dfdb183c061730c10dd5bc03[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:303
#, no-wrap
msgid "14.0-CURRENT after adding i2c support for LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:304
#, no-wrap
msgid "1400052"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:305
#, no-wrap
msgid "gitref:05f0b24bfb3416606c8ea02bc1bdb9bcee7aee0c[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:306
#, no-wrap
msgid "February 14, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:308
#, no-wrap
msgid "14.0-CURRENT after adding GUID_INIT and pm_qos.h support for LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:309
#, no-wrap
msgid "1400053"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:310
#, no-wrap
msgid "gitref:ba87e9bf74202b08b8e3b0a297b9b88f6869fbfb[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:311
#, no-wrap
msgid "February 17, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:313
#, no-wrap
msgid "14.0-CURRENT after adding mmap_lock.h to LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:314
#, no-wrap
msgid "1400054"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:315
#, no-wrap
msgid "gitref:50bb3a33d879536e86e8a23365f070ef00b5cb32[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:316
#, no-wrap
msgid "March 28, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:318
#, no-wrap
-msgid "14.0-CURRENT after changing irq_work_queue to return a bool in LinuxKPI to match 5.10 API."
+msgid "14.0-CURRENT after changing `irq_work_queue` to return a bool in LinuxKPI to match 5.10 API."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:319
#, no-wrap
msgid "1400055"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:320
#, no-wrap
msgid "gitref:d69af4758be912625ec08656ba64eb90a98c9a7f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:321
#, no-wrap
msgid "March 29, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:323
#, no-wrap
-msgid "14.0-CURRENT after adding for_each_sgtable_dma_sg and for_each_sgtable_dma_page to LinuxKPI"
+msgid "14.0-CURRENT after adding `for_each_sgtable_dma_sg` and `for_each_sgtable_dma_page` to LinuxKPI"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:324
#, no-wrap
msgid "1400056"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:325
#, no-wrap
msgid "gitref:ab8ac4c28574a42a2891b2e2341f802949c1fb57[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:326
#, no-wrap
msgid "March 31, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:328
#, no-wrap
msgid "14.0-CURRENT after zlib upgrade to 1.2.12"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:329
#, no-wrap
msgid "1400057"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:330
#, no-wrap
msgid "gitref:e68b35e40881a1bd858e1b4b5003123a484fd7cd[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:331
#, no-wrap
msgid "April 22, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:333
#, no-wrap
msgid "14.0-CURRENT after changing udp_tun_func_t() prototype."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:334
#, no-wrap
msgid "1400058"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:335
#, no-wrap
msgid "gitref:2e32d4e41d205d6f14834f87306a77ff77b9c0bd[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:336
#, no-wrap
msgid "May 7, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:338
#, no-wrap
msgid "14.0-CURRENT after newbus changes to remove devclass arguments."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:339
#, no-wrap
msgid "1400059"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:340
#, no-wrap
msgid "gitref:3a9a9c0ca44ec535dcf73fe8462bee458e54814b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:341
#, no-wrap
msgid "May 14, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:343
#, no-wrap
msgid "14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-14.0.3-0-g1f9140064dfb, a.k.a. 14.0.3 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:344
#, no-wrap
msgid "1400060"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:345
#, no-wrap
msgid "gitref:85d7875d42913c2cb10a007a1be05b210dc6aab2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:346
#, no-wrap
msgid "June 6, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:348
#, no-wrap
msgid "14.0-CURRENT after LinuxKPI dmi_matches() fixes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:349
#, no-wrap
msgid "1400061"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:350
#, no-wrap
msgid "gitref:c4c5981c14d5bd69e9df9ae691069ec4c2e92174[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:351
#, no-wrap
msgid "June 8, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:353
#, no-wrap
msgid "14.0-CURRENT after mbuf(9) structure changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:354
#, no-wrap
msgid "1400062"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:355
#, no-wrap
msgid "gitref:8c309d48aabf1cb469334c7716033f177a2715c0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:356
#, no-wrap
msgid "June 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:358
#, no-wrap
-msgid "14.0-CURRENT after struct kinfo_file changes."
+msgid "14.0-CURRENT after struct `kinfo_file` changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:359
#, no-wrap
msgid "1400063"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:360
#, no-wrap
msgid "gitref:8cff8e6e13a6d3ccff40fc0d8d97f5aef22a8f4d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:361
#, no-wrap
msgid "June 29, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:364
#, no-wrap
msgid "1400064"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:365
#, no-wrap
msgid "gitref:ddd9004e7a5dbf02c34ef0effcef90f7d5df357d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:366
#, no-wrap
msgid "July 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:368
#, no-wrap
msgid "14.0-CURRENT after the removal of OBJT_DEFAULT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:369
#, no-wrap
msgid "1400065"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:370
#, no-wrap
msgid "gitref:b273f93657cf0e6f2c6ee4d0f40a43656233c6d0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:371
#, no-wrap
msgid "August 8, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:374
#, no-wrap
msgid "1400066"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:375
#, no-wrap
msgid "gitref:ff7812ee7d444b738a454064f9639c3feb5743e8[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:376
#, no-wrap
msgid "August 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:379
#, no-wrap
msgid "1400069"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:380
#, no-wrap
msgid "gitref:f95c0bc89ea4fcde04b0990d57e842ef387ea896[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:381
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:386
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:396
#, no-wrap
msgid "September 22, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:383
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:428
#, no-wrap
msgid "14.0-CURRENT after multiple LinuxKPI changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:384
#, no-wrap
msgid "1400070"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:385
#, no-wrap
msgid "gitref:6bddde307e21eba297ac3f3e534b4cf3be81dfe2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:388
#, no-wrap
msgid "14.0-CURRENT after KPI changes to pmap_unmapdev() and kmem_*()."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:389
#, no-wrap
msgid "1400071"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:390
#, no-wrap
msgid "gitref:d3f96f661050e9bd21fe29931992a8b9e67ff189[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:391
#, no-wrap
msgid "September 26, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:393
#, no-wrap
msgid "14.0-CURRENT after KPI changes that sysctl OIDs lists converted to RB trees."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:394
#, no-wrap
msgid "1400072"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:395
#, no-wrap
msgid "gitref:8a96874eeeee5195b0b0952b77227bef6a26d1a6[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:398
#, no-wrap
-msgid "14.0-CURRENT after qsort_r prototype modified to match POSIX."
+msgid "14.0-CURRENT after `qsort_r` prototype modified to match POSIX."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:399
#, no-wrap
msgid "1400073"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:400
#, no-wrap
msgid "gitref:9c950139051298831ce19d01ea5fb33ec6ea7f89[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:401
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1344
#, no-wrap
msgid "October 17, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:403
#, no-wrap
msgid "14.0-CURRENT after introduction of v2 of TX Queue Select Functionality."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:404
#, no-wrap
msgid "1400074"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:405
#, no-wrap
msgid "gitref:e28932c643e891294a49f386ba65322cf8410225[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:406
#, no-wrap
msgid "December 9, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:408
#, no-wrap
msgid "14.0-CURRENT after adding spare fops slots in fileops."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:409
#, no-wrap
msgid "1400078"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:410
#, no-wrap
msgid "gitref:4b56afaf7bf4fa37bae5b26fd93ee1ff5969c1bb[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:411
#, no-wrap
msgid "January 13, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:413
#, no-wrap
msgid "14.0-CURRENT after changing LinuxKPI pci.h."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:414
#, no-wrap
msgid "1400079"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:415
#, no-wrap
msgid "gitref:3264f6b88fce7c5437d205685863617d8f6a22dd[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:416
#, no-wrap
msgid "February 8, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:418
#, no-wrap
msgid "14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-15.0.7-0-g8dfdcc7b7bf6, a.k.a. 15.0.7 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:419
#, no-wrap
msgid "1400084"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:420
#, no-wrap
msgid "gitref:ea3061526e9ce5d3b65932c1d3e4437abd556d65[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:421
#, no-wrap
msgid "March 23, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:423
#, no-wrap
msgid "14.0-CURRENT after changing the arm64 struct reg, struct gpreg, struct trapframe, and struct pcb."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:424
#, no-wrap
msgid "1400085"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:425
#, no-wrap
msgid "gitref:1cebc9298cf2272da46c3c574d06a80ce59854aa[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:426
#, no-wrap
msgid "March 28, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:429
#, no-wrap
msgid "1400086"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:430
#, no-wrap
msgid "gitref:c17eb99a66e7d1e8a64458a969eeb7649f827493[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:431
#, no-wrap
msgid "April 8, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:433
#, no-wrap
msgid "14.0-CURRENT after vn_lock_pair() argument changes."
msgstr ""
#. Template:
#. |14XXXXX
#. |gitref:XXXXXXXX[repository="src",length=12]
#. |October 30, 2021
#. |14.0-CURRENT after XXXXXX.
#. type: Title ==
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:445
#, no-wrap
msgid "FreeBSD 13 Versions"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:448
#, no-wrap
msgid "FreeBSD 13 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:457
#, no-wrap
msgid "1300000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:458
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339436[339436]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:459
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1847
#, no-wrap
msgid "October 19, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:461
#, no-wrap
msgid "13.0-CURRENT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:462
#, no-wrap
msgid "1300001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:463
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339730[339730]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:464
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:469
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1852
#, no-wrap
msgid "October 25, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:466
#, no-wrap
msgid "13.0-CURRENT after bumping OpenSSL shared library version numbers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:467
#, no-wrap
msgid "1300002"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:468
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339765[339765]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:471
#, no-wrap
msgid "13.0-CURRENT after restoration of [.filename]#sys/joystick.h#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:472
#, no-wrap
msgid "1300003"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:473
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340055[340055]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:474
#, no-wrap
msgid "November 2, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:476
#, no-wrap
-msgid "13.0-CURRENT after vop_symlink API change (`a_target` is now `const`.)"
+msgid "13.0-CURRENT after `vop_symlink` API change (`a_target` is now `const`.)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:477
#, no-wrap
msgid "1300004"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:478
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340841[340841]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:479
#, no-wrap
msgid "November 23, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:481
#, no-wrap
msgid "13.0-CURRENT after enabling crtbegin and crtend code."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:482
#, no-wrap
msgid "1300005"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:483
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/341836[341836]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:484
#, no-wrap
msgid "December 11, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:486
#, no-wrap
msgid "13.0-CURRENT after enabling UFS inode checksums."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:487
#, no-wrap
msgid "1300006"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:488
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342398[342398]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:489
#, no-wrap
msgid "December 24, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:491
#, no-wrap
msgid "13.0-CURRENT after fixing [.filename]#sys/random.h# include to be usable from C++."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:492
#, no-wrap
msgid "1300007"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:493
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342629[342629]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:494
#, no-wrap
msgid "December 30, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:496
#, no-wrap
msgid "13.0-CURRENT after changing the size of `struct linux_cdev` on 32-bit platforms."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:497
#, no-wrap
msgid "1300008"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:498
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342772[342772]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:499
#, no-wrap
msgid "January 4, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:501
#, no-wrap
msgid "13.0-CURRENT after adding `kern.smp.threads_per_core` and `kern.smp.cores` sysctls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:502
#, no-wrap
msgid "1300009"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:503
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/343213[343213]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:504
#, no-wrap
msgid "January 20, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:506
#, no-wrap
msgid "13.0-CURRENT after `struct ieee80211vap` structure change to resolve ioctl/detach race for ieee80211com structure."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:507
#, no-wrap
msgid "1300010"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:508
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/343485[343485]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:509
#, no-wrap
msgid "January 27, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:511
#, no-wrap
msgid "13.0-CURRENT after increasing `SPECNAMELEN` from 63 to `MAXNAMELEN` (255)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:512
#, no-wrap
msgid "1300011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:513
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344041[344041]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:514
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:519
#, no-wrap
msgid "February 12, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:516
#, no-wrap
msgid "13.0-CURRENT after man:renameat[2] has been corrected to work with kernels built with the `CAPABILITIES` option."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:517
#, no-wrap
msgid "1300012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:518
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344062[344062]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:521
#, no-wrap
-msgid "13.0-CURRENT after `taskqgroup_attach()` and `taskqgroup_attach_cpu()` take a device_t and a struct resource pointer as arguments for denoting device interrupts."
+msgid "13.0-CURRENT after `taskqgroup_attach()` and `taskqgroup_attach_cpu()` take a `device_t` and a struct resource pointer as arguments for denoting device interrupts."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:522
#, no-wrap
msgid "1300013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:523
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344300[344300]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:524
#, no-wrap
msgid "February 19, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:526
#, no-wrap
msgid "13.0-CURRENT after the removal of drm and drm2."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:527
#, no-wrap
msgid "1300014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:528
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344779[344779]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:529
#, no-wrap
msgid "March 4, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:531
#, no-wrap
msgid "13.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 8.0.0 rc3."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:532
#, no-wrap
msgid "1300015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:533
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345196[345196]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:534
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1877
#, no-wrap
msgid "March 15, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:536
#, no-wrap
msgid "13.0-CURRENT after deanonymizing thread and proc state enums, so userland applications can use them without redefining the value names."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:537
#, no-wrap
msgid "1300016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:538
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345236[345236]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:539
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:549
#, no-wrap
msgid "March 16, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:541
#, no-wrap
msgid "13.0-CURRENT after enabling LLVM OpenMP 8.0.0 rc5 on amd64 by default."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:542
#, no-wrap
msgid "1300017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:543
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345305[345305]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:544
#, no-wrap
msgid "March 19, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:546
#, no-wrap
msgid "13.0-CURRENT after exposing the Rx mbuf buffer size to drivers in iflib."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:547
#, no-wrap
msgid "1300018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:548
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346012[346012]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:551
#, no-wrap
-msgid "13.0-CURRENT after introduction of funlinkat syscall in link:https://svnweb.freebsd.org/changeset/base/345982[345982]."
+msgid "13.0-CURRENT after introduction of `funlinkat` syscall in link:https://svnweb.freebsd.org/changeset/base/345982[345982]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:552
#, no-wrap
msgid "1300019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:553
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346282[346282]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:554
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3040
#, no-wrap
msgid "April 16, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:556
#, no-wrap
msgid "13.0-CURRENT after addition of man:is_random_seeded[9] to man:random[4]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:557
#, no-wrap
msgid "1300020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:558
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346358[346358]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:559
#, no-wrap
msgid "April 18, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:561
#, no-wrap
msgid "13.0-CURRENT after restoring man:random[4] availability tradeoff prior to link:https://svnweb.freebsd.org/changeset/base/346250[346250] and adding new tunables and diagnostic sysctls for programmatically discovering early seeding problems after boot."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:562
#, no-wrap
msgid "1300021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:563
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346645[346645]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:564
#, no-wrap
msgid "April 24, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:566
#, no-wrap
msgid "13.0-CURRENT after LinuxKPI uses man:bus_dma[9] to be compatible with an IOMMU."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:567
#, no-wrap
msgid "1300022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:568
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347089[347089]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:569
#, no-wrap
msgid "May 4, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:571
#, no-wrap
msgid "13.0-CURRENT after fixing regression issue after link:https://svnweb.freebsd.org/changeset/base/346645[346645] in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:572
#, no-wrap
msgid "1300023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:573
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347192[347192]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:574
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3050
#, no-wrap
msgid "May 6, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:576
#, no-wrap
msgid "13.0-CURRENT after list-ifying kernel dump device configuration."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:577
#, no-wrap
msgid "1300024"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:578
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347325[347325]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:579
#, no-wrap
msgid "May 8, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:581
#, no-wrap
msgid "13.0-CURRENT after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:582
#, no-wrap
msgid "1300025"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:583
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347532[347532]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:584
#, no-wrap
msgid "May 13, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:586
#, no-wrap
msgid "13.0-CURRENT after renaming `vm.max_wired` to `vm.max_user_wired` and changing its type."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:587
#, no-wrap
msgid "1300026"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:588
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347596[347596]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:589
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:594
#, no-wrap
msgid "May 14, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:591
#, no-wrap
msgid "13.0-CURRENT after adding context member to ww_mutex in LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:592
#, no-wrap
msgid "1300027"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:593
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347601[347601]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:596
#, no-wrap
-msgid "13.0-CURRENT after adding prepare to pm_ops in LinuxKPI."
+msgid "13.0-CURRENT after adding prepare to `pm_ops` in LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:597
#, no-wrap
msgid "1300028"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:598
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347925[347925]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:599
#, no-wrap
msgid "May 17, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:601
#, no-wrap
-msgid "13.0-CURRENT after removal of bm, cs, de, ed, ep, ex, fe, pcn, sf, sn, tl, tx, txp, vx, wb, and xe drivers."
+msgid "13.0-CURRENT after removal of `bm`, `cs`, de, ed, `ep`, ex, `fe`, `pcn`, sf, `sn`, `tl`, `tx`, `txp`, `vx`, `wb`, and xe drivers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:602
#, no-wrap
msgid "1300029"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:603
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347984[347984]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:604
#, no-wrap
msgid "May 20, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:606
#, no-wrap
msgid "13.0-CURRENT after removing some header pollution due to [.filename]#sys/eventhandler.h#. Affected files may now need to explicitly include one or more of [.filename]#sys/eventhandler.h#, [.filename]#sys/ktr.h#, [.filename]#sys/lock.h#, or [.filename]#sys/mutex.h#, when the missing header may have been included implicitly prior to 1300029."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:607
#, no-wrap
msgid "1300030"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:608
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348350[348350]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:609
#, no-wrap
msgid "May 29, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:611
#, no-wrap
msgid "13.0-CURRENT after adding relocation support to libdwarf on powerpc64 to fix handling of DWARF information on unlinked objects. Original commit in link:https://svnweb.freebsd.org/changeset/base/348347[348347]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:612
#, no-wrap
msgid "1300031"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:613
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348808[348808]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:614
#, no-wrap
msgid "June 8, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:616
#, no-wrap
msgid "13.0-CURRENT after adding dpcpu and vnet section fixes to i386 kernel modules to avoid panics in certain conditions. i386 kernel modules need to be recompiled with the linker script magic in place or they will refuse to load."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:617
#, no-wrap
msgid "1300032"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:618
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349151[349151]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:619
#, no-wrap
msgid "June 17, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:621
#, no-wrap
msgid "13.0-CURRENT after separating kernel `crc32()` implementation to its own header ([.filename]#gsb_crc32.h#) and renaming the source to [.filename]#gsb_crc32.c#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:622
#, no-wrap
msgid "1300033"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:623
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349277[349277]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:624
#, no-wrap
msgid "June 21, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:626
#, no-wrap
msgid "13.0-CURRENT after additions to LinuxKPI's `rcu` list."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:627
#, no-wrap
msgid "1300034"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:628
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349352[349352]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:629
#, no-wrap
msgid "June 24, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:631
#, no-wrap
msgid "13.0-CURRENT after NAND and NANDFS removal."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:632
#, no-wrap
msgid "1300035"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:633
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349846[349846]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:634
#, no-wrap
msgid "July 8, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:636
#, no-wrap
-msgid "13.0-CURRENT after merging the vm_page hold and wire mechanisms."
+msgid "13.0-CURRENT after merging the `vm_page` hold and wire mechanisms."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:637
#, no-wrap
msgid "1300036"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:638
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349972[349972]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:639
#, no-wrap
msgid "July 13, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:641
#, no-wrap
msgid "13.0-CURRENT after adding `arm_drain_writebuf()` and `arm_sync_icache()` for compatibility with NetBSD and OpenBSD."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:642
#, no-wrap
msgid "1300037"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:643
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350307[350307]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:644
#, no-wrap
msgid "July 24, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:646
#, no-wrap
msgid "13.0-CURRENT after removal of man:libcap_random[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:647
#, no-wrap
msgid "1300038"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:648
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350437[350437]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:649
#, no-wrap
msgid "July 30, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:651
#, no-wrap
msgid "13.0-CURRENT after removal of gzip'ed a.out support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:652
#, no-wrap
msgid "1300039"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:653
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350665[350665]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:654
#, no-wrap
msgid "August 7, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:656
#, no-wrap
msgid "13.0-CURRENT after merge of fusefs from projects/fuse2."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:657
#, no-wrap
msgid "1300040"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:658
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351140[351140]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:659
#, no-wrap
msgid "August 16, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:661
#, no-wrap
msgid "13.0-CURRENT after deletion of [.filename]#sys/dir.h# which has been deprecated since 1997."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:662
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:847
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1017
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1530
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3281
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4822
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5355
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5908
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6096
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7060
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5361
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7071
#, no-wrap
msgid "(not changed)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:663
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351423[351423]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:664
#, no-wrap
msgid "August 23, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:666
#, no-wrap
msgid "13.0-CURRENT after changing most arguments to man:ping6[8]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:667
#, no-wrap
msgid "1300041"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:668
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351480[351480]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:669
#, no-wrap
msgid "August 25, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:671
#, no-wrap
msgid "13.0-CURRENT after removal of zlib 1.0.4 after the completion of kernel zlib unification."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:672
#, no-wrap
msgid "1300042"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:673
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351522[351522]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:674
#, no-wrap
msgid "August 27, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:676
#, no-wrap
msgid "13.0-CURRENT after addition of kernel-side support for in-kernel TLS."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:677
#, no-wrap
msgid "1300043"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:678
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351698[351698]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:679
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:684
#, no-wrap
msgid "September 2, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:681
#, no-wrap
msgid "13.0-CURRENT after removal of man:gets[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:682
#, no-wrap
msgid "1300044"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:683
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351701[351701]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:686
#, no-wrap
msgid "13.0-CURRENT after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:687
#, no-wrap
msgid "1300045"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:688
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351729[351729]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:689
#, no-wrap
msgid "September 3, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:691
#, no-wrap
msgid "13.0-CURRENT after adding man:sysctlbyname[3] system call."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:692
#, no-wrap
msgid "1300046"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:693
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351937[351937]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:694
#, no-wrap
msgid "September 6, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:696
#, no-wrap
msgid "13.0-CURRENT after LinuxKPI sysfs improvements."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:697
#, no-wrap
msgid "1300047"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:698
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352110[352110]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:699
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1942
#, no-wrap
msgid "September 9, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:701
#, no-wrap
-msgid "13.0-CURRENT after changing the synchonization rules for vm_page reference counting.."
+msgid "13.0-CURRENT after changing the synchronization rules for `vm_page` reference counting.."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:702
#, no-wrap
msgid "1300048"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:703
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352700[352700]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:704
#, no-wrap
msgid "September 25, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:706
#, no-wrap
msgid "13.0-CURRENT after adding a shm_open2 syscall to support the upcoming man:memfd_create[2] syscall."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:707
#, no-wrap
msgid "1300049"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:708
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353274[353274]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:709
#, no-wrap
msgid "October 7, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:711
#, no-wrap
msgid "13.0-CURRENT after factoring out the VNET shutdown check into an own vnet structure field."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:712
#, no-wrap
msgid "1300050"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:713
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353358[353358]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:714
#, no-wrap
msgid "October 9, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:716
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:717
#, no-wrap
msgid "1300051"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:718
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353685[353685]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:719
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:724
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:729
#, no-wrap
msgid "October 17, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:721
#, no-wrap
msgid "13.0-CURRENT after splitting out a more generic man:debugnet[4] from man:netdump[4]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:722
#, no-wrap
msgid "1300052"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:723
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353698[353698]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:726
#, no-wrap
msgid "13.0-CURRENT after promoting the page busy field to a first class lock that no longer requires the object lock for consistency."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:727
#, no-wrap
msgid "1300053"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:728
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353700[353700]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:731
#, no-wrap
msgid "13.0-CURRENT after implementing NetGDB."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:732
#, no-wrap
msgid "1300054"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:733
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353868[353868]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:734
#, no-wrap
msgid "October 21, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:736
#, no-wrap
msgid "13.0-CURRENT after removing obsoleted KPIs that were used to access interface address lists."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:737
#, no-wrap
msgid "1300055"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:738
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354335[354335]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:739
#, no-wrap
msgid "November 4, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:741
#, no-wrap
msgid "13.0-CURRENT after enabling device class group attributes in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:742
#, no-wrap
msgid "1300056"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:743
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354460[354460]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:744
#, no-wrap
msgid "November 7, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:746
#, no-wrap
msgid "13.0-CURRENT after fixing a potential OOB read security issue in libc++."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:747
#, no-wrap
msgid "1300057"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:748
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354694[354694]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:749
#, no-wrap
msgid "November 13, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:751
#, no-wrap
msgid "13.0-CURRENT after adding support for `AT_EXECPATH` to man:elf_aux_info[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:752
#, no-wrap
msgid "1300058"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:753
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354820[354820]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:754
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:759
#, no-wrap
msgid "November 18, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:756
#, no-wrap
-msgid "13.0-CURRENT after widening the vm_page aflags field to 16 bits."
+msgid "13.0-CURRENT after widening the `vm_page` `aflags` field to 16 bits."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:757
#, no-wrap
msgid "1300059"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:758
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354835[354835]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:761
#, no-wrap
-msgid "13.0-CURRENT after converting the in-tree sysent targets to use the new [.filename]#makesyscalls.lua#."
+msgid "13.0-CURRENT after converting the in-tree `sysent` targets to use the new [.filename]#makesyscalls.lua#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:762
#, no-wrap
msgid "1300060"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:763
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354922[354922]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:764
#, no-wrap
msgid "November 20, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:766
#, no-wrap
msgid "13.0-CURRENT after adding [.filename]#/etc/os-release# as a symbolic link to [.filename]#/var/run/os-release#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:767
#, no-wrap
msgid "1300061"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:768
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354977[354977]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:769
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1977
#, no-wrap
msgid "November 21, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:771
#, no-wrap
msgid "13.0-CURRENT after adding functions to man:bitstring[3] to find contiguous sequences of set or unset bits."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:772
#, no-wrap
msgid "1300062"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:773
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355309[355309]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:774
#, no-wrap
msgid "December 2, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:776
#, no-wrap
msgid "13.0-CURRENT after adding TCP_STATS support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:777
#, no-wrap
msgid "1300063"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:778
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355537[355537]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:779
#, no-wrap
msgid "December 8, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:781
#, no-wrap
msgid "13.0-CURRENT after removal of VI_DOOMED (use VN_IS_DOOMED instead)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:782
#, no-wrap
msgid "1300064"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:783
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1981
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355658[355658]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:784
#, no-wrap
msgid "December 9, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:786
#, no-wrap
msgid "13.0-CURRENT after correcting the C++ version check for declaring man:timespec_get[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:787
#, no-wrap
msgid "1300065"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:788
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355643[355643]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:789
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:794
#, no-wrap
msgid "December 12, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:791
#, no-wrap
-msgid "13.0-CURRENT after adding sigsetop extensions commonly found in musl libc and glibc."
+msgid "13.0-CURRENT after adding `sigsetop` extensions commonly found in musl libc and glibc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:792
#, no-wrap
msgid "1300066"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:793
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355679[355679]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:796
#, no-wrap
msgid "13.0-CURRENT after changing the internal interface between the NFS modules as part of the introduction of NFS 4.2."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:797
#, no-wrap
msgid "1300067"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:798
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355732[355732]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:799
#, no-wrap
msgid "December 13, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:801
#, no-wrap
msgid "13.0-CURRENT after removing the deprecated `callout_handle_init`, `timeout`, and `untimeout` functions."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:802
#, no-wrap
msgid "1300068"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:803
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355828[355828]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:804
#, no-wrap
msgid "December 16, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:806
#, no-wrap
msgid "13.0-CURRENT after doubling the value of `ARG_MAX`, for 64 bit platforms."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:807
#, no-wrap
msgid "1300069"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:808
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356051[356051]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:809
#, no-wrap
msgid "December 24, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:811
#, no-wrap
msgid "13.0-CURRENT after the addition of busdma templates."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:812
#, no-wrap
msgid "1300070"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:813
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356113[356113]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:814
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:819
#, no-wrap
msgid "December 27, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:816
#, no-wrap
msgid "13.0-CURRENT after eliminating the last MI difference in AT_* definitions (for powerpc)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:817
#, no-wrap
msgid "1300071"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:818
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356135[356135]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:821
#, no-wrap
msgid "13.0-CURRENT after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:822
#, no-wrap
msgid "1300072"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:823
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356185[356185]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:824
#, no-wrap
msgid "December 29, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:826
#, no-wrap
msgid "13.0-CURRENT after removal of `GEOM_SCHED` class and `gsched` tool."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:827
#, no-wrap
msgid "1300073"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:828
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356263[356263]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:829
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1997
#, no-wrap
msgid "January 2, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:831
#, no-wrap
msgid "13.0-CURRENT after removing arm/arm as a valid target."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:832
#, no-wrap
msgid "1300074"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:833
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356337[356337]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:834
#, no-wrap
msgid "January 3, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:836
#, no-wrap
msgid "13.0-CURRENT after removing flags argument from `VOP_UNLOCK`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:837
#, no-wrap
msgid "1300075"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:838
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356409[356409]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:839
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2002
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3095
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3870
#, no-wrap
msgid "January 6, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:841
#, no-wrap
msgid "13.0-CURRENT after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:842
#, no-wrap
msgid "1300076"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:843
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356511[356511]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:844
#, no-wrap
msgid "January 8, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:846
#, no-wrap
-msgid "13.0-CURRENT after pushing vnop implementation into the fileop layer in man:posix_fallocate[2]."
+msgid "13.0-CURRENT after pushing `vnop` implementation into the `fileop` layer in man:posix_fallocate[2]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:848
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357396[357396]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:849
#, no-wrap
msgid "February 2, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:851
#, no-wrap
msgid "13.0-CURRENT after removal of armv5 architecture code from the src tree."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:852
#, no-wrap
msgid "1300077"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:853
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357455[357455]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:854
#, no-wrap
msgid "February 3, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:856
#, no-wrap
msgid "13.0-CURRENT after removal of sparc64 architecture code from the src tree."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:857
#, no-wrap
msgid "1300078"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:858
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358020[358020]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:859
#, no-wrap
msgid "February 17, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:861
#, no-wrap
msgid "13.0-CURRENT after changing `struct vnet` and the VNET magic cookie."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:862
#, no-wrap
msgid "1300079"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:863
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358164[358164]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:864
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:869
#, no-wrap
msgid "February 20, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:866
#, no-wrap
msgid "13.0-CURRENT after upgrading ncurses to 6.2.x"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:867
#, no-wrap
msgid "1300080"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:868
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358172[358172]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:871
#, no-wrap
-msgid "13.0-CURRENT after adding realpathat syscall to VFS."
+msgid "13.0-CURRENT after adding `realpathat` syscall to VFS."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:872
#, no-wrap
msgid "1300081"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:873
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358218[358218]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:874
#, no-wrap
msgid "February 21, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:876
#, no-wrap
msgid "13.0-CURRENT after recent linuxkpi changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:877
#, no-wrap
msgid "1300082"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:878
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358497[358497]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:879
#, no-wrap
msgid "March 1, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:881
#, no-wrap
msgid "13.0-CURRENT after removal of man:bktr[4]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:882
#, no-wrap
msgid "1300083"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:883
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358834[358834]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:884
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:889
#, no-wrap
msgid "March 10, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:886
#, no-wrap
msgid "13.0-CURRENT after removal of man:amd[8], r358821."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:887
#, no-wrap
msgid "1300084"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:888
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358851[358851]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:891
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0-rc3 c290cb61fdc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:892
#, no-wrap
msgid "1300085"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:893
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359261[359261]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:894
#, no-wrap
msgid "March 23, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:896
#, no-wrap
msgid "13.0-CURRENT after the import of the kyua test framework."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:897
#, no-wrap
msgid "1300086"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:898
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359347[359347]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:899
#, no-wrap
msgid "March 26, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:901
#, no-wrap
msgid "13.0-CURRENT after switching powerpc and powerpcspe to the lld linker."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:902
#, no-wrap
msgid "1300087"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:903
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359374[359374]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:904
#, no-wrap
msgid "March 27, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:906
#, no-wrap
msgid "13.0-CURRENT after refactoring the driver and consumer interfaces for in-kernel cryptography."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:907
#, no-wrap
msgid "1300088"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:908
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359530[359530]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:909
#, no-wrap
msgid "April 1, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:911
#, no-wrap
msgid "13.0-CURRENT after removing support for procfs process debugging."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:912
#, no-wrap
msgid "1300089"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:913
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359727[359727]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:914
#, no-wrap
msgid "April 8, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:916
#, no-wrap
msgid "13.0-CURRENT after cloning the RCU interface into a sleepable and a non-sleepable part in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:917
#, no-wrap
msgid "1300090"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:918
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359747[359747]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:919
#, no-wrap
msgid "April 9, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:921
#, no-wrap
msgid "13.0-CURRENT after removing the old NFS lock device driver that uses Giant."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:922
#, no-wrap
msgid "1300091"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:923
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359839[359839]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:924
#, no-wrap
msgid "April 12, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:926
#, no-wrap
msgid "13.0-CURRENT after implementing a man:close_range[2] syscall."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:927
#, no-wrap
msgid "1300092"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:928
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359920[359920]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:929
#, no-wrap
msgid "April 14, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:931
#, no-wrap
-msgid "13.0-CURRENT after reworking unmapped mbufs in KTLS to carry ext_pgs in the mbuf itself."
+msgid "13.0-CURRENT after reworking unmapped mbufs in KTLS to carry `ext_pgs` in the mbuf itself."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:932
#, no-wrap
msgid "1300093"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:933
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360418[360418]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:934
#, no-wrap
msgid "April 27, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:936
#, no-wrap
msgid "13.0-CURRENT after adding support for kernel TLS receive offload."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:937
#, no-wrap
msgid "1300094"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:938
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360796[360796]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:939
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3120
#, no-wrap
msgid "May 7, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:941
#, no-wrap
msgid "13.0-CURRENT after linuxkpi changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:942
#, no-wrap
msgid "1300095"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:943
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361275[361275]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:944
#, no-wrap
msgid "May 20, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:946
#, no-wrap
msgid "13.0-CURRENT after adding HyperV socket support for FreeBSD guests."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:947
#, no-wrap
msgid "1300096"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:948
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361410[361410]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:949
#, no-wrap
msgid "May 23, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:951
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 rc1 f79cd71e145."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:952
#, no-wrap
msgid "1300097"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:953
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361724[361724]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:954
#, no-wrap
msgid "June 2, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:956
#, no-wrap
msgid "13.0-CURRENT after implementing `__is_constexpr()` function macro in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:957
#, no-wrap
msgid "1300098"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:958
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362159[362159]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:959
#, no-wrap
msgid "June 14, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:961
#, no-wrap
msgid "13.0-CURRENT after changing the `export_args ex_flags` field so that is 64bits."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:962
#, no-wrap
msgid "1300099"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:963
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362453[362453]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:964
#, no-wrap
msgid "June 20, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:966
#, no-wrap
msgid "13.0-CURRENT after making liblzma use libmd implementation of SHA256."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:967
#, no-wrap
msgid "1300100"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:968
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362640[362640]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:969
#, no-wrap
msgid "June 26, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:971
#, no-wrap
msgid "13.0-CURRENT after changing the internal API between the NFS kernel modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:972
#, no-wrap
msgid "1300101"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:973
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363077[363077]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:974
#, no-wrap
msgid "July 10, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:976
#, no-wrap
msgid "13.0-CURRENT after implementing the `array_size()` function in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:977
#, no-wrap
msgid "1300102"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:978
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363562[363562]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:979
#, no-wrap
msgid "July 26, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:981
#, no-wrap
msgid "13.0-CURRENT after implementing lockless lookup in the VFS layer."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:982
#, no-wrap
msgid "1300103"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:983
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363757[363757]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:984
#, no-wrap
msgid "August 1, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:986
#, no-wrap
msgid "13.0-CURRENT after making rights mandatory for NDINIT_ALL."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:987
#, no-wrap
msgid "1300104"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:988
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363783[363783]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:989
#, no-wrap
msgid "August 2, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:991
#, no-wrap
msgid "13.0-CURRENT after vnode layout changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:992
#, no-wrap
msgid "1300105"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:993
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363894[363894]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:994
#, no-wrap
msgid "August 5, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:996
#, no-wrap
msgid "13.0-CURRENT after `vaccess()` change."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:997
#, no-wrap
msgid "1300106"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:998
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364092[364092]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:999
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1004
#, no-wrap
msgid "August 11, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1001
#, no-wrap
msgid "13.0-CURRENT after adding an argument to `newnfs_connect()` that indicates use TLS for the connection."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1002
#, no-wrap
msgid "1300107"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1003
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364109[364109]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1006
#, no-wrap
msgid "13.0-CURRENT after change to clone the task struct fields related to RCU."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1007
#, no-wrap
msgid "1300108"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1008
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364233[364233]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1009
#, no-wrap
msgid "August 14, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1011
#, no-wrap
-msgid "13.0-CURRENT after adding a few wait_bit functions to the linuxkpi, which are needed for DRM from Linux v5.4."
+msgid "13.0-CURRENT after adding a few `wait_bit` functions to the linuxkpi, which are needed for DRM from Linux v5.4."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1012
#, no-wrap
msgid "1300109"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1013
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364274[364274]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1014
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1019
#, no-wrap
msgid "August 16, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1016
#, no-wrap
-msgid "13.0-CURRENT after `vget()` argument removal and namei flags renumbering."
+msgid "13.0-CURRENT after `vget()` argument removal and `namei` flags renumbering."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1018
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364284[364284]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1021
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to release/11.x llvmorg-11.0.0-rc1-47-gff47911ddfc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1022
#, no-wrap
msgid "1300110"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1023
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364331[364331]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1024
#, no-wrap
msgid "August 18, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1026
#, no-wrap
msgid "13.0-CURRENT after deleting the unused `use_ext` argument to `nfscl_reqstart()`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1027
#, no-wrap
msgid "1300111"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1028
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364476[364476]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1029
#, no-wrap
msgid "August 22, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1031
#, no-wrap
msgid "13.0-CURRENT after adding TLS support to the kernel RPC."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1032
#, no-wrap
msgid "1300112"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1033
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364747[364747]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1034
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1039
#, no-wrap
msgid "August 25, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1036
#, no-wrap
msgid "13.0-CURRENT after merging OpenZFS support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1037
#, no-wrap
msgid "1300113"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1038
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364753[364753]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1041
#, no-wrap
-msgid "13.0-CURRENT after adding atomic and bswap functions to libcompiler_rt."
+msgid "13.0-CURRENT after adding atomic and `bswap` functions to libcompiler_rt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1042
#, no-wrap
msgid "1300114"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1043
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365459[365459]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1044
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2087
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3165
#, no-wrap
msgid "September 8, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1046
#, no-wrap
msgid "13.0-CURRENT after changing arm64 AT_HWCAP definitions for man:elf_aux_info[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1047
#, no-wrap
msgid "1300115"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1048
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365705[365705]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1049
#, no-wrap
msgid "September 14, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1051
#, no-wrap
msgid "13.0-CURRENT after fixing man:crunchgen[1] application build with `WARNS=6`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1052
#, no-wrap
msgid "1300116"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1053
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366062[366062]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1054
#, no-wrap
msgid "September 22, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1056
#, no-wrap
msgid "13.0-CURRENT after the introduction of the powerpc64le ARCH."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1057
#, no-wrap
msgid "1300117"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1058
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366070[366070]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1059
#, no-wrap
msgid "September 23, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1061
#, no-wrap
-msgid "13.0-CURRENT after reimplementing purgevfs to iterate vnodes instead of the entire hash."
+msgid "13.0-CURRENT after reimplementing `purgevfs` to iterate vnodes instead of the entire hash."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1062
#, no-wrap
msgid "1300118"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1063
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366374[366374]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1064
#, no-wrap
msgid "October 2, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1066
#, no-wrap
msgid "13.0-CURRENT after adding backlight support and `dmi_*` functions to the linuxkpi."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1067
#, no-wrap
msgid "1300119"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1068
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366432[366432]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1069
#, no-wrap
msgid "October 6, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1071
#, no-wrap
msgid "13.0-CURRENT after populating the acquire context field of a `ww_mutex` in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1072
#, no-wrap
msgid "1300120"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1073
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366666[366666]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1074
#, no-wrap
msgid "October 13, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1076
#, no-wrap
msgid "13.0-CURRENT after the fix to arm64 write-only mappings."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1077
#, no-wrap
msgid "1300121"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1078
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366719[366719]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1079
#, no-wrap
msgid "October 15, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1081
#, no-wrap
msgid "13.0-CURRENT after the addition of `VOP_EAGAIN`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1082
#, no-wrap
msgid "1300122"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1083
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366782[366782]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1084
#, no-wrap
msgid "October 17, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1086
#, no-wrap
msgid "13.0-CURRENT after the addition of `ptsname_r`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1087
#, no-wrap
msgid "1300123"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1088
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366871[366871]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1089
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2117
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3175
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3180
#, no-wrap
msgid "October 20, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1091
#, no-wrap
msgid "13.0-CURRENT after `VOP`, `VPTOCNP`, and `INACTIVE` changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1092
#, no-wrap
msgid "1300124"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1093
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367162[367162]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1094
#, no-wrap
msgid "October 30, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1096
#, no-wrap
msgid "13.0-CURRENT after adding `cache_vop_mkdir` and renaming `cache_rename` to `cache_vop_rename`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1097
#, no-wrap
msgid "1300125"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1098
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367347[367347]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1099
#, no-wrap
msgid "November 4, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1101
#, no-wrap
msgid "13.0-CURRENT after using a `rms` lock for teardown handling in `zfs`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1102
#, no-wrap
msgid "1300126"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1103
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367384[367384]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1104
#, no-wrap
msgid "November 5, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1106
#, no-wrap
msgid "13.0-CURRENT after rationalizing per-cpu zones."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1107
#, no-wrap
msgid "1300127"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1108
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367432[367432]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1109
#, no-wrap
msgid "November 6, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1111
#, no-wrap
msgid "13.0-CURRENT after moving `malloc_type_internal` into `malloc_type`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1112
#, no-wrap
msgid "1300128"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1113
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367522[367522]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1114
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2122
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3185
#, no-wrap
msgid "November 9, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1116
#, no-wrap
msgid "13.0-CURRENT after LinuxKPI additions to implement ACPI bits required by `drm-kmod` in the base system."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1117
#, no-wrap
msgid "1300129"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1118
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367627[367627]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1119
#, no-wrap
msgid "November 12, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1121
#, no-wrap
-msgid "13.0-CURRENT after retiring malloc_last_fail."
+msgid "13.0-CURRENT after retiring `malloc_last_fail`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1122
#, no-wrap
msgid "1300130"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1123
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367777[367777]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1124
#, no-wrap
msgid "November 17, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1126
#, no-wrap
-msgid "13.0-CURRENT after p_pd / pwddesc split from p_fd / filedesc."
+msgid "13.0-CURRENT after `p_pd` / `pwddesc` split from `p_fd` / filedesc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1127
#, no-wrap
msgid "1300131"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1128
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/368417[368417]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1129
#, no-wrap
msgid "December 7, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1131
#, no-wrap
msgid "13.0-CURRENT after removal of crypto file descriptors."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1132
#, no-wrap
msgid "1300132"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1133
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/368659[368659]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1134
#, no-wrap
msgid "December 15, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1136
#, no-wrap
msgid "13.0-CURRENT after improving handling of alternate settings in the USB stack."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1137
#, no-wrap
msgid "1300133"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1138
#, no-wrap
msgid "gitref:2ed0c8d801f5f72dbde7a7d30135c1cc361a1e90[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1139
#, no-wrap
msgid "December 23, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1141
#, no-wrap
msgid "13.0-CURRENT after changing the internal API between the NFS and kernel RPC modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1142
#, no-wrap
msgid "1300134"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1143
#, no-wrap
msgid "gitref:a84b0e94cdbf1a17a798ab7f77375aacb4d400ff[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1144
#, no-wrap
msgid "January 7, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1146
#, no-wrap
msgid "13.0-CURRENT after factoring out the hardware-independent part of USB HID support to a new module."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1147
#, no-wrap
msgid "1300135"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1148
#, no-wrap
msgid "gitref:35a39dc5b34962081eeda8dbcf0b99a31585499b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1149
#, no-wrap
msgid "January 12, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1151
#, no-wrap
msgid "13.0-CURRENT after adding `kernel_fpu_begin`/`kernel_fpu_end` to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1152
#, no-wrap
msgid "1300136"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1153
#, no-wrap
msgid "gitref:72c551930be195b5ea982c1b16767f54388424f2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1154
#, no-wrap
msgid "January 17, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1156
#, no-wrap
-msgid "13.0-CURRENT after reimplementing LinuxKPI's `irq_work` queue on top of fast taskqueue."
+msgid "13.0-CURRENT after reimplementing LinuxKPI's `irq_work` queue on top of fast `taskqueue`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1157
#, no-wrap
msgid "1300137"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1158
#, no-wrap
msgid "gitref:010196adcfaf2bb610725394d40691874b4ff2af[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1159
#, no-wrap
msgid "January 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1161
#, no-wrap
msgid "13.0-CURRENT after fixing a clang assertion when building the package:devel/onetbb[] port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1162
#, no-wrap
msgid "1300138"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1163
#, no-wrap
msgid "gitref:dcee9964238b12a8e55917f292139f074b1a80b2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1164
#, no-wrap
msgid "February 1, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1166
#, no-wrap
msgid "13.0-ALPHA3 after adding lockless symlink lookup to vfs cache."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1167
#, no-wrap
msgid "1300139"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1168
#, no-wrap
msgid "gitref:91a07ed50ffca4dfada3e7f1f050ea746c1bac66[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1169
#, no-wrap
msgid "February 2, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1171
#, no-wrap
msgid "13.0-ALPHA3 after adding various LinuxKPI bits conflicting with drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1172
#, no-wrap
msgid "1300500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1173
#, no-wrap
msgid "gitref:3c6a89748a01869c18955d5e3bfcdf35f6705d26[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1174
#, no-wrap
msgid "February 5, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1176
#, no-wrap
msgid "13.0-STABLE after releng/13.0 was branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1177
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1182
#, no-wrap
msgid "1300501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1178
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1183
#, no-wrap
msgid "gitref:c3f97dd75a1c294c4f60f42b604ee8bcda17be09[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1179
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1184
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1189
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1194
#, no-wrap
msgid "April 23, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1181
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1186
#, no-wrap
msgid "13.0-STABLE after fixing rtld's `dl_iterate_phdr()`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1187
#, no-wrap
msgid "1300502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1188
#, no-wrap
msgid "gitref:da6a8ccfa293c3c831fdde51169754fcb9587657[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1191
#, no-wrap
msgid "13.0-STABLE after implementing `atomic_dec_and_lock_irqsave()` in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1192
#, no-wrap
msgid "1300503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1193
#, no-wrap
msgid "gitref:d60c6dc8f69b1264c7af5e2479ea94f000fd2c6d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1196
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the krpc and NFS."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1197
#, no-wrap
msgid "1300504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1198
#, no-wrap
msgid "gitref:fb34817c686cc130449325499870e36979899801[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1199
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2132
#, no-wrap
msgid "April 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1201
#, no-wrap
msgid "13.0-STABLE after updating the LinuxKPI to accommodate the drm-kmod 5.5 update."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1202
#, no-wrap
msgid "1300505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1203
#, no-wrap
msgid "gitref:8f81f190a640e211dd814bdde7811982b9491fb0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1204
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2137
#, no-wrap
msgid "May 10, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1206
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the nscl.ko and nfscommon.ko modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1207
#, no-wrap
msgid "1300506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1208
#, no-wrap
msgid "gitref:e31579b8558db508dfc3f8fc276611a7c3c93aa1[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1209
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1214
#, no-wrap
msgid "June 2, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1211
#, no-wrap
msgid "13.0-STABLE after adding TCP LRO support for VLAN and VxLAN."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1212
#, no-wrap
msgid "1300507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1213
#, no-wrap
msgid "gitref:c64d1bd7145b5d30c97d1cd99e584da529d95100[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1216
#, no-wrap
msgid "13.0-STABLE after adding a new member to the man:EPOCH[9] tracker structure."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1217
#, no-wrap
msgid "1300508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1218
#, no-wrap
msgid "gitref:658f5eed38c35f3f7d6695110b7dae8dc94d12c7[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1221
#, no-wrap
msgid "13.0-STABLE after adding macros for `might_lock_nested()` and `lockdep_(re/un/)pin_lock()` to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1222
#, no-wrap
msgid "1300509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1223
#, no-wrap
msgid "gitref:210349325af9920d1535ad76fa3b92847684f6e0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1224
#, no-wrap
msgid "June 14, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1226
#, no-wrap
msgid "13.0-STABLE after adding a macro for `list_for_each_entry_lockless()` to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1227
#, no-wrap
msgid "1300510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1228
#, no-wrap
msgid "gitref:eb3397588e1b48043e166587ea454f60efea88d0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1229
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2142
#, no-wrap
msgid "June 26, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1231
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the krpc and nfsd modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1232
#, no-wrap
msgid "1300511"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1233
#, no-wrap
msgid "gitref:2622570aeb3d162812d72f7ef192c322cd8b73ef[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1234
#, no-wrap
msgid "July 7, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1236
#, no-wrap
-msgid "13.0-STABLE after changing `softdep_prelink()` to only do sync if another thread changed the vnode metadata since previous prelink."
+msgid "13.0-STABLE after changing `softdep_prelink()` to only do sync if another thread changed the vnode metadata since previous `prelink`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1237
#, no-wrap
msgid "1300512"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1238
#, no-wrap
msgid "gitref:f72db34d2295080f57a283858125aa906c0d409e[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1239
#, no-wrap
msgid "July 18, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1241
#, no-wrap
msgid "13.0-STABLE after various merges to LinuxKPI, OFED, net80211, and drivers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1242
#, no-wrap
msgid "1300513"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1243
#, no-wrap
msgid "gitref:af732203b8f7f006927528db5497f5cbc4c4742a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1246
#, no-wrap
msgid "13.0-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-12.0.1-0-gfed41342a82f, a.k.a. 12.0.1 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1247
#, no-wrap
msgid "1300514"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1248
#, no-wrap
msgid "gitref:53d162819c20e5cf267cb91f7a19940e96e8bec4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1249
#, no-wrap
msgid "August 3, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1251
#, no-wrap
msgid "Incompatible changes to the KBI of internal interfaces between NFS requires rebuilding modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1252
#, no-wrap
msgid "1300515"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1253
#, no-wrap
msgid "gitref:0437d10e359ea1cbefff8d17cd18ca491dbbd5d7[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1254
#, no-wrap
msgid "September 22, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1256
#, no-wrap
msgid "13.0-STABLE returning to 13.0 KBI for linuxkpi."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1257
#, no-wrap
msgid "1300518"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1258
#, no-wrap
msgid "gitref:a017868e281874261a560ba1e3069b4e14b7483e[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1259
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1264
#, no-wrap
msgid "October 21, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1261
#, no-wrap
msgid "13.0-STABLE after adding `crypto_cursor_segment()`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1262
#, no-wrap
msgid "1300519"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1263
#, no-wrap
msgid "gitref:fe2827f1678b8ff0baf62a1529b2cc121a25b090[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1266
#, no-wrap
msgid "13.0-STABLE after extending the AES-CCM and Chacha20-Poly1305 ciphers in OCF to support multiple nonce lengths."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1267
#, no-wrap
msgid "1300521"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1268
#, no-wrap
msgid "gitref:29745cf91cfc22afa94da0ce43e07a6dc377f631[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1269
#, no-wrap
msgid "November 19, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1271
#, no-wrap
msgid "13.0-STABLE after various merges to LinuxKPI and net80211."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1272
#, no-wrap
msgid "1300522"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1273
#, no-wrap
msgid "gitref:0c8684ae20019b63c6672cc9fa40e1426708b007[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1274
#, no-wrap
msgid "November 24, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1276
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the NFS modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1277
#, no-wrap
msgid "1300523"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1278
#, no-wrap
msgid "gitref:690bcf605d84283c1f9d254885a3cac69c5e80a6[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1279
#, no-wrap
msgid "December 18, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1281
#, no-wrap
msgid "13.0-STABLE after adding two arguments to man:VOP_ALLOCATE[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1282
#, no-wrap
msgid "1300524"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1283
#, no-wrap
msgid "gitref:dc4114875ef10618002d3eeb46f09dc42da56b30[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1284
#, no-wrap
msgid "January 14, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1286
#, no-wrap
msgid "13.0-STABLE after making the CPU_SET macros compatible with glibc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1287
#, no-wrap
msgid "1300525"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1288
#, no-wrap
msgid "gitref:dee0854a009cde7dcdb16ba39754237737022c8a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1289
#, no-wrap
msgid "January 22, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1291
#, no-wrap
msgid "13.0-STABLE after multiple LinuxKPI changes required by drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1292
#, no-wrap
msgid "1300526"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1293
#, no-wrap
msgid "gitref:c39ff2415cb965b729fd16f9eae91e712313877b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1294
#, no-wrap
msgid "February 20, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1296
#, no-wrap
msgid "13.0-STABLE after multiple LinuxKPI changes overlapping but not conflicting with drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1297
#, no-wrap
msgid "1301000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1298
#, no-wrap
msgid "gitref:ad329796bdb29c69bce610ad332d08257d7157ac[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1299
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1304
#, no-wrap
msgid "March 10, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1301
#, no-wrap
msgid "releng/13.1 branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1302
#, no-wrap
msgid "1301500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1303
#, no-wrap
msgid "gitref:08523c8c63bbcdcd3f0d36787a544817cb5b8282[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1306
#, no-wrap
msgid "13.1-STABLE after releng/13.1 branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1307
#, no-wrap
msgid "1301501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1308
#, no-wrap
msgid "gitref:6663718bb49635deac3f5dc55fa6f0f7cba593ba[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1309
#, no-wrap
msgid "March 27, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1311
#, no-wrap
msgid "13.1-STABLE after various merges to LinuxKPI and net80211."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1312
#, no-wrap
msgid "1301502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1313
#, no-wrap
msgid "gitref:2278cf4e48e7679b0a60008a83c764fe852174b2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1314
#, no-wrap
msgid "April 27, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1316
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1331
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1341
#, no-wrap
msgid "13.1-STABLE after various merges to LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1317
#, no-wrap
msgid "1301503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1318
#, no-wrap
msgid "gitref:b2aa64d05bd8b04a1bdb63f2a5f9de39c600b463[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1319
#, no-wrap
msgid "May 19, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1321
#, no-wrap
msgid "13.1-STABLE after adding alternate DRIVER_MODULE macros without a devclass argument."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1322
#, no-wrap
msgid "1301504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1323
#, no-wrap
msgid "gitref:a13b6fc61908fd6afa460b88f94e4a67be74bb9a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1324
#, no-wrap
msgid "June 4, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1326
#, no-wrap
msgid "13.1-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-14.0.3-0-g1f9140064dfb, a.k.a. 14.0.3 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1327
#, no-wrap
msgid "1301505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1328
#, no-wrap
msgid "gitref:6f93a76ffeabf7d4488edc73a0cca01436c2903b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1329
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1339
#, no-wrap
msgid "June 21, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1332
#, no-wrap
msgid "1301506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1333
#, no-wrap
msgid "gitref:8e6cfc632cf6f9fc906df9d825649443939b55c6[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1334
#, no-wrap
msgid "July 13, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1336
#, no-wrap
-msgid "13.1-STABLE after after adding <crypto/chacha20_poly1305.h> and <crypto/curve25519.h>."
+msgid "13.1-STABLE after adding <crypto/chacha20_poly1305.h> and <crypto/curve25519.h>."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1337
#, no-wrap
msgid "1301507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1338
#, no-wrap
msgid "gitref:9cbba5950123f3afedcc5f24c43956e7a26f22f4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1342
#, no-wrap
msgid "1301508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1343
#, no-wrap
msgid "gitref:83ac15a799e348c391951f5877feecd4089bab80[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1346
#, no-wrap
msgid "13.1-STABLE after various merges to LinuxKPI, and for de-macrofying pause()."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1347
#, no-wrap
msgid "1301509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1348
#, no-wrap
msgid "gitref:baa97013121a915057ee54dfcb2cb87e541f7d7f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1349
#, no-wrap
msgid "October 19, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1351
#, no-wrap
msgid "13.1-STABLE after introduction of v2 of TX Queue Select Functionality."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1352
#, no-wrap
msgid "1301510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1353
#, no-wrap
msgid "gitref:6820a0512fa6616ee1da46cb0075da80478776f0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1354
#, no-wrap
msgid "December 8, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1356
#, no-wrap
msgid "13.1-STABLE after LinuxKPI dmi_matches() fixes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1357
#, no-wrap
msgid "1301511"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1358
#, no-wrap
msgid "gitref:17333d92643d998d1c6a2dc5f6b1508b6507ad31[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1359
#, no-wrap
msgid "December 17, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1361
#, no-wrap
-msgid "13.1-STABLE after adding a new rc: machine_id to generate `/etc/machine-id`."
+msgid "13.1-STABLE after adding a new rc: `machine_id` to generate `/etc/machine-id`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1362
#, no-wrap
msgid "1302500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1363
#, no-wrap
msgid "gitref:c243de11cf7c4bb3d67bbc1655b149037e5b04f1[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1364
#, no-wrap
msgid "February 9, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1366
#, no-wrap
msgid "13.2-STABLE after releng/13.2 was branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1367
#, no-wrap
msgid "1302501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1368
#, no-wrap
msgid "gitref:e3068d2655e2aea3e0b462a7298a68d344769ec6[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1369
#, no-wrap
msgid "February 16, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1371
#, no-wrap
msgid "13.2-STABLE after adding `totalram_pages()` to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1372
#, no-wrap
msgid "1302502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1373
#, no-wrap
msgid "gitref:5ca371f4f536f9ee9d6c9fb178bf1f7f6de33216[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1374
#, no-wrap
msgid "February 17, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1376
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1381
#, no-wrap
msgid "13.2-STABLE after various merges to LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1377
#, no-wrap
msgid "1302503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1378
#, no-wrap
msgid "gitref:aaca677fee21f202db4bb974fc5056f4dcbbb598[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1379
#, no-wrap
msgid "February 21, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1382
#, no-wrap
msgid "1302504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1383
#, no-wrap
msgid "gitref:d6852eed98ed32ad51120a22aa1ebdf0601917b3[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1384
#, no-wrap
msgid "March 12, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1386
#, no-wrap
-msgid "13.2-STABLE after merging machine-id into hostid_save."
+msgid "13.2-STABLE after merging machine-id into `hostid_save`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1387
#, no-wrap
msgid "1302505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1388
#, no-wrap
msgid "gitref:85e32e957fcca01d50e29e543584909795c1acef[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1389
#, no-wrap
msgid "April 9, 2023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1391
#, no-wrap
msgid "13.2-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-15.0.7-0-g8dfdcc7b7bf6, a.k.a. 15.0.7 release."
msgstr ""
#. Template:
#. |13XXXXX
#. |gitref:XXXXXXXX[repository="src",length=12]
#. |October 30, 2021
#. |13.0-STABLE after XXXXXX.
#. type: Title ==
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1403
#, no-wrap
msgid "FreeBSD 12 Versions"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1406
#, no-wrap
msgid "FreeBSD 12 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1415
#, no-wrap
msgid "1200000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1416
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302409[302409]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1417
#, no-wrap
msgid "July 7, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1419
#, no-wrap
msgid "12.0-CURRENT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1420
#, no-wrap
msgid "1200001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1421
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302628[302628]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1422
#, no-wrap
msgid "July 12, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1424
#, no-wrap
msgid "12.0-CURRENT after removing collation from `[a-z]`-type ranges."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1425
#, no-wrap
msgid "1200002"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1426
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304395[304395]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1427
#, no-wrap
msgid "August 18, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1429
#, no-wrap
msgid "12.0-CURRENT after removing unused and obsolete `openbsd_poll` system call."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1430
#, no-wrap
msgid "1200003"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1431
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304608[304608]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1432
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2835
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3800
#, no-wrap
msgid "August 22, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1434
#, no-wrap
msgid "12.0-CURRENT after adding C++11 `thread_local` support in rev link:https://svnweb.freebsd.org/changeset/base/303795[303795]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1435
#, no-wrap
msgid "1200004"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1436
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304752[304752]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1437
#, no-wrap
msgid "August 24, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1439
#, no-wrap
msgid "12.0-CURRENT after fixing LC*MASK for man:newlocale[3] and man:querylocale[3] (rev link:https://svnweb.freebsd.org/changeset/base/304703[304703])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1440
#, no-wrap
msgid "1200005"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1441
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304789[304789]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1442
#, no-wrap
msgid "August 25, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1444
#, no-wrap
msgid "12.0-CURRENT after changing some ioctl interfaces in rev link:https://svnweb.freebsd.org/changeset/base/304787[304787] between the iSCSI userspace programs and the kernel."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1445
#, no-wrap
msgid "1200006"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1446
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305256[305256]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1447
#, no-wrap
msgid "September 1, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1449
#, no-wrap
msgid "12.0-CURRENT after man:crunchgen[1] META_MODE fix in link:https://svnweb.freebsd.org/changeset/base/305254[305254]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1450
#, no-wrap
msgid "1200007"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1451
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305421[305421]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1452
#, no-wrap
msgid "September 5, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1454
#, no-wrap
msgid "12.0-CURRENT after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1455
#, no-wrap
msgid "1200008"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1456
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305833[305833]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1457
#, no-wrap
msgid "September 15, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1459
#, no-wrap
msgid "12.0-CURRENT after removing the 4.3BSD compatible macro `m_copy()` in link:https://svnweb.freebsd.org/changeset/base/305824[305824]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1460
#, no-wrap
msgid "1200009"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1461
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306077[306077]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1462
#, no-wrap
msgid "September 21, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1464
#, no-wrap
msgid "12.0-CURRENT after removing `bio_taskqueue()` in link:https://svnweb.freebsd.org/changeset/base/305988[305988]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1465
#, no-wrap
msgid "1200010"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1466
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306276[306276]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1467
#, no-wrap
msgid "September 23, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1469
#, no-wrap
-msgid "12.0-CURRENT after mounting man:msdosfs[5] with longnames support by default."
+msgid "12.0-CURRENT after mounting man:msdosfs[5] with `longnames` support by default."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1470
#, no-wrap
msgid "1200011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1471
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306556[306556]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1472
#, no-wrap
msgid "October 1, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1474
#, no-wrap
msgid "12.0-CURRENT after adding `fb_memattr` field to `fb_info` in link:https://svnweb.freebsd.org/changeset/base/306555[306555]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1475
#, no-wrap
msgid "1200012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1476
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306592[306592]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1477
#, no-wrap
msgid "October 2, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1479
#, no-wrap
msgid "12.0-CURRENT after man:net80211[4] changes (rev link:https://svnweb.freebsd.org/changeset/base/306590[306590], link:https://svnweb.freebsd.org/changeset/base/306591[306591])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1480
#, no-wrap
msgid "1200013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1481
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307140[307140]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1482
#, no-wrap
msgid "October 12, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1484
#, no-wrap
-msgid "12.0-CURRENT after installing header files required development with libzfs_core."
+msgid "12.0-CURRENT after installing header files required development with `libzfs_core`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1485
#, no-wrap
msgid "1200014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1486
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307529[307529]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1487
#, no-wrap
msgid "October 17, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1489
#, no-wrap
msgid "12.0-CURRENT after merging common code in man:rtwn[4] and man:urtwn[4], and adding support for 802.11ac devices."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1490
#, no-wrap
msgid "1200015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1491
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/308874[308874]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1492
#, no-wrap
msgid "November 20, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1494
#, no-wrap
msgid "12.0-CURRENT after some ABI change for unbreaking powerpc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1495
#, no-wrap
msgid "1200016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1496
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/309017[309017]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1497
#, no-wrap
msgid "November 22, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1499
#, no-wrap
msgid "12.0-CURRENT after removing `PG_CACHED`-related fields from `vmmeter`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1500
#, no-wrap
msgid "1200017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1501
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/309124[309124]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1502
#, no-wrap
msgid "November 25, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1504
#, no-wrap
-msgid "12.0-CURRENT after upgrading our copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.0 release, and adding lld 3.9.0."
+msgid "12.0-CURRENT after upgrading copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.0 release, and adding lld 3.9.0."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1505
#, no-wrap
msgid "1200018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1506
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/309676[309676]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1507
#, no-wrap
msgid "December 7, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1509
#, no-wrap
msgid "12.0-CURRENT after adding the `ki_moretdname` member to `struct kinfo_proc` and `struct kinfo_proc32` to export the whole thread name to user-space utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1510
#, no-wrap
msgid "1200019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1511
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310149[310149]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1512
#, no-wrap
msgid "December 16, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1514
#, no-wrap
msgid "12.0-CURRENT after starting to lay down the foundation for 11ac support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1515
#, no-wrap
msgid "1200020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1516
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/312087[312087]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1517
#, no-wrap
msgid "January 13, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1519
#, no-wrap
msgid "12.0-CURRENT after removing `fgetsock` and `fputsock`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1520
#, no-wrap
msgid "1200021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1521
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/313858[313858]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1522
#, no-wrap
msgid "February 16, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1524
#, no-wrap
msgid "12.0-CURRENT after removing MCA and EISA support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1525
#, no-wrap
msgid "1200022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1526
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314040[314040]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1527
#, no-wrap
msgid "February 21, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1529
#, no-wrap
msgid "12.0-CURRENT after making the LinuxKPI task struct persistent across system calls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1531
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314373[314373]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1532
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1537
#, no-wrap
msgid "March 2, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1534
#, no-wrap
msgid "12.0-CURRENT after removing System V Release 4 binary compatibility support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1535
#, no-wrap
msgid "1200023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1536
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314564[314564]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1539
#, no-wrap
-msgid "12.0-CURRENT after upgrading our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0."
+msgid "12.0-CURRENT after upgrading copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1540
#, no-wrap
msgid "1200024"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1541
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314865[314865]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1542
#, no-wrap
msgid "March 7, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1544
#, no-wrap
msgid "12.0-CURRENT after removal of [.filename]#pcap-int.h#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1545
#, no-wrap
msgid "1200025"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1546
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315430[315430]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1547
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1552
#, no-wrap
msgid "March 16, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1549
#, no-wrap
msgid "12.0-CURRENT after addition of the [.filename]#<dev/mmc/mmc_ioctl.h># header."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1550
#, no-wrap
msgid "1200026"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1551
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315662[315662]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1554
#, no-wrap
msgid "12.0-CURRENT after hiding `struct inpcb` and `struct tcpcb` from userland."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1555
#, no-wrap
msgid "1200027"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1556
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315673[315673]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1557
#, no-wrap
msgid "March 21, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1559
#, no-wrap
msgid "12.0-CURRENT after making CAM SIM lock optional."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1560
#, no-wrap
msgid "1200028"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1561
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316683[316683]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1562
#, no-wrap
msgid "April 10, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1564
#, no-wrap
msgid "12.0-CURRENT after renaming `smp_no_rendevous_barrier()` to `smp_no_rendezvous_barrier()` in link:https://svnweb.freebsd.org/changeset/base/316648[316648]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1565
#, no-wrap
msgid "1200029"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1566
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/317176[317176]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1567
#, no-wrap
msgid "April 19, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1569
#, no-wrap
msgid "12.0-CURRENT after the removal of `struct vmmeter` from `struct pcpu` from link:https://svnweb.freebsd.org/changeset/base/317061[317061]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1570
#, no-wrap
msgid "1200030"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1571
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/317383[317383]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1572
#, no-wrap
msgid "April 24, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1574
#, no-wrap
msgid "12.0-CURRENT after removing NATM support including man:en[4], man:fatm[4], man:hatm[4], and man:patm[4]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1575
#, no-wrap
msgid "1200031"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1576
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/318736[318736]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1577
#, no-wrap
msgid "May 23, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1579
#, no-wrap
msgid "12.0-CURRENT after types `ino_t`, `dev_t`, `nlink_t` were extended to 64bit and `struct dirent` changed layout (also known as ino64)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1580
#, no-wrap
msgid "1200032"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1581
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/319664[319664]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1582
#, no-wrap
msgid "June 8, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1584
#, no-wrap
msgid "12.0-CURRENT after removal of `groff`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1585
#, no-wrap
msgid "1200033"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1586
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320043[320043]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1587
#, no-wrap
msgid "June 17, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1589
#, no-wrap
msgid "12.0-CURRENT after the type of the `struct event` member `data` was increased to 64bit, and ext structure members added."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1590
#, no-wrap
msgid "1200034"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1591
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320085[320085]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1592
#, no-wrap
msgid "June 19, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1594
#, no-wrap
msgid "12.0-CURRENT after the NFS client and server were changed so that they actually use the 64bit `ino_t`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1595
#, no-wrap
msgid "1200035"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1596
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320317[320317]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1597
#, no-wrap
msgid "June 24, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1599
#, no-wrap
msgid "12.0-CURRENT after the `MAP_GUARD` man:mmap[2] flag was added."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1600
#, no-wrap
msgid "1200036"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1601
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320347[320347]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1602
#, no-wrap
msgid "June 26, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1604
#, no-wrap
msgid "12.0-CURRENT after changing `time_t` to 64 bits on powerpc (32-bit version)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1605
#, no-wrap
msgid "1200037"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1606
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320545[320545]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1607
#, no-wrap
msgid "July 1, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1609
#, no-wrap
msgid "12.0-CURRENT after the cleanup and inlining of `bus_dmamap*` functions (link:https://svnweb.freebsd.org/changeset/base/320528[320528])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1610
#, no-wrap
msgid "1200038"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1611
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320879[320879]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1612
#, no-wrap
msgid "July 10, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1614
#, no-wrap
msgid "12.0-CURRENT after MMC CAM committed. (link:https://svnweb.freebsd.org/changeset/base/320844[320844])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1615
#, no-wrap
msgid "1200039"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1616
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321369[321369]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1617
#, no-wrap
msgid "July 22, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1619
#, no-wrap
msgid "12.0-CURRENT after upgrade of copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 5.0.0 (trunk r308421)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1620
#, no-wrap
msgid "1200040"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1621
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2924
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321688[321688]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1622
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2925
#, no-wrap
msgid "July 29, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1624
#, no-wrap
msgid "12.0-CURRENT after adding NFS client forced dismount support `umount -N`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1625
#, no-wrap
msgid "1200041"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1626
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/322762[322762]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1627
#, no-wrap
msgid "August 21, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1629
#, no-wrap
msgid "12.0-CURRENT after WRFSBASE instruction become operational on amd64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1630
#, no-wrap
msgid "1200042"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1631
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/322900[322900]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1632
#, no-wrap
msgid "August 25, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1634
#, no-wrap
msgid "12.0-CURRENT after PLPMTUD counters were changed to use man:counter[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1635
#, no-wrap
msgid "1200043"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1636
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/322989[322989]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1637
#, no-wrap
msgid "August 28, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1639
#, no-wrap
msgid "12.0-CURRENT after dropping x86 CACHE_LINE_SIZE down to 64 bytes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1640
#, no-wrap
msgid "1200044"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1641
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323349[323349]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1642
#, no-wrap
msgid "September 8, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1644
#, no-wrap
msgid "12.0-CURRENT after implementing `poll_wait()` in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1645
#, no-wrap
msgid "1200045"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1646
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323706[323706]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1647
#, no-wrap
msgid "September 18, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1649
#, no-wrap
msgid "12.0-CURRENT after adding shared memory support to LinuxKPI. (link:https://svnweb.freebsd.org/changeset/base/323703[323703])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1650
#, no-wrap
msgid "1200046"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1651
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323910[323910]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1652
#, no-wrap
msgid "September 22, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1654
#, no-wrap
msgid "12.0-CURRENT after adding support for 32-bit compatibility IOCTLs to LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1655
#, no-wrap
msgid "1200047"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1656
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324053[324053]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1657
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2935
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2940
#, no-wrap
msgid "September 26, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1659
#, no-wrap
msgid "12.0-CURRENT after removing M_HASHTYPE_RSS_UDP_IPV4_EX. (link:https://svnweb.freebsd.org/changeset/base/324052[324052])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1660
#, no-wrap
msgid "1200048"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1661
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324227[324227]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1662
#, no-wrap
msgid "October 2, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1664
#, no-wrap
msgid "12.0-CURRENT after hiding `struct socket` and `struct unpcb` from userland."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1665
#, no-wrap
msgid "1200049"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1666
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324281[324281]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1667
#, no-wrap
msgid "October 4, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1669
#, no-wrap
msgid "12.0-CURRENT after adding the `value.u16` field to `struct diocgattr_arg`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1670
#, no-wrap
msgid "1200050"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1671
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324342[324342]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1672
#, no-wrap
msgid "October 5, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1674
#, no-wrap
msgid "12.0-CURRENT after adding the `armv7 MACHINE_ARCH`. (link:https://svnweb.freebsd.org/changeset/base/324340[324340])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1675
#, no-wrap
msgid "1200051"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1676
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324455[324455]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1677
#, no-wrap
msgid "October 9, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1679
#, no-wrap
msgid "12.0-CURRENT after removing [.filename]#libstand.a# as a public interface. (link:https://svnweb.freebsd.org/changeset/base/324454[324454])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1680
#, no-wrap
msgid "1200052"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1681
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325028[325028]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1682
#, no-wrap
msgid "October 26, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1684
#, no-wrap
msgid "12.0-CURRENT after fixing `ptrace()` to always clear the correct thread event when resuming."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1685
#, no-wrap
msgid "1200053"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1686
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325506[325506]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1687
#, no-wrap
msgid "November 7, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1689
#, no-wrap
msgid "12.0-CURRENT after changing `struct mbuf` layout to add optional hardware timestamps for receive packets."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1690
#, no-wrap
msgid "1200054"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1691
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325852[325852]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1692
#, no-wrap
msgid "November 15, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1694
#, no-wrap
msgid "12.0-CURRENT after changing the layout of `struct vmtotal` to allow for reporting large memory counters."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1695
#, no-wrap
msgid "1200055"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1696
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/327740[327740]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1697
#, no-wrap
msgid "January 9, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1699
#, no-wrap
msgid "12.0-CURRENT after adding `cpucontrol -e` support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1700
#, no-wrap
msgid "1200056"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1701
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/327952[327952]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1702
#, no-wrap
msgid "January 14, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1704
#, no-wrap
msgid "12.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r321788)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1705
#, no-wrap
msgid "1200057"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1706
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329033[329033]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1707
#, no-wrap
msgid "February 8, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1709
#, no-wrap
msgid "12.0-CURRENT after applying a clang 6.0.0 fix to make the wine ports build correctly."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1710
#, no-wrap
msgid "1200058"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1711
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329166[329166]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1712
#, no-wrap
msgid "February 12, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1714
#, no-wrap
-msgid "12.0-CURRENT after the lua loader was committed."
+msgid "12.0-CURRENT after the Lua loader was committed."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1715
#, no-wrap
msgid "1200059"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1716
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/330299[330299]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1717
#, no-wrap
msgid "March 2, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1719
#, no-wrap
msgid "12.0-CURRENT after removing the declaration of `union semun` unless `_WANT_SEMUN` is defined. Also the removal of `struct mymsg` and the renaming of kernel-only members of `struct semid_ds` and `struct msgid_ds`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1720
#, no-wrap
msgid "1200060"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1721
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/330384[330384]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1722
#, no-wrap
msgid "March 4, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1724
#, no-wrap
msgid "12.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1725
#, no-wrap
msgid "1200061"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1726
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332100[332100]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1727
#, no-wrap
msgid "April 6, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1729
#, no-wrap
msgid "12.0-CURRENT after changing man:syslog[3] to emit RFC 5424 formatted messages."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1730
#, no-wrap
msgid "1200062"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1731
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332423[332423]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1732
#, no-wrap
msgid "April 12, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1734
#, no-wrap
msgid "12.0-CURRENT after changing the Netmap API."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1735
#, no-wrap
msgid "1200063"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1736
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/333446[333446]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1737
#, no-wrap
msgid "May 10, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1739
#, no-wrap
msgid "12.0-CURRENT after reworking CTL frontend and backend options to use man:nv[3], allow creating multiple ioctl frontend ports."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1740
#, no-wrap
msgid "1200064"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1741
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334074[334074]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1742
#, no-wrap
msgid "May 22, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1744
#, no-wrap
msgid "12.0-CURRENT after changing the ifnet address and multicast address TAILQ to CK_STAILQ."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1745
#, no-wrap
msgid "1200065"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1746
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334290[334290]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1747
#, no-wrap
msgid "May 28, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1749
#, no-wrap
msgid "12.0-CURRENT after changing man:dwatch[1] to allow '-E code' to override profile EVENT_DETAILS."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1750
#, no-wrap
msgid "1200066"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1751
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334466[334466]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1752
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3000
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3005
#, no-wrap
msgid "June 1, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1754
#, no-wrap
msgid "12.0-CURRENT after removal of in-kernel pmc tables for Intel."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1755
#, no-wrap
msgid "1200067"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1756
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334892[334892]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1757
#, no-wrap
msgid "June 9, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1759
#, no-wrap
msgid "12.0-CURRENT after adding DW_LANG constants to libdwarf."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1760
#, no-wrap
msgid "1200068"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1761
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334930[334930]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1762
#, no-wrap
msgid "June 12, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1764
#, no-wrap
msgid "12.0-CURRENT after changing the interface between the NFS modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1765
#, no-wrap
msgid "1200069"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1766
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335237[335237]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1767
#, no-wrap
msgid "June 15, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1769
#, no-wrap
msgid "12.0-CURRENT after changing `struct kerneldumpheader` to version 4 (similar to version 2 in 11-STABLE and previous)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1770
#, no-wrap
msgid "1200070"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1771
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335873[335873]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1772
#, no-wrap
msgid "July 2, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1774
#, no-wrap
msgid "12.0-CURRENT after inlining man:atomic[9] in modules on amd64 and i386 requiring all modules of consumers to be rebuilt for these architectures."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1775
#, no-wrap
msgid "1200071"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1776
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335930[335930]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1777
#, no-wrap
msgid "July 4, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1779
#, no-wrap
msgid "12.0-CURRENT after changing the ABI and API of man:epoch[9] (link:https://svnweb.freebsd.org/changeset/base/335924[335924]) requiring modules of consumers to be rebuilt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1780
#, no-wrap
msgid "1200072"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1781
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335979[335979]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1782
#, no-wrap
msgid "July 5, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1784
#, no-wrap
msgid "12.0-CURRENT after changing the ABI and API of `struct xinpcb` and friends."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1785
#, no-wrap
msgid "1200073"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1786
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336313[336313]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1787
#, no-wrap
msgid "July 15, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1789
#, no-wrap
msgid "12.0-CURRENT after changing the ABI and API of `struct if_shared_ctx` and `struct if_softc_ctx` requiring modules of man:iflib[9] consumers to be rebuilt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1790
#, no-wrap
msgid "1200074"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1791
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336360[336360]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1792
#, no-wrap
msgid "July 16, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1794
#, no-wrap
msgid "12.0-CURRENT after updating the configuration of libstdc++ to make use of C99 functions."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1795
#, no-wrap
msgid "1200075"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1796
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336538[336538]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1797
#, no-wrap
msgid "July 19, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1799
#, no-wrap
-msgid "12.0-CURRENT after zfsloader being folded into loader, and after adding ntpd:ntpd as uid:gid 123:123, and after removing arm big-endian support (MACHINE_ARCH=armeb)."
+msgid "12.0-CURRENT after `zfsloader` being folded into loader, and after adding ntpd:ntpd as uid:gid 123:123, and after removing arm big-endian support (MACHINE_ARCH=armeb)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1800
#, no-wrap
msgid "1200076"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1801
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336914[336914]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1802
#, no-wrap
msgid "July 30, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1804
#, no-wrap
-msgid "12.0-CURRENT after KPI changes to timespecadd."
+msgid "12.0-CURRENT after KPI changes to `timespecadd`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1805
#, no-wrap
msgid "1200077"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1806
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/337576[337576]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1807
#, no-wrap
msgid "August 10, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1809
#, no-wrap
msgid "12.0-CURRENT after man:timespec_get[3] was added to the system."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1810
#, no-wrap
msgid "1200078"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1811
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/337863[337863]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1812
#, no-wrap
msgid "August 15, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1814
#, no-wrap
msgid "12.0-CURRENT after exec.created hook for jails."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1815
#, no-wrap
msgid "1200079"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1816
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338061[338061]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1817
#, no-wrap
msgid "August 19, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1819
#, no-wrap
msgid "12.0-CURRENT after converting `arc4random` to using the Chacha20 algorithm and deprecating `arc4random_stir` and `arc4random_addrandom`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1820
#, no-wrap
msgid "1200080"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1821
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338172[338172]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1822
#, no-wrap
msgid "August 22, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1824
#, no-wrap
msgid "12.0-CURRENT after removing the drm drivers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1825
#, no-wrap
msgid "1200081"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1826
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338182[338182]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1827
#, no-wrap
msgid "August 21, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1829
#, no-wrap
msgid "12.0-CURRENT after KPI changes to NVMe."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1830
#, no-wrap
msgid "1200082"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1831
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338285[338285]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1832
#, no-wrap
msgid "August 24, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1834
#, no-wrap
msgid "12.0-CURRENT after reverting the removal of the drm drivers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1835
#, no-wrap
msgid "1200083"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1836
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338331[338331]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1837
#, no-wrap
msgid "August 26, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1839
#, no-wrap
msgid "12.0-CURRENT after removing `arc4random_stir` and `arc4random_addrandom`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1840
#, no-wrap
msgid "1200084"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1841
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338478[338478]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1842
#, no-wrap
msgid "September 5, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1844
#, no-wrap
msgid "12.0-CURRENT after updating man:objcopy[1] to properly handle little-endian MIPS64 object files."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1845
#, no-wrap
msgid "1200085"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1846
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339270[339270]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1849
#, no-wrap
msgid "12.0-STABLE after updating OpenSSL to version 1.1.1."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1850
#, no-wrap
msgid "1200086"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1851
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339732[339732]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1854
#, no-wrap
msgid "12.0-STABLE after updating OpenSSL shared library version numbers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1855
#, no-wrap
msgid "1200500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1856
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340471[340471]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1857
#, no-wrap
msgid "November 16, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1859
#, no-wrap
msgid "12-STABLE after releng/12.0 was branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1860
#, no-wrap
msgid "1200501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1861
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342801[342801]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1862
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3030
#, no-wrap
msgid "January 6, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1864
#, no-wrap
msgid "12-STABLE after merge of fixing `linux_destroy_dev()` behaviour when there are still files open from the destroying cdev."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1865
#, no-wrap
msgid "1200502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1866
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/343126[343126]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1867
#, no-wrap
msgid "January 17, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1869
#, no-wrap
msgid "12-STABLE after enabling sys/random.h #include from C++."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1870
#, no-wrap
msgid "1200503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1871
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344152[344152]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1872
#, no-wrap
-msgid "Febrary 15, 2019"
+msgid "February 15, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1874
#, no-wrap
msgid "12-STABLE after merge of fixing man:renameat[2] for CAPABILITIES kernels."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1875
#, no-wrap
msgid "1200504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1876
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345169[345169]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1879
#, no-wrap
msgid "12-STABLE after merging CCM for the benefit of the ZoF port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1880
#, no-wrap
msgid "1200505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1881
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345327[345327]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1882
#, no-wrap
msgid "March 20, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1884
#, no-wrap
msgid "12-STABLE after merging support for selectively disabling ZFS without disabling loader."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1885
#, no-wrap
msgid "1200506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1886
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346168[346168]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1887
#, no-wrap
msgid "April 12, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1889
#, no-wrap
msgid "12-STABLE after merging llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 8.0.0 final release r356365."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1890
#, no-wrap
msgid "1200507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1891
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346337[346337]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1892
#, no-wrap
msgid "April 17, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1894
#, no-wrap
msgid "12-STABLE after MFC of iflib changes in link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] and partially of link:https://svnweb.freebsd.org/changeset/base/345305[345305]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1895
#, no-wrap
msgid "1200508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1896
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3044
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346784[346784]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1897
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3045
#, no-wrap
msgid "April 27, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1899
#, no-wrap
-msgid "12-STABLE after ether_gen_addr availability."
+msgid "12-STABLE after `ether_gen_addr` availability."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1900
#, no-wrap
msgid "1200509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1901
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347790[347790]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1902
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3055
#, no-wrap
msgid "May 16, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1904
#, no-wrap
msgid "12-STABLE after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1905
#, no-wrap
msgid "1200510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1906
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348036[348036]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1907
#, no-wrap
msgid "May 21, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1909
#, no-wrap
msgid "12-STABLE after change to struct in linuxkpi from link:https://svnweb.freebsd.org/changeset/base/348035[348035]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1910
#, no-wrap
msgid "1200511"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1911
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348243[348243]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1912
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1917
#, no-wrap
msgid "May 24, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1914
#, no-wrap
-msgid "12-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/347843[347843]: adding group_leader member to struct task_struct to the LinuxKPI."
+msgid "12-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/347843[347843]: adding `group_leader` member to struct `task_struct` to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1915
#, no-wrap
msgid "1200512"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1916
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348245[348245]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1919
#, no-wrap
msgid "12-STABLE after adding context member to ww_mutex in LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1920
#, no-wrap
msgid "1200513"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1921
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349763[349763]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1922
#, no-wrap
msgid "July 5, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1924
#, no-wrap
msgid "12-STABLE after MFC of man:epoch[9] changes: link:https://svnweb.freebsd.org/changeset/base/349763[349763], link:https://svnweb.freebsd.org/changeset/base/340404[340404], link:https://svnweb.freebsd.org/changeset/base/340415[340415], link:https://svnweb.freebsd.org/changeset/base/340417[340417], link:https://svnweb.freebsd.org/changeset/base/340419[340419], link:https://svnweb.freebsd.org/changeset/base/340420[340420]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1925
#, no-wrap
msgid "1200514"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1926
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350083[350083]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1927
#, no-wrap
msgid "July 17, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1929
#, no-wrap
msgid "12-STABLE after additions to LinuxKPI's rcu list."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1930
#, no-wrap
msgid "1200515"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1931
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350877[350877]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1932
#, no-wrap
msgid "August 11, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1934
#, no-wrap
msgid "12-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/349891[349891] (reorganize the SRCS lists as one file per line, and then alphabetize them) and link:https://svnweb.freebsd.org/changeset/base/349972[349972] (add `arm_sync_icache()` and `arm_drain_writebuf()` sysarch syscall wrappers)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1935
#, no-wrap
msgid "1200516"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1936
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351276[351276]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1937
#, no-wrap
msgid "August 20, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1939
#, no-wrap
msgid "12-STABLE after MFC of various changes to iflib link:https://svnweb.freebsd.org/changeset/base/351276[351276]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1940
#, no-wrap
msgid "1200517"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1941
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352076[352076]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1944
#, no-wrap
msgid "12-STABLE after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1945
#, no-wrap
msgid "1200518"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1946
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352114[352114]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1947
#, no-wrap
msgid "September 10, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1949
#, no-wrap
msgid "12-STABLE after additional updates to LinuxKPI's sysfs."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1950
#, no-wrap
msgid "1200519"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1951
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352351[352351]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1952
#, no-wrap
msgid "September 15, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1954
#, no-wrap
msgid "12-STABLE after MFC of the new fusefs driver."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1955
#, no-wrap
msgid "1201000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1956
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352546[352546]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1957
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1962
#, no-wrap
msgid "September 20, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1959
#, no-wrap
msgid "releng/12.1 branched from stable/12@r352480."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1960
#, no-wrap
msgid "1201500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1961
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352547[352547]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1964
#, no-wrap
msgid "12-STABLE after branching releng/12.1."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1965
#, no-wrap
msgid "1201501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1966
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3069
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354598[354598]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1967
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1982
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3070
#, no-wrap
msgid "November 10, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1969
#, no-wrap
msgid "12-STABLE after fixing a potential OOB read security issue in libc++."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1970
#, no-wrap
msgid "1201502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1971
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354613[354613]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1972
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3075
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3080
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3085
#, no-wrap
msgid "November 11, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1974
#, no-wrap
msgid "12-STABLE after enabling device class group attributes in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1975
#, no-wrap
msgid "1201503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1976
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354928[354928]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1979
#, no-wrap
msgid "12-STABLE after adding support for `AT_EXECPATH` to man:elf_aux_info[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1980
#, no-wrap
msgid "1201504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1984
#, no-wrap
msgid "12-STABLE after correcting the C++ version check for declaring man:timespec_get[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1985
#, no-wrap
msgid "1201505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1986
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3089
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355899[355899]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1987
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3090
#, no-wrap
msgid "December 19, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1989
#, no-wrap
-msgid "12-STABLE after adding sigsetop extensions commonly found in musl libc and glibc."
+msgid "12-STABLE after adding `sigsetop` extensions commonly found in musl libc and glibc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1990
#, no-wrap
msgid "1201506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1991
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355968[355968]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1992
#, no-wrap
msgid "December 21, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1994
#, no-wrap
msgid "12-STABLE after doubling the value of `ARG_MAX`, for 64 bit platforms."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1995
#, no-wrap
msgid "1201507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1996
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356306[356306]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1999
#, no-wrap
msgid "12-STABLE after adding functions to man:bitstring[3] to find contiguous sequences of set or unset bits."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2000
#, no-wrap
msgid "1201508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2001
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356394[356394]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2004
#, no-wrap
msgid "12-STABLE after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2005
#, no-wrap
msgid "1201509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2006
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356460[356460]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2007
#, no-wrap
msgid "January 7, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2009
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2010
#, no-wrap
msgid "1201510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2011
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356679[356679]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2012
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3100
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3875
#, no-wrap
msgid "January 13, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2014
#, no-wrap
msgid "12-STABLE after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2015
#, no-wrap
msgid "1201511"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2016
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357333[357333]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2017
#, no-wrap
msgid "January 31, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2019
#, no-wrap
msgid "12-STABLE after adding [.filename]#/etc/os-release# as a symbolic link to [.filename]#/var/run/os-release#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2020
#, no-wrap
msgid "1201512"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2021
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357612[357612]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2022
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3105
#, no-wrap
msgid "February 6, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2024
#, no-wrap
msgid "12-STABLE after recent LinuxKPI changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2025
#, no-wrap
msgid "1201513"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2026
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359957[359957]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2027
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3110
#, no-wrap
msgid "April 15, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2029
#, no-wrap
msgid "12-STABLE after cloning the RCU interface into a sleepable and a non-sleepable part in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2030
#, no-wrap
msgid "1201514"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2031
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360525[360525]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2032
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2037
#, no-wrap
msgid "May 1, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2034
#, no-wrap
msgid "12-STABLE after implementing full man:bus_dma[9] support in the LinuxKPI and pulling in all dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2035
#, no-wrap
msgid "1201515"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2036
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360545[360545]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2039
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2040
#, no-wrap
msgid "1201516"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2041
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360620[360620]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2042
#, no-wrap
msgid "May 4, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2044
#, no-wrap
msgid "12-STABLE after moving `id_mapped` to end of `bus_dma_impl` structure to preserve KPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2045
#, no-wrap
msgid "1201517"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2046
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361350[361350]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2047
#, no-wrap
msgid "May 21, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2049
#, no-wrap
msgid "12-STABLE after renaming `vm.max_wired` to `vm.max_user_wired` and changing its type."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2050
#, no-wrap
msgid "1201518"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2051
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362319[362319]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2052
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3140
#, no-wrap
msgid "June 18, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2054
#, no-wrap
msgid "12-STABLE after implementing `__is_constexpr()` function macro in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2055
#, no-wrap
msgid "1201519"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2056
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362916[362916]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2057
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3145
#, no-wrap
msgid "July 4, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2059
#, no-wrap
msgid "12-STABLE after making liblzma use libmd implementation of SHA256."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2060
#, no-wrap
msgid "1201520"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2061
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363494[363494]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2062
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3150
#, no-wrap
msgid "July 24, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2064
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2065
#, no-wrap
msgid "1201521"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2066
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363790[363790]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2067
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3155
#, no-wrap
msgid "August 3, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2069
#, no-wrap
msgid "12-STABLE after implementing the `array_size()` function in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2070
#, no-wrap
msgid "1201522"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2071
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363832[363832]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2072
#, no-wrap
msgid "August 4, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2074
#, no-wrap
msgid "12-STABLE after adding sysctlbyname system call."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2075
#, no-wrap
msgid "1201523"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2076
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364390[364390]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2077
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3160
#, no-wrap
msgid "August 19, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2079
#, no-wrap
msgid "12-STABLE after change to clone the task struct fields related to RCU."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2080
#, no-wrap
msgid "1201524"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2081
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365356[365356]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2082
#, no-wrap
msgid "September 5, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2084
#, no-wrap
msgid "12-STABLE after splitting XDR off into a separate kernel module, to minimize ZFS dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2085
#, no-wrap
msgid "1201525"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2086
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3164
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365471[365471]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2089
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2154
#, no-wrap
-msgid "12-STABLE after adding atomic and bswap functions to libcompiler_rt."
+msgid "12-STABLE after adding atomic and `bswap` functions to libcompiler_rt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2090
#, no-wrap
msgid "1201526"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2091
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365608[365608]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2092
#, no-wrap
msgid "September 10, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2094
#, no-wrap
msgid "12-STABLE after updating net80211 and kernel privilege checking API changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2095
#, no-wrap
msgid "1202000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2096
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365618[365618]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2097
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2102
#, no-wrap
msgid "September 11, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2099
#, no-wrap
msgid "releng/12.2 branched from stable/12@r365618."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2100
#, no-wrap
msgid "1202500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2101
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365619[365619]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2104
#, no-wrap
msgid "12-STABLE after branching releng/12.2."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2105
#, no-wrap
msgid "1202501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2106
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3169
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365661[365661]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2107
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3170
#, no-wrap
msgid "September 12, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2109
#, no-wrap
msgid "12-STABLE after followup commits to libcompiler_rt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2110
#, no-wrap
msgid "1202502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2111
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365816[365816]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2112
#, no-wrap
msgid "September 16, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2114
#, no-wrap
msgid "12-STABLE after fixing man:crunchgen[1] application build with `WARNS=6`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2115
#, no-wrap
msgid "1202503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2116
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366878[366878]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2119
#, no-wrap
msgid "12-STABLE after populating the acquire context field of a `ww_mutex` in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2120
#, no-wrap
msgid "1202504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2121
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367511[367511]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2124
#, no-wrap
msgid "12-STABLE after the addition of man:ptsname_r[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2125
#, no-wrap
msgid "1202505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2126
#, no-wrap
msgid "gitref:f3d75bed5475b15f21edf4052665b1212b548bd0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2127
#, no-wrap
msgid "December 28, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2129
#, no-wrap
msgid "12-STABLE after improving handling of alternate settings in the USB stack."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2130
#, no-wrap
msgid "1202506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2131
#, no-wrap
msgid "gitref:d36cc12ddfe3335ec8306bd4b393f11069551fa0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2134
#, no-wrap
msgid "12-STABLE after changing the internal KAPI between the krpc and NFS."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2135
#, no-wrap
msgid "1202507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2136
#, no-wrap
msgid "gitref:1e279fe9deaea1c5e3503117dd3077dcffb1276d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2139
#, no-wrap
msgid "12-STABLE after changing the internal KAPI between the nscl.ko and nfscommon.ko modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2140
#, no-wrap
msgid "1202508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2141
#, no-wrap
msgid "gitref:489236b0474857b0a7a2df77c302290e12be9e7b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2144
#, no-wrap
msgid "12-STABLE after changing the internal KAPI between the krpc and nfsd modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2145
#, no-wrap
msgid "1203500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2146
#, no-wrap
msgid "gitref:f2900e784cb024e55ec0f5cd6834af5fadcb9f9a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2147
#, no-wrap
msgid "October 20, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2149
#, no-wrap
msgid "12-STABLE after branching releng/12.3."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2150
#, no-wrap
msgid "1203501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2151
#, no-wrap
msgid "gitref:b148c7b87148b653fdbef9c5aa591b9abcd99e26[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2152
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2157
#, no-wrap
msgid "December 22, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2155
#, no-wrap
msgid "1203502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2156
#, no-wrap
msgid "gitref:4772e4135cb3fe7f25531894f3b02f35ec086bda[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2159
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 11.0.1."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2160
#, no-wrap
msgid "1203503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2161
#, no-wrap
msgid "gitref:e405b2dc913c99189aa9b923ed686a790253cc7e[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2162
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2167
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2172
#, no-wrap
msgid "December 25, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2164
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 12.0.0."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2165
#, no-wrap
msgid "1203504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2166
#, no-wrap
msgid "gitref:1a398266112e73f91a4f2e2701ceefd3f2948aac[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2169
#, no-wrap
msgid "12-STABLE after adding out-of-line LSE atomics helpers to [.filename]#libcompiler_rt.a# on aarch64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2170
#, no-wrap
msgid "1203505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2171
#, no-wrap
msgid "gitref:0b7be89b329e0f862c25f34abfb13c75a4d45f2a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2174
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 13.0.0."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2175
#, no-wrap
msgid "1203506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2176
#, no-wrap
msgid "gitref:f591279d9c93bc2ea9cd1a447c2df11d437fbc7b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2177
#, no-wrap
msgid "February 12, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2179
#, no-wrap
msgid "12-STABLE after restoring availability tradeoff of random(4)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2180
#, no-wrap
msgid "1203507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2181
#, no-wrap
msgid "gitref:180d95e04e938328de8f2a24d16fdb5049e15262[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2182
#, no-wrap
msgid "April 9, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2184
#, no-wrap
msgid "12-STABLE after zlib unification."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2185
#, no-wrap
msgid "1204000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2186
#, no-wrap
msgid "gitref:fce871fe35204527a2ce08e43e1572ae9295cc00[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2187
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2192
#, no-wrap
msgid "October 20, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2189
#, no-wrap
msgid "releng/12.4 branched from stable/12."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2190
#, no-wrap
msgid "1204500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2191
#, no-wrap
msgid "gitref:6a9031c5e2ba5435aa4ea08ee05c351d5bef035d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2194
#, no-wrap
msgid "12-STABLE after branching releng/12.4."
msgstr ""
#. Template:
#. |12XXXXX
#. |gitref:XXXXXXXX[repository="src",length=12]
#. |October 30, 2021
#. |12-STABLE after XXXXXX.
#. type: Title ==
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2206
#, no-wrap
msgid "FreeBSD 11 Versions"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2209
#, no-wrap
msgid "FreeBSD 11 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2218
#, no-wrap
msgid "1100000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2219
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256284[256284]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2220
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3493
#, no-wrap
msgid "October 10, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2222
#, no-wrap
msgid "11.0-CURRENT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2223
#, no-wrap
msgid "1100001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2224
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256776[256776]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2225
#, no-wrap
msgid "October 19, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2227
#, no-wrap
msgid "11.0-CURRENT after addition of support for \"first boot\" [.filename]#rc.d# scripts, so ports can make use of this."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2228
#, no-wrap
msgid "1100002"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2229
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/257696[257696]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2230
#, no-wrap
msgid "November 5, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2232
#, no-wrap
msgid "11.0-CURRENT after dropping support for historic ioctls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2233
#, no-wrap
msgid "1100003"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2234
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/258284[258284]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2235
#, no-wrap
msgid "November 17, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2237
#, no-wrap
msgid "11.0-CURRENT after iconv changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2238
#, no-wrap
msgid "1100004"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2239
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259424[259424]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2240
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3518
#, no-wrap
msgid "December 15, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2242
#, no-wrap
msgid "11.0-CURRENT after the behavior change of `gss_pseudo_random` introduced in link:https://svnweb.freebsd.org/changeset/base/259286[259286]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2243
#, no-wrap
msgid "1100005"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2244
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/260010[260010]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2245
#, no-wrap
msgid "December 28, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2247
#, no-wrap
msgid "11.0-CURRENT after link:https://svnweb.freebsd.org/changeset/base/259951[259951] - Do not coalesce entries in man:vm_map_stack[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2248
#, no-wrap
msgid "1100006"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2249
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261246[261246]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2250
#, no-wrap
msgid "January 28, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2252
#, no-wrap
msgid "11.0-CURRENT after upgrades of libelf and libdwarf."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2253
#, no-wrap
msgid "1100007"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2254
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261283[261283]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2255
#, no-wrap
msgid "January 30, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2257
#, no-wrap
msgid "11.0-CURRENT after upgrade of libc++ to 3.4 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2258
#, no-wrap
msgid "1100008"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2259
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261881[261881]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2260
#, no-wrap
msgid "February 14, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2262
#, no-wrap
msgid "11.0-CURRENT after libc++ 3.4 ABI compatibility fix."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2263
#, no-wrap
msgid "1100009"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2264
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261991[261991]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2265
#, no-wrap
msgid "February 16, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2267
#, no-wrap
msgid "11.0-CURRENT after upgrade of llvm/clang to 3.4 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2268
#, no-wrap
msgid "1100010"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2269
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/262630[262630]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2270
#, no-wrap
msgid "February 28, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2272
#, no-wrap
msgid "11.0-CURRENT after upgrade of ncurses to 5.9 release (rev link:https://svnweb.freebsd.org/changeset/base/262629[262629])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2273
#, no-wrap
msgid "1100011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2274
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263102[263102]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2275
#, no-wrap
msgid "March 13, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2277
#, no-wrap
-msgid "11.0-CURRENT after ABI change in struct if_data."
+msgid "11.0-CURRENT after ABI change in struct `if_data`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2278
#, no-wrap
msgid "1100012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2279
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263140[263140]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2280
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2285
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4231
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4233
#, no-wrap
msgid "March 14, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2282
#, no-wrap
msgid "11.0-CURRENT after removal of Novell IPX protocol support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2283
#, no-wrap
msgid "1100013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2284
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263152[263152]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2287
#, no-wrap
msgid "11.0-CURRENT after removal of AppleTalk protocol support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2288
#, no-wrap
msgid "1100014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2289
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263235[263235]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2290
#, no-wrap
msgid "March 16, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2292
#, no-wrap
msgid "11.0-CURRENT after renaming [.filename]#<sys/capability.h># to [.filename]#<sys/capsicum.h># to avoid a clash with similarly named headers in other operating systems. A compatibility header is left in place to limit build breakage, but will be deprecated in due course."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2293
#, no-wrap
msgid "1100015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2294
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263620[263620]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2295
#, no-wrap
msgid "March 22, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2297
#, no-wrap
msgid "11.0-CURRENT after `cnt` rename to `vm_cnt`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2298
#, no-wrap
msgid "1100016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2299
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263660[263660]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2300
#, no-wrap
msgid "March 23, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2302
#, no-wrap
msgid "11.0-CURRENT after addition of `armv6hf TARGET_ARCH`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2303
#, no-wrap
msgid "1100017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2304
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264121[264121]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2305
#, no-wrap
msgid "April 4, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2307
#, no-wrap
msgid "11.0-CURRENT after GCC support for `__block` definition."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2308
#, no-wrap
msgid "1100018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2309
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264212[264212]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2310
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3543
#, no-wrap
msgid "April 6, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2312
#, no-wrap
msgid "11.0-CURRENT after support for UDP-Lite protocol (RFC 3828)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2313
#, no-wrap
msgid "1100019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2314
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3547
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4247
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264289[264289]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2315
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3548
#, no-wrap
msgid "April 8, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2317
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:06.openssl (rev link:https://svnweb.freebsd.org/changeset/base/264265[264265])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2318
#, no-wrap
msgid "1100020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2319
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265215[265215]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2320
#, no-wrap
msgid "May 1, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2322
#, no-wrap
-msgid "11.0-CURRENT after removing lindev in favor of having /dev/full by default (rev link:https://svnweb.freebsd.org/changeset/base/265212[265212])."
+msgid "11.0-CURRENT after removing `lindev` in favor of having /dev/full by default (rev link:https://svnweb.freebsd.org/changeset/base/265212[265212])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2323
#, no-wrap
msgid "1100021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2324
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/266151[266151]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2325
#, no-wrap
msgid "May 6, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2327
#, no-wrap
msgid "11.0-CURRENT after [.filename]#src.opts.mk# changes, decoupling man:make.conf[5] from `buildworld` (rev link:https://svnweb.freebsd.org/changeset/base/265419[265419])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2328
#, no-wrap
msgid "1100022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2329
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/266904[266904]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2330
#, no-wrap
msgid "May 30, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2332
#, no-wrap
msgid "11.0-CURRENT after changes to man:strcasecmp[3], moving man:strcasecmp_l[3] and man:strncasecmp_l[3] from [.filename]#<string.h># to [.filename]#<strings.h># for POSIX 2008 compliance (rev link:https://svnweb.freebsd.org/changeset/base/266865[266865])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2333
#, no-wrap
msgid "1100023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2334
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267440[267440]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2335
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3563
#, no-wrap
msgid "June 13, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2337
#, no-wrap
msgid "11.0-CURRENT after the CUSE library and kernel module have been attached to the build by default."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2338
#, no-wrap
msgid "1100024"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2339
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267992[267992]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2340
#, no-wrap
msgid "June 27, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2342
#, no-wrap
msgid "11.0-CURRENT after man:sysctl[3] API change."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2343
#, no-wrap
msgid "1100025"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2344
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268066[268066]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2345
#, no-wrap
msgid "June 30, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2347
#, no-wrap
msgid "11.0-CURRENT after man:regex[3] library update to add \">\" and \"<\" delimiters."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2348
#, no-wrap
msgid "1100026"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2349
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268118[268118]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2350
#, no-wrap
msgid "July 1, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2352
#, no-wrap
msgid "11.0-CURRENT after the internal interface between the NFS modules, including the krpc, was changed by (rev link:https://svnweb.freebsd.org/changeset/base/268115[268115])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2353
#, no-wrap
msgid "1100027"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2354
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268441[268441]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2355
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3568
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4268
#, no-wrap
msgid "July 8, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2357
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268431[268431])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2358
#, no-wrap
msgid "1100028"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2359
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268945[268945]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2360
#, no-wrap
msgid "July 21, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2362
#, no-wrap
msgid "11.0-CURRENT after man:hdestroy[3] compliance fix changed ABI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2363
#, no-wrap
msgid "1100029"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2364
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270173[270173]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2365
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3578
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3583
#, no-wrap
msgid "August 3, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2367
#, no-wrap
msgid "11.0-CURRENT after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269489[269489])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2368
#, no-wrap
msgid "1100030"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2369
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270929[270929]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2370
#, no-wrap
msgid "September 1, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2372
#, no-wrap
msgid "11.0-CURRENT after `SOCK_RAW` sockets were changed to not modify packets at all."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2373
#, no-wrap
msgid "1100031"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2374
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3587
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4275
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5067
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271341[271341]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2375
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2385
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3588
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4276
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5068
#, no-wrap
msgid "September 9, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2377
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:18.openssl (rev link:https://svnweb.freebsd.org/changeset/base/269686[269686])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2378
#, no-wrap
msgid "1100032"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2379
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271438[271438]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2380
#, no-wrap
msgid "September 11, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2382
#, no-wrap
msgid "11.0-CURRENT after API changes to `ifa_ifwithbroadaddr`, `ifa_ifwithdstaddr`, `ifa_ifwithnet`, and `ifa_ifwithroute`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2383
#, no-wrap
msgid "1100033"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2384
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271657[271657]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2387
#, no-wrap
msgid "11.0-CURRENT after changing `access`, `eaccess`, and `faccessat` to validate the mode argument."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2388
#, no-wrap
msgid "1100034"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2389
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3592
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4280
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5072
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271686[271686]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2390
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3593
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4281
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5073
#, no-wrap
msgid "September 16, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2392
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:19.tcp (rev link:https://svnweb.freebsd.org/changeset/base/271666[271666])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2393
#, no-wrap
msgid "1100035"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2394
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271705[271705]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2395
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2400
#, no-wrap
msgid "September 17, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2397
#, no-wrap
msgid "11.0-CURRENT after i915 HW context support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2398
#, no-wrap
msgid "1100036"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2399
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271724[271724]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2402
#, no-wrap
msgid "Version bump to have ABI note distinguish binaries ready for strict man:mmap[2] flags checking (rev link:https://svnweb.freebsd.org/changeset/base/271724[271724])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2403
#, no-wrap
msgid "1100037"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2404
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272674[272674]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2405
#, no-wrap
msgid "October 6, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2407
#, no-wrap
msgid "11.0-CURRENT after addition of man:explicit_bzero[3] (rev link:https://svnweb.freebsd.org/changeset/base/272673[272673])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2408
#, no-wrap
msgid "1100038"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2409
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272951[272951]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2410
#, no-wrap
msgid "October 11, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2412
#, no-wrap
msgid "11.0-CURRENT after cleanup of TCP wrapper headers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2413
#, no-wrap
msgid "1100039"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2414
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/273250[273250]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2415
#, no-wrap
msgid "October 18, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2417
#, no-wrap
msgid "11.0-CURRENT after removal of `MAP_RENAME` and `MAP_NORESERVE`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2418
#, no-wrap
msgid "1100040"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2419
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3612
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4285
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4287
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5077
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/273432[273432]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2420
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3613
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4286
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5074
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5078
#, no-wrap
msgid "October 21, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2422
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:23 (rev link:https://svnweb.freebsd.org/changeset/base/273146[273146])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2423
#, no-wrap
msgid "1100041"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2424
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/273875[273875]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2425
#, no-wrap
msgid "October 30, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2427
#, no-wrap
msgid "11.0-CURRENT after API changes to `syscall_register`, `syscall32_register`, `syscall_register_helper` and `syscall32_register_helper` (rev link:https://svnweb.freebsd.org/changeset/base/273707[273707])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2428
#, no-wrap
msgid "1100042"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2429
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274046[274046]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2430
#, no-wrap
msgid "November 3, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2432
#, no-wrap
msgid "11.0-CURRENT after a change to `struct tcpcb`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2433
#, no-wrap
msgid "1100043"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2434
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274085[274085]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2435
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2440
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2445
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3618
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4291
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5083
#, no-wrap
msgid "November 4, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2437
#, no-wrap
msgid "11.0-CURRENT after enabling man:vt[4] by default."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2438
#, no-wrap
msgid "1100044"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2439
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274116[274116]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2442
#, no-wrap
-msgid "11.0-CURRENT after adding new libraries/utilities (dpv and figpar) for data throughput visualization."
+msgid "11.0-CURRENT after adding new libraries/utilities (`dpv` and `figpar`) for data throughput visualization."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2443
#, no-wrap
msgid "1100045"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2444
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3617
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4290
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5078
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5082
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274162[274162]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2447
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2448
#, no-wrap
msgid "1100046"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2449
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274470[274470]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2450
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2455
#, no-wrap
msgid "November 13, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2452
#, no-wrap
msgid "11.0-CURRENT after `kern_poll` signature change (rev link:https://svnweb.freebsd.org/changeset/base/274462[274462])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2453
#, no-wrap
msgid "1100047"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2454
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274476[274476]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2457
#, no-wrap
msgid "11.0-CURRENT after removal of no-at version of VFS syscalls helpers, like `kern_open`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2458
#, no-wrap
msgid "1100048"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2459
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275358[275358]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2460
#, no-wrap
msgid "December 1, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2462
#, no-wrap
msgid "11.0-CURRENT after starting the process of removing the use of the deprecated \"M_FLOWID\" flag from the network code."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2463
#, no-wrap
msgid "1100049"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2464
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275633[275633]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2465
#, no-wrap
msgid "December 9, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2467
#, no-wrap
msgid "11.0-CURRENT after importing an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2468
#, no-wrap
msgid "1100050"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2469
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275732[275732]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2470
#, no-wrap
msgid "December 12, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2472
#, no-wrap
msgid "11.0-CURRENT after adding AES-ICM and AES-GCM to OpenCrypto."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2473
#, no-wrap
msgid "1100051"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2474
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276096[276096]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2475
#, no-wrap
msgid "December 23, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2477
#, no-wrap
msgid "11.0-CURRENT after removing old NFS client and server code from the kernel."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2478
#, no-wrap
msgid "1100052"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2479
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276479[276479]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2480
#, no-wrap
msgid "December 31, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2482
#, no-wrap
msgid "11.0-CURRENT after upgrade of clang, llvm and lldb to 3.5.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2483
#, no-wrap
msgid "1100053"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2484
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276781[276781]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2485
#, no-wrap
msgid "January 7, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2487
#, no-wrap
msgid "11.0-CURRENT after man:MCLGET[9] gained a return value (rev link:https://svnweb.freebsd.org/changeset/base/276750[276750])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2488
#, no-wrap
msgid "1100054"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2489
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277213[277213]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2490
#, no-wrap
msgid "January 15, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2492
#, no-wrap
msgid "11.0-CURRENT after rewrite of callout subsystem."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2493
#, no-wrap
msgid "1100055"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2494
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277528[277528]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2495
#, no-wrap
msgid "January 22, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2497
#, no-wrap
msgid "11.0-CURRENT after reverting callout changes in link:https://svnweb.freebsd.org/changeset/base/277213[277213]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2498
#, no-wrap
msgid "1100056"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2499
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277610[277610]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2500
#, no-wrap
msgid "January 23, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2502
#, no-wrap
msgid "11.0-CURRENT after addition of `futimens` and `utimensat` system calls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2503
#, no-wrap
msgid "1100057"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2504
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277897[277897]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2505
#, no-wrap
msgid "January 29, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2507
#, no-wrap
-msgid "11.0-CURRENT after removal of d_thread_t."
+msgid "11.0-CURRENT after removal of `d_thread_t`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2508
#, no-wrap
msgid "1100058"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2509
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278228[278228]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2510
#, no-wrap
msgid "February 5, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2512
#, no-wrap
msgid "11.0-CURRENT after addition of support for probing the SCSI VPD Extended Inquiry page (0x86)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2513
#, no-wrap
msgid "1100059"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2514
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278442[278442]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2515
#, no-wrap
msgid "February 9, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2517
#, no-wrap
msgid "11.0-CURRENT after import of xz 5.2.0, which added multi-threaded compression and lzma gained libthr dependency (rev link:https://svnweb.freebsd.org/changeset/base/278433[278433])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2518
#, no-wrap
msgid "1100060"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2519
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278846[278846]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2520
#, no-wrap
msgid "February 16, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2522
#, no-wrap
msgid "11.0-CURRENT after forwarding `FBIO_BLANK` to framebuffer clients."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2523
#, no-wrap
msgid "1100061"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2524
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278964[278964]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2525
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3648
#, no-wrap
msgid "February 18, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2527
#, no-wrap
msgid "11.0-CURRENT after `CDAI_FLAG_NONE` addition."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2528
#, no-wrap
msgid "1100062"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2529
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279221[279221]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2530
#, no-wrap
msgid "February 23, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2532
#, no-wrap
msgid "11.0-CURRENT after man:mtio[4] and man:sa[4] API and man:ioctl[2] additions."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2533
#, no-wrap
msgid "1100063"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2534
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279728[279728]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2535
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2540
#, no-wrap
msgid "March 7, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2537
#, no-wrap
msgid "11.0-CURRENT after adding mutex support to the `pps_ioctl()` API in the kernel."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2538
#, no-wrap
msgid "1100064"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2539
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279729[279729]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2542
#, no-wrap
msgid "11.0-CURRENT after adding PPS support to USB serial drivers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2543
#, no-wrap
msgid "1100065"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2544
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280031[280031]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2545
#, no-wrap
msgid "March 15, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2547
#, no-wrap
msgid "11.0-CURRENT after upgrading clang, llvm and lldb to 3.6.0."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2548
#, no-wrap
msgid "1100066"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2549
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280306[280306]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2550
#, no-wrap
msgid "March 20, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2552
#, no-wrap
msgid "11.0-CURRENT after removal of SSLv2 support from OpenSSL."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2553
#, no-wrap
msgid "1100067"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2554
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280630[280630]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2555
#, no-wrap
msgid "March 25, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2557
#, no-wrap
msgid "11.0-CURRENT after removal of SSLv2 support from man:fetch[1] and man:fetch[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2558
#, no-wrap
msgid "1100068"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2559
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281172[281172]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2560
#, no-wrap
msgid "April 6, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2562
#, no-wrap
msgid "11.0-CURRENT after change to net.inet6.ip6.mif6table sysctl."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2563
#, no-wrap
msgid "1100069"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2564
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281550[281550]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2565
#, no-wrap
msgid "April 15, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2567
#, no-wrap
msgid "11.0-CURRENT after removal of const qualifier from man:iconv[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2568
#, no-wrap
msgid "1100070"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2569
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281613[281613]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2570
#, no-wrap
msgid "April 16, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2572
#, no-wrap
msgid "11.0-CURRENT after moving ALTQ from [.filename]#contrib# to [.filename]#net/altq#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2573
#, no-wrap
msgid "1100071"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2574
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282256[282256]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2575
#, no-wrap
msgid "April 29, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2577
#, no-wrap
msgid "11.0-CURRENT after API/ABI change to man:smb[4] (rev link:https://svnweb.freebsd.org/changeset/base/281985[281985])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2578
#, no-wrap
msgid "1100072"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2579
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282319[282319]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2580
#, no-wrap
msgid "May 1, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2582
#, no-wrap
msgid "11.0-CURRENT after adding man:reallocarray[3] in libc (rev link:https://svnweb.freebsd.org/changeset/base/282314[282314])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2583
#, no-wrap
msgid "1100073"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2584
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282650[282650]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2585
#, no-wrap
msgid "May 8, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2587
#, no-wrap
msgid "11.0-CURRENT after extending the maximum number of allowed PCM channels in a PCM stream to 127 and decreasing the maximum number of sub-channels to 1."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2588
#, no-wrap
msgid "1100074"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2589
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283526[283526]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2590
#, no-wrap
msgid "May 25, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2592
#, no-wrap
msgid "11.0-CURRENT after adding preliminary support for x86-64 Linux binaries (rev link:https://svnweb.freebsd.org/changeset/base/283424[283424]), and upgrading clang and llvm to 3.6.1."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2593
#, no-wrap
msgid "1100075"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2594
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283623[283623]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2595
#, no-wrap
msgid "May 27, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2597
#, no-wrap
msgid "11.0-CURRENT after `dounmount()` requiring a reference on the passed struct mount (rev link:https://svnweb.freebsd.org/changeset/base/283602[283602])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2598
#, no-wrap
msgid "1100076"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2599
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283983[283983]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2600
#, no-wrap
msgid "June 4, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2602
#, no-wrap
msgid "11.0-CURRENT after disabled generation of legacy formatted password databases entries by default."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2603
#, no-wrap
msgid "1100077"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2604
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/284233[284233]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2605
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3700
#, no-wrap
msgid "June 10, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2607
#, no-wrap
msgid "11.0-CURRENT after API changes to `lim_cur`, `lim_max`, and `lim_rlimit` (rev link:https://svnweb.freebsd.org/changeset/base/284215[284215])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2608
#, no-wrap
msgid "1100078"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2609
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/286672[286672]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2610
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2825
#, no-wrap
msgid "August 12, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2612
#, no-wrap
msgid "11.0-CURRENT after man:crunchgen[1] changes from link:https://svnweb.freebsd.org/changeset/base/284356[284356] to link:https://svnweb.freebsd.org/changeset/base/285986[285986]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2613
#, no-wrap
msgid "1100079"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2614
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/286874[286874]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2615
#, no-wrap
msgid "August 18, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2617
#, no-wrap
msgid "11.0-CURRENT after import of jemalloc 4.0.0 (rev link:https://svnweb.freebsd.org/changeset/base/286866[286866])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2618
#, no-wrap
msgid "1100080"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2619
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/288943[288943]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2620
#, no-wrap
msgid "October 5, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2622
#, no-wrap
msgid "11.0-CURRENT after upgrading clang, llvm, lldb, compiler-rt and libc++ to 3.7.0."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2623
#, no-wrap
msgid "1100081"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2624
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289415[289415]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2625
#, no-wrap
msgid "October 16, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2627
#, no-wrap
-msgid "11.0-CURRENT after undating ZFS to support resumable send/receive (rev link:https://svnweb.freebsd.org/changeset/base/289362[289362])."
+msgid "11.0-CURRENT after `undating` ZFS to support resumable send/receive (rev link:https://svnweb.freebsd.org/changeset/base/289362[289362])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2628
#, no-wrap
msgid "1100082"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2629
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289594[289594]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2630
#, no-wrap
msgid "October 19, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2632
#, no-wrap
msgid "11.0-CURRENT after Linux KPI updates."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2633
#, no-wrap
msgid "1100083"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2634
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289749[289749]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2635
#, no-wrap
msgid "October 22, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2637
#, no-wrap
msgid "11.0-CURRENT after renaming [.filename]#linuxapi.ko# to [.filename]#linuxkpi.ko#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2638
#, no-wrap
msgid "1100084"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2639
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290135[290135]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2640
#, no-wrap
msgid "October 29, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2642
#, no-wrap
msgid "11.0-CURRENT after moving the LinuxKPI module into the default kernel build."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2643
#, no-wrap
msgid "1100085"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2644
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290207[290207]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2645
#, no-wrap
msgid "October 30, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2647
#, no-wrap
msgid "11.0-CURRENT after import of OpenSSL 1.0.2d."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2648
#, no-wrap
msgid "1100086"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2649
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290275[290275]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2650
#, no-wrap
msgid "November 2, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2652
#, no-wrap
msgid "11.0-CURRENT after making man:figpar[3] macros more unique."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2653
#, no-wrap
msgid "1100087"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2654
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290479[290479]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2655
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2660
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2665
#, no-wrap
msgid "November 7, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2657
#, no-wrap
msgid "11.0-CURRENT after changing man:sysctl_add_oid[9]'s ABI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2658
#, no-wrap
msgid "1100088"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2659
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290495[290495]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2662
#, no-wrap
msgid "11.0-CURRENT after string collation and locales rework."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2663
#, no-wrap
msgid "1100089"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2664
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290505[290505]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2667
#, no-wrap
msgid "11.0-CURRENT after API change to man:sysctl_add_oid[9] (rev link:https://svnweb.freebsd.org/changeset/base/290475[290475])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2668
#, no-wrap
msgid "1100090"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2669
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290715[290715]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2670
#, no-wrap
msgid "November 10, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2672
#, no-wrap
msgid "11.0-CURRENT after API change to callout_stop macro; (rev link:https://svnweb.freebsd.org/changeset/base/290664[290664])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2673
#, no-wrap
msgid "1100091"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2674
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/291537[291537]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2675
#, no-wrap
msgid "November 30, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2677
#, no-wrap
msgid "11.0-CURRENT after changing the interface between the [.filename]#nfsd.ko# and [.filename]#nfscommon.ko# modules in link:https://svnweb.freebsd.org/changeset/base/291527[291527]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2678
#, no-wrap
msgid "1100092"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2679
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292499[292499]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2680
#, no-wrap
msgid "December 19, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2682
#, no-wrap
-msgid "11.0-CURRENT after removal of vm_pageout_grow_cache (rev link:https://svnweb.freebsd.org/changeset/base/292469[292469])."
+msgid "11.0-CURRENT after removal of `vm_pageout_grow_cache` (rev link:https://svnweb.freebsd.org/changeset/base/292469[292469])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2683
#, no-wrap
msgid "1100093"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2684
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292966[292966]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2685
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3740
#, no-wrap
msgid "December 30, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2687
#, no-wrap
msgid "11.0-CURRENT after removal of sys/crypto/sha2.h (rev link:https://svnweb.freebsd.org/changeset/base/292782[292782])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2688
#, no-wrap
msgid "1100094"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2689
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294086[294086]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2690
#, no-wrap
msgid "January 15, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2692
#, no-wrap
msgid "11.0-CURRENT after LinuxKPI PCI changes (rev link:https://svnweb.freebsd.org/changeset/base/294086[294086])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2693
#, no-wrap
msgid "1100095"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2694
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294327[294327]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2695
#, no-wrap
msgid "January 19, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2697
#, no-wrap
msgid "11.0-CURRENT after LRO optimizations."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2698
#, no-wrap
msgid "1100096"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2699
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294505[294505]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2700
#, no-wrap
msgid "January 21, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2702
#, no-wrap
msgid "11.0-CURRENT after LinuxKPI idr_* additions."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2703
#, no-wrap
msgid "1100097"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2704
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294860[294860]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2705
#, no-wrap
msgid "January 26, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2707
#, no-wrap
msgid "11.0-CURRENT after API change to man:dpv[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2708
#, no-wrap
msgid "1100098"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2709
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/295682[295682]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2710
#, no-wrap
msgid "February 16, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2712
#, no-wrap
-msgid "11.0-CURRENT after API change to rman (rev link:https://svnweb.freebsd.org/changeset/base/294883[294883])."
+msgid "11.0-CURRENT after API change to `rman` (rev link:https://svnweb.freebsd.org/changeset/base/294883[294883])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2713
#, no-wrap
msgid "1100099"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2714
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/295739[295739]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2715
#, no-wrap
msgid "February 18, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2717
#, no-wrap
msgid "11.0-CURRENT after allowing drivers to set the TCP ACK/data segment aggregation limit."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2718
#, no-wrap
msgid "1100100"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2719
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296136[296136]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2720
#, no-wrap
msgid "February 26, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2722
#, no-wrap
msgid "11.0-CURRENT after man:bus_alloc_resource_any[9] API addition."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2723
#, no-wrap
msgid "1100101"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2724
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296417[296417]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2725
#, no-wrap
msgid "March 5, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2727
#, no-wrap
-msgid "11.0-CURRENT after upgrading our copies of clang, llvm, lldb and compiler-rt to 3.8.0 release."
+msgid "11.0-CURRENT after upgrading copies of clang, llvm, lldb and compiler-rt to 3.8.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2728
#, no-wrap
msgid "1100102"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2729
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296749[296749]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2730
#, no-wrap
msgid "March 12, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2732
#, no-wrap
msgid "11.0-CURRENT after libelf cross-endian fix in rev link:https://svnweb.freebsd.org/changeset/base/296685[296685]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2733
#, no-wrap
msgid "1100103"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2734
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/297000[297000]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2735
#, no-wrap
msgid "March 18, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2737
#, no-wrap
-msgid "11.0-CURRENT after using uintmax_t for rman ranges."
+msgid "11.0-CURRENT after using `uintmax_t` for `rman` ranges."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2738
#, no-wrap
msgid "1100104"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2739
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/297156[297156]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2740
#, no-wrap
msgid "March 21, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2742
#, no-wrap
-msgid "11.0-CURRENT after tracking filemon usage via a proc.p_filemon pointer rather than its own lists."
+msgid "11.0-CURRENT after tracking `filemon` usage via a proc.p_filemon pointer rather than its own lists."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2743
#, no-wrap
msgid "1100105"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2744
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/297602[297602]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2745
#, no-wrap
msgid "April 6, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2747
#, no-wrap
-msgid "11.0-CURRENT after fixing sed functions `i` and `a` from discarding leading white space."
+msgid "11.0-CURRENT after fixing sed functions `i` and `a` from discarding leading space."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2748
#, no-wrap
msgid "1100106"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2749
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/298486[298486]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2750
#, no-wrap
msgid "April 22, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2752
#, no-wrap
msgid "11.0-CURRENT after fixes for using IPv6 addresses with RDMA."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2753
#, no-wrap
msgid "1100107"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2754
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299090[299090]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2755
#, no-wrap
msgid "May 4, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2757
#, no-wrap
-msgid "11.0-CURRENT after improving performance and functionality of the man:bitstring[3] api."
+msgid "11.0-CURRENT after improving performance and functionality of the man:bitstring[3] API."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2758
#, no-wrap
msgid "1100108"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2759
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299530[299530]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2760
#, no-wrap
msgid "May 12, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2762
#, no-wrap
msgid "11.0-CURRENT after fixing handling of IOCTLs in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2763
#, no-wrap
msgid "1100109"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2764
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299933[299933]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2765
#, no-wrap
msgid "May 16, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2767
#, no-wrap
msgid "11.0-CURRENT after implementing more Linux device related functions in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2768
#, no-wrap
msgid "1100110"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2769
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300207[300207]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2770
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4311
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4315
#, no-wrap
msgid "May 19, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2772
#, no-wrap
msgid "11.0-CURRENT after adding support for managing Shingled Magnetic Recording (SMR) drives."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2773
#, no-wrap
msgid "1100111"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2774
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300303[300303]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2775
#, no-wrap
msgid "May 20, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2777
#, no-wrap
-msgid "11.0-CURRENT after removing brk and sbrk from arm64."
+msgid "11.0-CURRENT after removing `brk` and `sbrk` from arm64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2778
#, no-wrap
msgid "1100112"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2779
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300539[300539]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2780
#, no-wrap
msgid "May 23, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2782
#, no-wrap
-msgid "11.0-CURRENT after adding bit_count to the man:bitstring[3] API."
+msgid "11.0-CURRENT after adding `bit_count` to the man:bitstring[3] API."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2783
#, no-wrap
msgid "1100113"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2784
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300701[300701]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2785
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2790
#, no-wrap
msgid "May 26, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2787
#, no-wrap
msgid "11.0-CURRENT after disabling alignment faults on armv6."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2788
#, no-wrap
msgid "1100114"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2789
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300806[300806]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2792
#, no-wrap
msgid "11.0-CURRENT after fixing man:crunchgen[1] usage with `MAKEOBJDIRPREFIX`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2793
#, no-wrap
msgid "1100115"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2794
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300982[300982]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2795
#, no-wrap
msgid "May 30, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2797
#, no-wrap
msgid "11.0-CURRENT after adding an mbuf flag for `M_HASHTYPE_`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2798
#, no-wrap
msgid "1100116"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2799
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/301011[301011]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2800
#, no-wrap
msgid "May 31, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2802
#, no-wrap
msgid "11.0-CURRENT after SHA-512t256 (rev link:https://svnweb.freebsd.org/changeset/base/300903[300903]) and Skein (rev link:https://svnweb.freebsd.org/changeset/base/300966[300966]) where added to libmd, libcrypt, the kernel, and ZFS (rev link:https://svnweb.freebsd.org/changeset/base/301010[301010])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2803
#, no-wrap
msgid "1100117"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2804
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/301892[301892]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2805
#, no-wrap
msgid "June 6, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2807
#, no-wrap
msgid "11.0-CURRENT after libpam was synced with stock link:https://svnweb.freebsd.org/changeset/base/301602[301602], bumping library version."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2808
#, no-wrap
msgid "1100118"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2809
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302071[302071]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2810
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3790
#, no-wrap
msgid "June 21, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2812
#, no-wrap
msgid "11.0-CURRENT after breaking binary compatibility of struct disk link:https://svnweb.freebsd.org/changeset/base/302069[302069]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2813
#, no-wrap
msgid "1100119"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2814
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302150[302150]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2815
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2820
#, no-wrap
msgid "June 23, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2817
#, no-wrap
-msgid "11.0-CURRENT after switching geom_disk to using a pool mutex."
+msgid "11.0-CURRENT after switching `geom_disk` to using a pool mutex."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2818
#, no-wrap
msgid "1100120"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2819
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302153[302153]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2822
#, no-wrap
msgid "11.0-CURRENT after adding spares to struct ifnet."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2823
#, no-wrap
msgid "1100121"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2824
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2829
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/303979[303979]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2827
#, no-wrap
msgid "11-STABLE after `releng/11.0` branched from 11-STABLE (rev link:https://svnweb.freebsd.org/changeset/base/303975[303975])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2828
#, no-wrap
msgid "1100500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2830
#, no-wrap
msgid "August 12, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2832
#, no-wrap
msgid "11.0-STABLE adding branched link:https://svnweb.freebsd.org/changeset/base/303976[303976]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2833
#, no-wrap
msgid "1100501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2834
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304609[304609]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2837
#, no-wrap
-msgid "11.0-STABLE after adding C++11 thread_local support."
+msgid "11.0-STABLE after adding C++11 `thread_local` support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2838
#, no-wrap
msgid "1100502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2839
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304865[304865]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2840
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3805
#, no-wrap
msgid "August 26, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2842
#, no-wrap
msgid "11.0-STABLE after `LC_*_MASK` fix."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2843
#, no-wrap
msgid "1100503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2844
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305733[305733]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2845
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3808
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4316
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5095
#, no-wrap
msgid "September 12, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2847
#, no-wrap
msgid "11.0-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2848
#, no-wrap
msgid "1100504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2849
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307330[307330]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2850
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3815
#, no-wrap
msgid "October 14, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2852
#, no-wrap
msgid "11.0-STABLE after ZFS merges."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2853
#, no-wrap
msgid "1100505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2854
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307590[307590]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2855
#, no-wrap
msgid "October 19, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2857
#, no-wrap
msgid "11.0-STABLE after `struct fb_info` change."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2858
#, no-wrap
msgid "1100506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2859
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/308048[308048]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2860
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3820
#, no-wrap
msgid "October 28, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2862
#, no-wrap
-msgid "11.0-STABLE after installing header files required development with libzfs_core."
+msgid "11.0-STABLE after installing header files required development with `libzfs_core`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2863
#, no-wrap
msgid "1100507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2864
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310120[310120]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2865
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3825
#, no-wrap
msgid "December 15, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2867
#, no-wrap
msgid "11.0-STABLE after adding the `ki_moretdname` member to `struct kinfo_proc` and `struct kinfo_proc32` to export the whole thread name to user-space utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2868
#, no-wrap
msgid "1100508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2869
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310618[310618]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2870
#, no-wrap
msgid "December 26, 2016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2872
#, no-wrap
-msgid "11.0-STABLE after upgrading our copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.1 release, and adding lld 3.9.1."
+msgid "11.0-STABLE after upgrading copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.1 release, and adding lld 3.9.1."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2873
#, no-wrap
msgid "1100509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2874
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/311186[311186]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2875
#, no-wrap
msgid "January 3, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2877
#, no-wrap
msgid "11.0-STABLE after man:crunchgen[1] META_MODE fix (rev link:https://svnweb.freebsd.org/changeset/base/311185[311185])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2878
#, no-wrap
msgid "1100510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2879
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315312[315312]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2880
#, no-wrap
msgid "March 15, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2882
#, no-wrap
msgid "11.0-STABLE after MFC of `fget_cap`, `getsock_cap`, and related changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2883
#, no-wrap
msgid "1100511"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2884
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316423[316423]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2885
#, no-wrap
msgid "April 2, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2887
#, no-wrap
msgid "11.0-STABLE after multiple MFCs updating clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2888
#, no-wrap
msgid "1100512"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2889
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316498[316498]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2890
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3835
#, no-wrap
msgid "April 4, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2892
#, no-wrap
msgid "11.0-STABLE after making CAM SIM lock optional (revs link:https://svnweb.freebsd.org/changeset/base/315673[315673], link:https://svnweb.freebsd.org/changeset/base/315674[315674])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2893
#, no-wrap
msgid "1100513"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2894
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/318197[318197]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2895
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3840
#, no-wrap
msgid "May 11, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2897
#, no-wrap
msgid "11.0-STABLE after merging the addition of the [.filename]#<dev/mmc/mmc_ioctl.h># header."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2898
#, no-wrap
msgid "1100514"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2899
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/319279[319279]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2900
#, no-wrap
msgid "May 31, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2902
#, no-wrap
msgid "11.0-STABLE after multiple MFCs of `libpcap`, `WITHOUT_INET6`, and a few other minor changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2903
#, no-wrap
msgid "1101000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2904
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320486[320486]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2905
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2910
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2915
#, no-wrap
msgid "June 30, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2907
#, no-wrap
msgid "`releng/11.1` branched from `stable/11`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2908
#, no-wrap
msgid "1101001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2909
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320763[320763]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2912
#, no-wrap
msgid "11.1-RC1 After merging the `MAP_GUARD` man:mmap[2] flag addition."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2913
#, no-wrap
msgid "1101500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2914
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320487[320487]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2917
#, no-wrap
msgid "11-STABLE after `releng/11.1` branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2918
#, no-wrap
msgid "1101501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2919
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320666[320666]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2920
#, no-wrap
msgid "July 5, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2922
#, no-wrap
msgid "11-STABLE after merging the `MAP_GUARD` man:mmap[2] flag addition."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2923
#, no-wrap
msgid "1101502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2927
#, no-wrap
msgid "11-STABLE after merging the NFS client forced dismount support `umount -N` addition."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2928
#, no-wrap
msgid "1101503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2929
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323431[323431]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2930
#, no-wrap
msgid "September 11, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2932
#, no-wrap
msgid "11-STABLE after merging changes making the WRFSBASE instruction operational on amd64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2933
#, no-wrap
msgid "1101504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2934
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324006[324006]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2937
#, no-wrap
msgid "11-STABLE after merging libm from head, which adds man:cacoshl[3], man:cacosl[3], man:casinhl[3], man:casinl[3], man:catanl[3], man:catanhl[3], man:sincos[3], man:sincosf[3], and man:sincosl[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2938
#, no-wrap
msgid "1101505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2939
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324023[324023]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2942
#, no-wrap
msgid "11-STABLE after merging clang, llvm, lld, lldb, compiler-rt and libc++ 5.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2943
#, no-wrap
msgid "1101506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2944
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325003[325003]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2945
#, no-wrap
msgid "October 25, 2017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2947
#, no-wrap
msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/324281[324281], adding the `value.u16` field to `struct diocgattr_arg`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2948
#, no-wrap
msgid "1101507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2949
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3862
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3864
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/328379[328379]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2950
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2955
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3865
#, no-wrap
msgid "January 24, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2952
#, no-wrap
msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/325028[325028], fixing `ptrace()` to always clear the correct thread event when resuming."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2953
#, no-wrap
msgid "1101508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2954
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/328386[328386]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2957
#, no-wrap
msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/316648[316648], renaming `smp_no_rendevous_barrier()` to `smp_no_rendezvous_barrier()`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2958
#, no-wrap
msgid "1101509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2959
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/328653[328653]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2960
#, no-wrap
msgid "February 1, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2962
#, no-wrap
msgid "11-STABLE after an overwrite merge backport of the LinuxKPI from FreeBSD-head."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2963
#, no-wrap
msgid "1101510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2964
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329450[329450]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2965
#, no-wrap
msgid "February 17, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2967
#, no-wrap
msgid "11-STABLE after the `cmpxchg()` macro is now fully functional in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2968
#, no-wrap
msgid "1101511"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2969
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329981[329981]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2970
#, no-wrap
msgid "February 25, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2972
#, no-wrap
msgid "11-STABLE after concluding the recent LinuxKPI related updates."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2973
#, no-wrap
msgid "1101512"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2974
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/331219[331219]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2975
#, no-wrap
msgid "March 19, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2977
#, no-wrap
-msgid "11-STABLE after merging retpoline support from the upstream llvm, clang and lld 5.0 branches."
+msgid "11-STABLE after merging `retpoline` support from the upstream llvm, clang and lld 5.0 branches."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2978
#, no-wrap
msgid "1101513"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2979
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/331838[331838]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2980
#, no-wrap
msgid "March 31, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2982
#, no-wrap
msgid "11-STABLE after merging clang, llvm, lld, lldb, compiler-rt and libc++ 6.0.0 release, and several follow-up fixes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2983
#, no-wrap
msgid "1101514"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2984
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332089[332089]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2985
#, no-wrap
msgid "April 5, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2987
#, no-wrap
-msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/328331[328331], adding a new and incompatible interpretation of ${name}_limits in rc scripts."
+msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/328331[328331], adding a new and incompatible interpretation of `${name}_limits` in rc scripts."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2988
#, no-wrap
msgid "1101515"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2989
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332363[332363]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2990
#, no-wrap
msgid "April 10, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2992
#, no-wrap
-msgid "11-STABLE after reverting link:https://svnweb.freebsd.org/changeset/base/331880[331880], removing the new and incompatible interpretation of ${name}_limits in rc scripts."
+msgid "11-STABLE after reverting link:https://svnweb.freebsd.org/changeset/base/331880[331880], removing the new and incompatible interpretation of `${name}_limits` in rc scripts."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2993
#, no-wrap
msgid "1101516"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2994
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334392[334392]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2995
#, no-wrap
msgid "May 30, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2997
#, no-wrap
msgid "11-STABLE after man:dwatch[1] touch-ups."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2998
#, no-wrap
msgid "1102000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2999
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334459[334459]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3002
#, no-wrap
msgid "`releng/11.2` branched from `stable/11`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3003
#, no-wrap
msgid "1102500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3004
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334461[334461]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3007
#, no-wrap
msgid "11-STABLE after releng/11.2 branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3008
#, no-wrap
msgid "1102501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3009
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335436[335436]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3010
#, no-wrap
msgid "June 20, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3012
#, no-wrap
msgid "11-STABLE after LinuxKPI updates requiring recompilation of external kernel modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3013
#, no-wrap
msgid "1102502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3014
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338617[338617]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3015
#, no-wrap
msgid "September 12, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3017
#, no-wrap
msgid "11-STABLE after adding a socket option SO_TS_CLOCK and fixing `recvmsg32()` system call to properly down-convert layout of the 64-bit structures to match what 32-bit app(s) expect."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3018
#, no-wrap
msgid "1102503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3019
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338931[338931]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3020
#, no-wrap
msgid "September 25, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3022
#, no-wrap
msgid "11-STABLE after merging a TCP checksum fix to man:iflib[9] and adding new media types to if_media.h"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3023
#, no-wrap
msgid "1102504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3024
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340309[340309]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3025
#, no-wrap
msgid "November 9, 2018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3027
#, no-wrap
msgid "11-STABLE after several MFCs: updating man:objcopy[1] to properly handle little-endian MIPS64 object; correcting mips64el test to use ELF header; adding test for 64-bit ELF in _libelf_is_mips64el."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3028
#, no-wrap
msgid "1102505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3029
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342804[342804]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3032
#, no-wrap
msgid "11-STABLE after merge of fixing `linux_destroy_dev()` behaviour when there are still files open from the destroying cdev."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3033
#, no-wrap
msgid "1102506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3034
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344220[344220]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3035
#, no-wrap
msgid "February 17, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3037
#, no-wrap
msgid "11-STABLE after merging multiple commits to lualoader."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3038
#, no-wrap
msgid "1102507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3039
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346296[346296]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3042
#, no-wrap
msgid "11-STABLE after merging llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 8.0.0 final release r356365."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3043
#, no-wrap
msgid "1102508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3047
#, no-wrap
-msgid "11-STABLE after ether_gen_addr availability."
+msgid "11-STABLE after `ether_gen_addr` availability."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3048
#, no-wrap
msgid "1102509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3049
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347212[347212]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3052
#, no-wrap
msgid "11-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] and partially of link:https://svnweb.freebsd.org/changeset/base/345305[345305]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3053
#, no-wrap
msgid "1102510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3054
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347883[347883]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3057
#, no-wrap
msgid "11-STABLE after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3058
#, no-wrap
msgid "1103000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3059
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349026[349026]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3060
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3065
#, no-wrap
msgid "June 14, 2019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3062
#, no-wrap
msgid "`releng/11.3` branched from `stable/11`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3063
#, no-wrap
msgid "1103500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3064
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349027[349027]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3067
#, no-wrap
msgid "11-STABLE after releng/11.3 branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3068
#, no-wrap
msgid "1103501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3072
#, no-wrap
msgid "11-STABLE after fixing a potential OOB read security issue in libc++."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3073
#, no-wrap
msgid "1103502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3074
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354614[354614]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3077
#, no-wrap
msgid "11-STABLE after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3078
#, no-wrap
msgid "1103503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3079
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354615[354615]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3082
#, no-wrap
msgid "11-STABLE after LinuxKPI sysfs improvements."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3083
#, no-wrap
msgid "1103504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3084
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354616[354616]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3087
#, no-wrap
msgid "11-STABLE after enabling device class group attributes in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3088
#, no-wrap
msgid "1103505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3092
#, no-wrap
-msgid "11-STABLE after adding sigsetop extensions commonly found in musl libc and glibc."
+msgid "11-STABLE after adding `sigsetop` extensions commonly found in musl libc and glibc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3093
#, no-wrap
msgid "1103506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3094
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356395[356395]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3097
#, no-wrap
msgid "11-STABLE after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3098
#, no-wrap
msgid "1103507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3099
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356680[356680]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3102
#, no-wrap
msgid "11-STABLE after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3103
#, no-wrap
msgid "1103508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3104
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357613[357613]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3107
#, no-wrap
msgid "11-STABLE after recent LinuxKPI changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3108
#, no-wrap
msgid "1103509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3109
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359958[359958]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3112
#, no-wrap
msgid "11-STABLE after moving `id_mapped` to end of `bus_dma_impl` structure to preserve KPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3113
#, no-wrap
msgid "1103510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3114
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360658[360658]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3115
#, no-wrap
msgid "May 5, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3117
#, no-wrap
msgid "11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3118
#, no-wrap
msgid "1103511"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3119
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360784[360784]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3122
#, no-wrap
msgid "11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3123
#, no-wrap
msgid "1104000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3124
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360804[360804]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3125
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3130
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3135
#, no-wrap
msgid "May 8, 2020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3127
#, no-wrap
msgid "`releng/11.4` branched from `stable/11`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3128
#, no-wrap
msgid "1104001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3129
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360822[360822]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3132
#, no-wrap
msgid "11.4-BETA1 after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3133
#, no-wrap
msgid "1104500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3134
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360805[360805]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3137
#, no-wrap
msgid "11-STABLE after releng/11.4 branched."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3138
#, no-wrap
msgid "1104501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3139
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362320[362320]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3142
#, no-wrap
msgid "11-STABLE after implementing `__is_constexpr()` function macro in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3143
#, no-wrap
msgid "1104502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3144
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362919[362919]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3147
#, no-wrap
msgid "11-STABLE after making liblzma use libmd implementation of SHA256."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3148
#, no-wrap
msgid "1104503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3149
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363496[363496]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3152
#, no-wrap
msgid "11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3153
#, no-wrap
msgid "1104504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3154
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363792[363792]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3157
#, no-wrap
msgid "11-STABLE after implementing the `array_size()` function in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3158
#, no-wrap
msgid "1104505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3159
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364391[364391]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3162
#, no-wrap
msgid "11-STABLE after change to clone the task struct fields related to RCU."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3163
#, no-wrap
msgid "1104506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3167
#, no-wrap
-msgid "11-STABLE after adding atomic and bswap functions to libcompiler_rt."
+msgid "11-STABLE after adding atomic and `bswap` functions to libcompiler_rt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3168
#, no-wrap
msgid "1104507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3172
#, no-wrap
msgid "11-STABLE after followup commits to libcompiler_rt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3173
#, no-wrap
msgid "1104508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3174
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366879[366879]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3177
#, no-wrap
msgid "11-STABLE after populating the acquire context field of a `ww_mutex` in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3178
#, no-wrap
msgid "1104509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3179
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366889[366889]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3182
#, no-wrap
msgid "11-STABLE after additions to LinuxKPI's `RCU` list."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3183
#, no-wrap
msgid "1104510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3184
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367513[367513]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3186
#, no-wrap
msgid "11-STABLE after the addition of `ptsname_r`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3189
#, no-wrap
msgid "FreeBSD 10 Versions"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3192
#, no-wrap
msgid "FreeBSD 10 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3201
#, no-wrap
msgid "1000000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3202
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225757[225757]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3203
#, no-wrap
msgid "September 26, 2011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3205
#, no-wrap
msgid "10.0-CURRENT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3206
#, no-wrap
msgid "1000001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3207
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/227070[227070]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3208
#, no-wrap
msgid "November 4, 2011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3210
#, no-wrap
msgid "10-CURRENT after addition of the man:posix_fadvise[2] system call."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3211
#, no-wrap
msgid "1000002"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3212
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/228444[228444]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3213
#, no-wrap
msgid "December 12, 2011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3215
#, no-wrap
msgid "10-CURRENT after defining boolean true/false in sys/types.h, sizeof(bool) may have changed (rev link:https://svnweb.freebsd.org/changeset/base/228444[228444]). 10-CURRENT after xlocale.h was introduced (rev link:https://svnweb.freebsd.org/changeset/base/227753[227753])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3216
#, no-wrap
msgid "1000003"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3217
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/228571[228571]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3218
#, no-wrap
msgid "December 16, 2011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3220
#, no-wrap
-msgid "10-CURRENT after major changes to man:carp[4], changing size of struct in_aliasreq, struct in6_aliasreq (rev link:https://svnweb.freebsd.org/changeset/base/228571[228571]) and straitening arguments check of SIOCAIFADDR (rev link:https://svnweb.freebsd.org/changeset/base/228574[228574])."
+msgid "10-CURRENT after major changes to man:carp[4], changing size of struct `in_aliasreq`, struct in6_aliasreq (rev link:https://svnweb.freebsd.org/changeset/base/228571[228571]) and straitening arguments check of SIOCAIFADDR (rev link:https://svnweb.freebsd.org/changeset/base/228574[228574])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3221
#, no-wrap
msgid "1000004"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3222
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229204[229204]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3223
#, no-wrap
msgid "January 1, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3225
#, no-wrap
msgid "10-CURRENT after the removal of `skpc()` and the addition of man:memcchr[9] (rev link:https://svnweb.freebsd.org/changeset/base/229200[229200])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3226
#, no-wrap
msgid "1000005"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3227
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230207[230207]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3228
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4131
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5018
#, no-wrap
msgid "January 16, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3230
#, no-wrap
msgid "10-CURRENT after the removal of support for SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFDSTADDR ioctls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3231
#, no-wrap
msgid "1000006"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3232
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230590[230590]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3233
#, no-wrap
msgid "January 26, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3235
#, no-wrap
msgid "10-CURRENT after introduction of read capacity data asynchronous notification in the man:cam[4] layer."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3236
#, no-wrap
msgid "1000007"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3237
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231025[231025]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3238
#, no-wrap
msgid "February 5, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3240
#, no-wrap
msgid "10-CURRENT after introduction of new man:tcp[4] socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3241
#, no-wrap
msgid "1000008"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3242
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231505[231505]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3243
#, no-wrap
msgid "February 11, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3245
#, no-wrap
msgid "10-CURRENT after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3246
#, no-wrap
msgid "1000009"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3247
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232154[232154]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3248
#, no-wrap
msgid "February 25, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3250
#, no-wrap
msgid "10-CURRENT after import of libarchive 3.0.3 (rev link:https://svnweb.freebsd.org/changeset/base/232153[232153])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3251
#, no-wrap
msgid "1000010"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3252
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/233757[233757]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3253
#, no-wrap
msgid "March 31, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3255
#, no-wrap
-msgid "10-CURRENT after xlocale cleanup."
+msgid "10-CURRENT after `xlocale` cleanup."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3256
#, no-wrap
msgid "1000011"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3257
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/234355[234355]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3258
#, no-wrap
msgid "April 16, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3260
#, no-wrap
msgid "10-CURRENT import of LLVM/Clang 3.1 trunk link:https://svnweb.freebsd.org/changeset/base/154661[154661] (rev link:https://svnweb.freebsd.org/changeset/base/234353[234353])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3261
#, no-wrap
msgid "1000012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3262
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/234924[234924]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3263
#, no-wrap
msgid "May 2, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3265
#, no-wrap
msgid "10-CURRENT jemalloc import."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3266
#, no-wrap
msgid "1000013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3267
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/235788[235788]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3268
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4151
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4153
#, no-wrap
msgid "May 22, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3270
#, no-wrap
-msgid "10-CURRENT after byacc import."
+msgid "10-CURRENT after `byacc` import."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3271
#, no-wrap
msgid "1000014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3272
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/237631[237631]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3273
#, no-wrap
msgid "June 27, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3275
#, no-wrap
msgid "10-CURRENT after BSD sort becoming the default sort (rev link:https://svnweb.freebsd.org/changeset/base/237629[237629])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3276
#, no-wrap
msgid "1000015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3277
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/238405[238405]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3278
#, no-wrap
msgid "July 12, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3280
#, no-wrap
msgid "10-CURRENT after import of OpenSSL 1.0.1c."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3282
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/238429[238429]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3283
#, no-wrap
msgid "July 13, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3285
#, no-wrap
msgid "10-CURRENT after the fix for LLVM/Clang 3.1 regression."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3286
#, no-wrap
msgid "1000016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3287
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239179[239179]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3288
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3293
#, no-wrap
msgid "August 8, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3290
#, no-wrap
msgid "10-CURRENT after KBI change in man:ucom[4]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3291
#, no-wrap
msgid "1000017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3292
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239214[239214]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3295
#, no-wrap
msgid "10-CURRENT after adding streams feature to the USB stack."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3296
#, no-wrap
msgid "1000018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3297
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/240233[240233]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3298
#, no-wrap
msgid "September 8, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3300
#, no-wrap
msgid "10-CURRENT after major rewrite of man:pf[4]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3301
#, no-wrap
msgid "1000019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3302
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241245[241245]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3303
#, no-wrap
msgid "October 6, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3305
#, no-wrap
msgid "10-CURRENT after man:pfil[9] KBI/KPI changed to supply packets in net byte order to AF_INET filter hooks."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3306
#, no-wrap
msgid "1000020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3307
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241610[241610]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3308
#, no-wrap
msgid "October 16, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3310
#, no-wrap
-msgid "10-CURRENT after the network interface cloning KPI changed and struct if_clone becoming opaque."
+msgid "10-CURRENT after the network interface cloning KPI changed and struct `if_clone` becoming opaque."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3311
#, no-wrap
msgid "1000021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3312
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241897[241897]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3313
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3318
#, no-wrap
msgid "October 22, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3315
#, no-wrap
msgid "10-CURRENT after removal of support for non-MPSAFE filesystems and addition of support for FUSEFS (rev link:https://svnweb.freebsd.org/changeset/base/241519[241519])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3316
#, no-wrap
msgid "1000022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3317
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241913[241913]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3320
#, no-wrap
msgid "10-CURRENT after the entire IPv4 stack switched to network byte order for IP packet header storage."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3321
#, no-wrap
msgid "1000023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3322
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/242619[242619]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3323
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3328
#, no-wrap
msgid "November 5, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3325
#, no-wrap
msgid "10-CURRENT after jitter buffer in the common USB serial driver code, to temporarily store characters if the TTY buffer is full. Add flow stop and start signals when this happens."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3326
#, no-wrap
msgid "1000024"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3327
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/242624[242624]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3330
#, no-wrap
msgid "10-CURRENT after clang was made the default compiler on i386 and amd64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3331
#, no-wrap
msgid "1000025"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3332
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/243443[243443]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3333
#, no-wrap
msgid "November 17, 2012"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3335
#, no-wrap
msgid "10-CURRENT after the sin6_scope_id member variable in struct sockaddr_in6 was changed to being filled by the kernel before passing the structure to the userland via sysctl or routing socket. This means the KAME-specific embedded scope id in sin6_addr.s6_addr[2] is always cleared in userland application."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3336
#, no-wrap
msgid "1000026"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3337
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/245313[245313]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3338
#, no-wrap
msgid "January 11, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3340
#, no-wrap
msgid "10-CURRENT after install gained the -N flag. May also be used to indicate the presence of nmtree."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3341
#, no-wrap
msgid "1000027"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3342
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/246084[246084]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3343
#, no-wrap
msgid "January 29, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3345
#, no-wrap
msgid "10-CURRENT after cat gained the -l flag (rev link:https://svnweb.freebsd.org/changeset/base/246083[246083])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3346
#, no-wrap
msgid "1000028"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3347
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/246759[246759]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3348
#, no-wrap
msgid "February 13, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3350
#, no-wrap
msgid "10-CURRENT after USB moved to the driver structure requiring a rebuild of all USB modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3351
#, no-wrap
msgid "1000029"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3352
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/247821[247821]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3353
#, no-wrap
msgid "March 4, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3355
#, no-wrap
msgid "10-CURRENT after the introduction of tickless callout facility which also changed the layout of struct callout (rev link:https://svnweb.freebsd.org/changeset/base/247777[247777])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3356
#, no-wrap
msgid "1000030"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3357
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248210[248210]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3358
#, no-wrap
msgid "March 12, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3360
#, no-wrap
msgid "10-CURRENT after KPI breakage introduced in the VM subsystem to support read/write locking (rev link:https://svnweb.freebsd.org/changeset/base/248084[248084])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3361
#, no-wrap
msgid "1000031"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3362
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/249943[249943]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3363
#, no-wrap
msgid "April 26, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3365
#, no-wrap
-msgid "10-CURRENT after the dst parameter of the ifnet `if_output` method was changed to take const qualifier (rev link:https://svnweb.freebsd.org/changeset/base/249925[249925])."
+msgid "10-CURRENT after the `dst` parameter of the ifnet `if_output` method was changed to take const qualifier (rev link:https://svnweb.freebsd.org/changeset/base/249925[249925])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3366
#, no-wrap
msgid "1000032"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3367
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/250163[250163]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3368
#, no-wrap
msgid "May 1, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3370
#, no-wrap
msgid "10-CURRENT after the introduction of the man:accept4[2] (rev link:https://svnweb.freebsd.org/changeset/base/250154[250154]) and man:pipe2[2] (rev link:https://svnweb.freebsd.org/changeset/base/250159[250159]) system calls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3371
#, no-wrap
msgid "1000033"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3372
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/250881[250881]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3373
#, no-wrap
msgid "May 21, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3375
#, no-wrap
msgid "10-CURRENT after flex 2.5.37 import."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3376
#, no-wrap
msgid "1000034"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3377
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/251294[251294]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3378
#, no-wrap
msgid "June 3, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3380
#, no-wrap
msgid "10-CURRENT after the addition of these functions to libm: man:cacos[3], man:cacosf[3], man:cacosh[3], man:cacoshf[3], man:casin[3], man:casinf[3], man:casinh[3], man:casinhf[3], man:catan[3], man:catanf[3], man:catanh[3], man:catanhf[3], man:logl[3], man:log2l[3], man:log10l[3], man:log1pl[3], man:expm1l[3]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3381
#, no-wrap
msgid "1000035"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3382
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/251527[251527]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3383
#, no-wrap
msgid "June 8, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3385
#, no-wrap
msgid "10-CURRENT after the introduction of the man:aio_mlock[2] system call (rev link:https://svnweb.freebsd.org/changeset/base/251526[251526])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3386
#, no-wrap
msgid "1000036"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3387
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253049[253049]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3388
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3393
#, no-wrap
msgid "July 9, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3390
#, no-wrap
msgid "10-CURRENT after the addition of a new function to the kernel GSSAPI module's function call interface."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3391
#, no-wrap
msgid "1000037"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3392
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253089[253089]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3395
#, no-wrap
msgid "10-CURRENT after the migration of statistics structures to PCPU counters. Changed structures include: `ahstat`, `arpstat`, `espstat`, `icmp6_ifstat`, `icmp6stat`, `in6_ifstat`, `ip6stat`, `ipcompstat`, `ipipstat`, `ipsecstat`, `mrt6stat`, `mrtstat`, `pfkeystat`, `pim6stat`, `pimstat`, `rip6stat`, `udpstat` (rev link:https://svnweb.freebsd.org/changeset/base/253081[253081])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3396
#, no-wrap
msgid "1000038"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3397
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253396[253396]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3398
#, no-wrap
msgid "July 16, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3400
#, no-wrap
msgid "10-CURRENT after making `ARM EABI` the default ABI on arm, armeb, armv6, and armv6eb architectures."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3401
#, no-wrap
msgid "1000039"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3402
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253549[253549]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3403
#, no-wrap
msgid "July 22, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3405
#, no-wrap
msgid "10-CURRENT after `CAM` and man:mps[4] driver scanning changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3406
#, no-wrap
msgid "1000040"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3407
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253638[253638]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3408
#, no-wrap
msgid "July 24, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3410
#, no-wrap
-msgid "10-CURRENT after addition of libusb pkgconf files."
+msgid "10-CURRENT after addition of libusb `pkgconf` files."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3411
#, no-wrap
msgid "1000041"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3412
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253970[253970]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3413
#, no-wrap
msgid "August 5, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3415
#, no-wrap
msgid "10-CURRENT after change from `time_second` to `time_uptime` in `PF_INET6`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3416
#, no-wrap
msgid "1000042"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3417
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254138[254138]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3418
#, no-wrap
msgid "August 9, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3420
#, no-wrap
msgid "10-CURRENT after VM subsystem change to unify soft and hard busy mechanisms."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3421
#, no-wrap
msgid "1000043"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3422
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254273[254273]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3423
#, no-wrap
msgid "August 13, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3425
#, no-wrap
msgid "10-CURRENT after `WITH_ICONV` is enabled by default. A new man:src.conf[5] option, `WITH_LIBICONV_COMPAT` (disabled by default) adds `libiconv_open` to provide compatibility with the package:converters/libiconv[] port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3426
#, no-wrap
msgid "1000044"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3427
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254358[254358]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3428
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3433
#, no-wrap
msgid "August 15, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3430
#, no-wrap
msgid "10-CURRENT after [.filename]#libc.so# conversion to an man:ld[1] script (rev link:https://svnweb.freebsd.org/changeset/base/251668[251668])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3431
#, no-wrap
msgid "1000045"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3432
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254389[254389]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3435
#, no-wrap
msgid "10-CURRENT after devfs programming interface change by replacing the cdevsw flag `D_UNMAPPED_IO` with the struct cdev flag `SI_UNMAPPED`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3436
#, no-wrap
msgid "1000046"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3437
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254537[254537]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3438
#, no-wrap
msgid "August 19, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3438
#, no-wrap
msgid "10-CURRENT after addition of `M_PROTO[9-12]` and removal of `M_FRAG\\"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3438
#, no-wrap
msgid "M_FIRSTFRAG\\"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3440
#, no-wrap
msgid "M_LASTFRAG` mbuf flags (rev link:https://svnweb.freebsd.org/changeset/base/254524[254524], link:https://svnweb.freebsd.org/changeset/base/254526[254526])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3441
#, no-wrap
msgid "1000047"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3442
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254627[254627]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3443
#, no-wrap
msgid "August 21, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3445
#, no-wrap
msgid "10-CURRENT after man:stat[2] update to allow storing some Windows/DOS and CIFS file attributes as man:stat[2] flags."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3446
#, no-wrap
msgid "1000048"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3447
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254672[254672]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3448
#, no-wrap
msgid "August 22, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3450
#, no-wrap
msgid "10-CURRENT after modification of structure `xsctp_inpcb`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3451
#, no-wrap
msgid "1000049"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3452
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254760[254760]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3453
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3458
#, no-wrap
msgid "August 24, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3455
#, no-wrap
msgid "10-CURRENT after man:physio[9] support for devices that do not function properly with split I/O, such as man:sa[4]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3456
#, no-wrap
msgid "1000050"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3457
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254844[254844]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3460
#, no-wrap
msgid "10-CURRENT after modifications of structure `mbuf` (rev link:https://svnweb.freebsd.org/changeset/base/254780[254780], link:https://svnweb.freebsd.org/changeset/base/254799[254799], link:https://svnweb.freebsd.org/changeset/base/254804[254804], link:https://svnweb.freebsd.org/changeset/base/254807[254807]link:https://svnweb.freebsd.org/changeset/base/254842[254842])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3461
#, no-wrap
msgid "1000051"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3462
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254887[254887]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3463
#, no-wrap
msgid "August 25, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3465
#, no-wrap
msgid "10-CURRENT after Radeon KMS driver import (rev link:https://svnweb.freebsd.org/changeset/base/254885[254885])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3466
#, no-wrap
msgid "1000052"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3467
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255180[255180]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3468
#, no-wrap
msgid "September 3, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3470
#, no-wrap
msgid "10-CURRENT after import of NetBSD `libexecinfo` is connected to the build."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3471
#, no-wrap
msgid "1000053"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3472
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255305[255305]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3473
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3478
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3483
#, no-wrap
msgid "September 6, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3475
#, no-wrap
msgid "10-CURRENT after API and ABI changes to the Capsicum framework."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3476
#, no-wrap
msgid "1000054"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3477
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255321[255321]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3480
#, no-wrap
msgid "10-CURRENT after `gcc` and `libstdc++` are no longer built by default."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3481
#, no-wrap
msgid "1000055"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3482
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255449[255449]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3485
#, no-wrap
msgid "10-CURRENT after addition of `MMAP_32BIT` man:mmap[2] flag (rev link:https://svnweb.freebsd.org/changeset/base/255426[255426])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3486
#, no-wrap
msgid "1000100"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3487
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259065[259065]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3488
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3508
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3513
#, no-wrap
msgid "December 7, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3490
#, no-wrap
msgid "`releng/10.0` branched from `stable/10`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3491
#, no-wrap
msgid "1000500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3492
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256283[256283]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3495
#, no-wrap
msgid "10-STABLE after branch from `head/`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3496
#, no-wrap
msgid "1000501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3497
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256916[256916]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3498
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4213
#, no-wrap
msgid "October 22, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3500
#, no-wrap
msgid "10-STABLE after addition of first-boot man:rc[8] support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3501
#, no-wrap
msgid "1000502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3502
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/258398[258398]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3503
#, no-wrap
msgid "November 20, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3505
#, no-wrap
msgid "10-STABLE after removal of iconv symbols from `libc.so.7`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3506
#, no-wrap
msgid "1000510"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3507
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259067[259067]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3510
#, no-wrap
msgid "`releng/10.0` __FreeBSD_version update to prevent the value from going backwards."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3511
#, no-wrap
msgid "1000700"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3512
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259069[259069]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3515
#, no-wrap
msgid "10-STABLE after `releng/10.0` branch."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3516
#, no-wrap
msgid "1000701"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3517
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259447[259447]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3520
#, no-wrap
msgid "10.0-STABLE after Heimdal encoding fix."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3521
#, no-wrap
msgid "1000702"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3522
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/260135[260135]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3523
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4223
#, no-wrap
msgid "December 31, 2013"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3525
#, no-wrap
msgid "10-STABLE after MAP_STACK fixes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3526
#, no-wrap
msgid "1000703"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3527
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4227
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/262801[262801]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3528
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4226
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4228
#, no-wrap
msgid "March 5, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3530
#, no-wrap
msgid "10-STABLE after upgrade of libc++ to 3.4 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3531
#, no-wrap
msgid "1000704"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3532
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/262889[262889]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3533
#, no-wrap
msgid "March 7, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3535
#, no-wrap
msgid "10-STABLE after MFC of the man:vt[4] driver (rev link:https://svnweb.freebsd.org/changeset/base/262861[262861])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3536
#, no-wrap
msgid "1000705"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3537
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263508[263508]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3538
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4236
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4238
#, no-wrap
msgid "March 21, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3540
#, no-wrap
msgid "10-STABLE after upgrade of llvm/clang to 3.4 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3541
#, no-wrap
msgid "1000706"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3542
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264214[264214]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3545
#, no-wrap
msgid "10-STABLE after GCC support for `__block` definition."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3546
#, no-wrap
msgid "1000707"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3550
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:06.openssl."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3551
#, no-wrap
msgid "1000708"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3552
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265122[265122]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3553
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4251
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5054
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5058
#, no-wrap
msgid "April 30, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3555
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:07.devfs, FreeBSD-SA-14:08.tcp, and FreeBSD-SA-14:09.openssl."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3556
#, no-wrap
msgid "1000709"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3557
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265946[265946]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3558
#, no-wrap
msgid "May 13, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3560
#, no-wrap
msgid "10-STABLE after support for UDP-Lite protocol (RFC 3828)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3561
#, no-wrap
msgid "1000710"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3562
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267465[267465]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3565
#, no-wrap
msgid "10-STABLE after changes to man:strcasecmp[3], moving man:strcasecmp_l[3] and man:strncasecmp_l[3] from [.filename]#<string.h># to [.filename]#<strings.h># for POSIX 2008 compliance."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3566
#, no-wrap
msgid "1000711"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3567
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268442[268442]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3570
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268432[268432])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3571
#, no-wrap
msgid "1000712"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3572
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/269400[269400]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3573
#, no-wrap
msgid "August 1, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3575
#, no-wrap
msgid "10-STABLE after man:nfsd[8] 4.1 merge (rev link:https://svnweb.freebsd.org/changeset/base/269398[269398])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3576
#, no-wrap
msgid "1000713"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3577
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/269484[269484]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3580
#, no-wrap
msgid "10-STABLE after man:regex[3] library update to add \">\" and \"<\" delimiters."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3581
#, no-wrap
msgid "1000714"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3582
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270174[270174]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3585
#, no-wrap
msgid "10-STABLE after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269490[269490])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3586
#, no-wrap
msgid "1000715"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3590
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/269686[269686])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3591
#, no-wrap
msgid "1000716"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3595
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271667[271667])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3596
#, no-wrap
msgid "1000717"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3597
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271816[271816]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3598
#, no-wrap
msgid "September 18, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3600
#, no-wrap
msgid "10-STABLE after i915 HW context support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3601
#, no-wrap
msgid "1001000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3602
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272463[272463]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3603
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3608
#, no-wrap
msgid "October 2, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3605
#, no-wrap
msgid "10.1-RC1 after releng/10.1 branch."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3606
#, no-wrap
msgid "1001500"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3607
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272464[272464]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3610
#, no-wrap
msgid "10-STABLE after releng/10.1 branch."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3611
#, no-wrap
msgid "1001501"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3615
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:22, and FreeBSD-SA-14:23 (rev link:https://svnweb.freebsd.org/changeset/base/273411[273411])."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3616
#, no-wrap
msgid "1001502"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3620
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3621
#, no-wrap
msgid "1001503"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3622
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275040[275040]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3623
#, no-wrap
msgid "November 25, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3625
#, no-wrap
msgid "10-STABLE after merging new libraries/utilities (man:dpv[1] man:dpv[3], and man:figpar[3]) for data throughput visualization."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3626
#, no-wrap
msgid "1001504"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3627
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4295
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4297
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275742[275742]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3628
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4298
#, no-wrap
msgid "December 13, 2014"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3630
#, no-wrap
msgid "10-STABLE after merging an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3631
#, no-wrap
msgid "1001505"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3632
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276633[276633]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3633
#, no-wrap
msgid "January 3, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3635
#, no-wrap
msgid "10-STABLE after merging some arm constants in link:https://svnweb.freebsd.org/changeset/base/276312[276312]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3636
#, no-wrap
msgid "1001506"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3637
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277087[277087]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3638
#, no-wrap
msgid "January 12, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3640
#, no-wrap
msgid "10-STABLE after merging max table size update for yacc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3641
#, no-wrap
msgid "1001507"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3642
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277790[277790]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3643
#, no-wrap
msgid "January 27, 2015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3645
#, no-wrap
-msgid "10-STABLE after changes to the UDP tunneling callback to provide a context pointer and the source sockaddr."
+msgid "10-STABLE after changes to the UDP tunneling callback to provide a context pointer and the source `sockaddr`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3646
#, no-wrap
msgid "1001508"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3647
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278974[278974]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3650
#, no-wrap
msgid "10-STABLE after addition of the `CDAI_TYPE_EXT_INQ` request type."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3651
#, no-wrap
msgid "1001509"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3652
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4300
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4302
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5087
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279287[279287]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3653
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4301
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5089
#, no-wrap
-msgid "February 25, 2015"
+msgid ""
+"February 25, 2015\n"
+"pass:[<!-- vale Vale.Terms = NO -->]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3657
#, no-wrap
-msgid "10-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind."
+msgid ""
+"10-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind.\n"
+"pass:[<!-- vale Vale.Terms = YES -->]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3658
#, no-wrap
msgid "1001510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3659
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279329[279329]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3660
#, no-wrap
msgid "February 26, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3662
#, no-wrap
msgid "10-STABLE after MFC of rev link:https://svnweb.freebsd.org/changeset/base/278964[278964]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3663
#, no-wrap
msgid "1001511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3664
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280246[280246]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3665
#, no-wrap
msgid "March 19, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3667
#, no-wrap
msgid "10-STABLE after [.filename]#sys/capability.h# is renamed to [.filename]#sys/capsicum.h# (rev link:https://svnweb.freebsd.org/changeset/base/280224/[280224/])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3668
#, no-wrap
msgid "1001512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3669
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280438[280438]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3670
#, no-wrap
msgid "March 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3672
#, no-wrap
msgid "10-STABLE after addition of new man:mtio[4], man:sa[4] ioctls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3673
#, no-wrap
msgid "1001513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3674
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281955[281955]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3675
#, no-wrap
msgid "April 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3677
#, no-wrap
msgid "10-STABLE after starting the process of removing the use of the deprecated \"M_FLOWID\" flag from the network code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3678
#, no-wrap
msgid "1001514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3679
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282275[282275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3680
#, no-wrap
msgid "April 30, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3682
#, no-wrap
msgid "10-STABLE after MFC of man:iconv[3] fixes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3683
#, no-wrap
msgid "1001515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3682
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3684
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282781[282781]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3685
#, no-wrap
msgid "May 11, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3687
#, no-wrap
msgid "10-STABLE after adding back `M_FLOWID`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3688
#, no-wrap
msgid "1001516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3689
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283341[283341]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3688
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3690
#, no-wrap
msgid "May 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3692
#, no-wrap
msgid "10-STABLE after MFC of many USB things."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3691
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3693
#, no-wrap
msgid "1001517"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3694
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283950[283950]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3695
#, no-wrap
msgid "June 3, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3697
#, no-wrap
msgid "10-STABLE after MFC of sound related things."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3698
#, no-wrap
msgid "1001518"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3699
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/284204[284204]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3702
#, no-wrap
msgid "10-STABLE after MFC of zfs vfs fixes (rev link:https://svnweb.freebsd.org/changeset/base/284203[284203])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3703
#, no-wrap
msgid "1001519"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3704
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/284720[284720]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3705
#, no-wrap
msgid "June 23, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3707
#, no-wrap
msgid "10-STABLE after reverting bumping `MAXCPU` on amd64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3706
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3708
#, no-wrap
msgid "1002000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3709
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/285830[285830]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3708
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3715
#, no-wrap
msgid "July 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3712
#, no-wrap
msgid "`releng/10.2` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3711
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3713
#, no-wrap
msgid "1002500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3714
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/285831[285831]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3717
#, no-wrap
msgid "10-STABLE after `releng/10.2` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3716
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3718
#, no-wrap
msgid "1002501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3719
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289005[289005]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3720
#, no-wrap
msgid "October 8, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3722
#, no-wrap
-msgid "10-STABLE after merge of ZFS changes that affected the internal interface of zfeature_info structure (rev link:https://svnweb.freebsd.org/changeset/base/288572[288572])."
+msgid "10-STABLE after merge of ZFS changes that affected the internal interface of `zfeature_info` structure (rev link:https://svnweb.freebsd.org/changeset/base/288572[288572])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3723
#, no-wrap
msgid "1002502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3724
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/291243[291243]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3725
#, no-wrap
msgid "November 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3727
#, no-wrap
msgid "10-STABLE after merge of dump device changes that affected the arguments of `g_dev_setdumpdev()`(rev link:https://svnweb.freebsd.org/changeset/base/291215[291215])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3728
#, no-wrap
msgid "1002503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3729
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292224[292224]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3730
#, no-wrap
msgid "December 14, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3732
#, no-wrap
msgid "10-STABLE after merge of changes to the internal interface between the nfsd.ko and nfscommon.ko modules, requiring them to be upgraded together (rev link:https://svnweb.freebsd.org/changeset/base/292223[292223])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3733
#, no-wrap
msgid "1002504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3734
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292589[292589]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3735
#, no-wrap
msgid "December 22, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3737
#, no-wrap
msgid "10-STABLE after merge of xz 5.2.2 merge (multithread support) (rev link:https://svnweb.freebsd.org/changeset/base/292588[292588])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3736
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3738
#, no-wrap
msgid "1002505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3739
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292908[292908]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3742
#, no-wrap
msgid "10-STABLE after merge of changes to man:pci[4] (rev link:https://svnweb.freebsd.org/changeset/base/292907[292907])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3743
#, no-wrap
msgid "1002506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3744
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/293476[293476]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3743
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3748
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3755
#, no-wrap
msgid "January 9, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3747
#, no-wrap
msgid "10-STABLE after merge of man:utimensat[2] (rev link:https://svnweb.freebsd.org/changeset/base/293473[293473])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3748
#, no-wrap
msgid "1002507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3747
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3749
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/293610[293610]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3752
#, no-wrap
msgid "10-STABLE after merge of changes to man:linux[4] (rev link:https://svnweb.freebsd.org/changeset/base/293477[293477] through link:https://svnweb.freebsd.org/changeset/base/293609[293609])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3753
#, no-wrap
msgid "1002508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3754
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/293619[293619]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3757
#, no-wrap
msgid "10-STABLE after merge of changes to man:figpar[3] types/macros (rev link:https://svnweb.freebsd.org/changeset/base/290275[290275])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3758
#, no-wrap
msgid "1002509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3759
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/295107[295107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3760
#, no-wrap
msgid "February 1, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3762
#, no-wrap
msgid "10-STABLE after merge of API change to man:dpv[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3763
#, no-wrap
msgid "1003000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3764
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296373[296373]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3763
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3770
#, no-wrap
msgid "March 4, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3767
#, no-wrap
msgid "`releng/10.3` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3768
#, no-wrap
msgid "1003500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3769
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296374[296374]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3772
#, no-wrap
msgid "10-STABLE after `releng/10.3` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3771
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3773
#, no-wrap
msgid "1003501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3774
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/298299[298299]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3773
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3778
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3785
#, no-wrap
msgid "June 19, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3777
#, no-wrap
-msgid "10-STABLE after adding kdbcontrol's -P option (rev link:https://svnweb.freebsd.org/changeset/base/298297[298297])."
+msgid "10-STABLE after adding -P option for `kdbcontrol` (rev link:https://svnweb.freebsd.org/changeset/base/298297[298297])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3778
#, no-wrap
msgid "1003502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3779
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299966[299966]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3782
#, no-wrap
msgid "10-STABLE after libcrypto.so was made position independent."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3783
#, no-wrap
msgid "1003503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3784
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300235[300235]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3787
#, no-wrap
-msgid "10-STABLE after allowing MK_ overrides (rev link:https://svnweb.freebsd.org/changeset/base/300233[300233])."
+msgid "10-STABLE after allowing `MK_` overrides (rev link:https://svnweb.freebsd.org/changeset/base/300233[300233])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3788
#, no-wrap
msgid "1003504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3789
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302066[302066]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3792
#, no-wrap
-msgid "10-STABLE after MFC of filemon changes from 11-CURRENT."
+msgid "10-STABLE after MFC of `filemon` changes from 11-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3793
#, no-wrap
msgid "1003505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3794
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302228[302228]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3793
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3795
#, no-wrap
msgid "June 27, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3797
#, no-wrap
msgid "10-STABLE after converting sed to use REG_STARTEND, fixing a Mesa issue."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3796
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3798
#, no-wrap
msgid "1003506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3799
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304611[304611]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3802
#, no-wrap
-msgid "10-STABLE after adding C++11 thread_local support."
+msgid "10-STABLE after adding C++11 `thread_local` support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3803
#, no-wrap
msgid "1003507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3804
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304864[304864]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3807
#, no-wrap
msgid "10-STABLE after `LC_*_MASK` fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3808
#, no-wrap
msgid "1003508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3809
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305734[305734]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3812
#, no-wrap
msgid "10-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3811
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3813
#, no-wrap
msgid "1003509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3814
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307331[307331]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3817
#, no-wrap
msgid "10-STABLE after ZFS merges."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3818
#, no-wrap
msgid "1003510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3819
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/308047[308047]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3822
#, no-wrap
msgid "10-STABLE after installing header files required development with libzfs_core."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3823
#, no-wrap
msgid "1003511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3822
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3824
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310121[310121]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3827
#, no-wrap
msgid "10-STABLE after exporting whole thread name in `kinfo_proc` (rev link:https://svnweb.freebsd.org/changeset/base/309676[309676])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3828
#, no-wrap
msgid "1003512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3829
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315730[315730]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3830
#, no-wrap
msgid "March 22, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3832
#, no-wrap
msgid "10-STABLE after libmd changes (rev link:https://svnweb.freebsd.org/changeset/base/314143[314143])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3833
#, no-wrap
msgid "1003513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3834
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316499[316499]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3837
#, no-wrap
msgid "10-STABLE after making CAM SIM lock optional (revs link:https://svnweb.freebsd.org/changeset/base/315673[315673], link:https://svnweb.freebsd.org/changeset/base/315674[315674])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3838
#, no-wrap
msgid "1003514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3839
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/318198[318198]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3842
#, no-wrap
msgid "10-STABLE after merging the addition of the [.filename]#<dev/mmc/mmc_ioctl.h># header."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3841
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3843
#, no-wrap
msgid "1003515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3842
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3844
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321222[321222]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3845
#, no-wrap
msgid "July 19, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3847
#, no-wrap
msgid "10-STABLE after adding C++14 sized deallocation functions to libc++."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3848
#, no-wrap
msgid "1003516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3849
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321717[321717]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3850
#, no-wrap
msgid "July 30, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3852
#, no-wrap
msgid "10-STABLE after merging the `MAP_GUARD` man:mmap[2] flag addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3853
#, no-wrap
msgid "1004000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3852
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3854
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323604[323604]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3853
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3860
#, no-wrap
msgid "September 15, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3857
#, no-wrap
msgid "`releng/10.4` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3858
#, no-wrap
msgid "1004500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3857
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3859
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323605[323605]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3862
#, no-wrap
msgid "10-STABLE after `releng/10.4` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3861
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3863
#, no-wrap
msgid "1004501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3867
#, no-wrap
msgid "10-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/325028[325028], fixing `ptrace()` to always clear the correct thread event when resuming."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3866
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3868
#, no-wrap
msgid "1004502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3869
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356396[356396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3872
#, no-wrap
msgid "10-STABLE after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3871
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3873
#, no-wrap
msgid "1004503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3874
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356681[356681]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3876
#, no-wrap
msgid "10-STABLE after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3879
#, no-wrap
msgid "FreeBSD 9 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3882
#, no-wrap
msgid "FreeBSD 9 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3891
#, no-wrap
msgid "900000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3892
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/196432[196432]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3893
#, no-wrap
msgid "August 22, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3895
#, no-wrap
msgid "9.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3896
#, no-wrap
msgid "900001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3897
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/197019[197019]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3898
#, no-wrap
msgid "September 8, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3900
#, no-wrap
msgid "9.0-CURRENT after importing x86emu, a software emulator for real mode x86 CPU from OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3901
#, no-wrap
msgid "900002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3902
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/197430[197430]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3903
#, no-wrap
msgid "September 23, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3905
#, no-wrap
-msgid "9.0-CURRENT after implementing the EVFILT_USER kevent filter functionality."
+msgid "9.0-CURRENT after implementing the EVFILT_USER `kevent` filter functionality."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3906
#, no-wrap
msgid "900003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3907
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/200039[200039]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3908
#, no-wrap
msgid "December 2, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3910
#, no-wrap
-msgid "9.0-CURRENT after addition of man:sigpause[2] and PIE support in csu."
+msgid "9.0-CURRENT after addition of man:sigpause[2] and PIE support in `csu`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3911
#, no-wrap
msgid "900004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3912
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/200185[200185]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3911
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3913
#, no-wrap
msgid "December 6, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3915
#, no-wrap
msgid "9.0-CURRENT after addition of libulog and its libutempter compatibility interface."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3916
#, no-wrap
msgid "900005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3917
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/200447[200447]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3918
#, no-wrap
msgid "December 12, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3920
#, no-wrap
msgid "9.0-CURRENT after addition of man:sleepq_sleepcnt[9], which can be used to query the number of waiters on a specific waiting queue."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3921
#, no-wrap
msgid "900006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3922
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/201513[201513]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3923
#, no-wrap
msgid "January 4, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3925
#, no-wrap
msgid "9.0-CURRENT after change of the man:scandir[3] and man:alphasort[3] prototypes to conform to SUSv4."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3926
#, no-wrap
msgid "900007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3927
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/202219[202219]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3926
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3928
#, no-wrap
msgid "January 13, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3930
#, no-wrap
-msgid "9.0-CURRENT after the removal of man:utmp[5] and the addition of utmpx (see man:getutxent[3]) for improved logging of user logins and system events."
+msgid "9.0-CURRENT after the removal of man:utmp[5] and the addition of `utmpx` (see man:getutxent[3]) for improved logging of user logins and system events."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3929
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3931
#, no-wrap
msgid "900008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3932
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/202722[202722]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3931
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3933
#, no-wrap
msgid "January 20, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3935
#, no-wrap
msgid "9.0-CURRENT after the import of BSDL bc/dc and the deprecation of GNU bc/dc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3934
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3936
#, no-wrap
msgid "900009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3937
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203052[203052]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3938
#, no-wrap
msgid "January 26, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3940
#, no-wrap
msgid "9.0-CURRENT after the addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to network interfaces. These ioctl can be used to manipulate interface description, as inspired by OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3941
#, no-wrap
msgid "900010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3940
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3942
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/205471[205471]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3943
#, no-wrap
msgid "March 22, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3945
#, no-wrap
msgid "9.0-CURRENT after the import of zlib 1.2.4."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3946
#, no-wrap
msgid "900011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3945
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3947
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/207410[207410]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3948
#, no-wrap
msgid "April 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3950
#, no-wrap
-msgid "9.0-CURRENT after adding soft-updates journalling."
+msgid "9.0-CURRENT after adding soft-updates journaling."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3951
#, no-wrap
msgid "900012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3952
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/207842[207842]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3953
#, no-wrap
msgid "May 10, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3955
#, no-wrap
msgid "9.0-CURRENT after adding liblzma, xz, xzdec, and lzmainfo."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3954
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3956
#, no-wrap
msgid "900013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3957
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/208486[208486]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3958
#, no-wrap
msgid "May 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3960
#, no-wrap
msgid "9.0-CURRENT after bringing in USB fixes for man:linux[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3961
#, no-wrap
msgid "900014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3962
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/208973[208973]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3963
#, no-wrap
msgid "June 10, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3965
#, no-wrap
msgid "9.0-CURRENT after adding Clang."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3964
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3966
#, no-wrap
msgid "900015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3965
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3967
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/210390[210390]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3968
#, no-wrap
msgid "July 22, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3970
#, no-wrap
msgid "9.0-CURRENT after the import of BSD grep."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3971
#, no-wrap
msgid "900016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3972
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/210565[210565]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3973
#, no-wrap
msgid "July 28, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3975
#, no-wrap
-msgid "9.0-CURRENT after adding mti_zone to struct malloc_type_internal."
+msgid "9.0-CURRENT after adding `mti_zone` to struct `malloc_type_internal`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3974
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3976
#, no-wrap
msgid "900017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3975
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3977
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/211701[211701]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3978
#, no-wrap
msgid "August 23, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3980
#, no-wrap
msgid "9.0-CURRENT after changing back default grep to GNU grep and adding WITH_BSD_GREP knob."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3981
#, no-wrap
msgid "900018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3980
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3982
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/211735[211735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3983
#, no-wrap
msgid "August 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3985
#, no-wrap
-msgid "9.0-CURRENT after the man:pthread_kill[3] -generated signal is identified as SI_LWP in si_code. Previously, si_code was SI_USER."
+msgid "9.0-CURRENT after the man:pthread_kill[3] -generated signal is identified as SI_LWP in `si_code`. Previously, `si_code` was SI_USER."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3986
#, no-wrap
msgid "900019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3987
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/211937[211937]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3988
#, no-wrap
msgid "August 28, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3990
#, no-wrap
msgid "9.0-CURRENT after addition of the MAP_PREFAULT_READ flag to man:mmap[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3991
#, no-wrap
msgid "900020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3990
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3992
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/212381[212381]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3993
#, no-wrap
msgid "September 9, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3995
#, no-wrap
-msgid "9.0-CURRENT after adding drain functionality to sbufs, which also changed the layout of struct sbuf."
+msgid "9.0-CURRENT after adding drain functionality to `sbufs`, which also changed the layout of struct `sbuf`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3996
#, no-wrap
msgid "900021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3997
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/212568[212568]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3998
#, no-wrap
msgid "September 13, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4000
#, no-wrap
msgid "9.0-CURRENT after DTrace has grown support for userland tracing."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3999
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4001
#, no-wrap
msgid "900022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4000
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4002
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/213395[213395]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4003
#, no-wrap
msgid "October 2, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4005
#, no-wrap
msgid "9.0-CURRENT after addition of the BSDL man utilities and retirement of GNU/GPL man utilities."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4006
#, no-wrap
msgid "900023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4007
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/213700[213700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4008
#, no-wrap
msgid "October 11, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4010
#, no-wrap
msgid "9.0-CURRENT after updating xz to git 20101010 snapshot."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4009
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4011
#, no-wrap
msgid "900024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4010
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4012
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/215127[215127]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4013
#, no-wrap
msgid "November 11, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4015
#, no-wrap
msgid "9.0-CURRENT after libgcc.a was replaced by libcompiler_rt.a."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4016
#, no-wrap
msgid "900025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4017
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/215166[215166]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4018
#, no-wrap
msgid "November 12, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4020
#, no-wrap
msgid "9.0-CURRENT after the introduction of the modularised congestion control."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4019
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4021
#, no-wrap
msgid "900026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4020
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4022
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216088[216088]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4023
#, no-wrap
msgid "November 30, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4025
#, no-wrap
-msgid "9.0-CURRENT after the introduction of Serial Management Protocol (SMP) passthrough and the XPT_SMP_IO and XPT_GDEV_ADVINFO CAM CCBs."
+msgid "9.0-CURRENT after the introduction of Serial Management Protocol (SMP) passthrough and the XPT_SMP_IO and XPT_GDEV_ADVINFO CAM `CCBs`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4024
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4026
#, no-wrap
msgid "900027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4025
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4027
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216212[216212]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4028
#, no-wrap
msgid "December 5, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4030
#, no-wrap
msgid "9.0-CURRENT after the addition of log2 to libm."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4029
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4031
#, no-wrap
msgid "900028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4030
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4032
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216615[216615]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4033
#, no-wrap
msgid "December 21, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4035
#, no-wrap
msgid "9.0-CURRENT after the addition of the Hhook (Helper Hook), Khelp (Kernel Helpers) and Object Specific Data (OSD) KPIs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4036
#, no-wrap
msgid "900029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4037
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216758[216758]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4038
#, no-wrap
msgid "December 28, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4040
#, no-wrap
msgid "9.0-CURRENT after the modification of the TCP stack to allow Khelp modules to interact with it via helper hook points and store per-connection data in the TCP control block."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4039
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4041
#, no-wrap
msgid "900030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4042
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/217309[217309]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4043
#, no-wrap
msgid "January 12, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4045
#, no-wrap
msgid "9.0-CURRENT after the update of libdialog to version 20100428."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4044
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4046
#, no-wrap
msgid "900031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4047
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/218414[218414]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4048
#, no-wrap
msgid "February 7, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4050
#, no-wrap
msgid "9.0-CURRENT after the addition of man:pthread_getthreadid_np[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4049
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4051
#, no-wrap
msgid "900032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4052
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/218425[218425]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4053
#, no-wrap
msgid "February 8, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4053
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4055
#, no-wrap
-msgid "9.0-CURRENT after the removal of the uio_yield prototype and symbol."
+msgid "9.0-CURRENT after the removal of the `uio_yield` prototype and symbol."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4054
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4056
#, no-wrap
msgid "900033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4057
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/218822[218822]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4058
#, no-wrap
msgid "February 18, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4060
#, no-wrap
msgid "9.0-CURRENT after the update of binutils to version 2.17.50."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4059
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4061
#, no-wrap
msgid "900034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4062
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/219406[219406]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4063
#, no-wrap
msgid "March 8, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4065
#, no-wrap
-msgid "9.0-CURRENT after the struct sysvec (sv_schedtail) changes."
+msgid "9.0-CURRENT after the struct `sysvec` (`sv_schedtail`) changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4066
#, no-wrap
msgid "900035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4067
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/220150[220150]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4068
#, no-wrap
msgid "March 29, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4070
#, no-wrap
msgid "9.0-CURRENT after the update of base gcc and libstdc++ to the last GPLv2 licensed revision."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4071
#, no-wrap
msgid "900036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4072
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/220770[220770]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4073
#, no-wrap
msgid "April 18, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4075
#, no-wrap
msgid "9.0-CURRENT after the removal of libobjc and Objective-C support from the base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4074
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4076
#, no-wrap
msgid "900037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4077
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/221862[221862]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4078
#, no-wrap
msgid "May 13, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4078
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4080
#, no-wrap
msgid "9.0-CURRENT after importing the man:libprocstat[3] library and man:fuser[1] utility to the base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4081
#, no-wrap
msgid "900038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4082
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222167[222167]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4083
#, no-wrap
msgid "May 22, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4085
#, no-wrap
msgid "9.0-CURRENT after adding a lock flag argument to man:VFS_FHTOVP[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4086
#, no-wrap
msgid "900039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4087
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/223637[223637]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4088
#, no-wrap
msgid "June 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4090
#, no-wrap
msgid "9.0-CURRENT after importing pf from OpenBSD 4.5."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4091
#, no-wrap
msgid "900040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4092
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224217[224217]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4091
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4988
#, no-wrap
msgid "July 19, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4095
#, no-wrap
msgid "Increase default MAXCPU for FreeBSD to 64 on amd64 and ia64 and to 128 for XLP (mips)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4096
#, no-wrap
msgid "900041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4097
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224834[224834]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4098
#, no-wrap
msgid "August 13, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4098
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4100
#, no-wrap
msgid "9.0-CURRENT after the implementation of Capsicum capabilities; man:fget[9] gains a rights argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4099
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4101
#, no-wrap
msgid "900042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4100
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4107
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225350[225350]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4103
#, no-wrap
msgid "August 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4103
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4105
#, no-wrap
msgid "Bump shared libraries' version numbers for libraries whose ABI has changed in preparation for 9.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4104
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4106
#, no-wrap
msgid "900043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4108
#, no-wrap
msgid "September 2, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4108
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4110
#, no-wrap
msgid "Add automatic detection of USB mass storage devices which do not support the no synchronize cache SCSI command."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4109
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4111
#, no-wrap
msgid "900044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4112
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225469[225469]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4111
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4998
#, no-wrap
msgid "September 10, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4115
#, no-wrap
msgid "Re-factor auto-quirk. 9.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4114
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4116
#, no-wrap
msgid "900045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4117
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229285[229285]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4116
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4123
#, no-wrap
msgid "January 2, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4120
#, no-wrap
msgid "9-STABLE after MFC of true/false from 1000002."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4119
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4121
#, no-wrap
msgid "900500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4122
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229318[229318]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4125
#, no-wrap
msgid "9.0-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4124
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4126
#, no-wrap
msgid "900501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4125
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4127
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229723[229723]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4126
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5009
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5013
#, no-wrap
msgid "January 6, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4130
#, no-wrap
msgid "9.0-STABLE after merging of addition of the man:posix_fadvise[2] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4129
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4131
#, no-wrap
msgid "900502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4132
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230237[230237]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4135
#, no-wrap
msgid "9.0-STABLE after merging gperf 3.0.3"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4134
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4136
#, no-wrap
msgid "900503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4137
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231768[231768]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4136
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5019
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5023
#, no-wrap
msgid "February 15, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4140
#, no-wrap
msgid "9.0-STABLE after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4139
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4141
#, no-wrap
msgid "900504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4140
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4142
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232728[232728]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4141
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5024
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5029
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4143
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5033
#, no-wrap
msgid "March 3, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4143
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4145
#, no-wrap
msgid "9.0-STABLE after changes related to mounting of filesystem inside a jail."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4144
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4146
#, no-wrap
msgid "900505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4145
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4147
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232945[232945]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4146
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4148
#, no-wrap
msgid "March 13, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4150
#, no-wrap
msgid "9.0-STABLE after introduction of new man:tcp[4] socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4151
#, no-wrap
msgid "900506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4152
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/235786[235786]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4153
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4155
#, no-wrap
msgid "9.0-STABLE after introduction of the `quick_exit` function and related changes required for C++11."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4154
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4156
#, no-wrap
msgid "901000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4157
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239082[239082]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4156
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4158
#, no-wrap
msgid "August 5, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4160
#, no-wrap
msgid "9.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4161
#, no-wrap
msgid "901500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4162
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239081[239081]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4163
#, no-wrap
msgid "August 6, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4163
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4165
#, no-wrap
msgid "9.1-STABLE after branching releng/9.1 (RELENG_9_1)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4166
#, no-wrap
msgid "901501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4167
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/240659[240659]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4166
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4168
#, no-wrap
msgid "November 11, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4168
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4170
#, no-wrap
msgid "9.1-STABLE after man:LIST_PREV[3] added to queue.h (rev link:https://svnweb.freebsd.org/changeset/base/242893[242893]) and KBI change in USB serial devices."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4171
#, no-wrap
msgid "901502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4172
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/243656[243656]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4171
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4173
#, no-wrap
msgid "November 28, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4173
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4175
#, no-wrap
msgid "9.1-STABLE after USB serial jitter buffer requires rebuild of USB serial device modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4174
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4176
#, no-wrap
msgid "901503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4177
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/247090[247090]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4176
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5038
#, no-wrap
msgid "February 21, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4180
#, no-wrap
msgid "9.1-STABLE after USB moved to the driver structure requiring a rebuild of all USB modules. Also indicates the presence of nmtree."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4181
#, no-wrap
msgid "901504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4180
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4182
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248338[248338]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4181
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4183
#, no-wrap
msgid "March 15, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4185
#, no-wrap
msgid "9.1-STABLE after install gained -l, -M, -N and related flags and cat gained the -l option."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4186
#, no-wrap
msgid "901505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4187
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/251687[251687]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4188
#, no-wrap
msgid "June 13, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4188
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4190
#, no-wrap
-msgid "9.1-STABLE after fixes in ctfmerge bootstrapping (rev link:https://svnweb.freebsd.org/changeset/base/249243[249243])."
+msgid "9.1-STABLE after fixes in `ctfmerge` bootstrapping (rev link:https://svnweb.freebsd.org/changeset/base/249243[249243])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4191
#, no-wrap
msgid "902001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4192
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253912[253912]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4193
#, no-wrap
msgid "August 3, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4193
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4195
#, no-wrap
msgid "`releng/9.2` branched from `stable/9`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4194
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4196
#, no-wrap
msgid "902501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4197
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253913[253913]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4196
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4198
#, no-wrap
msgid "August 2, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4198
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4200
#, no-wrap
msgid "9.2-STABLE after creation of `releng/9.2` branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4199
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4201
#, no-wrap
msgid "902502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4202
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254938[254938]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4201
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4203
#, no-wrap
msgid "August 26, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4205
#, no-wrap
msgid "9.2-STABLE after inclusion of the `PIM_RESCAN` CAM path inquiry flag."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4204
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4206
#, no-wrap
msgid "902503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4207
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254979[254979]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4208
#, no-wrap
msgid "August 27, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4208
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4210
#, no-wrap
msgid "9.2-STABLE after inclusion of the `SI_UNMAPPED` cdev flag."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4209
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4211
#, no-wrap
msgid "902504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4212
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256917[256917]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4213
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4215
#, no-wrap
msgid "9.2-STABLE after inclusion of support for \"first boot\" man:rc[8] scripts."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4214
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4216
#, no-wrap
msgid "902505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4217
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259448[259448]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4218
#, no-wrap
msgid "December 12, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4218
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4220
#, no-wrap
msgid "9.2-STABLE after Heimdal encoding fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4219
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4221
#, no-wrap
msgid "902506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4222
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/260136[260136]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4223
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4225
#, no-wrap
msgid "9-STABLE after MAP_STACK fixes (rev link:https://svnweb.freebsd.org/changeset/base/260082[260082])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4224
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4226
#, no-wrap
msgid "902507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4228
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4230
#, no-wrap
msgid "9-STABLE after upgrade of libc++ to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4229
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4231
#, no-wrap
msgid "902508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4230
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4232
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263171[263171]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4233
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4235
#, no-wrap
msgid "9-STABLE after merge of the Radeon KMS driver (rev link:https://svnweb.freebsd.org/changeset/base/263170[263170])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4234
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4236
#, no-wrap
msgid "902509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4237
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263509[263509]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4238
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4240
#, no-wrap
msgid "9-STABLE after upgrade of llvm/clang to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4239
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4241
#, no-wrap
msgid "902510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4240
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4242
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263818[263818]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4241
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4246
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4248
#, no-wrap
msgid "March 27, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4245
#, no-wrap
msgid "9-STABLE after merge of the man:vt[4] driver."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4244
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4246
#, no-wrap
msgid "902511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4250
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:06.openssl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4249
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4251
#, no-wrap
msgid "902512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4250
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5053
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5057
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265123[265123]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4255
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:08.tcp."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4254
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4256
#, no-wrap
msgid "903000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4257
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267656[267656]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4256
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4261
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4263
#, no-wrap
msgid "June 20, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4260
#, no-wrap
msgid "9-RC1 `releng/9.3` branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4259
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4261
#, no-wrap
msgid "903500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4262
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267657[267657]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4265
#, no-wrap
msgid "9.3-STABLE `releng/9.3` branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4266
#, no-wrap
msgid "903501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4267
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268443[268443]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4268
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4270
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268433[268433])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4269
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4271
#, no-wrap
msgid "903502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4272
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270175[270175]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4271
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4273
#, no-wrap
msgid "August 19, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4273
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4275
#, no-wrap
msgid "9-STABLE after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269789[269789])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4274
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4276
#, no-wrap
msgid "903503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4280
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/269687[269687])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4281
#, no-wrap
msgid "903504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4285
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271668[271668])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4284
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4286
#, no-wrap
msgid "903505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4290
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:21, and FreeBSD-SA-14:22 (rev link:https://svnweb.freebsd.org/changeset/base/273412[273412])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4289
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4291
#, no-wrap
msgid "903506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4295
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4294
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4296
#, no-wrap
msgid "903507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4298
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4300
#, no-wrap
msgid "9-STABLE after merging an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4301
#, no-wrap
msgid "903508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4303
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4307
#, no-wrap
-msgid "9-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind."
+msgid ""
+"9-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind.\n"
+"pass:[<!-- vale Vale.Terms = YES -->]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4308
#, no-wrap
msgid "903509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4305
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4309
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296219[296219]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4306
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4310
#, no-wrap
msgid "February 29, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4308
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4312
#, no-wrap
msgid "9-STABLE after bumping the default value of `compat.linux.osrelease` to `2.6.18` to support the linux-c6-* ports out of the box."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4313
#, no-wrap
msgid "903510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4314
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300236[300236]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4313
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4317
#, no-wrap
msgid "9-STABLE after System Binary Interface (SBI) page was moved in latest version of Berkeley Boot Loader (BBL) due to code size increase in link:https://svnweb.freebsd.org/changeset/base/300234[300234]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4318
#, no-wrap
msgid "903511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4315
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4319
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305735[305735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4321
#, no-wrap
msgid "9-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4324
#, no-wrap
msgid "FreeBSD 8 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4323
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4327
#, no-wrap
msgid "FreeBSD 8 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4336
#, no-wrap
msgid "800000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4337
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172531[172531]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4338
#, no-wrap
msgid "October 11, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4336
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4340
#, no-wrap
-msgid "8.0-CURRENT. Separating wide and single byte ctype."
+msgid "8.0-CURRENT. Separating wide and single byte `ctype`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4337
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4341
#, no-wrap
msgid "800001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4338
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4342
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172688[172688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4343
#, no-wrap
msgid "October 16, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4341
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4345
#, no-wrap
msgid "8.0-CURRENT after libpcap 0.9.8 and tcpdump 3.9.8 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4342
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4346
#, no-wrap
msgid "800002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4347
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172841[172841]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4348
#, no-wrap
msgid "October 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4346
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4350
#, no-wrap
msgid "8.0-CURRENT after renaming man:kthread_create[9] and friends to man:kproc_create[9] etc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4351
#, no-wrap
msgid "800003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4348
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4352
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172932[172932]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4353
#, no-wrap
msgid "October 24, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4351
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4355
#, no-wrap
msgid "8.0-CURRENT after ABI backwards compatibility to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was added, which required the ABI of the PCIOCGETCONF IOCTL to be broken again"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4352
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4356
#, no-wrap
msgid "800004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4353
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4357
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173573[173573]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4358
#, no-wrap
msgid "November 12, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4356
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4360
#, no-wrap
msgid "8.0-CURRENT after man:agp[4] driver moved from src/sys/pci to src/sys/dev/agp"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4357
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4361
#, no-wrap
msgid "800005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4362
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174261[174261]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4363
#, no-wrap
msgid "December 4, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4361
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4365
#, no-wrap
msgid "8.0-CURRENT after changes to the jumbo frame allocator (rev link:https://svnweb.freebsd.org/changeset/base/174247[174247])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4362
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4366
#, no-wrap
msgid "800006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4367
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174399[174399]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4364
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5916
#, no-wrap
msgid "December 7, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4366
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4370
#, no-wrap
-msgid "8.0-CURRENT after the addition of callgraph capture functionality to man:hwpmc[4]."
+msgid "8.0-CURRENT after the addition of `callgraph` capture functionality to man:hwpmc[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4371
#, no-wrap
msgid "800007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4372
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174901[174901]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4369
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4373
#, no-wrap
msgid "December 25, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4371
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4375
#, no-wrap
msgid "8.0-CURRENT after `kdb_enter()` gains a \"why\" argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4376
#, no-wrap
msgid "800008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4373
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4377
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174951[174951]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4378
#, no-wrap
msgid "December 28, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4376
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4380
#, no-wrap
msgid "8.0-CURRENT after LK_EXCLUPGRADE option removal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4381
#, no-wrap
msgid "800009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4378
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4382
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175168[175168]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4383
#, no-wrap
msgid "January 9, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4381
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4385
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_disown[9]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4382
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4386
#, no-wrap
msgid "800010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4383
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4387
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175204[175204]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4388
#, no-wrap
msgid "January 10, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4386
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4390
#, no-wrap
msgid "8.0-CURRENT after the man:vn_lock[9] prototype change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4391
#, no-wrap
msgid "800011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4392
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175295[175295]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4393
#, no-wrap
msgid "January 13, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4391
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4395
#, no-wrap
msgid "8.0-CURRENT after the man:VOP_LOCK[9] and man:VOP_UNLOCK[9] prototype changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4396
#, no-wrap
msgid "800012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4393
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4397
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175487[175487]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4398
#, no-wrap
msgid "January 19, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4396
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4400
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_recursed[9], man:BUF_RECURSED[9] and man:BUF_ISLOCKED[9] and the removal of `BUF_REFCNT()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4401
#, no-wrap
msgid "800013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4398
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4402
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175581[175581]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4403
#, no-wrap
msgid "January 23, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4401
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4405
#, no-wrap
msgid "8.0-CURRENT after introduction of the \"ASCII\" encoding."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4406
#, no-wrap
msgid "800014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4403
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4407
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175636[175636]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4408
#, no-wrap
msgid "January 24, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4406
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4410
#, no-wrap
msgid "8.0-CURRENT after changing the prototype of man:lockmgr[9] and removal of `lockcount()` and `LOCKMGR_ASSERT()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4411
#, no-wrap
msgid "800015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4412
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175688[175688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4413
#, no-wrap
msgid "January 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4411
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4415
#, no-wrap
msgid "8.0-CURRENT after extending the types of the man:fts[3] structures."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4416
#, no-wrap
msgid "800016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4417
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175872[175872]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4418
#, no-wrap
msgid "February 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4416
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4420
#, no-wrap
msgid "8.0-CURRENT after adding an argument to man:MEXTADD[9]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4421
#, no-wrap
msgid "800017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4422
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176015[176015]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4423
#, no-wrap
msgid "February 6, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4421
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4425
#, no-wrap
msgid "8.0-CURRENT after the introduction of LK_NODUP and LK_NOWITNESS options in the man:lockmgr[9] space."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4426
#, no-wrap
msgid "800018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4423
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4427
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176112[176112]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4424
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5403
#, no-wrap
msgid "February 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4426
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4430
#, no-wrap
-msgid "8.0-CURRENT after the addition of m_collapse."
+msgid "8.0-CURRENT after the addition of `m_collapse`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4431
#, no-wrap
msgid "800019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4432
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176124[176124]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4433
#, no-wrap
msgid "February 9, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4431
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4435
#, no-wrap
msgid "8.0-CURRENT after the addition of current working directory, root directory, and jail directory support to the kern.proc.filedesc sysctl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4436
#, no-wrap
msgid "800020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4437
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176251[176251]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4438
#, no-wrap
msgid "February 13, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4436
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4440
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_assert[9] and `BUF_ASSERT` functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4437
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4441
#, no-wrap
msgid "800021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4442
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176321[176321]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4443
#, no-wrap
msgid "February 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4441
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4445
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_args[9] and LK_INTERNAL flag removal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4446
#, no-wrap
msgid "800022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4447
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176556[176556]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4448
#, no-wrap
msgid "(backed out)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4446
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4450
#, no-wrap
msgid "8.0-CURRENT after changing the default system ar to BSD man:ar[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4451
#, no-wrap
msgid "800023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4452
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176560[176560]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4453
#, no-wrap
msgid "February 25, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4451
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4455
#, no-wrap
msgid "8.0-CURRENT after changing the prototypes of man:lockstatus[9] and man:VOP_ISLOCKED[9];, more specifically retiring the `struct thread` argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4456
#, no-wrap
msgid "800024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4457
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176709[176709]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4458
#, no-wrap
msgid "March 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4456
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4460
#, no-wrap
msgid "8.0-CURRENT after axing out the `lockwaiters` and `BUF_LOCKWAITERS` functions, changing the return value of `brelvp` from void to int and introducing new flags for man:lockinit[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4461
#, no-wrap
msgid "800025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4462
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176958[176958]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4459
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4463
#, no-wrap
msgid "March 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4461
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4465
#, no-wrap
msgid "8.0-CURRENT after adding F_DUP2FD command to man:fcntl[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4466
#, no-wrap
msgid "800026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4467
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177086[177086]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4468
#, no-wrap
msgid "March 12, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4466
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4470
#, no-wrap
-msgid "8.0-CURRENT after changing the priority parameter to cv_broadcastpri such that 0 means no priority."
+msgid "8.0-CURRENT after changing the priority parameter to `cv_broadcastpri` such that 0 means no priority."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4471
#, no-wrap
msgid "800027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4472
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177551[177551]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4473
#, no-wrap
msgid "March 24, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4471
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4475
#, no-wrap
-msgid "8.0-CURRENT after changing the bpf monitoring ABI when zerocopy bpf buffers were added."
+msgid "8.0-CURRENT after changing the bpf monitoring ABI when `zerocopy` bpf buffers were added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4476
#, no-wrap
msgid "800028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4477
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177637[177637]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4474
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4478
#, no-wrap
msgid "March 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4480
#, no-wrap
-msgid "8.0-CURRENT after adding l_sysid to struct flock."
+msgid "8.0-CURRENT after adding `l_sysid` to struct flock."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4477
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4481
#, no-wrap
msgid "800029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4478
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4482
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177688[177688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4479
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4483
#, no-wrap
msgid "March 28, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4481
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4485
#, no-wrap
msgid "8.0-CURRENT after reintegration of the `BUF_LOCKWAITERS` function and the addition of man:lockmgr_waiters[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4486
#, no-wrap
msgid "800030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4483
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4487
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177844[177844]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4484
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4488
#, no-wrap
msgid "April 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4486
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4490
#, no-wrap
msgid "8.0-CURRENT after the introduction of the man:rw_try_rlock[9] and man:rw_try_wlock[9] functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4491
#, no-wrap
msgid "800031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4488
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4492
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177958[177958]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4489
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4493
#, no-wrap
msgid "April 6, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4495
#, no-wrap
msgid "8.0-CURRENT after the introduction of the `lockmgr_rw` and `lockmgr_args_rw` functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4496
#, no-wrap
msgid "800032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4493
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4497
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178006[178006]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4494
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4499
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4498
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4503
#, no-wrap
msgid "April 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4500
#, no-wrap
-msgid "8.0-CURRENT after the implementation of the openat and related syscalls, introduction of the O_EXEC flag for the man:open[2], and providing the corresponding linux compatibility syscalls."
+msgid "8.0-CURRENT after the implementation of the `openat` and related syscalls, introduction of the O_EXEC flag for the man:open[2], and providing the corresponding Linux compatibility syscalls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4501
#, no-wrap
msgid "800033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4498
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4502
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178017[178017]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4505
#, no-wrap
msgid "8.0-CURRENT after added man:write[2] support for man:psm[4] in native operation level. Now arbitrary commands can be written to [.filename]#/dev/psm%d# and status can be read back from it."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4506
#, no-wrap
msgid "800034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4507
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178051[178051]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4504
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4508
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5413
#, no-wrap
msgid "April 10, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4510
#, no-wrap
msgid "8.0-CURRENT after introduction of the `memrchr` function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4511
#, no-wrap
msgid "800035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4508
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4512
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178256[178256]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4513
#, no-wrap
msgid "April 16, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4515
#, no-wrap
msgid "8.0-CURRENT after introduction of the `fdopendir` function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4516
#, no-wrap
msgid "800036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4517
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178362[178362]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4514
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4518
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5433
#, no-wrap
msgid "April 20, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4520
#, no-wrap
-msgid "8.0-CURRENT after switchover of 802.11 wireless to multi-bss support (aka vaps)."
+msgid "8.0-CURRENT after switchover of 802.11 wireless to multi-bss support (aka `vaps`)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4521
#, no-wrap
msgid "800037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4518
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4522
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178892[178892]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4523
#, no-wrap
msgid "May 9, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4525
#, no-wrap
msgid "8.0-CURRENT after addition of multi routing table support (aka man:setfib[1], man:setfib[2])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4526
#, no-wrap
msgid "800038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4523
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4527
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179316[179316]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4524
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4528
#, no-wrap
msgid "May 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4530
#, no-wrap
-msgid "8.0-CURRENT after removal of netatm and ISDN4BSD. Also, the addition of the Compact C Type (CTF) tools."
+msgid "8.0-CURRENT after removal of `netatm` and ISDN4BSD. Also, the addition of the Compact C Type (CTF) tools."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4531
#, no-wrap
msgid "800039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4532
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179784[179784]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4529
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4533
#, no-wrap
msgid "June 14, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4535
#, no-wrap
-msgid "8.0-CURRENT after removal of sgtty."
+msgid "8.0-CURRENT after removal of `sgtty`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4536
#, no-wrap
msgid "800040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4533
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4537
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/180025[180025]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4534
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4538
#, no-wrap
msgid "June 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4540
#, no-wrap
-msgid "8.0-CURRENT with kernel NFS lockd client."
+msgid "8.0-CURRENT with kernel NFS `lockd` client."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4541
#, no-wrap
msgid "800041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4538
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4542
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/180691[180691]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4539
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4543
#, no-wrap
msgid "July 22, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4545
#, no-wrap
msgid "8.0-CURRENT after addition of man:arc4random_buf[3] and man:arc4random_uniform[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4546
#, no-wrap
msgid "800042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4547
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181439[181439]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4544
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4548
#, no-wrap
msgid "August 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4550
#, no-wrap
msgid "8.0-CURRENT after addition of man:cpuctl[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4551
#, no-wrap
msgid "800043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4552
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181694[181694]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4549
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4553
#, no-wrap
msgid "August 13, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4555
#, no-wrap
msgid "8.0-CURRENT after changing man:bpf[4] to use a single device node, instead of device cloning."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4556
#, no-wrap
msgid "800044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4557
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181803[181803]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4558
#, no-wrap
msgid "August 17, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4560
#, no-wrap
-msgid "8.0-CURRENT after the commit of the first step of the vimage project renaming global variables to be virtualized with a V_ prefix with macros to map them back to their global names."
+msgid "8.0-CURRENT after the commit of the first step of the VIMAGE project renaming global variables to be virtualized with a `V_` prefix with macros to map them back to their global names."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4561
#, no-wrap
msgid "800045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4558
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4562
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181905[181905]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4559
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5453
#, no-wrap
msgid "August 20, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4565
#, no-wrap
msgid "8.0-CURRENT after the integration of the MPSAFE TTY layer, including changes to various drivers and utilities that interact with it."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4566
#, no-wrap
msgid "800046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4567
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/182869[182869]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4568
#, no-wrap
msgid "September 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4566
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4570
#, no-wrap
msgid "8.0-CURRENT after the separation of the GDT per CPU on amd64 architecture."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4567
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4571
#, no-wrap
msgid "800047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4568
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4572
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/182905[182905]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4569
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4573
#, no-wrap
msgid "September 10, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4571
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4575
#, no-wrap
msgid "8.0-CURRENT after removal of VSVTX, VSGID and VSUID."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4572
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4576
#, no-wrap
msgid "800048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4573
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4577
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183091[183091]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4578
#, no-wrap
msgid "September 16, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4576
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4580
#, no-wrap
-msgid "8.0-CURRENT after converting the kernel NFS mount code to accept individual mount options in the man:nmount[2] iovec, not just one big struct nfs_args."
+msgid "8.0-CURRENT after converting the kernel NFS mount code to accept individual mount options in the man:nmount[2] `iovec`, not just one big struct nfs_args."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4577
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4581
#, no-wrap
msgid "800049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4582
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183114[183114]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4583
#, no-wrap
msgid "September 17, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4581
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4585
#, no-wrap
msgid "8.0-CURRENT after the removal of man:suser[9] and man:suser_cred[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4586
#, no-wrap
msgid "800050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4587
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184099[184099]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4588
#, no-wrap
msgid "October 20, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4586
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4590
#, no-wrap
msgid "8.0-CURRENT after buffer cache API change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4591
#, no-wrap
msgid "800051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4592
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184205[184205]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4593
#, no-wrap
msgid "October 23, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4591
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4595
#, no-wrap
msgid "8.0-CURRENT after the removal of the man:MALLOC[9] and man:FREE[9] macros."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4596
#, no-wrap
msgid "800052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4597
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184419[184419]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4598
#, no-wrap
msgid "October 28, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4596
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4600
#, no-wrap
-msgid "8.0-CURRENT after the introduction of accmode_t and renaming of VOP_ACCESS 'a_mode' argument to 'a_accmode'."
+msgid "8.0-CURRENT after the introduction of `accmode_t` and renaming of VOP_ACCESS `a_mode` argument to `a_accmode`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4597
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4601
#, no-wrap
msgid "800053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4602
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184555[184555]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4603
#, no-wrap
msgid "November 2, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4601
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4605
#, no-wrap
msgid "8.0-CURRENT after the prototype change of man:vfs_busy[9] and the introduction of its MBF_NOWAIT and MBF_MNTLSTLOCK flags."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4606
#, no-wrap
msgid "800054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4607
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185162[185162]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4608
#, no-wrap
msgid "November 22, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4606
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4610
#, no-wrap
-msgid "8.0-CURRENT after the addition of buf_ring, memory barriers and ifnet functions to facilitate multiple hardware transmit queues for cards that support them, and a lockless ring-buffer implementation to enable drivers to more efficiently manage queuing of packets."
+msgid "8.0-CURRENT after the addition of `buf_ring`, memory barriers and ifnet functions to facilitate multiple hardware transmit queues for cards that support them, and a lockless ring-buffer implementation to enable drivers to more efficiently manage queuing of packets."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4611
#, no-wrap
msgid "800055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4612
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185363[185363]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4613
#, no-wrap
msgid "November 27, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4611
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4615
#, no-wrap
msgid "8.0-CURRENT after the addition of Intel(TM) Core, Core2, and Atom support to man:hwpmc[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4616
#, no-wrap
msgid "800056"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4617
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185435[185435]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4618
#, no-wrap
msgid "November 29, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4616
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4620
#, no-wrap
msgid "8.0-CURRENT after the introduction of multi-/no-IPv4/v6 jails."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4621
#, no-wrap
msgid "800057"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4622
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185522[185522]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4623
#, no-wrap
msgid "December 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4621
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4625
#, no-wrap
-msgid "8.0-CURRENT after the switch to the ath hal source code."
+msgid "8.0-CURRENT after the switch to the ath `hal` source code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4622
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4626
#, no-wrap
msgid "800058"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4623
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4627
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185968[185968]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4628
#, no-wrap
msgid "December 12, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4626
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4630
#, no-wrap
msgid "8.0-CURRENT after the introduction of the VOP_VPTOCNP operation."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4631
#, no-wrap
msgid "800059"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4632
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/186119[186119]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4633
#, no-wrap
msgid "December 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4631
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4635
#, no-wrap
msgid "8.0-CURRENT incorporates the new arp-v2 rewrite."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4636
#, no-wrap
msgid "800060"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4637
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/186344[186344]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4638
#, no-wrap
msgid "December 19, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4636
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4640
#, no-wrap
msgid "8.0-CURRENT after the addition of makefs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4641
#, no-wrap
msgid "800061"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4642
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187289[187289]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4643
#, no-wrap
msgid "January 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4641
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4645
#, no-wrap
msgid "8.0-CURRENT after TCP Appropriate Byte Counting."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4646
#, no-wrap
msgid "800062"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4647
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187830[187830]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4648
#, no-wrap
msgid "January 28, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4646
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4650
#, no-wrap
msgid "8.0-CURRENT after removal of `minor()`, `minor2unit()`, `unit2minor()`, etc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4651
#, no-wrap
msgid "800063"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4652
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188745[188745]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4653
#, no-wrap
msgid "February 18, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4651
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4655
#, no-wrap
msgid "8.0-CURRENT after GENERIC config change to use the USB2 stack, but also the addition of man:fdevname[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4656
#, no-wrap
msgid "800064"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4657
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188946[188946]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4658
#, no-wrap
msgid "February 23, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4660
#, no-wrap
msgid "8.0-CURRENT after the USB2 stack is moved to and replaces dev/usb."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4661
#, no-wrap
msgid "800065"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4662
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189092[189092]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4663
#, no-wrap
msgid "February 26, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4665
#, no-wrap
msgid "8.0-CURRENT after the renaming of all functions in man:libmp[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4666
#, no-wrap
msgid "800066"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4667
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189110[189110]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4668
#, no-wrap
msgid "February 27, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4670
#, no-wrap
msgid "8.0-CURRENT after changing USB devfs handling and layout."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4671
#, no-wrap
msgid "800067"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4672
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189136[189136]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4673
#, no-wrap
msgid "February 28, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4675
#, no-wrap
msgid "8.0-CURRENT after adding `getdelim()`, `getline()`, `stpncpy()`, `strnlen()`, `wcsnlen()`, `wcscasecmp()`, and `wcsncasecmp()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4676
#, no-wrap
msgid "800068"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4677
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189276[189276]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4678
#, no-wrap
msgid "March 2, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4680
#, no-wrap
-msgid "8.0-CURRENT after renaming the ushub devclass to uhub."
+msgid "8.0-CURRENT after renaming the `ushub` devclass to `uhub`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4681
#, no-wrap
msgid "800069"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4682
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189585[189585]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4679
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4688
#, no-wrap
msgid "March 9, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4685
#, no-wrap
msgid "8.0-CURRENT after libusb20.so.1 was renamed to libusb.so.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4682
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4686
#, no-wrap
msgid "800070"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4687
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189592[189592]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4690
#, no-wrap
msgid "8.0-CURRENT after merging IGMPv3 and Source-Specific Multicast (SSM) to the IPv4 stack."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4691
#, no-wrap
msgid "800071"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4688
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4692
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189825[189825]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4689
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5498
#, no-wrap
msgid "March 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4691
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4695
#, no-wrap
msgid "8.0-CURRENT after gcc was patched to use C99 inline semantics in c99 and gnu99 mode."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4696
#, no-wrap
msgid "800072"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4697
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189853[189853]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4694
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4698
#, no-wrap
msgid "March 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4700
#, no-wrap
msgid "8.0-CURRENT after the IFF_NEEDSGIANT flag has been removed; non-MPSAFE network device drivers are no longer supported."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4701
#, no-wrap
msgid "800073"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4702
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190265[190265]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4703
#, no-wrap
msgid "March 18, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4705
#, no-wrap
msgid "8.0-CURRENT after the dynamic string token substitution has been implemented for rpath and needed paths."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4706
#, no-wrap
msgid "800074"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4707
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190373[190373]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4708
#, no-wrap
msgid "March 24, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4706
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4710
#, no-wrap
msgid "8.0-CURRENT after tcpdump 4.0.0 and libpcap 1.0.0 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4711
#, no-wrap
msgid "800075"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4712
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190787[190787]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4713
#, no-wrap
msgid "April 6, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4711
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4715
#, no-wrap
msgid "8.0-CURRENT after layout of structs vnet_net, vnet_inet and vnet_ipfw has been changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4716
#, no-wrap
msgid "800076"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4717
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190866[190866]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4718
#, no-wrap
msgid "April 9, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4716
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4720
#, no-wrap
msgid "8.0-CURRENT after adding delay profiles in dummynet."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4721
#, no-wrap
msgid "800077"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4722
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190914[190914]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4723
#, no-wrap
msgid "April 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4725
#, no-wrap
msgid "8.0-CURRENT after removing `VOP_LEASE()` and vop_vector.vop_lease."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4726
#, no-wrap
msgid "800078"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4727
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191080[191080]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4724
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4729
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4734
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5497
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5508
#, no-wrap
msgid "April 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4730
#, no-wrap
-msgid "8.0-CURRENT after struct rt_weight fields have been added to struct rt_metrics and struct rt_metrics_lite, changing the layout of struct rt_metrics_lite. A bump to RTM_VERSION was made, but backed out."
+msgid "8.0-CURRENT after struct `rt_weight` fields have been added to struct `rt_metrics` and struct `rt_metrics_lite`, changing the layout of struct `rt_metrics_lite`. A bump to RTM_VERSION was made, but backed out."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4731
#, no-wrap
msgid "800079"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4732
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191117[191117]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4735
#, no-wrap
-msgid "8.0-CURRENT after struct llentry pointers are added to struct route and struct route_in6."
+msgid "8.0-CURRENT after struct `llentry` pointers are added to struct route and struct route_in6."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4736
#, no-wrap
msgid "800080"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4737
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191126[191126]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4736
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4740
#, no-wrap
msgid "8.0-CURRENT after layout of struct inpcb has been changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4741
#, no-wrap
msgid "800081"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4742
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191267[191267]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4743
#, no-wrap
msgid "April 19, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4745
#, no-wrap
-msgid "8.0-CURRENT after the layout of struct malloc_type has been changed."
+msgid "8.0-CURRENT after the layout of struct `malloc_type` has been changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4746
#, no-wrap
msgid "800082"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4747
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191368[191368]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4748
#, no-wrap
msgid "April 21, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4750
#, no-wrap
-msgid "8.0-CURRENT after the layout of struct ifnet has changed, and with `if_ref()` and `if_rele()` ifnet refcounting."
+msgid "8.0-CURRENT after the layout of struct ifnet has changed, and with `if_ref()` and `if_rele()` ifnet `refcounting`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4747
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4751
#, no-wrap
msgid "800083"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4752
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191389[191389]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4753
#, no-wrap
msgid "April 22, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4755
#, no-wrap
msgid "8.0-CURRENT after the implementation of a low-level Bluetooth HCI API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4756
#, no-wrap
msgid "800084"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4757
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191672[191672]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4758
#, no-wrap
msgid "April 29, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4760
#, no-wrap
msgid "8.0-CURRENT after IPv6 SSM and MLDv2 changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4761
#, no-wrap
msgid "800085"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4762
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191688[191688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4763
#, no-wrap
msgid "April 30, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4765
#, no-wrap
msgid "8.0-CURRENT after enabling support for VIMAGE kernel builds with one active image."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4766
#, no-wrap
msgid "800086"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4767
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191910[191910]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4768
#, no-wrap
msgid "May 8, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4770
#, no-wrap
msgid "8.0-CURRENT after adding support for input lines of arbitrarily length in man:patch[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4771
#, no-wrap
msgid "800087"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4772
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191990[191990]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4773
#, no-wrap
msgid "May 11, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4771
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4775
#, no-wrap
msgid "8.0-CURRENT after some VFS KPI changes. The thread argument has been removed from the FSD parts of the VFS. `VFS_*` functions do not need the context any more because it always refers to `curthread`. In some special cases, the old behavior is retained."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4776
#, no-wrap
msgid "800088"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4777
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192470[192470]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4778
#, no-wrap
msgid "May 20, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4780
#, no-wrap
msgid "8.0-CURRENT after net80211 monitor mode changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4781
#, no-wrap
msgid "800089"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4778
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4782
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192649[192649]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4779
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4788
#, no-wrap
msgid "May 23, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4785
#, no-wrap
msgid "8.0-CURRENT after adding UDP control block support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4786
#, no-wrap
msgid "800090"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4787
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192669[192669]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4790
#, no-wrap
msgid "8.0-CURRENT after virtualizing interface cloning."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4791
#, no-wrap
msgid "800091"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4792
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192895[192895]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4793
#, no-wrap
msgid "May 27, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4795
#, no-wrap
msgid "8.0-CURRENT after adding hierarchical jails and removing global securelevel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4796
#, no-wrap
msgid "800092"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4793
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4797
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193011[193011]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4794
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4799
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4803
#, no-wrap
msgid "May 29, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4796
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4800
#, no-wrap
msgid "8.0-CURRENT after changing `sx_init_flags()` KPI. The `SX_ADAPTIVESPIN` is retired and a new `SX_NOADAPTIVE` flag is introduced to handle the reversed logic."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4801
#, no-wrap
msgid "800093"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4802
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193047[193047]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4805
#, no-wrap
-msgid "8.0-CURRENT after adding mnt_xflag to struct mount."
+msgid "8.0-CURRENT after adding `mnt_xflag` to struct mount."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4806
#, no-wrap
msgid "800094"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4807
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193093[193093]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4804
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4809
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4813
#, no-wrap
msgid "May 30, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4810
#, no-wrap
msgid "8.0-CURRENT after adding man:VOP_ACCESSX[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4811
#, no-wrap
msgid "800095"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4812
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193096[193096]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4811
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4815
#, no-wrap
msgid "8.0-CURRENT after changing the polling KPI. The polling handlers now return the number of packets processed. A new `IFCAP_POLLING_NOCOUNT` is also introduced to specify that the return value is not significant and the counting should be skipped."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4816
#, no-wrap
msgid "800096"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4817
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193219[193219]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4814
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4818
#, no-wrap
msgid "June 1, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4820
#, no-wrap
-msgid "8.0-CURRENT after updating to the new netisr implementation and after changing the way we store and access FIBs."
+msgid "8.0-CURRENT after updating to the new netisr implementation and after changing the way of storing and accessing FIBs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4821
#, no-wrap
msgid "800097"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4822
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193731[193731]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4823
#, no-wrap
msgid "June 8, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4825
#, no-wrap
msgid "8.0-CURRENT after the introduction of vnet destructor hooks and infrastructure."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4827
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194012[194012]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4824
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4828
#, no-wrap
msgid "June 11, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4830
#, no-wrap
msgid "8.0-CURRENT after the introduction of netgraph outbound to inbound path call detection and queuing, which also changed the layout of struct thread."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4831
#, no-wrap
msgid "800098"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4832
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194210[194210]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4829
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4833
#, no-wrap
msgid "June 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4835
#, no-wrap
msgid "8.0-CURRENT after OpenSSL 0.9.8k import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4836
#, no-wrap
msgid "800099"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4837
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194675[194675]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4838
#, no-wrap
msgid "June 22, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4840
#, no-wrap
msgid "8.0-CURRENT after NGROUPS update and moving route virtualization into its own VImage module."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4841
#, no-wrap
msgid "800100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4842
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194920[194920]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4839
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4843
#, no-wrap
msgid "June 24, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4841
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4845
#, no-wrap
msgid "8.0-CURRENT after SYSVIPC ABI change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4842
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4846
#, no-wrap
msgid "800101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4847
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195175[195175]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4848
#, no-wrap
msgid "June 29, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4850
#, no-wrap
msgid "8.0-CURRENT after the removal of the /dev/net/* per-interface character devices."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4851
#, no-wrap
msgid "800102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4852
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195634[195634]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4853
#, no-wrap
msgid "July 12, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4855
#, no-wrap
-msgid "8.0-CURRENT after padding was added to struct sackhint, struct tcpcb, and struct tcpstat."
+msgid "8.0-CURRENT after padding was added to struct `sackhint`, struct tcpcb, and struct `tcpstat`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4852
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4856
#, no-wrap
msgid "800103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4857
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195654[195654]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4858
#, no-wrap
msgid "July 13, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4860
#, no-wrap
-msgid "8.0-CURRENT after replacing struct tcpopt with struct toeopt in the TOE driver interface to the TCP syncache."
+msgid "8.0-CURRENT after replacing struct `tcpopt` with struct `toeopt` in the TOE driver interface to the TCP `syncache`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4857
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4861
#, no-wrap
msgid "800104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4862
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195699[195699]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4859
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5528
#, no-wrap
msgid "July 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4861
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4865
#, no-wrap
msgid "8.0-CURRENT after the addition of the linker-set based per-vnet allocator."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4862
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4866
#, no-wrap
msgid "800105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4867
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195767[195767]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4868
#, no-wrap
msgid "July 19, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4866
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4870
#, no-wrap
msgid "8.0-CURRENT after version bump for all shared libraries that do not have symbol versioning turned on."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4871
#, no-wrap
msgid "800106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4872
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195852[195852]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4873
#, no-wrap
msgid "July 24, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4871
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4875
#, no-wrap
msgid "8.0-CURRENT after introduction of OBJT_SG VM object type."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4876
#, no-wrap
msgid "800107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4877
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/196037[196037]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4878
#, no-wrap
msgid "August 2, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4876
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4880
#, no-wrap
-msgid "8.0-CURRENT after making the newbus subsystem Giant free by adding the newbus sxlock and 8.0-RELEASE."
+msgid "8.0-CURRENT after making the newbus subsystem Giant free by adding the newbus `sxlock` and 8.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4881
#, no-wrap
msgid "800108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4882
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/199627[199627]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4879
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4883
#, no-wrap
msgid "November 21, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4885
#, no-wrap
-msgid "8.0-STABLE after implementing EVFILT_USER kevent filter."
+msgid "8.0-STABLE after implementing EVFILT_USER `kevent` filter."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4886
#, no-wrap
msgid "800500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4887
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/201749[201749]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4888
#, no-wrap
msgid "January 7, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4890
#, no-wrap
msgid "8.0-STABLE after `__FreeBSD_version` bump to make `pkg_add -r` use packages-8-stable."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4891
#, no-wrap
msgid "800501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4892
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/202922[202922]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4893
#, no-wrap
msgid "January 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4895
#, no-wrap
msgid "8.0-STABLE after change of the man:scandir[3] and man:alphasort[3] prototypes to conform to SUSv4."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4896
#, no-wrap
msgid "800502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4897
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203299[203299]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4898
#, no-wrap
msgid "January 31, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4900
#, no-wrap
msgid "8.0-STABLE after addition of man:sigpause[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4897
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4901
#, no-wrap
msgid "800503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4902
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/204344[204344]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4903
#, no-wrap
msgid "February 25, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4905
#, no-wrap
msgid "8.0-STABLE after addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to network interfaces. These ioctl can be used to manipulate interface description, as inspired by OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4906
#, no-wrap
msgid "800504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4907
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/204546[204546]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4908
#, no-wrap
msgid "March 1, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4910
#, no-wrap
msgid "8.0-STABLE after MFC of importing x86emu, a software emulator for real mode x86 CPU from OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4911
#, no-wrap
msgid "800505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4912
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/208259[208259]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4913
#, no-wrap
msgid "May 18, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4911
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4915
#, no-wrap
msgid "8.0-STABLE after MFC of adding liblzma, xz, xzdec, and lzmainfo."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4912
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4916
#, no-wrap
msgid "801000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4917
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/209150[209150]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4914
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4923
#, no-wrap
msgid "June 14, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4920
#, no-wrap
msgid "8.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4921
#, no-wrap
msgid "801500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4922
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/209146[209146]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4925
#, no-wrap
msgid "8.1-STABLE after 8.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4926
#, no-wrap
msgid "801501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4927
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/214762[214762]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4928
#, no-wrap
msgid "November 3, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4926
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4930
#, no-wrap
-msgid "8.1-STABLE after KBI change in struct sysentvec, and implementation of PL_FLAG_SCE/SCX/EXEC/SI and pl_siginfo for ptrace(PT_LWPINFO) ."
+msgid "8.1-STABLE after KBI change in struct `sysentvec`, and implementation of PL_FLAG_SCE/SCX/EXEC/SI and `pl_siginfo` for ptrace(PT_LWPINFO) ."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4927
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4931
#, no-wrap
msgid "802000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4932
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216639[216639]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4929
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4934
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5547
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5558
#, no-wrap
msgid "December 22, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4931
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4935
#, no-wrap
msgid "8.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4932
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4936
#, no-wrap
msgid "802500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4937
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216654[216654]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4940
#, no-wrap
msgid "8.2-STABLE after 8.2-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4941
#, no-wrap
msgid "802501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4942
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/219107[219107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4943
#, no-wrap
msgid "February 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4945
#, no-wrap
msgid "8.2-STABLE after merging DTrace changes, including support for userland tracing."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4946
#, no-wrap
msgid "802502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4947
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/219324[219324]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4948
#, no-wrap
msgid "March 6, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4950
#, no-wrap
msgid "8.2-STABLE after merging log2 and log2f into libm."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4951
#, no-wrap
msgid "802503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4952
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/221275[221275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4953
#, no-wrap
msgid "May 1, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4955
#, no-wrap
msgid "8.2-STABLE after upgrade of the gcc to the last GPLv2 version from the FSF gcc-4_2-branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4956
#, no-wrap
msgid "802504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4957
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222401[222401]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4954
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4959
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4964
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4968
#, no-wrap
msgid "May 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4960
#, no-wrap
msgid "8.2-STABLE after introduction of the KPI and supporting infrastructure for modular congestion control."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4961
#, no-wrap
msgid "802505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4962
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222406[222406]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4965
#, no-wrap
msgid "8.2-STABLE after introduction of Hhook and Khelp KPIs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4966
#, no-wrap
msgid "802506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4967
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222408[222408]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4970
#, no-wrap
msgid "8.2-STABLE after addition of OSD to struct tcpcb."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4971
#, no-wrap
msgid "802507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4972
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222741[222741]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4973
#, no-wrap
msgid "June 6, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4975
#, no-wrap
msgid "8.2-STABLE after ZFS v28 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4972
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4976
#, no-wrap
msgid "802508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4977
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222846[222846]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4974
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4978
#, no-wrap
msgid "June 8, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4980
#, no-wrap
-msgid "8.2-STABLE after removal of the schedtail event handler and addition of the sv_schedtail method to struct sysvec."
+msgid "8.2-STABLE after removal of the `schedtail` event handler and addition of the `sv_schedtail` method to struct `sysvec`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4981
#, no-wrap
msgid "802509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4982
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224017[224017]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4983
#, no-wrap
msgid "July 14, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4985
#, no-wrap
msgid "8.2-STABLE after merging the SSSE3 support into binutils."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4986
#, no-wrap
msgid "802510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4987
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224214[224214]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4990
#, no-wrap
msgid "8.2-STABLE after addition of RFTSIGZMB flag for man:rfork[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4991
#, no-wrap
msgid "802511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4992
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225458[225458]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4993
#, no-wrap
msgid "September 9, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4995
#, no-wrap
msgid "8.2-STABLE after addition of automatic detection of USB mass storage devices which do not support the no synchronize cache SCSI command."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4996
#, no-wrap
msgid "802512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4997
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225470[225470]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5000
#, no-wrap
msgid "8.2-STABLE after merging of re-factoring of auto-quirk."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5001
#, no-wrap
msgid "802513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5002
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/226763[226763]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4999
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5003
#, no-wrap
msgid "October 25, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5005
#, no-wrap
msgid "8.2-STABLE after merging of the MAP_PREFAULT_READ flag to man:mmap[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5006
#, no-wrap
msgid "802514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5007
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/227573[227573]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5008
#, no-wrap
msgid "November 16, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5010
#, no-wrap
msgid "8.2-STABLE after merging of addition of man:posix_fallocate[2] syscall."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5011
#, no-wrap
msgid "802515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5012
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229725[229725]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5015
#, no-wrap
msgid "8.2-STABLE after merging of addition of the man:posix_fadvise[2] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5016
#, no-wrap
msgid "802516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5017
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230239[230239]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5020
#, no-wrap
msgid "8.2-STABLE after merging gperf 3.0.3"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5021
#, no-wrap
msgid "802517"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5022
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231769[231769]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5025
#, no-wrap
msgid "8.2-STABLE after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5026
#, no-wrap
msgid "803000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5027
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232446[232446]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5030
#, no-wrap
msgid "8.3-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5031
#, no-wrap
msgid "803500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5032
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232439[232439]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5035
#, no-wrap
msgid "8.3-STABLE after branching releng/8.3 (RELENG_8_3)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5036
#, no-wrap
msgid "803501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5037
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/247091[247091]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5040
#, no-wrap
msgid "8.3-STABLE after MFC of two USB fixes (rev link:https://svnweb.freebsd.org/changeset/base/246616[246616] and link:https://svnweb.freebsd.org/changeset/base/246759[246759])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5041
#, no-wrap
msgid "804000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5042
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248850[248850]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5039
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5044
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5048
#, no-wrap
msgid "March 28, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5045
#, no-wrap
msgid "8.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5046
#, no-wrap
msgid "804500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5047
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248819[248819]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5050
#, no-wrap
msgid "8.4-STABLE after 8.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5051
#, no-wrap
msgid "804501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5052
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259449[259449]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5049
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5053
#, no-wrap
msgid "December 16, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5055
#, no-wrap
msgid "8.4-STABLE after MFC of upstream Heimdal encoding fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5056
#, no-wrap
msgid "804502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5060
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:08.tcp."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5061
#, no-wrap
msgid "804503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5062
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268444[268444]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5059
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5063
#, no-wrap
msgid "July 9, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5065
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:17.kmem."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5066
#, no-wrap
msgid "804504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5070
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/271305[271305])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5071
#, no-wrap
msgid "804505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5075
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271668[271668])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5076
#, no-wrap
msgid "804506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5080
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:21 (rev link:https://svnweb.freebsd.org/changeset/base/273413[273413])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5081
#, no-wrap
msgid "804507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5085
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5086
#, no-wrap
msgid "804508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5092
#, no-wrap
-msgid "8-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind."
+msgid ""
+"8-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind.\n"
+"pass:[<!-- vale Vale.Terms = YES -->]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5093
#, no-wrap
msgid "804509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5094
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305736[305736]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5096
#, no-wrap
msgid "8-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5099
#, no-wrap
msgid "FreeBSD 7 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5102
#, no-wrap
msgid "FreeBSD 7 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5111
#, no-wrap
msgid "700000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5112
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/147925[147925]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5107
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5741
#, no-wrap
msgid "July 11, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5109
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5115
#, no-wrap
msgid "7.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5116
#, no-wrap
msgid "700001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5117
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/148341[148341]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5112
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5118
#, no-wrap
msgid "July 23, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5114
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5120
#, no-wrap
msgid "7.0-CURRENT after bump of all shared library versions that had not been changed since RELENG_5."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5121
#, no-wrap
msgid "700002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5116
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5122
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/149039[149039]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5117
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5751
#, no-wrap
msgid "August 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5119
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5125
#, no-wrap
-msgid "7.0-CURRENT after credential argument is added to dev_clone event handler."
+msgid "7.0-CURRENT after credential argument is added to `dev_clone` event handler."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5126
#, no-wrap
msgid "700003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5127
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/149470[149470]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5128
#, no-wrap
msgid "August 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5124
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5130
#, no-wrap
msgid "7.0-CURRENT after man:memmem[3] is added to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5125
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5131
#, no-wrap
msgid "700004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5126
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5132
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/151888[151888]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5127
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5133
#, no-wrap
msgid "October 30, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5129
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5135
#, no-wrap
msgid "7.0-CURRENT after man:solisten[9] kernel arguments are modified to accept a backlog parameter."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5136
#, no-wrap
msgid "700005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5137
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/152296[152296]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5132
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5143
#, no-wrap
msgid "November 11, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5134
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5140
#, no-wrap
msgid "7.0-CURRENT after `IFP2ENADDR()` was changed to return a pointer to `IF_LLADDR()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5141
#, no-wrap
msgid "700006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5136
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5142
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/152315[152315]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5139
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5145
#, no-wrap
msgid "7.0-CURRENT after addition of `if_addr` member to `struct ifnet` and `IFP2ENADDR()` removal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5140
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5146
#, no-wrap
msgid "700007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5141
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5147
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153027[153027]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5142
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5148
#, no-wrap
msgid "December 2, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5144
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5150
#, no-wrap
-msgid "7.0-CURRENT after incorporating scripts from the local_startup directories into the base man:rcorder[8]."
+msgid "7.0-CURRENT after incorporating scripts from the `local_startup` directories into the base man:rcorder[8]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5145
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5151
#, no-wrap
msgid "700008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5146
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5152
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153107[153107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5153
#, no-wrap
msgid "December 5, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5155
#, no-wrap
msgid "7.0-CURRENT after removal of MNT_NODEV mount option."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5156
#, no-wrap
msgid "700009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5151
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5157
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153519[153519]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5158
#, no-wrap
msgid "December 19, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5154
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5160
#, no-wrap
msgid "7.0-CURRENT after ELF-64 type changes and symbol versioning."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5161
#, no-wrap
msgid "700010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5156
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5162
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153579[153579]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5163
#, no-wrap
msgid "December 20, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5165
#, no-wrap
-msgid "7.0-CURRENT after addition of hostb and vgapci drivers, addition of `pci_find_extcap()`, and changing the AGP drivers to no longer map the aperture."
+msgid "7.0-CURRENT after addition of `hostb` and `vgapci` drivers, addition of `pci_find_extcap()`, and changing the AGP drivers to no longer map the aperture."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5166
#, no-wrap
msgid "700011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5167
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153936[153936]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5162
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5168
#, no-wrap
msgid "December 31, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5170
#, no-wrap
-msgid "7.0-CURRENT after tv_sec was made time_t on all platforms but Alpha."
+msgid "7.0-CURRENT after `tv_sec` was made `time_t` on all platforms but Alpha."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5171
#, no-wrap
msgid "700012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5166
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5172
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154114[154114]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5173
#, no-wrap
msgid "January 8, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5175
#, no-wrap
msgid "7.0-CURRENT after ldconfig_local_dirs change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5176
#, no-wrap
msgid "700013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5171
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5177
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154269[154269]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5178
#, no-wrap
msgid "January 12, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5174
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5180
#, no-wrap
-msgid "7.0-CURRENT after changes to [.filename]#/etc/rc.d/abi# to support [.filename]#/compat/linux/etc/ld.so.cache# being a symlink in a readonly filesystem."
+msgid "7.0-CURRENT after changes to [.filename]#/etc/rc.d/abi# to support [.filename]#/compat/linux/etc/ld.so.cache# being a symlink in a read-only filesystem."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5181
#, no-wrap
msgid "700014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5176
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5182
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154863[154863]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5183
#, no-wrap
msgid "January 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5185
#, no-wrap
msgid "7.0-CURRENT after pts import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5180
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5186
#, no-wrap
msgid "700015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5181
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5187
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/157144[157144]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5188
#, no-wrap
msgid "March 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5190
#, no-wrap
msgid "7.0-CURRENT after the introduction of version 2 of man:hwpmc[4]'s ABI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5191
#, no-wrap
msgid "700016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5192
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/157962[157962]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5193
#, no-wrap
msgid "April 22, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5195
#, no-wrap
msgid "7.0-CURRENT after addition of man:fcloseall[3] to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5196
#, no-wrap
msgid "700017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5197
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158513[158513]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5192
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5198
#, no-wrap
msgid "May 13, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5194
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5200
#, no-wrap
msgid "7.0-CURRENT after removal of ip6fw."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5201
#, no-wrap
msgid "700018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5196
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5202
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160386[160386]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5197
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5203
#, no-wrap
msgid "July 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5199
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5205
#, no-wrap
msgid "7.0-CURRENT after import of snd_emu10kx."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5206
#, no-wrap
msgid "700019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5201
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5207
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160821[160821]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5208
#, no-wrap
msgid "July 29, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5204
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5210
#, no-wrap
msgid "7.0-CURRENT after import of OpenSSL 0.9.8b."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5211
#, no-wrap
msgid "700020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5212
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/161931[161931]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5213
#, no-wrap
msgid "September 3, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5209
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5215
#, no-wrap
-msgid "7.0-CURRENT after addition of bus_dma_get_tag function"
+msgid "7.0-CURRENT after addition of `bus_dma_get_tag` function"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5216
#, no-wrap
msgid "700021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5217
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162023[162023]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5212
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5218
#, no-wrap
msgid "September 4, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5214
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5220
#, no-wrap
msgid "7.0-CURRENT after libpcap 0.9.4 and tcpdump 3.9.4 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5221
#, no-wrap
msgid "700022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5222
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162170[162170]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5223
#, no-wrap
msgid "September 9, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5219
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5225
#, no-wrap
-msgid "7.0-CURRENT after dlsym change to look for a requested symbol both in specified dso and its implicit dependencies."
+msgid "7.0-CURRENT after `dlsym` change to look for a requested symbol both in specified DSO and its implicit dependencies."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5226
#, no-wrap
msgid "700023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5227
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162588[162588]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5228
#, no-wrap
msgid "September 23, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5224
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5230
#, no-wrap
msgid "7.0-CURRENT after adding new sound IOCTLs for the OSSv4 mixer API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5231
#, no-wrap
msgid "700024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5226
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5232
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162919[162919]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5227
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5233
#, no-wrap
msgid "September 28, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5229
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5235
#, no-wrap
msgid "7.0-CURRENT after import of OpenSSL 0.9.8d."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5230
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5236
#, no-wrap
msgid "700025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5231
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5237
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164190[164190]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5238
#, no-wrap
msgid "November 11, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5234
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5240
#, no-wrap
msgid "7.0-CURRENT after the addition of libelf."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5241
#, no-wrap
msgid "700026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5236
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5242
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164614[164614]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5237
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5243
#, no-wrap
msgid "November 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5239
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5245
#, no-wrap
msgid "7.0-CURRENT after major changes on sound sysctls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5240
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5246
#, no-wrap
msgid "700027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5241
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5247
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164770[164770]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5242
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5248
#, no-wrap
msgid "November 30, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5244
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5250
#, no-wrap
msgid "7.0-CURRENT after the addition of Wi-Spy quirk."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5251
#, no-wrap
msgid "700028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5246
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5252
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/165242[165242]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5247
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5253
#, no-wrap
msgid "December 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5249
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5255
#, no-wrap
-msgid "7.0-CURRENT after the addition of sctp calls to libc"
+msgid "7.0-CURRENT after the addition of `sctp` calls to libc"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5256
#, no-wrap
msgid "700029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5251
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5257
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166259[166259]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5258
#, no-wrap
msgid "January 26, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5254
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5260
#, no-wrap
msgid "7.0-CURRENT after the GNU man:gzip[1] implementation was replaced with a BSD licensed version ported from NetBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5261
#, no-wrap
msgid "700030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5256
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5262
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166549[166549]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5257
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5263
#, no-wrap
msgid "February 7, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5259
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5265
#, no-wrap
msgid "7.0-CURRENT after the removal of IPIP tunnel encapsulation (VIFF_TUNNEL) from the IPv4 multicast forwarding code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5266
#, no-wrap
msgid "700031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5261
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5267
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166907[166907]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5268
#, no-wrap
msgid "February 23, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5270
#, no-wrap
msgid "7.0-CURRENT after the modification of `bus_setup_intr()` (newbus)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5271
#, no-wrap
msgid "700032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5272
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167165[167165]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5267
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5273
#, no-wrap
msgid "March 2, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5269
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5275
#, no-wrap
msgid "7.0-CURRENT after the inclusion of man:ipw[4] and man:iwi[4] firmware."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5276
#, no-wrap
msgid "700033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5271
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5277
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167360[167360]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5278
#, no-wrap
msgid "March 9, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5274
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5280
#, no-wrap
msgid "7.0-CURRENT after the inclusion of ncurses wide character support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5275
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5281
#, no-wrap
msgid "700034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5276
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5282
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167684[167684]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5283
#, no-wrap
msgid "March 19, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5285
#, no-wrap
msgid "7.0-CURRENT after changes to how `insmntque()`, `getnewvnode()`, and `vfs_hash_insert()` work."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5280
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5286
#, no-wrap
msgid "700035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5281
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5287
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167906[167906]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5288
#, no-wrap
msgid "March 26, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5284
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5290
#, no-wrap
msgid "7.0-CURRENT after addition of a notify mechanism for CPU frequency changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5285
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5291
#, no-wrap
msgid "700036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5286
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5292
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168413[168413]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5287
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5861
#, no-wrap
msgid "April 6, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5289
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5295
#, no-wrap
msgid "7.0-CURRENT after import of the ZFS filesystem."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5296
#, no-wrap
msgid "700037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5291
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5297
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168504[168504]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5298
#, no-wrap
msgid "April 8, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5294
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5300
#, no-wrap
msgid "7.0-CURRENT after addition of CAM 'SG' peripheral device, which implements a subset of Linux SCSI SG passthrough device API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5295
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5301
#, no-wrap
msgid "700038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5302
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169151[169151]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5297
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5303
#, no-wrap
msgid "April 30, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5305
#, no-wrap
msgid "7.0-CURRENT after changing man:getenv[3], man:putenv[3], man:setenv[3] and man:unsetenv[3] to be POSIX conformant."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5300
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5306
#, no-wrap
msgid "700039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5301
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5307
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169190[169190]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5302
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5308
#, no-wrap
msgid "May 1, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5310
#, no-wrap
msgid "7.0-CURRENT after the changes in 700038 were backed out."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5305
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5311
#, no-wrap
msgid "700040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5306
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5312
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169453[169453]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5307
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5313
#, no-wrap
msgid "May 10, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5315
#, no-wrap
msgid "7.0-CURRENT after the addition of man:flopen[3] to libutil."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5316
#, no-wrap
msgid "700041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5311
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5317
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169526[169526]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5312
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5318
#, no-wrap
msgid "May 13, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5320
#, no-wrap
msgid "7.0-CURRENT after enabling symbol versioning, and changing the default thread library to libthr."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5315
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5321
#, no-wrap
msgid "700042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5316
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5322
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169758[169758]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5323
#, no-wrap
msgid "May 19, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5319
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5325
#, no-wrap
msgid "7.0-CURRENT after the import of gcc 4.2.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5326
#, no-wrap
msgid "700043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5321
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5327
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169830[169830]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5322
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5328
#, no-wrap
msgid "May 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5324
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5330
#, no-wrap
msgid "7.0-CURRENT after bump of all shared library versions that had not been changed since RELENG_6."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5325
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5331
#, no-wrap
msgid "700044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5326
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5332
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170395[170395]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5327
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5333
#, no-wrap
msgid "June 7, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5329
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5335
#, no-wrap
msgid "7.0-CURRENT after changing the argument for `vn_open()`/`VOP_OPEN()` from file descriptor index to the struct file *."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5336
#, no-wrap
msgid "700045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5331
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5337
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170510[170510]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5338
#, no-wrap
msgid "June 10, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5340
#, no-wrap
msgid "7.0-CURRENT after changing man:pam_nologin[8] to provide an account management function instead of an authentication function to the PAM framework."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5335
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5341
#, no-wrap
msgid "700046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5336
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5342
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170530[170530]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5337
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5342
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5348
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5881
#, no-wrap
msgid "June 11, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5345
#, no-wrap
msgid "7.0-CURRENT after updated 802.11 wireless support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5340
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5346
#, no-wrap
msgid "700047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5341
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5347
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170579[170579]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5350
#, no-wrap
msgid "7.0-CURRENT after adding TCP LRO interface capabilities."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5345
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5351
#, no-wrap
msgid "700048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5346
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5352
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170613[170613]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5353
#, no-wrap
msgid "June 12, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5355
#, no-wrap
-msgid "7.0-CURRENT after RFC 3678 API support added to the IPv4 stack. Legacy RFC 1724 behavior of the IP_MULTICAST_IF ioctl has now been removed; 0.0.0.0/8 may no longer be used to specify an interface index. Use struct ipmreqn instead."
+msgid "7.0-CURRENT after RFC 3678 API support added to the IPv4 stack. Legacy RFC 1724 behavior of the IP_MULTICAST_IF ioctl has now been removed; 0.0.0.0/8 may no longer be used to specify an interface index. Use struct `ipmreqn` instead."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5356
#, no-wrap
msgid "700049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5351
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5357
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171175[171175]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5352
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5358
#, no-wrap
msgid "July 3, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5360
#, no-wrap
msgid "7.0-CURRENT after importing pf from OpenBSD 4.1"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5356
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5362
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171167[171167]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5365
#, no-wrap
msgid "7.0-CURRENT after adding IPv6 support for FAST_IPSEC, deleting KAME IPSEC, and renaming FAST_IPSEC to IPSEC."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5360
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5366
#, no-wrap
msgid "700050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5361
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5367
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171195[171195]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5362
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5373
#, no-wrap
msgid "July 4, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5364
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5370
#, no-wrap
msgid "7.0-CURRENT after converting setenv/putenv/etc. calls from traditional BSD to POSIX."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5365
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5371
#, no-wrap
msgid "700051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5366
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5372
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171211[171211]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5369
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5375
#, no-wrap
msgid "7.0-CURRENT after adding new mmap/lseek/etc syscalls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5376
#, no-wrap
msgid "700052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5371
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5377
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171275[171275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5378
#, no-wrap
msgid "July 6, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5380
#, no-wrap
msgid "7.0-CURRENT after moving I4B headers to include/i4b."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5381
#, no-wrap
msgid "700053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5376
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5382
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172394[172394]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5383
#, no-wrap
msgid "September 30, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5385
#, no-wrap
msgid "7.0-CURRENT after the addition of support for PCI domains"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5386
#, no-wrap
msgid "700054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5381
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5387
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172988[172988]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5382
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5891
#, no-wrap
msgid "October 25, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5390
#, no-wrap
msgid "7.0-STABLE after MFC of wide and single byte ctype separation."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5385
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5391
#, no-wrap
msgid "700055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5386
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5392
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173104[173104]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5393
#, no-wrap
msgid "October 28, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5395
#, no-wrap
msgid "7.0-RELEASE, and 7.0-CURRENT after ABI backwards compatibility to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was MFCed, which required the ABI of the PCIOCGETCONF IOCTL to be broken again"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5390
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5396
#, no-wrap
msgid "700100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5391
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5397
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174864[174864]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5398
#, no-wrap
msgid "December 22, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5400
#, no-wrap
msgid "7.0-STABLE after 7.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5395
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5401
#, no-wrap
msgid "700101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5396
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5402
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176111[176111]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5405
#, no-wrap
msgid "7.0-STABLE after the MFC of `m_collapse()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5400
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5406
#, no-wrap
msgid "700102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5401
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5407
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177735[177735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5408
#, no-wrap
msgid "March 30, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5410
#, no-wrap
msgid "7.0-STABLE after the MFC of `kdb_enter_why()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5405
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5411
#, no-wrap
msgid "700103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5406
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5412
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178061[178061]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5415
#, no-wrap
-msgid "7.0-STABLE after adding l_sysid to struct flock."
+msgid "7.0-STABLE after adding `l_sysid` to struct flock."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5410
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5416
#, no-wrap
msgid "700104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5411
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5417
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178108[178108]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5412
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5423
#, no-wrap
msgid "April 11, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5420
#, no-wrap
msgid "7.0-STABLE after the MFC of man:procstat[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5415
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5421
#, no-wrap
msgid "700105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5416
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5422
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178120[178120]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5425
#, no-wrap
-msgid "7.0-STABLE after the MFC of umtx features."
+msgid "7.0-STABLE after the MFC of `umtx` features."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5420
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5426
#, no-wrap
msgid "700106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5421
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5427
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178225[178225]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5428
#, no-wrap
msgid "April 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5424
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5430
#, no-wrap
msgid "7.0-STABLE after the MFC of man:write[2] support to man:psm[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5431
#, no-wrap
msgid "700107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5426
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5432
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178353[178353]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5435
#, no-wrap
msgid "7.0-STABLE after the MFC of F_DUP2FD command to man:fcntl[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5436
#, no-wrap
msgid "700108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5431
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5437
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178783[178783]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5438
#, no-wrap
msgid "May 5, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5440
#, no-wrap
msgid "7.0-STABLE after some man:lockmgr[9] changes, which makes it necessary to include [.filename]#sys/lock.h# to use man:lockmgr[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5435
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5441
#, no-wrap
msgid "700109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5436
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5925
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179367[179367]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5437
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5926
#, no-wrap
msgid "May 27, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5445
#, no-wrap
msgid "7.0-STABLE after MFC of the man:memrchr[3] function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5440
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5446
#, no-wrap
msgid "700110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5441
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5447
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181328[181328]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5448
#, no-wrap
msgid "August 5, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5450
#, no-wrap
-msgid "7.0-STABLE after MFC of kernel NFS lockd client."
+msgid "7.0-STABLE after MFC of kernel NFS `lockd` client."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5445
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5451
#, no-wrap
msgid "700111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5446
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5452
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181940[181940]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5455
#, no-wrap
msgid "7.0-STABLE after addition of physically contiguous jumbo frame support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5450
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5456
#, no-wrap
msgid "700112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5451
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5457
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/182294[182294]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5458
#, no-wrap
msgid "August 27, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5460
#, no-wrap
msgid "7.0-STABLE after MFC of kernel DTrace support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5461
#, no-wrap
msgid "701000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5456
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5462
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185315[185315]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5457
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5468
#, no-wrap
msgid "November 25, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5459
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5465
#, no-wrap
msgid "7.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5466
#, no-wrap
msgid "701100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5461
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5467
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185302[185302]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5470
#, no-wrap
msgid "7.1-STABLE after 7.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5471
#, no-wrap
msgid "701101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5466
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5472
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187023[187023]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5473
#, no-wrap
msgid "January 10, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5475
#, no-wrap
msgid "7.1-STABLE after man:strndup[3] merge."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5476
#, no-wrap
msgid "701102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5471
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5477
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187370[187370]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5478
#, no-wrap
msgid "January 17, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5474
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5480
#, no-wrap
msgid "7.1-STABLE after man:cpuctl[4] support added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5481
#, no-wrap
msgid "701103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5482
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188281[188281]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5477
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5483
#, no-wrap
msgid "February 7, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5479
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5485
#, no-wrap
msgid "7.1-STABLE after the merge of multi-/no-IPv4/v6 jails."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5480
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5486
#, no-wrap
msgid "701104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5481
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5487
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188625[188625]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5488
#, no-wrap
msgid "February 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5484
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5490
#, no-wrap
msgid "7.1-STABLE after the store of the suspension owner in the struct mount, and introduction of vfs_susp_clean method into the struct vfsops."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5491
#, no-wrap
msgid "701105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5486
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5492
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189740[189740]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5493
#, no-wrap
msgid "March 12, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5489
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5495
#, no-wrap
msgid "7.1-STABLE after the incompatible change to the kern.ipc.shmsegs sysctl to allow allocating larger SysV shared memory segments on 64bit architectures."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5490
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5496
#, no-wrap
msgid "701106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5497
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189786[189786]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5500
#, no-wrap
msgid "7.1-STABLE after the merge of a fix for POSIX semaphore wait operations."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5501
#, no-wrap
msgid "702000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5502
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191099[191099]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5499
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5505
#, no-wrap
msgid "7.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5506
#, no-wrap
msgid "702100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5507
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191091[191091]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5504
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5510
#, no-wrap
msgid "7.2-STABLE after 7.2-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5511
#, no-wrap
msgid "702101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5512
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192149[192149]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5513
#, no-wrap
msgid "May 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5515
#, no-wrap
-msgid "7.2-STABLE after man:ichsmb[4] was changed to use left-adjusted slave addressing to match other SMBus controller drivers."
+msgid "7.2-STABLE after man:ichsmb[4] was changed to use left-adjusted secondary addressing to match other SMBus controller drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5516
#, no-wrap
msgid "702102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5517
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193020[193020]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5518
#, no-wrap
msgid "May 28, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5514
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5520
#, no-wrap
msgid "7.2-STABLE after MFC of the man:fdopendir[3] function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5521
#, no-wrap
msgid "702103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5522
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193638[193638]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5523
#, no-wrap
msgid "June 6, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5525
#, no-wrap
msgid "7.2-STABLE after MFC of PmcTools."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5526
#, no-wrap
msgid "702104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5527
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195694[195694]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5524
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5530
#, no-wrap
msgid "7.2-STABLE after MFC of the man:closefrom[2] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5531
#, no-wrap
msgid "702105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5532
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/196006[196006]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5533
#, no-wrap
msgid "July 31, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5529
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5535
#, no-wrap
msgid "7.2-STABLE after MFC of the SYSVIPC ABI change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5536
#, no-wrap
msgid "702106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5537
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/197198[197198]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5538
#, no-wrap
msgid "September 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5534
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5540
#, no-wrap
msgid "7.2-STABLE after MFC of the x86 PAT enhancements and addition of `d_mmap_single()` and the scatter/gather list VM object type."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5541
#, no-wrap
msgid "703000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5542
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203740[203740]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5537
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5548
#, no-wrap
msgid "February 9, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5539
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5545
#, no-wrap
msgid "7.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5546
#, no-wrap
msgid "703100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5547
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203742[203742]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5544
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5550
#, no-wrap
msgid "7.3-STABLE after 7.3-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5551
#, no-wrap
msgid "704000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5552
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216647[216647]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5549
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5555
#, no-wrap
msgid "7.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5556
#, no-wrap
msgid "704100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5557
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216658[216658]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5560
#, no-wrap
msgid "7.4-STABLE after 7.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5561
#, no-wrap
msgid "704101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5562
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/221318[221318]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5563
#, no-wrap
msgid "May 2, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5558
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5564
#, no-wrap
msgid "7.4-STABLE after the gcc MFC in rev link:https://svnweb.freebsd.org/changeset/base/221317[221317]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5567
#, no-wrap
msgid "FreeBSD 6 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5570
#, no-wrap
msgid "FreeBSD 6 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5573
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5579
#, no-wrap
msgid "600000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5580
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/133921[133921]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5581
#, no-wrap
msgid "August 18, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5577
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5583
#, no-wrap
msgid "6.0-CURRENT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5584
#, no-wrap
msgid "600001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5585
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134396[134396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5586
#, no-wrap
msgid "August 27, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5588
#, no-wrap
msgid "6.0-CURRENT after permanently enabling PFIL_HOOKS in the kernel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5589
#, no-wrap
msgid "600002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5590
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134514[134514]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5591
#, no-wrap
msgid "August 30, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5593
#, no-wrap
-msgid "6.0-CURRENT after initial addition of ifi_epoch to struct if_data. Backed out after a few days. Do not use this value."
+msgid "6.0-CURRENT after initial addition of `ifi_epoch` to struct `if_data`. Backed out after a few days. Do not use this value."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5594
#, no-wrap
msgid "600003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5595
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134933[134933]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5596
#, no-wrap
msgid "September 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5598
#, no-wrap
-msgid "6.0-CURRENT after the re-addition of the ifi_epoch member of struct if_data."
+msgid "6.0-CURRENT after the re-addition of the `ifi_epoch` member of struct `if_data`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5599
#, no-wrap
msgid "600004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5600
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/135920[135920]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5601
#, no-wrap
msgid "September 29, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5597
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5603
#, no-wrap
msgid "6.0-CURRENT after addition of the struct inpcb argument to the pfil API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5604
#, no-wrap
msgid "600005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5605
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/136172[136172]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5606
#, no-wrap
msgid "October 5, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5608
#, no-wrap
msgid "6.0-CURRENT after addition of the \"-d DESTDIR\" argument to newsyslog."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5609
#, no-wrap
msgid "600006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5610
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/137192[137192]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5611
#, no-wrap
msgid "November 4, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5613
#, no-wrap
msgid "6.0-CURRENT after addition of glibc style man:strftime[3] padding options."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5614
#, no-wrap
msgid "600007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5615
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138760[138760]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5616
#, no-wrap
msgid "December 12, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5618
#, no-wrap
msgid "6.0-CURRENT after addition of 802.11 framework updates."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5619
#, no-wrap
msgid "600008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5620
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/140809[140809]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5621
#, no-wrap
msgid "January 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5623
#, no-wrap
-msgid "6.0-CURRENT after changes to `VOP_*VOBJECT()` functions and introduction of `MNTK_MPSAFE` flag for Giantfree filesystems."
+msgid "6.0-CURRENT after changes to `VOP_*VOBJECT()` functions and introduction of `MNTK_MPSAFE` flag for Giant-free filesystems."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5624
#, no-wrap
msgid "600009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5625
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141250[141250]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5626
#, no-wrap
msgid "February 4, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5622
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5628
#, no-wrap
msgid "6.0-CURRENT after addition of the cpufreq framework and drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5623
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5629
#, no-wrap
msgid "600010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5630
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141394[141394]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5631
#, no-wrap
msgid "February 6, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5633
#, no-wrap
msgid "6.0-CURRENT after importing OpenBSD's man:nc[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5634
#, no-wrap
msgid "600011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5635
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141727[141727]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5636
#, no-wrap
msgid "February 12, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5638
#, no-wrap
msgid "6.0-CURRENT after removing semblance of SVID2 `matherr()` support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5639
#, no-wrap
msgid "600012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5640
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141940[141940]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5641
#, no-wrap
msgid "February 15, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5643
#, no-wrap
msgid "6.0-CURRENT after increase of default thread stacks' size."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5644
#, no-wrap
msgid "600013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5645
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142089[142089]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5646
#, no-wrap
msgid "February 19, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5648
#, no-wrap
msgid "6.0-CURRENT after fixes in [.filename]#<src/include/stdbool.h># and [.filename]#<src/sys/i386/include/_types.h># for using the GCC-compatibility of the Intel C/C++ compiler."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5649
#, no-wrap
msgid "600014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5650
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142184[142184]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5651
#, no-wrap
msgid "February 21, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5653
#, no-wrap
msgid "6.0-CURRENT after EOVERFLOW checks in man:vswprintf[3] fixed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5654
#, no-wrap
msgid "600015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5655
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142501[142501]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5656
#, no-wrap
msgid "February 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5658
#, no-wrap
-msgid "6.0-CURRENT after changing the struct if_data member, ifi_epoch, from wall clock time to uptime."
+msgid "6.0-CURRENT after changing the struct `if_data` member, `ifi_epoch`, from wall clock time to uptime."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5659
#, no-wrap
msgid "600016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5660
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142582[142582]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5661
#, no-wrap
msgid "February 26, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5663
#, no-wrap
msgid "6.0-CURRENT after LC_CTYPE disk format changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5664
#, no-wrap
msgid "600017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5665
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142683[142683]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5660
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5665
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6508
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6514
#, no-wrap
msgid "February 27, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5668
#, no-wrap
msgid "6.0-CURRENT after NLS catalogs disk format changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5669
#, no-wrap
msgid "600018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5670
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142686[142686]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5673
#, no-wrap
msgid "6.0-CURRENT after LC_COLLATE disk format changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5674
#, no-wrap
msgid "600019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5675
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142752[142752]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5670
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6519
#, no-wrap
msgid "February 28, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5678
#, no-wrap
-msgid "Installation of acpica includes into /usr/include."
+msgid "Installation of `acpica` includes into /usr/include."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5679
#, no-wrap
msgid "600020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5680
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143308[143308]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5681
#, no-wrap
msgid "March 9, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5683
#, no-wrap
msgid "Addition of MSG_NOSIGNAL flag to man:send[2] API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5684
#, no-wrap
msgid "600021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5685
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143746[143746]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5686
#, no-wrap
msgid "March 17, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5682
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5688
#, no-wrap
msgid "Addition of fields to cdevsw"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5689
#, no-wrap
msgid "600022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5690
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143901[143901]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5691
#, no-wrap
msgid "March 21, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5693
#, no-wrap
msgid "Removed gtar from base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5688
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5694
#, no-wrap
msgid "600023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5689
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5695
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/144980[144980]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5696
#, no-wrap
msgid "April 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5698
#, no-wrap
msgid "LOCAL_CREDS, LOCAL_CONNWAIT socket options added to man:unix[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5699
#, no-wrap
msgid "600024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5694
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5705
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/145565[145565]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5701
#, no-wrap
msgid "April 19, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5703
#, no-wrap
msgid "man:hwpmc[4] and related tools added to 6.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5704
#, no-wrap
msgid "600025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5706
#, no-wrap
msgid "April 26, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5708
#, no-wrap
-msgid "struct icmphdr added to 6.0-CURRENT."
+msgid "struct `icmphdr` added to 6.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5709
#, no-wrap
msgid "600026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5710
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/145843[145843]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5711
#, no-wrap
msgid "May 3, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5713
#, no-wrap
msgid "pf updated to 3.7."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5714
#, no-wrap
msgid "600027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5715
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/145966[145966]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5716
#, no-wrap
msgid "May 6, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5718
#, no-wrap
-msgid "Kernel libalias and ng_nat introduced."
+msgid "Kernel libalias and `ng_nat` introduced."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5719
#, no-wrap
msgid "600028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5720
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146191[146191]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5721
#, no-wrap
msgid "May 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5723
#, no-wrap
msgid "POSIX man:ttyname_r[3] made available through unistd.h and libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5724
#, no-wrap
msgid "600029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5725
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146780[146780]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5726
#, no-wrap
msgid "May 29, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5728
#, no-wrap
msgid "6.0-CURRENT after libpcap updated to v0.9.1 alpha 096."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5729
#, no-wrap
msgid "600030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5724
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5730
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146988[146988]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5731
#, no-wrap
msgid "June 5, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5733
#, no-wrap
msgid "6.0-CURRENT after importing NetBSD's man:if_bridge[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5734
#, no-wrap
msgid "600031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5735
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/147256[147256]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5736
#, no-wrap
msgid "June 10, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5738
#, no-wrap
-msgid "6.0-CURRENT after struct ifnet was broken out of the driver softcs."
+msgid "6.0-CURRENT after struct ifnet was broken out of the driver `softcs`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5739
#, no-wrap
msgid "600032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5734
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5740
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/147898[147898]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5743
#, no-wrap
msgid "6.0-CURRENT after the import of libpcap v0.9.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5744
#, no-wrap
msgid "600033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5745
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/148388[148388]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5746
#, no-wrap
msgid "July 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5748
#, no-wrap
msgid "6.0-STABLE after bump of all shared library versions that had not been changed since RELENG_5."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5749
#, no-wrap
msgid "600034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5750
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/149040[149040]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5747
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5753
#, no-wrap
-msgid "6.0-STABLE after credential argument is added to dev_clone event handler. 6.0-RELEASE."
+msgid "6.0-STABLE after credential argument is added to `dev_clone` event handler. 6.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5754
#, no-wrap
msgid "600100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5755
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/151958[151958]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5756
#, no-wrap
msgid "November 1, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5758
#, no-wrap
msgid "6.0-STABLE after 6.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5759
#, no-wrap
msgid "600101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5760
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153601[153601]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5761
#, no-wrap
msgid "December 21, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5763
#, no-wrap
-msgid "6.0-STABLE after incorporating scripts from the local_startup directories into the base man:rcorder[8]."
+msgid "6.0-STABLE after incorporating scripts from the `local_startup` directories into the base man:rcorder[8]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5764
#, no-wrap
msgid "600102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5765
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153912[153912]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5766
#, no-wrap
msgid "December 30, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5768
#, no-wrap
msgid "6.0-STABLE after updating the ELF types and constants."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5769
#, no-wrap
msgid "600103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5770
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154396[154396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5771
#, no-wrap
msgid "January 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5773
#, no-wrap
msgid "6.0-STABLE after MFC of man:pidfile[3] API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5774
#, no-wrap
msgid "600104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5775
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154453[154453]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5770
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6559
#, no-wrap
msgid "January 17, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5778
#, no-wrap
msgid "6.0-STABLE after MFC of ldconfig_local_dirs change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5779
#, no-wrap
msgid "600105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5780
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/156019[156019]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5781
#, no-wrap
msgid "February 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5783
#, no-wrap
msgid "6.0-STABLE after NLS catalog support of man:csh[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5778
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5784
#, no-wrap
msgid "601000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5779
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5785
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158330[158330]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5780
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5791
#, no-wrap
msgid "May 6, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5788
#, no-wrap
msgid "6.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5789
#, no-wrap
msgid "601100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5790
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158331[158331]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5793
#, no-wrap
msgid "6.1-STABLE after 6.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5794
#, no-wrap
msgid "601101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5795
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/159861[159861]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5796
#, no-wrap
msgid "June 22, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5798
#, no-wrap
-msgid "6.1-STABLE after the import of csup."
+msgid "6.1-STABLE after the import of `csup`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5793
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5799
#, no-wrap
msgid "601102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5800
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160253[160253]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5801
#, no-wrap
msgid "July 11, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5803
#, no-wrap
msgid "6.1-STABLE after the man:iwi[4] update."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5804
#, no-wrap
msgid "601103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5799
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5805
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160429[160429]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5806
#, no-wrap
msgid "July 17, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5808
#, no-wrap
-msgid "6.1-STABLE after the resolver update to BIND9, and exposure of reentrant version of netdb functions."
+msgid "6.1-STABLE after the resolver update to BIND9, and exposure of reentrant version of `netdb` functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5809
#, no-wrap
msgid "601104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5804
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5810
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/161098[161098]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5811
#, no-wrap
msgid "August 8, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5813
#, no-wrap
msgid "6.1-STABLE after DSO (dynamic shared objects) support has been enabled in OpenSSL."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5814
#, no-wrap
msgid "601105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5809
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5815
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/161900[161900]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5816
#, no-wrap
msgid "September 2, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5818
#, no-wrap
-msgid "6.1-STABLE after 802.11 fixups changed the api for the IEEE80211_IOC_STA_INFO ioctl."
+msgid "6.1-STABLE after 802.11 fix-ups changed the API for the IEEE80211_IOC_STA_INFO ioctl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5819
#, no-wrap
msgid "602000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5814
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5820
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164312[164312]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5821
#, no-wrap
msgid "November 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5823
#, no-wrap
msgid "6.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5824
#, no-wrap
msgid "602100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5825
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162329[162329]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5826
#, no-wrap
msgid "September 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5822
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5828
#, no-wrap
msgid "6.2-STABLE after 6.2-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5829
#, no-wrap
msgid "602101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5824
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5830
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/165122[165122]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5831
#, no-wrap
msgid "December 12, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5833
#, no-wrap
msgid "6.2-STABLE after the addition of Wi-Spy quirk."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5834
#, no-wrap
msgid "602102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5829
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5835
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/165596[165596]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5836
#, no-wrap
msgid "December 28, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5838
#, no-wrap
msgid "6.2-STABLE after `pci_find_extcap()` addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5839
#, no-wrap
msgid "602103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5840
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166039[166039]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5841
#, no-wrap
msgid "January 16, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5843
#, no-wrap
-msgid "6.2-STABLE after MFC of dlsym change to look for a requested symbol both in specified dso and its implicit dependencies."
+msgid "6.2-STABLE after MFC of `dlsym` change to look for a requested symbol both in specified DSO and its implicit dependencies."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5844
#, no-wrap
msgid "602104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5839
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5845
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166314[166314]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5846
#, no-wrap
msgid "January 28, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5842
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5848
#, no-wrap
msgid "6.2-STABLE after MFC of man:ng_deflate[4] and man:ng_pred1[4] netgraph nodes and new compression and encryption modes for man:ng_ppp[4] node."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5849
#, no-wrap
msgid "602105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5850
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166840[166840]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5851
#, no-wrap
msgid "February 20, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5853
#, no-wrap
msgid "6.2-STABLE after MFC of BSD licensed version of man:gzip[1] ported from NetBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5854
#, no-wrap
msgid "602106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5855
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168133[168133]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5856
#, no-wrap
msgid "March 31, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5852
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5858
#, no-wrap
msgid "6.2-STABLE after MFC of PCI MSI and MSI-X support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5859
#, no-wrap
msgid "602107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5860
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168438[168438]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5857
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5863
#, no-wrap
msgid "6.2-STABLE after MFC of ncurses 5.6 and wide character support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5864
#, no-wrap
msgid "602108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5859
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5865
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168611[168611]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5866
#, no-wrap
msgid "April 11, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5862
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5868
#, no-wrap
msgid "6.2-STABLE after MFC of CAM 'SG' peripheral device, which implements a subset of Linux SCSI SG passthrough device API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5869
#, no-wrap
msgid "602109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5870
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168805[168805]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5871
#, no-wrap
msgid "April 17, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5873
#, no-wrap
-msgid "6.2-STABLE after MFC of readline 5.2 patchset 002."
+msgid "6.2-STABLE after MFC of readline 5.2 patch-set 002."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5874
#, no-wrap
msgid "602110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5875
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169222[169222]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5876
#, no-wrap
msgid "May 2, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5878
#, no-wrap
msgid "6.2-STABLE after MFC of `pmap_invalidate_cache()`, `pmap_change_attr()`, `pmap_mapbios()`, `pmap_mapdev_attr()`, and `pmap_unmapbios()` for amd64 and i386."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5879
#, no-wrap
msgid "602111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5880
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170556[170556]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5883
#, no-wrap
msgid "6.2-STABLE after MFC of BOP_BDFLUSH and caused breakage of the filesystem modules KBI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5884
#, no-wrap
msgid "602112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5879
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5885
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172284[172284]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5886
#, no-wrap
msgid "September 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5888
#, no-wrap
msgid "6.2-STABLE after man:libutil[3] MFC's."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5889
#, no-wrap
msgid "602113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5890
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172986[172986]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5893
#, no-wrap
-msgid "6.2-STABLE after MFC of wide and single byte ctype separation. Newly compiled binary that references to ctype.h may require a new symbol, __mb_sb_limit, which is not available on older systems."
+msgid "6.2-STABLE after MFC of wide and single byte ctype separation. Newly compiled binary that references to ctype.h may require a new symbol, `__mb_sb_limit`, which is not available on older systems."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5894
#, no-wrap
msgid "602114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5895
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173170[173170]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5896
#, no-wrap
msgid "October 30, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5898
#, no-wrap
msgid "6.2-STABLE after ctype ABI forward compatibility restored."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5899
#, no-wrap
msgid "602115"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5900
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173794[173794]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5901
#, no-wrap
msgid "November 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5897
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5903
#, no-wrap
msgid "6.2-STABLE after back out of wide and single byte ctype separation."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5904
#, no-wrap
msgid "603000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5905
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173897[173897]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5900
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5911
#, no-wrap
msgid "November 25, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5908
#, no-wrap
msgid "6.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5909
#, no-wrap
msgid "603100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5910
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173891[173891]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5913
#, no-wrap
msgid "6.3-STABLE after 6.3-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5915
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174434[174434]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5912
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5918
#, no-wrap
msgid "6.3-STABLE after fixing multibyte type support in bit macro."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5919
#, no-wrap
msgid "603102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5920
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178459[178459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5921
#, no-wrap
msgid "April 24, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5923
#, no-wrap
-msgid "6.3-STABLE after adding l_sysid to struct flock."
+msgid "6.3-STABLE after adding `l_sysid` to struct flock."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5924
#, no-wrap
msgid "603103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5928
#, no-wrap
msgid "6.3-STABLE after MFC of the man:memrchr[3] function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5929
#, no-wrap
msgid "603104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5930
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179810[179810]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5931
#, no-wrap
msgid "June 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5927
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5933
#, no-wrap
msgid "6.3-STABLE after MFC of support for `:u` variable modifier in man:make[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5934
#, no-wrap
msgid "604000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5929
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5935
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183583[183583]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5930
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5941
#, no-wrap
msgid "October 4, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5932
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5938
#, no-wrap
msgid "6.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5939
#, no-wrap
msgid "604100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5934
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5940
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183584[183584]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5942
#, no-wrap
msgid "6.4-STABLE after 6.4-RELEASE."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5945
#, no-wrap
msgid "FreeBSD 5 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5948
#, no-wrap
msgid "FreeBSD 5 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5957
#, no-wrap
msgid "500000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5958
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/58009[58009]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5953
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6672
#, no-wrap
msgid "March 13, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5961
#, no-wrap
msgid "5.0-CURRENT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5962
#, no-wrap
msgid "500001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5963
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/59348[59348]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5964
#, no-wrap
msgid "April 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5966
#, no-wrap
-msgid "5.0-CURRENT after adding addition ELF header fields, and changing our ELF binary branding method."
+msgid "5.0-CURRENT after adding addition ELF header fields, and changing ELF binary branding method."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5967
#, no-wrap
msgid "500002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5968
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/59906[59906]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5969
#, no-wrap
msgid "May 2, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5965
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5971
#, no-wrap
msgid "5.0-CURRENT after kld metadata changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5972
#, no-wrap
msgid "500003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5973
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/60688[60688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5974
#, no-wrap
msgid "May 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5976
#, no-wrap
msgid "5.0-CURRENT after buf/bio changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5977
#, no-wrap
msgid "500004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5972
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5978
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/60936[60936]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5979
#, no-wrap
msgid "May 26, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5975
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5981
#, no-wrap
msgid "5.0-CURRENT after binutils upgrade."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5982
#, no-wrap
msgid "500005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5983
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61221[61221]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5984
#, no-wrap
msgid "June 3, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5980
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5986
#, no-wrap
msgid "5.0-CURRENT after merging libxpg4 code into libc and after TASKQ interface introduction."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5987
#, no-wrap
msgid "500006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5988
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61500[61500]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5989
#, no-wrap
msgid "June 10, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5991
#, no-wrap
msgid "5.0-CURRENT after the addition of AGP interfaces."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5992
#, no-wrap
msgid "500007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5993
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/62235[62235]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5994
#, no-wrap
msgid "June 29, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5990
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5996
#, no-wrap
msgid "5.0-CURRENT after Perl upgrade to 5.6.0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5997
#, no-wrap
msgid "500008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5998
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/62764[62764]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5999
#, no-wrap
msgid "July 7, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6001
#, no-wrap
msgid "5.0-CURRENT after the update of KAME code to 2000/07 sources."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6002
#, no-wrap
msgid "500009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6003
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63154[63154]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5998
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6691
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6697
#, no-wrap
msgid "July 14, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6000
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6006
#, no-wrap
msgid "5.0-CURRENT after `ether_ifattach()` and `ether_ifdetach()` changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6007
#, no-wrap
msgid "500010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6008
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63265[63265]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6009
#, no-wrap
msgid "July 16, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6011
#, no-wrap
msgid "5.0-CURRENT after changing mtree defaults back to original variant, adding -L to follow symlinks."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6012
#, no-wrap
msgid "500011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6013
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63459[63459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6014
#, no-wrap
msgid "July 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6010
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6016
#, no-wrap
msgid "5.0-CURRENT after kqueue API changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6017
#, no-wrap
msgid "500012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6018
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/65353[65353]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6019
#, no-wrap
msgid "September 2, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6021
#, no-wrap
msgid "5.0-CURRENT after man:setproctitle[3] moved from libutil to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6022
#, no-wrap
msgid "500013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6023
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/65671[65671]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6024
#, no-wrap
msgid "September 10, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6020
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6026
#, no-wrap
msgid "5.0-CURRENT after the first SMPng commit."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6027
#, no-wrap
msgid "500014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6028
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/70650[70650]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6029
#, no-wrap
msgid "January 4, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6025
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6031
#, no-wrap
msgid "5.0-CURRENT after <sys/select.h> moved to <sys/selinfo.h>."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6032
#, no-wrap
msgid "500015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6033
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/70894[70894]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6028
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6727
#, no-wrap
msgid "January 10, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6030
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6036
#, no-wrap
msgid "5.0-CURRENT after combining libgcc.a and libgcc_r.a, and associated GCC linkage changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6037
#, no-wrap
msgid "500016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6038
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/71583[71583]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6039
#, no-wrap
msgid "January 24, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6041
#, no-wrap
msgid "5.0-CURRENT after change allowing libc and libc_r to be linked together, deprecating -pthread option."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6042
#, no-wrap
msgid "500017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6043
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/72650[72650]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6044
#, no-wrap
msgid "February 18, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6046
#, no-wrap
-msgid "5.0-CURRENT after switch from struct ucred to struct xucred to stabilize kernel-exported API for mountd et al."
+msgid "5.0-CURRENT after switch from struct `ucred` to struct `xucred` to stabilize kernel-exported API for mountd et al."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6047
#, no-wrap
msgid "500018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6048
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/72975[72975]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6049
#, no-wrap
msgid "February 24, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6051
#, no-wrap
msgid "5.0-CURRENT after addition of CPUTYPE make variable for controlling CPU-specific optimizations."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6052
#, no-wrap
msgid "500019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6053
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/77937[77937]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6054
#, no-wrap
msgid "June 9, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6056
#, no-wrap
msgid "5.0-CURRENT after moving machine/ioctl_fd.h to sys/fdcio.h"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6057
#, no-wrap
msgid "500020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6058
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/78304[78304]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6053
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6059
#, no-wrap
msgid "June 15, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6061
#, no-wrap
msgid "5.0-CURRENT after locale names renaming."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6062
#, no-wrap
msgid "500021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6063
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/78632[78632]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6064
#, no-wrap
msgid "June 22, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6066
#, no-wrap
msgid "5.0-CURRENT after Bzip2 import. Also signifies removal of S/Key."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6067
#, no-wrap
msgid "500022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6062
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6073
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/83435[83435]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6069
#, no-wrap
msgid "July 12, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6071
#, no-wrap
msgid "5.0-CURRENT after SSE support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6072
#, no-wrap
msgid "500023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6074
#, no-wrap
msgid "September 14, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6076
#, no-wrap
msgid "5.0-CURRENT after KSE Milestone 2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6077
#, no-wrap
msgid "500024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6078
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84324[84324]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6079
#, no-wrap
msgid "October 1, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6081
#, no-wrap
-msgid "5.0-CURRENT after d_thread_t, and moving UUCP to ports."
+msgid "5.0-CURRENT after `d_thread_t`, and moving UUCP to ports."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6082
#, no-wrap
msgid "500025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6083
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84481[84481]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6078
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6084
#, no-wrap
msgid "October 4, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6086
#, no-wrap
-msgid "5.0-CURRENT after ABI change for descriptor and creds passing on 64 bit platforms."
+msgid "5.0-CURRENT after ABI change for descriptor and `creds` passing on 64 bit platforms."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6087
#, no-wrap
msgid "500026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6088
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84710[84710]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6089
#, no-wrap
msgid "October 9, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6091
#, no-wrap
msgid "5.0-CURRENT after moving to XFree86 4 by default for package builds, and after the new libc `strnstr()` function was added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6092
#, no-wrap
msgid "500027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6093
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84743[84743]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6094
#, no-wrap
msgid "October 10, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6096
#, no-wrap
msgid "5.0-CURRENT after the new libc `strcasestr()` function was added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6091
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6097
#, no-wrap
msgid "500028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6098
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/87879[87879]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6099
#, no-wrap
msgid "December 14, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6101
#, no-wrap
msgid "5.0-CURRENT after the userland components of smbfs were imported."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6100
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6106
#, no-wrap
msgid "5.0-CURRENT after the new C99 specific-width integer types were added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6107
#, no-wrap
msgid "500029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6108
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/89938[89938]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6103
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6109
#, no-wrap
msgid "January 29, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6111
#, no-wrap
msgid "5.0-CURRENT after a change was made in the return value of man:sendfile[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6112
#, no-wrap
msgid "500030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6113
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/90711[90711]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6108
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6114
#, no-wrap
msgid "February 15, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6116
#, no-wrap
msgid "5.0-CURRENT after the introduction of the type `fflags_t`, which is the appropriate size for file flags."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6117
#, no-wrap
msgid "500031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6112
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6771
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/91203[91203]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6113
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6119
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6772
#, no-wrap
msgid "February 24, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6121
#, no-wrap
msgid "5.0-CURRENT after the usb structure element rename."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6116
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6122
#, no-wrap
msgid "500032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6117
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6123
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/92453[92453]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6124
#, no-wrap
msgid "March 16, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6126
#, no-wrap
msgid "5.0-CURRENT after the introduction of Perl 5.6.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6127
#, no-wrap
msgid "500033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6128
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/93722[93722]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6129
#, no-wrap
msgid "April 3, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6125
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6131
#, no-wrap
msgid "5.0-CURRENT after the `sendmail_enable` man:rc.conf[5] variable was made to take the value `NONE`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6126
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6132
#, no-wrap
msgid "500034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6127
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6133
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/95831[95831]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6134
#, no-wrap
msgid "April 30, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6136
#, no-wrap
msgid "5.0-CURRENT after `mtx_init()` grew a third argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6137
#, no-wrap
msgid "500035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6138
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/96498[96498]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6139
#, no-wrap
msgid "May 13, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6141
#, no-wrap
msgid "5.0-CURRENT with Gcc 3.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6136
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6142
#, no-wrap
msgid "500036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6143
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/96781[96781]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6144
#, no-wrap
msgid "May 17, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6140
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6146
#, no-wrap
msgid "5.0-CURRENT without Perl in /usr/src"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6141
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6147
#, no-wrap
msgid "500037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6142
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6148
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/97516[97516]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6143
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6149
#, no-wrap
msgid "May 29, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6145
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6151
#, no-wrap
msgid "5.0-CURRENT after the addition of man:dlfunc[3]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6146
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6152
#, no-wrap
msgid "500038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6153
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/100591[100591]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6154
#, no-wrap
msgid "July 24, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6156
#, no-wrap
-msgid "5.0-CURRENT after the types of some struct sockbuf members were changed and the structure was reordered."
+msgid "5.0-CURRENT after the types of some struct `sockbuf` members were changed and the structure was reordered."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6151
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6157
#, no-wrap
msgid "500039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6158
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/102757[102757]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6153
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6827
#, no-wrap
msgid "September 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6161
#, no-wrap
msgid "5.0-CURRENT after GCC 3.2.1 import. Also after headers stopped using _BSD_FOO_T_ and started using _FOO_T_DECLARED. This value can also be used as a conservative estimate of the start of man:bzip2[1] package support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6156
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6162
#, no-wrap
msgid "500040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6163
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/103675[103675]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6164
#, no-wrap
msgid "September 20, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6166
#, no-wrap
msgid "5.0-CURRENT after various changes to disk functions were made in the name of removing dependency on disklabel structure internals."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6167
#, no-wrap
msgid "500041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6162
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6168
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/104250[104250]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6163
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6169
#, no-wrap
msgid "October 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6171
#, no-wrap
msgid "5.0-CURRENT after the addition of man:getopt_long[3] to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6166
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6172
#, no-wrap
msgid "500042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6173
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/105178[105178]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6168
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6174
#, no-wrap
msgid "October 15, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6176
#, no-wrap
-msgid "5.0-CURRENT after Binutils 2.13 upgrade, which included new FreeBSD emulation, vec, and output format."
+msgid "5.0-CURRENT after Binutils 2.13 upgrade, which included new FreeBSD emulation, `vec`, and output format."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6171
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6177
#, no-wrap
msgid "500043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6178
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/106289[106289]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6173
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6179
#, no-wrap
msgid "November 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6181
#, no-wrap
msgid "5.0-CURRENT after adding weak pthread_XXX stubs to libc, obsoleting libXThrStub.so. 5.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6176
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6182
#, no-wrap
msgid "500100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6183
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/109405[109405]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6184
#, no-wrap
msgid "January 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6180
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6186
#, no-wrap
msgid "5.0-CURRENT after branching for RELENG_5_0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6181
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6187
#, no-wrap
msgid "500101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6188
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111120[111120]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6189
#, no-wrap
msgid "February 19, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6191
#, no-wrap
msgid "<sys/dkstat.h> is empty. Do not include it."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6192
#, no-wrap
msgid "500102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6193
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111482[111482]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6188
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6194
#, no-wrap
msgid "February 25, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6196
#, no-wrap
msgid "5.0-CURRENT after the d_mmap_t interface change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6197
#, no-wrap
msgid "500103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6192
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6198
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111540[111540]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6193
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6199
#, no-wrap
msgid "February 26, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6201
#, no-wrap
-msgid "5.0-CURRENT after taskqueue_swi changed to run without Giant, and taskqueue_swi_giant added to run with Giant."
+msgid "5.0-CURRENT after `taskqueue_swi` changed to run without Giant, and `taskqueue_swi_giant` added to run with Giant."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6196
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6202
#, no-wrap
msgid "500104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6197
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6203
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111600[111600]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6198
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6204
#, no-wrap
msgid "February 27, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6206
#, no-wrap
msgid "`cdevsw_add()` and `cdevsw_remove()` no longer exists. Appearance of `MAJOR_AUTO` allocation facility."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6201
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6207
#, no-wrap
msgid "500105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6208
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111864[111864]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6209
#, no-wrap
msgid "March 4, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6211
#, no-wrap
msgid "5.0-CURRENT after new cdevsw initialization method."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6212
#, no-wrap
msgid "500106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6213
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112007[112007]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6208
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6214
#, no-wrap
msgid "March 8, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6216
#, no-wrap
msgid "`devstat_add_entry()` has been replaced by `devstat_new_entry()`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6217
#, no-wrap
msgid "500107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6212
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6218
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112288[112288]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6213
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6218
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6219
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6224
#, no-wrap
msgid "March 15, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6221
#, no-wrap
-msgid "Devstat interface change; see sys/sys/param.h 1.149"
+msgid "`devstat` interface change; see sys/sys/param.h 1.149"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6222
#, no-wrap
msgid "500108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6223
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112300[112300]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6226
#, no-wrap
msgid "Token-Ring interface changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6227
#, no-wrap
msgid "500109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6228
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112571[112571]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6223
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6229
#, no-wrap
msgid "March 25, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6231
#, no-wrap
-msgid "Addition of vm_paddr_t."
+msgid "Addition of `vm_paddr_t`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6226
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6232
#, no-wrap
msgid "500110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6227
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6233
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112741[112741]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6228
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6234
#, no-wrap
msgid "March 28, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6230
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6236
#, no-wrap
msgid "5.0-CURRENT after man:realpath[3] has been made thread-safe"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6231
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6237
#, no-wrap
msgid "500111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6238
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/113273[113273]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6233
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6239
#, no-wrap
msgid "April 9, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6241
#, no-wrap
msgid "5.0-CURRENT after man:usbhid[3] has been synced with NetBSD"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6236
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6242
#, no-wrap
msgid "500112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6237
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6243
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/113597[113597]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6238
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6244
#, no-wrap
msgid "April 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6240
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6246
#, no-wrap
msgid "5.0-CURRENT after new NSS implementation and addition of POSIX.1 getpw*_r, getgr*_r functions"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6241
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6247
#, no-wrap
msgid "500113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6242
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6248
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/114492[114492]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6249
#, no-wrap
msgid "May 2, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6251
#, no-wrap
msgid "5.0-CURRENT after removal of the old rc system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6246
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6252
#, no-wrap
msgid "501000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6247
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6253
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/115816[115816]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6254
#, no-wrap
msgid "June 4, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6256
#, no-wrap
msgid "5.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6251
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6257
#, no-wrap
msgid "501100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6258
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/115710[115710]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6259
#, no-wrap
msgid "June 2, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6261
#, no-wrap
msgid "5.1-CURRENT after branching for RELENG_5_1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6256
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6262
#, no-wrap
msgid "501101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6257
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6263
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/117025[117025]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6264
#, no-wrap
msgid "June 29, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6266
#, no-wrap
msgid "5.1-CURRENT after correcting the semantics of man:sigtimedwait[2] and man:sigwaitinfo[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6261
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6267
#, no-wrap
msgid "501102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6268
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/117191[117191]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6269
#, no-wrap
msgid "July 3, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6271
#, no-wrap
-msgid "5.1-CURRENT after adding the lockfunc and lockfuncarg fields to man:bus_dma_tag_create[9]."
+msgid "5.1-CURRENT after adding the `lockfunc` and `lockfuncarg` fields to man:bus_dma_tag_create[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6272
#, no-wrap
msgid "501103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6267
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6273
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/118241[118241]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6268
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6274
#, no-wrap
msgid "July 31, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6276
#, no-wrap
msgid "5.1-CURRENT after GCC 3.3.1-pre 20030711 snapshot integration."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6271
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6277
#, no-wrap
msgid "501104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6278
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/118511[118511]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6273
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6279
#, no-wrap
msgid "August 5, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6275
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6281
#, no-wrap
msgid "5.1-CURRENT 3ware API changes to twe."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6276
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6282
#, no-wrap
msgid "501105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6283
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/119021[119021]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6284
#, no-wrap
msgid "August 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6280
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6286
#, no-wrap
-msgid "5.1-CURRENT dynamically-linked /bin and /sbin support and movement of libraries to /lib."
+msgid "5.1-CURRENT dynamically linked /bin and /sbin support and movement of libraries to /lib."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6281
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6287
#, no-wrap
msgid "501106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6288
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/119881[119881]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6289
#, no-wrap
msgid "September 8, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6285
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6291
#, no-wrap
msgid "5.1-CURRENT after adding kernel support for Coda 6.x."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6286
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6292
#, no-wrap
msgid "501107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6287
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6293
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120180[120180]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6294
#, no-wrap
msgid "September 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6296
#, no-wrap
msgid "5.1-CURRENT after 16550 UART constants moved from [.filename]#<dev/sio/sioreg.h># to [.filename]#<dev/ic/ns16550.h>#. Also when libmap functionality was unconditionally supported by rtld."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6291
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6297
#, no-wrap
msgid "501108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6298
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120386[120386]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6299
#, no-wrap
msgid "September 23, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6295
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6301
#, no-wrap
msgid "5.1-CURRENT after PFIL_HOOKS API update"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6302
#, no-wrap
msgid "501109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6297
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6303
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120503[120503]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6298
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6304
#, no-wrap
msgid "September 27, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6300
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6306
#, no-wrap
msgid "5.1-CURRENT after adding man:kiconv[3]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6301
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6307
#, no-wrap
msgid "501110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6302
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6308
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120556[120556]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6303
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6309
#, no-wrap
msgid "September 28, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6305
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6311
#, no-wrap
msgid "5.1-CURRENT after changing default operations for open and close in cdevsw"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6306
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6312
#, no-wrap
msgid "501111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6307
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6313
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121125[121125]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6308
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6313
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6319
#, no-wrap
msgid "October 16, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6316
#, no-wrap
msgid "5.1-CURRENT after changed layout of cdevsw"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6311
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6317
#, no-wrap
msgid "501112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6312
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6318
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121129[121129]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6315
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6321
#, no-wrap
msgid "5.1-CURRENT after adding kobj multiple inheritance"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6316
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6322
#, no-wrap
msgid "501113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6323
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121816[121816]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6318
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6324
#, no-wrap
msgid "October 31, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6326
#, no-wrap
-msgid "5.1-CURRENT after the if_xname change in struct ifnet"
+msgid "5.1-CURRENT after the `if_xname` change in struct ifnet"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6321
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6327
#, no-wrap
msgid "501114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6322
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6328
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/122779[122779]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6323
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6329
#, no-wrap
msgid "November 16, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6325
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6331
#, no-wrap
msgid "5.1-CURRENT after changing /bin and /sbin to be dynamically linked"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6326
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6332
#, no-wrap
msgid "502000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6327
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6333
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/123198[123198]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6328
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6338
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6344
#, no-wrap
msgid "December 7, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6336
#, no-wrap
msgid "5.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6331
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6337
#, no-wrap
msgid "502010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6338
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126150[126150]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6339
#, no-wrap
msgid "February 23, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6335
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6341
#, no-wrap
msgid "5.2.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6336
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6342
#, no-wrap
msgid "502100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6337
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6343
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/123196[123196]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6340
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6346
#, no-wrap
msgid "5.2-CURRENT after branching for RELENG_5_2"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6341
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6347
#, no-wrap
msgid "502101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6342
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6348
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/123677[123677]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6349
#, no-wrap
msgid "December 19, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6345
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6351
#, no-wrap
-msgid "5.2-CURRENT after __cxa_atexit/__cxa_finalize functions were added to libc."
+msgid "5.2-CURRENT after `__cxa_atexit`/`__cxa_finalize` functions were added to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6346
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6352
#, no-wrap
msgid "502102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6353
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/125236[125236]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6348
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6354
#, no-wrap
msgid "January 30, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6356
#, no-wrap
msgid "5.2-CURRENT after change of default thread library from libc_r to libpthread."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6351
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6357
#, no-wrap
msgid "502103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6352
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6358
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126083[126083]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6353
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6359
#, no-wrap
msgid "February 21, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6355
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6361
#, no-wrap
-msgid "5.2-CURRENT after device driver API megapatch."
+msgid "5.2-CURRENT after device driver API mega patch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6356
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6362
#, no-wrap
msgid "502104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6357
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6363
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126208[126208]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6364
#, no-wrap
msgid "February 25, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6360
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6366
#, no-wrap
msgid "5.2-CURRENT after `getopt_long_only()` addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6361
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6367
#, no-wrap
msgid "502105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6362
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6368
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126644[126644]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6369
#, no-wrap
msgid "March 5, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6365
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6371
#, no-wrap
msgid "5.2-CURRENT after NULL is made into ((void *)0) for C, creating more warnings."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6366
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6372
#, no-wrap
msgid "502106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6373
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126757[126757]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6374
#, no-wrap
msgid "March 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6376
#, no-wrap
msgid "5.2-CURRENT after pf is linked to the build and install."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6371
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6377
#, no-wrap
msgid "502107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6378
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126819[126819]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6373
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6379
#, no-wrap
msgid "March 10, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6381
#, no-wrap
-msgid "5.2-CURRENT after time_t is changed to a 64-bit value on sparc64."
+msgid "5.2-CURRENT after `time_t` is changed to a 64-bit value on sparc64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6376
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6382
#, no-wrap
msgid "502108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6383
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126891[126891]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6378
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6384
#, no-wrap
msgid "March 12, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6386
#, no-wrap
msgid "5.2-CURRENT after Intel C/C++ compiler support in some headers and man:execve[2] changes to be more strictly conforming to POSIX."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6381
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6387
#, no-wrap
msgid "502109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6382
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6388
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/127312[127312]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6383
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6389
#, no-wrap
msgid "March 22, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6385
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6391
#, no-wrap
-msgid "5.2-CURRENT after the introduction of the bus_alloc_resource_any API"
+msgid "5.2-CURRENT after the introduction of the `bus_alloc_resource_any` API"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6386
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6392
#, no-wrap
msgid "502110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6393
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/127475[127475]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6394
#, no-wrap
msgid "March 27, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6390
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6396
#, no-wrap
msgid "5.2-CURRENT after the addition of UTF-8 locales"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6391
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6397
#, no-wrap
msgid "502111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6398
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/128144[128144]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6393
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6399
#, no-wrap
msgid "April 11, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6395
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6401
#, no-wrap
msgid "5.2-CURRENT after the removal of the man:getvfsent[3] API"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6396
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6402
#, no-wrap
msgid "502112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6403
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/128182[128182]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6398
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6404
#, no-wrap
msgid "April 13, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6400
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6406
#, no-wrap
msgid "5.2-CURRENT after the addition of the .warning directive for make."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6401
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6407
#, no-wrap
msgid "502113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6408
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130057[130057]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6403
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6409
#, no-wrap
msgid "June 4, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6405
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6411
#, no-wrap
msgid "5.2-CURRENT after `ttyioctl()` was made mandatory for serial drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6406
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6412
#, no-wrap
msgid "502114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6413
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130418[130418]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6414
#, no-wrap
msgid "June 13, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6410
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6416
#, no-wrap
msgid "5.2-CURRENT after import of the ALTQ framework."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6411
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6417
#, no-wrap
msgid "502115"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6418
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130481[130481]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6419
#, no-wrap
msgid "June 14, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6415
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6421
#, no-wrap
msgid "5.2-CURRENT after changing man:sema_timedwait[9] to return 0 on success and a non-zero error code on failure."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6416
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6422
#, no-wrap
msgid "502116"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6423
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130585[130585]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6424
#, no-wrap
msgid "June 16, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6420
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6426
#, no-wrap
-msgid "5.2-CURRENT after changing kernel dev_t to be pointer to struct cdev *."
+msgid "5.2-CURRENT after changing kernel `dev_t` to be pointer to struct cdev *."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6421
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6427
#, no-wrap
msgid "502117"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6428
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130640[130640]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6423
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6434
#, no-wrap
msgid "June 17, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6431
#, no-wrap
-msgid "5.2-CURRENT after changing kernel udev_t to dev_t."
+msgid "5.2-CURRENT after changing kernel `udev_t` to `dev_t`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6426
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6432
#, no-wrap
msgid "502118"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6433
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130656[130656]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6436
#, no-wrap
msgid "5.2-CURRENT after adding support for CLOCK_VIRTUAL and CLOCK_PROF to man:clock_gettime[2] and man:clock_getres[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6431
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6437
#, no-wrap
msgid "502119"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6438
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130934[130934]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6439
#, no-wrap
msgid "June 22, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6435
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6441
#, no-wrap
msgid "5.2-CURRENT after changing network interface cloning overhaul."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6436
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6442
#, no-wrap
msgid "502120"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6437
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6443
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/131429[131429]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6444
#, no-wrap
msgid "July 2, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6440
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6446
#, no-wrap
msgid "5.2-CURRENT after the update of the package tools to revision 20040629."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6441
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6447
#, no-wrap
msgid "502121"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6448
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/131883[131883]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6449
#, no-wrap
msgid "July 9, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6445
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6451
#, no-wrap
msgid "5.2-CURRENT after marking Bluetooth code as non-i386 specific."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6446
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6452
#, no-wrap
msgid "502122"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6453
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/131971[131971]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6454
#, no-wrap
msgid "July 11, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6450
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6456
#, no-wrap
msgid "5.2-CURRENT after the introduction of the KDB debugger framework, the conversion of DDB into a backend and the introduction of the GDB backend."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6451
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6457
#, no-wrap
msgid "502123"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6458
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132025[132025]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6459
#, no-wrap
msgid "July 12, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6461
#, no-wrap
-msgid "5.2-CURRENT after change to make VFS_ROOT take a struct thread argument as does vflush. Struct kinfo_proc now has a user data pointer. The switch of the default X implementation to `xorg` was also made at this time."
+msgid "5.2-CURRENT after change to make VFS_ROOT take a struct thread argument as does vflush. Struct `kinfo_proc` now has a user data pointer. The switch of the default X implementation to `xorg` was also made at this time."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6456
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6462
#, no-wrap
msgid "502124"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6463
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132597[132597]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6464
#, no-wrap
msgid "July 24, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6466
#, no-wrap
msgid "5.2-CURRENT after the change to separate the way ports rc.d and legacy scripts are started."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6461
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6467
#, no-wrap
msgid "502125"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6468
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132726[132726]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6469
#, no-wrap
msgid "July 28, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6471
#, no-wrap
msgid "5.2-CURRENT after the backout of the previous change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6466
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6472
#, no-wrap
msgid "502126"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6473
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132914[132914]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6474
#, no-wrap
msgid "July 31, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6476
#, no-wrap
msgid "5.2-CURRENT after the removal of `kmem_alloc_pageable()` and the import of gcc 3.4.2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6471
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6477
#, no-wrap
msgid "502127"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6478
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132991[132991]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6479
#, no-wrap
msgid "August 2, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6481
#, no-wrap
msgid "5.2-CURRENT after changing the UMA kernel API to allow ctors/inits to fail."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6482
#, no-wrap
msgid "502128"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6477
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6483
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/133306[133306]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6478
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6484
#, no-wrap
msgid "August 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6480
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6486
#, no-wrap
msgid "5.2-CURRENT after the change of the vfs_mount signature as well as global replacement of PRISON_ROOT with SUSER_ALLOWJAIL for the man:suser[9] API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6481
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6487
#, no-wrap
msgid "503000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6488
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134189[134189]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6483
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6489
#, no-wrap
msgid "August 23, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6491
#, no-wrap
msgid "5.3-BETA/RC before the pfil API change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6486
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6492
#, no-wrap
msgid "503001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6493
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/135580[135580]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6488
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6494
#, no-wrap
msgid "September 22, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6490
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6496
#, no-wrap
msgid "5.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6497
#, no-wrap
msgid "503100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6498
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/136595[136595]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6493
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6499
#, no-wrap
msgid "October 16, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6501
#, no-wrap
msgid "5.3-STABLE after branching for RELENG_5_3"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6502
#, no-wrap
msgid "503101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6503
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138459[138459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6498
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6504
#, no-wrap
msgid "December 3, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6506
#, no-wrap
msgid "5.3-STABLE after addition of glibc style man:strftime[3] padding options."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6507
#, no-wrap
msgid "503102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6508
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141788[141788]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6509
#, no-wrap
msgid "February 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6511
#, no-wrap
msgid "5.3-STABLE after OpenBSD's man:nc[1] import MFC."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6512
#, no-wrap
msgid "503103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6513
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142639[142639]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6516
#, no-wrap
msgid "5.4-PRERELEASE after the MFC of the fixes in [.filename]#<src/include/stdbool.h># and [.filename]#<src/sys/i386/include/_types.h># for using the GCC-compatibility of the Intel C/C++ compiler."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6517
#, no-wrap
msgid "503104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6518
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142835[142835]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6521
#, no-wrap
-msgid "5.4-PRERELEASE after the MFC of the change of ifi_epoch from wall clock time to uptime."
+msgid "5.4-PRERELEASE after the MFC of the change of `ifi_epoch` from wall clock time to uptime."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6522
#, no-wrap
msgid "503105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6523
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143029[143029]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6518
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6524
#, no-wrap
msgid "March 2, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6526
#, no-wrap
msgid "5.4-PRERELEASE after the MFC of the fix of EOVERFLOW check in man:vswprintf[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6527
#, no-wrap
msgid "504000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6528
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/144575[144575]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6523
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6529
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6534
#, no-wrap
msgid "April 3, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6531
#, no-wrap
msgid "5.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6532
#, no-wrap
msgid "504100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6533
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/144581[144581]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6536
#, no-wrap
msgid "5.4-STABLE after branching for RELENG_5_4"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6537
#, no-wrap
msgid "504101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6538
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146105[146105]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6533
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6539
#, no-wrap
msgid "May 11, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6541
#, no-wrap
msgid "5.4-STABLE after increasing the default thread stacksizes"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6542
#, no-wrap
msgid "504102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6543
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/504101[504101]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6538
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6544
#, no-wrap
msgid "June 24, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6546
#, no-wrap
msgid "5.4-STABLE after the addition of sha256"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6547
#, no-wrap
msgid "504103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6548
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/150892[150892]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6549
#, no-wrap
msgid "October 3, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6551
#, no-wrap
msgid "5.4-STABLE after the MFC of if_bridge"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6552
#, no-wrap
msgid "504104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6553
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/152370[152370]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6554
#, no-wrap
msgid "November 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6556
#, no-wrap
msgid "5.4-STABLE after the MFC of bsdiff and portsnap"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6557
#, no-wrap
msgid "504105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6558
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154464[154464]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6561
#, no-wrap
msgid "5.4-STABLE after MFC of ldconfig_local_dirs change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6562
#, no-wrap
msgid "505000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6563
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158481[158481]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6558
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6569
#, no-wrap
msgid "May 12, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6566
#, no-wrap
msgid "5.5-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6567
#, no-wrap
msgid "505100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6568
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158482[158482]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6570
#, no-wrap
msgid "5.5-STABLE after branching for RELENG_5_5"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6567
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6573
#, no-wrap
msgid "FreeBSD 4 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6570
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6576
#, no-wrap
msgid "FreeBSD 4 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6585
#, no-wrap
msgid "400000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6586
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/43041[43041]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6581
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6974
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6980
#, no-wrap
msgid "January 22, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6589
#, no-wrap
msgid "4.0-CURRENT after 3.4 branch"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6590
#, no-wrap
msgid "400001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6591
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/44177[44177]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6586
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6592
#, no-wrap
msgid "February 20, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6594
#, no-wrap
msgid "4.0-CURRENT after change in dynamic linker handling"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6595
#, no-wrap
msgid "400002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6596
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/44699[44699]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6591
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6597
#, no-wrap
msgid "March 13, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6599
#, no-wrap
msgid "4.0-CURRENT after C++ constructor/destructor order change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6600
#, no-wrap
msgid "400003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6601
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45059[45059]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6596
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6990
#, no-wrap
msgid "March 27, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6604
#, no-wrap
msgid "4.0-CURRENT after functioning man:dladdr[3]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6605
#, no-wrap
msgid "400004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6606
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45321[45321]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6601
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6607
#, no-wrap
msgid "April 5, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6609
#, no-wrap
-msgid "4.0-CURRENT after __deregister_frame_info dynamic linker bug fix (also 4.0-CURRENT after EGCS 1.1.2 integration)"
+msgid "4.0-CURRENT after `__deregister_frame_info` dynamic linker bug fix (also 4.0-CURRENT after EGCS 1.1.2 integration)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6610
#, no-wrap
msgid "400005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6611
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/46113[46113]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6606
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6612
#, no-wrap
msgid "April 27, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6614
#, no-wrap
msgid "4.0-CURRENT after man:suser[9] API change (also 4.0-CURRENT after newbus)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6615
#, no-wrap
msgid "400006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6616
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/47640[47640]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6611
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6617
#, no-wrap
msgid "May 31, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6619
#, no-wrap
msgid "4.0-CURRENT after cdevsw registration change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6620
#, no-wrap
msgid "400007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6621
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/47992[47992]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6616
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6622
#, no-wrap
msgid "June 17, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6624
#, no-wrap
-msgid "4.0-CURRENT after the addition of so_cred for socket level credentials"
+msgid "4.0-CURRENT after the addition of `so_cred` for socket level credentials"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6625
#, no-wrap
msgid "400008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6626
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/48048[48048]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6621
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6627
#, no-wrap
msgid "June 20, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6623
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6629
#, no-wrap
msgid "4.0-CURRENT after the addition of a poll syscall wrapper to libc_r"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6630
#, no-wrap
msgid "400009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6631
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/48936[48936]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6626
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6632
#, no-wrap
msgid "July 20, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6634
#, no-wrap
msgid "4.0-CURRENT after the change of the kernel's `dev_t` type to `struct specinfo` pointer"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6635
#, no-wrap
msgid "400010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6636
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/51649[51649]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6631
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6637
#, no-wrap
msgid "September 25, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6639
#, no-wrap
msgid "4.0-CURRENT after fixing a hole in man:jail[2]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6640
#, no-wrap
msgid "400011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6641
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/51791[51791]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6636
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6642
#, no-wrap
msgid "September 29, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6644
#, no-wrap
msgid "4.0-CURRENT after the `sigset_t` datatype change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6645
#, no-wrap
msgid "400012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6646
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/53164[53164]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6641
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6647
#, no-wrap
msgid "November 15, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6649
#, no-wrap
msgid "4.0-CURRENT after the cutover to the GCC 2.95.2 compiler"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6650
#, no-wrap
msgid "400013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6651
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/54123[54123]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6646
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6652
#, no-wrap
msgid "December 4, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6654
#, no-wrap
msgid "4.0-CURRENT after adding pluggable linux-mode ioctl handlers"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6655
#, no-wrap
msgid "400014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6656
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/56216[56216]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6651
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6657
#, no-wrap
msgid "January 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6659
#, no-wrap
msgid "4.0-CURRENT after importing OpenSSL"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6660
#, no-wrap
msgid "400015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6661
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/56700[56700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6662
#, no-wrap
msgid "January 27, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6664
#, no-wrap
msgid "4.0-CURRENT after the C++ ABI change in GCC 2.95.2 from -fvtable-thunks to -fno-vtable-thunks by default"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6665
#, no-wrap
msgid "400016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6666
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/57529[57529]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6667
#, no-wrap
msgid "February 27, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6669
#, no-wrap
msgid "4.0-CURRENT after importing OpenSSH"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6670
#, no-wrap
msgid "400017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6671
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/58005[58005]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6674
#, no-wrap
msgid "4.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6675
#, no-wrap
msgid "400018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6676
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/58170[58170]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6677
#, no-wrap
msgid "March 17, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6679
#, no-wrap
msgid "4.0-STABLE after 4.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6680
#, no-wrap
msgid "400019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6681
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/60047[60047]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6682
#, no-wrap
msgid "May 5, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6684
#, no-wrap
msgid "4.0-STABLE after the introduction of delayed checksums."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6685
#, no-wrap
msgid "400020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6686
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61262[61262]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6687
#, no-wrap
msgid "June 4, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6689
#, no-wrap
msgid "4.0-STABLE after merging libxpg4 code into libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6690
#, no-wrap
msgid "400021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6691
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/62820[62820]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6692
#, no-wrap
msgid "July 8, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6688
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6694
#, no-wrap
msgid "4.0-STABLE after upgrading Binutils to 2.10.0, ELF branding changes, and tcsh in the base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6689
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6695
#, no-wrap
msgid "410000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6696
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63095[63095]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6699
#, no-wrap
msgid "4.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6694
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6700
#, no-wrap
msgid "410001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6701
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/64012[64012]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6702
#, no-wrap
msgid "July 29, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6704
#, no-wrap
msgid "4.1-STABLE after 4.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6705
#, no-wrap
msgid "410002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6706
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/65962[65962]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6707
#, no-wrap
msgid "September 16, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6709
#, no-wrap
msgid "4.1-STABLE after man:setproctitle[3] moved from libutil to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6710
#, no-wrap
msgid "411000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6711
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/66336[66336]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6706
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6712
#, no-wrap
msgid "September 25, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6714
#, no-wrap
msgid "4.1.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6715
#, no-wrap
msgid "411001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6719
#, no-wrap
msgid "4.1.1-STABLE after 4.1.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6720
#, no-wrap
msgid "420000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6721
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/68066[68066]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6716
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6722
#, no-wrap
msgid "October 31, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6724
#, no-wrap
msgid "4.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6725
#, no-wrap
msgid "420001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6726
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/70895[70895]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6729
#, no-wrap
msgid "4.2-STABLE after combining libgcc.a and libgcc_r.a, and associated GCC linkage changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6724
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6730
#, no-wrap
msgid "430000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6731
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/73800[73800]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6732
#, no-wrap
msgid "March 6, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6734
#, no-wrap
msgid "4.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6735
#, no-wrap
msgid "430001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6736
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/76779[76779]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6737
#, no-wrap
msgid "May 18, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6739
#, no-wrap
-msgid "4.3-STABLE after wint_t introduction."
+msgid "4.3-STABLE after `wint_t` introduction."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6734
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6740
#, no-wrap
msgid "430002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6741
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/80157[80157]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6736
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6742
#, no-wrap
msgid "July 22, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6744
#, no-wrap
msgid "4.3-STABLE after PCI powerstate API merge."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6745
#, no-wrap
msgid "440000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6746
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/80923[80923]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6747
#, no-wrap
msgid "August 1, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6749
#, no-wrap
msgid "4.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6750
#, no-wrap
msgid "440001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6751
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/85341[85341]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6752
#, no-wrap
msgid "October 23, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6754
#, no-wrap
-msgid "4.4-STABLE after d_thread_t introduction."
+msgid "4.4-STABLE after `d_thread_t` introduction."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6755
#, no-wrap
msgid "440002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6756
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/86038[86038]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6757
#, no-wrap
msgid "November 4, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6759
#, no-wrap
msgid "4.4-STABLE after mount structure changes (affects filesystem klds)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6760
#, no-wrap
msgid "440003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6761
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/88130[88130]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6762
#, no-wrap
msgid "December 18, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6764
#, no-wrap
msgid "4.4-STABLE after the userland components of smbfs were imported."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6765
#, no-wrap
msgid "450000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6766
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/88271[88271]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6767
#, no-wrap
msgid "December 20, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6769
#, no-wrap
msgid "4.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6770
#, no-wrap
msgid "450001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6774
#, no-wrap
msgid "4.5-STABLE after the usb structure element rename."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6775
#, no-wrap
msgid "450002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6776
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/92151[92151]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6771
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6777
#, no-wrap
msgid "March 12, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6779
#, no-wrap
msgid "4.5-STABLE after locale changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6780
#, no-wrap
msgid "450003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6778
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6784
#, no-wrap
msgid "(Never created)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6779
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6785
#, no-wrap
msgid "450004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6786
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/94840[94840]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6787
#, no-wrap
msgid "April 16, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6789
#, no-wrap
msgid "4.5-STABLE after the `sendmail_enable` man:rc.conf[5] variable was made to take the value `NONE`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6790
#, no-wrap
msgid "450005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6791
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/95555[95555]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6792
#, no-wrap
msgid "April 27, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6794
#, no-wrap
msgid "4.5-STABLE after moving to XFree86 4 by default for package builds."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6795
#, no-wrap
msgid "450006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6796
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/95846[95846]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6797
#, no-wrap
msgid "May 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6793
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6799
#, no-wrap
msgid "4.5-STABLE after accept filtering was fixed so that is no longer susceptible to an easy DoS."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6800
#, no-wrap
msgid "460000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6801
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/97923[97923]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6796
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6807
#, no-wrap
msgid "June 21, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6804
#, no-wrap
msgid "4.6-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6799
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6805
#, no-wrap
msgid "460001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6806
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/98730[98730]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6809
#, no-wrap
msgid "4.6-STABLE man:sendfile[2] fixed to comply with documentation, not to count any headers sent against the amount of data to be sent from the file."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6804
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6810
#, no-wrap
msgid "460002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6811
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/100366[100366]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6812
#, no-wrap
msgid "July 19, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6814
#, no-wrap
msgid "4.6.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6809
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6815
#, no-wrap
msgid "460100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6816
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/98857[98857]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6811
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6822
#, no-wrap
msgid "June 26, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6819
#, no-wrap
msgid "4.6-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6814
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6820
#, no-wrap
msgid "460101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6821
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/98880[98880]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6824
#, no-wrap
msgid "4.6-STABLE after MFC of `sed -i`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6825
#, no-wrap
msgid "460102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6826
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/102759[102759]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6829
#, no-wrap
msgid "4.6-STABLE after MFC of many new pkg_install features from the HEAD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6824
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6830
#, no-wrap
msgid "470000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6831
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/104655[104655]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6832
#, no-wrap
msgid "October 8, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6834
#, no-wrap
msgid "4.7-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6829
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6835
#, no-wrap
msgid "470100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6836
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/104717[104717]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6837
#, no-wrap
msgid "October 9, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6839
#, no-wrap
msgid "4.7-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6840
#, no-wrap
msgid "470101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6841
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/106732[106732]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6842
#, no-wrap
msgid "November 10, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6844
#, no-wrap
msgid "Start generated __std{in,out,err}p references rather than __sF. This changes std{in,out,err} from a compile time expression to a runtime one."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6839
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6845
#, no-wrap
msgid "470102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6846
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/109753[109753]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6841
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6847
#, no-wrap
msgid "January 23, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6849
#, no-wrap
-msgid "4.7-STABLE after MFC of mbuf changes to replace m_aux mbufs by m_tag's"
+msgid "4.7-STABLE after MFC of mbuf changes to replace `m_aux` mbufs by `m_tag`'s"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6850
#, no-wrap
msgid "470103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6851
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/110887[110887]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6852
#, no-wrap
msgid "February 14, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6854
#, no-wrap
msgid "4.7-STABLE gets OpenSSL 0.9.7"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6855
#, no-wrap
msgid "480000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6856
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112852[112852]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6857
#, no-wrap
msgid "March 30, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6859
#, no-wrap
msgid "4.8-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6860
#, no-wrap
msgid "480100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6861
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/113107[113107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6862
#, no-wrap
msgid "April 5, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6864
#, no-wrap
msgid "4.8-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6859
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6865
#, no-wrap
msgid "480101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6866
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/115232[115232]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6861
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6867
#, no-wrap
msgid "May 22, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6869
#, no-wrap
msgid "4.8-STABLE after man:realpath[3] has been made thread-safe"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6870
#, no-wrap
msgid "480102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6871
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/118737[118737]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6866
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6872
#, no-wrap
msgid "August 10, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6874
#, no-wrap
msgid "4.8-STABLE 3ware API changes to twe."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6875
#, no-wrap
msgid "490000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6876
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121592[121592]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6871
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6876
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6882
#, no-wrap
msgid "October 27, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6879
#, no-wrap
msgid "4.9-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6880
#, no-wrap
msgid "490100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6881
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121593[121593]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6884
#, no-wrap
msgid "4.9-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6879
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6885
#, no-wrap
msgid "490101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6886
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/124264[124264]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6887
#, no-wrap
msgid "January 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6889
#, no-wrap
-msgid "4.9-STABLE after e_sid was added to struct kinfo_eproc."
+msgid "4.9-STABLE after `e_sid` was added to struct `kinfo_eproc`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6890
#, no-wrap
msgid "490102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6891
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/125417[125417]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6892
#, no-wrap
msgid "February 4, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6894
#, no-wrap
msgid "4.9-STABLE after MFC of libmap functionality for rtld."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6895
#, no-wrap
msgid "491000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6896
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/129700[129700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6897
#, no-wrap
msgid "May 25, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6899
#, no-wrap
msgid "4.10-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6900
#, no-wrap
msgid "491100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6901
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/129918[129918]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6902
#, no-wrap
msgid "June 1, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6904
#, no-wrap
msgid "4.10-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6905
#, no-wrap
msgid "491101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6906
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/133506[133506]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6907
#, no-wrap
msgid "August 11, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6909
#, no-wrap
msgid "4.10-STABLE after MFC of revision 20040629 of the package tools"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6910
#, no-wrap
msgid "491102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6911
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/137786[137786]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6912
#, no-wrap
msgid "November 16, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6914
#, no-wrap
msgid "4.10-STABLE after VM fix dealing with unwiring of fictitious pages"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6915
#, no-wrap
msgid "492000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6916
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138960[138960]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6911
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6922
#, no-wrap
msgid "December 17, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6919
#, no-wrap
msgid "4.11-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6920
#, no-wrap
msgid "492100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6921
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138959[138959]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6924
#, no-wrap
msgid "4.11-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6925
#, no-wrap
msgid "492101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6926
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/157843[157843]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6927
#, no-wrap
msgid "April 18, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6928
#, no-wrap
msgid "4.11-STABLE after adding libdata/ldconfig directories to mtree files."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6931
#, no-wrap
msgid "FreeBSD 3 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6934
#, no-wrap
msgid "FreeBSD 3 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6943
#, no-wrap
msgid "300000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6944
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/22917[22917]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6945
#, no-wrap
msgid "February 19, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6947
#, no-wrap
msgid "3.0-CURRENT before man:mount[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6948
#, no-wrap
msgid "300001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6949
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/36283[36283]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6950
#, no-wrap
msgid "September 24, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6952
#, no-wrap
msgid "3.0-CURRENT after man:mount[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6953
#, no-wrap
msgid "300002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6954
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/36592[36592]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6955
#, no-wrap
msgid "June 2, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6957
#, no-wrap
msgid "3.0-CURRENT after man:semctl[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6958
#, no-wrap
msgid "300003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6959
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/36735[36735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6954
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6960
#, no-wrap
msgid "June 7, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6962
#, no-wrap
msgid "3.0-CURRENT after ioctl arg changes"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6963
#, no-wrap
msgid "300004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6964
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/38768[38768]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6965
#, no-wrap
msgid "September 3, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6967
#, no-wrap
msgid "3.0-CURRENT after ELF conversion"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6968
#, no-wrap
msgid "300005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6969
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/40438[40438]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6964
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6975
#, no-wrap
msgid "October 16, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6972
#, no-wrap
msgid "3.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6973
#, no-wrap
msgid "300006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6974
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/40445[40445]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6977
#, no-wrap
msgid "3.0-CURRENT after 3.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6972
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6978
#, no-wrap
msgid "300007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6979
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/43042[43042]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6982
#, no-wrap
msgid "3.0-STABLE after 3/4 branch"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6983
#, no-wrap
msgid "310000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6984
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/43807[43807]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6985
#, no-wrap
msgid "February 9, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6987
#, no-wrap
msgid "3.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6988
#, no-wrap
msgid "310001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6989
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45060[45060]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6992
#, no-wrap
msgid "3.1-STABLE after 3.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6993
#, no-wrap
msgid "310002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6994
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45689[45689]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6995
#, no-wrap
msgid "April 14, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6997
#, no-wrap
msgid "3.1-STABLE after C++ constructor/destructor order change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6998
#, no-wrap
msgid "320000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7002
#, no-wrap
msgid "3.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7003
#, no-wrap
msgid "320001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7004
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/46742[46742]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6999
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7005
#, no-wrap
msgid "May 8, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7007
#, no-wrap
msgid "3.2-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7008
#, no-wrap
msgid "320002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7009
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/50563[50563]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7010
#, no-wrap
msgid "August 29, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7012
#, no-wrap
msgid "3.2-STABLE after binary-incompatible IPFW and socket changes"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7013
#, no-wrap
msgid "330000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7014
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/50813[50813]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7009
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7015
#, no-wrap
msgid "September 2, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7017
#, no-wrap
msgid "3.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7018
#, no-wrap
msgid "330001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7019
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/51328[51328]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7020
#, no-wrap
msgid "September 16, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7022
#, no-wrap
msgid "3.3-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7023
#, no-wrap
msgid "330002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7024
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/53671[53671]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7019
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7025
#, no-wrap
msgid "November 24, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7027
#, no-wrap
msgid "3.3-STABLE after adding man:mkstemp[3] to libc"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7028
#, no-wrap
msgid "340000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7029
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/54166[54166]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7024
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7030
#, no-wrap
msgid "December 5, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7032
#, no-wrap
msgid "3.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7033
#, no-wrap
msgid "340001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7034
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/54730[54730]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7029
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7035
#, no-wrap
msgid "December 17, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7037
#, no-wrap
msgid "3.4-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7038
#, no-wrap
msgid "350000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7039
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61876[61876]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7040
#, no-wrap
msgid "June 20, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7042
#, no-wrap
msgid "3.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7043
#, no-wrap
msgid "350001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7044
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63043[63043]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7039
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7045
#, no-wrap
msgid "July 12, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7046
#, no-wrap
msgid "3.5-STABLE"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7049
#, no-wrap
msgid "FreeBSD 2.2 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7052
#, no-wrap
msgid "FreeBSD 2.2 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7061
#, no-wrap
msgid "220000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7062
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/22918[22918]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7063
#, no-wrap
msgid "February 19, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7059
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7065
#, no-wrap
msgid "2.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7070
#, no-wrap
msgid "2.2.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7075
#, no-wrap
msgid "2.2-STABLE after 2.2.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7076
#, no-wrap
msgid "221001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7077
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/24941[24941]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7078
#, no-wrap
msgid "April 15, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7074
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7080
#, no-wrap
msgid "2.2-STABLE after texinfo-3.9"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7081
#, no-wrap
msgid "221002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7082
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/25325[25325]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7083
#, no-wrap
msgid "April 30, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7085
#, no-wrap
msgid "2.2-STABLE after top"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7086
#, no-wrap
msgid "222000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7087
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/25851[25851]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7088
#, no-wrap
msgid "May 16, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7090
#, no-wrap
msgid "2.2.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7091
#, no-wrap
msgid "222001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7092
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/25921[25921]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7093
#, no-wrap
msgid "May 19, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7095
#, no-wrap
msgid "2.2-STABLE after 2.2.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7096
#, no-wrap
msgid "225000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7091
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7097
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/30053[30053]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7098
#, no-wrap
msgid "October 2, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7100
#, no-wrap
msgid "2.2.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7101
#, no-wrap
msgid "225001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7102
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/31300[31300]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7103
#, no-wrap
msgid "November 20, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7099
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7105
#, no-wrap
msgid "2.2-STABLE after 2.2.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7100
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7106
#, no-wrap
msgid "225002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7107
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/32019[32019]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7108
#, no-wrap
msgid "December 27, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7104
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7110
#, no-wrap
msgid "2.2-STABLE after ldconfig -R merge"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7111
#, no-wrap
msgid "226000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7112
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/34445[34445]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7113
#, no-wrap
msgid "March 24, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7109
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7115
#, no-wrap
msgid "2.2.6-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7116
#, no-wrap
msgid "227000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7117
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/37803[37803]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7112
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7117
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7123
#, no-wrap
msgid "July 21, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7114
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7120
#, no-wrap
msgid "2.2.7-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7121
#, no-wrap
msgid "227001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7116
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7122
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/37809[37809]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7119
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7125
#, no-wrap
msgid "2.2-STABLE after 2.2.7-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7126
#, no-wrap
msgid "227002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7127
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/39489[39489]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7128
#, no-wrap
msgid "September 19, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7124
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7130
#, no-wrap
msgid "2.2-STABLE after man:semctl[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7125
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7131
#, no-wrap
msgid "228000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7126
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7132
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/41403[41403]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7127
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7138
#, no-wrap
msgid "November 29, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7129
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7135
#, no-wrap
msgid "2.2.8-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7136
#, no-wrap
msgid "228001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7137
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/41418[41418]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7139
#, no-wrap
msgid "2.2-STABLE after 2.2.8-RELEASE"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7144
msgid ""
"Note that 2.2-STABLE sometimes identifies itself as \"2.2.5-STABLE\" after "
-"the 2.2.5-RELEASE. The pattern used to be year followed by the month, but we "
-"decided to change it to a more straightforward major/minor system starting "
-"from 2.2. This is because the parallel development on several branches made "
-"it infeasible to classify the releases merely by their real release dates. "
-"Do not worry about old -CURRENTs; they are listed here just for reference."
+"the 2.2.5-RELEASE. The pattern used to be year followed by the month, but "
+"the community decided to change it to a more straightforward major/minor "
+"system starting from 2.2. This is because the parallel development on "
+"several branches made it infeasible to classify the releases merely by their "
+"real release dates. Do not worry about old -CURRENTs; they are listed here "
+"just for reference."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7141
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7147
#, no-wrap
msgid "FreeBSD 2 Before 2.2-RELEASE Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7144
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7150
#, no-wrap
msgid "FreeBSD 2 Before 2.2-RELEASE `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7153
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7159
#, no-wrap
msgid "119411"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7163
#, no-wrap
msgid "2.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7164
#, no-wrap
msgid "199501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7165
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/7153[7153]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7166
#, no-wrap
msgid "March 19, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7162
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7168
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7173
#, no-wrap
msgid "2.1-CURRENT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7163
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7169
#, no-wrap
msgid "199503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7170
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/7310[7310]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7171
#, no-wrap
msgid "March 24, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7168
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7174
#, no-wrap
msgid "199504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7175
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/7704[7704]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7176
#, no-wrap
msgid "April 9, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7178
#, no-wrap
msgid "2.0.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7173
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7179
#, no-wrap
msgid "199508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7174
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7180
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/10297[10297]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7181
#, no-wrap
msgid "August 26, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7183
#, no-wrap
msgid "2.2-CURRENT before 2.1"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7184
#, no-wrap
msgid "199511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7185
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/12189[12189]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7180
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7191
#, no-wrap
msgid "November 10, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7188
#, no-wrap
msgid "2.1.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7189
#, no-wrap
msgid "199512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7190
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/12196[12196]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7193
#, no-wrap
msgid "2.2-CURRENT before 2.1.5"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7188
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7194
#, no-wrap
msgid "199607"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7195
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/17067[17067]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7196
#, no-wrap
msgid "July 10, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7192
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7198
#, no-wrap
msgid "2.1.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7193
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7199
#, no-wrap
msgid "199608"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7194
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7200
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/17127[17127]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7201
#, no-wrap
msgid "July 12, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7197
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7203
#, no-wrap
msgid "2.2-CURRENT before 2.1.6"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7198
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7204
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7209
#, no-wrap
msgid "199612"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7199
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7205
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/19358[19358]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7206
#, no-wrap
msgid "November 15, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7208
#, no-wrap
msgid "2.1.6-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7212
#, no-wrap
msgid "2.1.7-RELEASE"
msgstr ""

File Metadata

Mime Type
application/octet-stream
Expires
Wed, Jul 3, 9:37 PM (2 d)
Storage Engine
chunks
Storage Format
Chunks
Storage Handle
4Y.AV494axL3
Default Alt Text
(4 MB)

Event Timeline