aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/en/books/porters-handbook/special/_index.po
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/content/en/books/porters-handbook/special/_index.po')
-rw-r--r--documentation/content/en/books/porters-handbook/special/_index.po13307
1 files changed, 13307 insertions, 0 deletions
diff --git a/documentation/content/en/books/porters-handbook/special/_index.po b/documentation/content/en/books/porters-handbook/special/_index.po
new file mode 100644
index 0000000000..75973cf19a
--- /dev/null
+++ b/documentation/content/en/books/porters-handbook/special/_index.po
@@ -0,0 +1,13307 @@
+# 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: 2024-01-17 20:34-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/special/_index.adoc:1
+#, no-wrap
+msgid "Special considerations when creating a new FreeBSD Port"
+msgstr ""
+
+#. type: YAML Front Matter: title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1
+#, no-wrap
+msgid "Chapter 6. Special Considerations"
+msgstr ""
+
+#. type: Title =
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:13
+#, no-wrap
+msgid "Special Considerations"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:51
+msgid ""
+"This section explains the most common things to consider when creating a "
+"port."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:53
+#, no-wrap
+msgid "Splitting long files"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:60
+msgid ""
+"Sometimes, port [.filename]#Makefiles# can be really long. For example, "
+"rust ports can have a very long `CARGO_CRATES` list. In other cases, the [."
+"filename]#Makefile# might have code that varies depending on the "
+"architecture. In such cases, it can be convenient to split the original [."
+"filename]#Makefile# into several files. [.filename]#bsd.port.mk# "
+"automatically includes some types of [.filename]#Makefiles# into the main "
+"port [.filename]#Makefile#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:62
+msgid ""
+"These are the files that the framework handles automatically if they are "
+"found:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:64
+msgid ""
+"[.filename]#Makefile.crates#. An example can be found in package:audio/"
+"ebur128[]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:65
+msgid ""
+"[.filename]#Makefile.inc#. An example can be found in package:net/ntp[]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:66
+msgid "[.filename]#Makefile.${ARCH}-${OPSYS}#"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:67
+msgid ""
+"[.filename]#Makefile.${OPSYS}#. An example can be found in package:net/cvsup-"
+"static[]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:68
+msgid "[.filename]#Makefile.${ARCH}#"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:69
+msgid "[.filename]#Makefile.local#"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:75
+msgid ""
+"It is also usual practice to split the packaging list of the port into "
+"several files if the list varies a lot from one architecture to another or "
+"depends on the selected flavor. In this case, the [.filename]#pkg-plist# "
+"file for each architecture is named following the pattern [.filename]#pkg-"
+"plist.${ARCH}# or [.filename]#pkg-plist.${FLAVOR}#. The framework does not "
+"create the packaging list automatically if multiple [.filename]#pkg-plist# "
+"files exist. It is the responsibility of the porter to select the proper [."
+"filename]#pkg-plist# and assign it to the `PLIST` variable. Examples on how "
+"to deal with this can be found in package:audio/logitechmediaserver[] and "
+"package:deskutils/libportal[]."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:77
+#, no-wrap
+msgid "Staging"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:84
+msgid ""
+"[.filename]#bsd.port.mk# expects ports to work with a \"stage directory\". "
+"This means that a port must not install files directly to the regular "
+"destination directories (that is, under `PREFIX`, for example) but instead "
+"into a separate directory from which the package is then built. In many "
+"cases, this does not require root privileges, making it possible to build "
+"packages as an unprivileged user. With staging, the port is built and "
+"installed into the stage directory, `STAGEDIR`. A package is created from "
+"the stage directory and then installed on the system. Automake tools refer "
+"to this concept as `DESTDIR`, but in FreeBSD, `DESTDIR` has a different "
+"meaning (see crossref:testing[porting-prefix,`PREFIX` and `DESTDIR`])."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:91
+msgid ""
+"No port _really_ needs to be root. It can mostly be avoided by using "
+"crossref:uses[uses-uidfix,`USES=uidfix`]. If the port still runs commands "
+"like man:chown[8], man:chgrp[1], or forces owner or group with man:"
+"install[1] then use crossref:uses[uses-fakeroot,`USES=fakeroot`] to fake "
+"those calls. Some patching of the port's [.filename]#Makefiles# will be "
+"needed."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:96
+msgid ""
+"Meta ports, or ports that do not install files themselves but only depend on "
+"other ports, must avoid needlessly extracting the man:mtree[8] to the stage "
+"directory. This is the basic directory layout of the package, and these "
+"empty directories will be seen as orphans. To prevent man:mtree[8] "
+"extraction, add this line:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:100
+#, no-wrap
+msgid "NO_MTREE=\tyes\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:106
+msgid ""
+"Metaports should use <<uses-metaport,`USES=metaport`>>. It sets up defaults "
+"for ports that do not fetch, build, or install anything."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:112
+msgid ""
+"Staging is enabled by prepending `STAGEDIR` to paths used in the `pre-"
+"install`, `do-install`, and `post-install` targets (see the examples through "
+"the book). Typically, this includes `PREFIX`, `ETCDIR`, `DATADIR`, "
+"`EXAMPLESDIR`, `MANPREFIX`, `DOCSDIR`, and so on. Directories should be "
+"created as part of the `post-install` target. Avoid using absolute paths "
+"whenever possible."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:116
+msgid ""
+"Ports that install kernel modules must prepend `STAGEDIR` to their "
+"destination, by default [.filename]#/boot/modules#."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:119
+#, no-wrap
+msgid "Handling Symbolic Links"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:124
+msgid ""
+"When creating a symbolic link, relative ones are strongly recommended. Use "
+"`${RLN}` to create relative symbolic links. It uses man:install[1] under "
+"the hood to automatically figure out the relative link to create."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:126
+#, no-wrap
+msgid "Create Relative Symbolic Links Automatically"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:130
+msgid ""
+"`${RLN}` uses man:install[1]'s relative symbolic feature which frees the "
+"porter of computing the relative path."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:136
+#, no-wrap
+msgid ""
+"${RLN} ${STAGEDIR}${PREFIX}/lib/libfoo.so.42 ${STAGEDIR}${PREFIX}/lib/libfoo.so\n"
+"${RLN} ${STAGEDIR}${PREFIX}/libexec/foo/bar ${STAGEDIR}${PREFIX}/bin/bar\n"
+"${RLN} ${STAGEDIR}/var/cache/foo ${STAGEDIR}${PREFIX}/share/foo\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:139
+msgid "Will generate:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:149
+#, no-wrap
+msgid ""
+"% ls -lF ${STAGEDIR}${PREFIX}/lib\n"
+"lrwxr-xr-x 1 nobody nobody 181 Aug 3 11:27 libfoo.so@ -> libfoo.so.42\n"
+"-rwxr-xr-x 1 nobody nobody 15 Aug 3 11:24 libfoo.so.42*\n"
+"% ls -lF ${STAGEDIR}${PREFIX}/bin\n"
+"lrwxr-xr-x 1 nobody nobody 181 Aug 3 11:27 bar@ -> ../libexec/foo/bar\n"
+"% ls -lF ${STAGEDIRDIR}${PREFIX}/share\n"
+"lrwxr-xr-x 1 nobody nobody 181 Aug 3 11:27 foo@ -> ../../../var/cache/foo\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:154
+#, no-wrap
+msgid "Bundled Libraries"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:157
+msgid ""
+"This section explains why bundled dependencies are considered bad and what "
+"to do about them."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:159
+#, no-wrap
+msgid "Why Bundled Libraries Are Bad"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:164
+msgid ""
+"Some software requires the porter to locate third-party libraries and add "
+"the required dependencies to the port. Other software bundles all necessary "
+"libraries into the distribution file. The second approach seems easier at "
+"first, but there are some serious drawbacks:"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:166
+msgid ""
+"This list is loosely based on the https://fedoraproject.org/wiki/Packaging:"
+"No_Bundled_Libraries[Fedora] and https://wiki.gentoo.org/wiki/"
+"Why_not_bundle_dependencies[Gentoo] wikis, both licensed under the https://"
+"creativecommons.org/licenses/by-sa/3.0/[CC-BY-SA 3.0] license."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:167
+#, no-wrap
+msgid "Security"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:173
+msgid ""
+"If vulnerabilities are found in the upstream library and fixed there, they "
+"might not be fixed in the library bundled with the port. One reason could "
+"be that the author is not aware of the problem. This means that the porter "
+"must fix them, or upgrade to a non-vulnerable version, and send a patch to "
+"the author. This all takes time, which results in software being vulnerable "
+"longer than necessary. This in turn makes it harder to coordinate a fix "
+"without unnecessarily leaking information about the vulnerability."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:174
+#, no-wrap
+msgid "Bugs"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:176
+msgid ""
+"This problem is similar to the problem with security in the last paragraph, "
+"but generally less severe."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:177
+#, no-wrap
+msgid "Forking"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:181
+msgid ""
+"It is easier for the author to fork the upstream library once it is "
+"bundled. While convenient on first sight, it means that the code diverges "
+"from upstream making it harder to address security or other problems with "
+"the software. A reason for this is that patching becomes harder."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:184
+msgid ""
+"Another problem of forking is that because code diverges from upstream, bugs "
+"get solved over and over again instead of just once at a central location. "
+"This defeats the idea of open source software in the first place."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:185
+#, no-wrap
+msgid "Symbol collision"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:190
+msgid ""
+"When a library is installed on the system, it might collide with the bundled "
+"version. This can cause immediate errors at compile or link time. It can "
+"also cause errors when running the program which might be harder to track "
+"down. The latter problem could be caused because the versions of the two "
+"libraries are incompatible."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:191
+#, no-wrap
+msgid "Licensing"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:193
+msgid ""
+"When bundling projects from different sources, license issues can arise more "
+"easily, especially when licenses are incompatible."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:194
+#, no-wrap
+msgid "Waste of resources"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:198
+msgid ""
+"Bundled libraries waste resources on several levels. It takes longer to "
+"build the actual application, especially if these libraries are already "
+"present on the system. At run-time, they can take up unnecessary memory "
+"when the system-wide library is already loaded by one program and the "
+"bundled library is loaded by another program."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:199
+#, no-wrap
+msgid "Waste of effort"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:203
+msgid ""
+"When a library needs patches for FreeBSD, these patches have to be "
+"duplicated again in the bundled library. This wastes developer time because "
+"the patches might not apply cleanly. It can also be hard to notice that "
+"these patches are required in the first place."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:205
+#, no-wrap
+msgid "What to do About Bundled Libraries"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:209
+msgid ""
+"Whenever possible, use the unbundled version of the library by adding a "
+"`LIB_DEPENDS` to the port. If such a port does not exist yet, consider "
+"creating it."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:211
+msgid ""
+"Only use bundled libraries if the upstream has a good track record on "
+"security and using unbundled versions leads to overly complex patches."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:219
+msgid ""
+"In some very special cases, for example emulators, like Wine, a port has to "
+"bundle libraries, because they are in a different architecture, or they have "
+"been modified to fit the software's use. In that case, those libraries "
+"should not be exposed to other ports for linking. Add `BUNDLE_LIBS=yes` to "
+"the port's [.filename]#Makefile#. This will tell man:pkg[8] to not compute "
+"provided libraries. Always ask the {portmgr} before adding this to a port."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:222
+#, no-wrap
+msgid "Shared Libraries"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:226
+msgid ""
+"If the port installs one or more shared libraries, define a `USE_LDCONFIG` "
+"make variable, which will instruct a [.filename]#bsd.port.mk# to run "
+"`${LDCONFIG} -m` on the directory where the new library is installed "
+"(usually [.filename]#PREFIX/lib#) during `post-install` target to register "
+"it into the shared library cache. This variable, when defined, will also "
+"facilitate addition of an appropriate `@exec /sbin/ldconfig -m` and "
+"`@unexec /sbin/ldconfig -R` pair into [.filename]#pkg-plist#, so that a user "
+"who installed the package can start using the shared library immediately and "
+"de-installation will not cause the system to still believe the library is "
+"there."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:230
+#, no-wrap
+msgid "USE_LDCONFIG=\tyes\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:234
+msgid ""
+"The default directory can be overridden by setting `USE_LDCONFIG` to a list "
+"of directories into which shared libraries are to be installed. For "
+"example, if the port installs shared libraries into [.filename]#PREFIX/lib/"
+"foo# and [.filename]#PREFIX/lib/bar# use this in [.filename]#Makefile#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:238
+#, no-wrap
+msgid "USE_LDCONFIG=\t${PREFIX}/lib/foo ${PREFIX}/lib/bar\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:241
+msgid ""
+"Please double-check, often this is not necessary at all or can be avoided "
+"through `-rpath` or setting `LD_RUN_PATH` during linking (see package:lang/"
+"mosml[] for an example), or through a shell-wrapper which sets "
+"`LD_LIBRARY_PATH` before invoking the binary, like package:www/seamonkey[] "
+"does."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:243
+msgid ""
+"When installing 32-bit libraries on a 64-bit system, use `USE_LDCONFIG32` "
+"instead."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:245
+msgid ""
+"If the software uses <<using-autotools,autotools>>, and specifically "
+"`libtool`, add crossref:uses[uses-libtool,`USES=libtool`]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:247
+msgid ""
+"When the major library version number increments in the update to the new "
+"port version, all other ports that link to the affected library must have "
+"their `PORTREVISION` incremented, to force recompilation with the new "
+"library version."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:249
+#, no-wrap
+msgid "Ports with Distribution Restrictions or Legal Concerns"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:252
+msgid ""
+"Licenses vary, and some of them place restrictions on how the application "
+"can be packaged, whether it can be sold for profit, and so on."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:257
+msgid ""
+"It is the responsibility of a porter to read the licensing terms of the "
+"software and make sure that the FreeBSD project will not be held accountable "
+"for violating them by redistributing the source or compiled binaries either "
+"via FTP/HTTP or CD-ROM. If in doubt, please contact the {freebsd-ports}."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:260
+msgid ""
+"In situations like this, the variables described in the next sections can be "
+"set."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:262
+#, no-wrap
+msgid "`NO_PACKAGE`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:266
+msgid ""
+"This variable indicates that we may not generate a binary package of the "
+"application. For instance, the license may disallow binary redistribution, "
+"or it may prohibit distribution of packages created from patched sources."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:269
+msgid ""
+"However, the port's `DISTFILES` may be freely mirrored on FTP/HTTP. They "
+"may also be distributed on a CD-ROM (or similar media) unless `NO_CDROM` is "
+"set as well."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:272
+msgid ""
+"If the binary package is not generally useful, and the application must "
+"always be compiled from the source code, use `NO_PACKAGE`. For example, if "
+"the application has configuration information that is site specific hard "
+"coded into it at compile time, set `NO_PACKAGE`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:274
+msgid ""
+"Set `NO_PACKAGE` to a string describing the reason why the package cannot be "
+"generated."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:276
+#, no-wrap
+msgid "`NO_CDROM`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:280
+msgid ""
+"This variable alone indicates that, although we are allowed to generate "
+"binary packages, we may put neither those packages nor the port's "
+"`DISTFILES` onto a CD-ROM (or similar media) for resale. However, the "
+"binary packages and the port's `DISTFILES` will still be available via FTP/"
+"HTTP."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:282
+msgid ""
+"If this variable is set along with `NO_PACKAGE`, then only the port's "
+"`DISTFILES` will be available, and only via FTP/HTTP."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:285
+msgid ""
+"Set `NO_CDROM` to a string describing the reason why the port cannot be "
+"redistributed on CD-ROM. For instance, use this if the port's license is "
+"for \"non-commercial\" use only."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:287
+#, no-wrap
+msgid "`NOFETCHFILES`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:291
+msgid ""
+"Files defined in `NOFETCHFILES` are not fetchable from any of "
+"`MASTER_SITES`. An example of such a file is when the file is supplied on "
+"CD-ROM by the vendor."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:293
+msgid ""
+"Tools which check for the availability of these files on `MASTER_SITES` have "
+"to ignore these files and not report about them."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:295
+#, no-wrap
+msgid "`RESTRICTED`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:298
+msgid ""
+"Set this variable alone if the application's license permits neither "
+"mirroring the application's `DISTFILES` nor distributing the binary package "
+"in any way."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:300
+msgid ""
+"Do not set `NO_CDROM` or `NO_PACKAGE` along with `RESTRICTED`, since the "
+"latter variable implies the former ones."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:304
+msgid ""
+"Set `RESTRICTED` to a string describing the reason why the port cannot be "
+"redistributed. Typically, this indicates that the port contains proprietary "
+"software and that the user will need to manually download the `DISTFILES`, "
+"possibly after registering for the software or agreeing to accept the terms "
+"of an EULA."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:306
+#, no-wrap
+msgid "`RESTRICTED_FILES`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:310
+msgid ""
+"When `RESTRICTED` or `NO_CDROM` is set, this variable defaults to "
+"`${DISTFILES} ${PATCHFILES}`, otherwise it is empty. If only some of the "
+"distribution files are restricted, then set this variable to list them."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:312
+#, no-wrap
+msgid "`LEGAL_TEXT`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:316
+msgid ""
+"If the port has legal concerns not addressed by the above variables, set "
+"`LEGAL_TEXT` to a string explaining the concern. For example, if special "
+"permission was obtained for FreeBSD to redistribute the binary, this "
+"variable must indicate so."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:318
+#, no-wrap
+msgid "[.filename]#/usr/ports/LEGAL# and `LEGAL`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:324
+msgid ""
+"A port which sets any of the above variables must also be added to [."
+"filename]#/usr/ports/LEGAL#. The first column is a glob which matches the "
+"restricted distfiles. The second column is the port's origin. The third "
+"column is the output of `make -VLEGAL`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:326
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4216
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4476
+#, no-wrap
+msgid "Examples"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:329
+msgid ""
+"The preferred way to state \"the distfiles for this port must be fetched "
+"manually\" is as follows:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:335
+#, no-wrap
+msgid ""
+".if !exists(${DISTDIR}/${DISTNAME}${EXTRACT_SUFX})\n"
+"IGNORE=\tmay not be redistributed because of licensing reasons. Please visit some-website to accept their license and download ${DISTFILES} into ${DISTDIR}\n"
+".endif\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:338
+msgid ""
+"This both informs the user, and sets the proper metadata on the user's "
+"machine for use by automated programs."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:340
+msgid ""
+"Note that this stanza must be preceded by an inclusion of [.filename]#bsd."
+"port.pre.mk#."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:342
+#, no-wrap
+msgid "Building Mechanisms"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:345
+#, no-wrap
+msgid "Building Ports in Parallel"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:349
+msgid ""
+"The FreeBSD ports framework supports parallel building using multiple `make` "
+"sub-processes, which allows SMP systems to utilize all of their available "
+"CPU power, allowing port builds to be faster and more effective."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:354
+msgid ""
+"This is achieved by passing `-jX` flag to man:make[1] running on vendor "
+"code. This is the default build behavior of ports. Unfortunately, not all "
+"ports handle parallel building well and it may be required to explicitly "
+"disable this feature by adding the `MAKE_JOBS_UNSAFE=yes` variable. It is "
+"used when a port is known to be broken with `-jX` due to race conditions "
+"causing intermittent build failures."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:359
+msgid ""
+"When setting `MAKE_JOBS_UNSAFE`, it is very important to explain either with "
+"a comment in the [.filename]#Makefile#, or at least in the commit message, "
+"_why_ the port does not build when enabling. Otherwise, it is almost "
+"impossible to either fix the problem, or test if it has been fixed when "
+"committing an update at a later date."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:362
+#, no-wrap
+msgid "`make`, `gmake`, and `imake`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:365
+msgid ""
+"Several differing `make` implementations exist. Ported software often "
+"requires a particular implementation, like GNU `make`, known in FreeBSD as "
+"`gmake`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:367
+msgid "If the port uses GNU make, add `gmake` to `USES`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:370
+msgid ""
+"`MAKE_CMD` can be used to reference the specific command configured by the "
+"`USES` setting in the port's [.filename]#Makefile#. Only use `MAKE_CMD` "
+"within the application [.filename]##Makefile##s in `WRKSRC` to call the "
+"`make` implementation expected by the ported software."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:373
+msgid ""
+"If the port is an X application that uses imake to create [."
+"filename]##Makefile##s from [.filename]##Imakefile##s, set `USES= imake`. "
+"See the crossref:uses[uses-imake,`USES=imake`] section of crossref:uses[uses,"
+"Using `USES` Macros] for more details."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:376
+msgid ""
+"If the port's source [.filename]#Makefile# has something other than `all` as "
+"the main build target, set `ALL_TARGET` accordingly. The same goes for "
+"`install` and `INSTALL_TARGET`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:378
+#, no-wrap
+msgid "`configure` Script"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:383
+msgid ""
+"If the port uses the `configure` script to generate [.filename]#Makefile# "
+"from [.filename]#Makefile.in#, set `GNU_CONFIGURE=yes`. To give extra "
+"arguments to the `configure` script (the default argument is `--"
+"prefix=${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man "
+"--build=${CONFIGURE_TARGET}`), set those extra arguments in "
+"`CONFIGURE_ARGS`. Extra environment variables can be passed using "
+"`CONFIGURE_ENV`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:385
+#, no-wrap
+msgid "Variables for Ports That Use `configure`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:389
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:417
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:443
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:526
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:809
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2444
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2464
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3167
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3199
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3778
+#, no-wrap
+msgid "Variable"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:391
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:419
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:445
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1322
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3169
+#, no-wrap
+msgid "Means"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:392
+#, no-wrap
+msgid "`GNU_CONFIGURE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:394
+#, no-wrap
+msgid "The port uses `configure` script to prepare build."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:395
+#, no-wrap
+msgid "`HAS_CONFIGURE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:397
+#, no-wrap
+msgid "Same as `GNU_CONFIGURE`, except default configure target is not added to `CONFIGURE_ARGS`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:398
+#, no-wrap
+msgid "`CONFIGURE_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:400
+#, no-wrap
+msgid "Additional arguments passed to `configure` script."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:401
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:435
+#, no-wrap
+msgid "`CONFIGURE_ENV`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:403
+#, no-wrap
+msgid "Additional environment variables to be set for `configure` script run."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:404
+#, no-wrap
+msgid "`CONFIGURE_TARGET`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:405
+#, no-wrap
+msgid "Override default configure target. Default value is `${MACHINE_ARCH}-portbld-freebsd${OSREL}`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:408
+#, no-wrap
+msgid "Using `cmake`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:411
+msgid "For ports that use CMake, define `USES= cmake`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:413
+#, no-wrap
+msgid "Variables for Ports That Use `cmake`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:420
+#, no-wrap
+msgid "`CMAKE_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:422
+#, no-wrap
+msgid "Port specific CMake flags to be passed to the `cmake` binary."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:423
+#, no-wrap
+msgid "`CMAKE_ON`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:425
+#, no-wrap
+msgid "For each entry in `CMAKE_ON`, an enabled boolean value is added to `CMAKE_ARGS`. See <<using-cmake-example2>>."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:426
+#, no-wrap
+msgid "`CMAKE_OFF`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:428
+#, no-wrap
+msgid "For each entry in `CMAKE_OFF`, a disabled boolean value is added to `CMAKE_ARGS`. See <<using-cmake-example2>>."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:429
+#, no-wrap
+msgid "`CMAKE_BUILD_TYPE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:431
+#, no-wrap
+msgid "Type of build (CMake predefined build profiles). Default is `Release`, or `Debug` if `WITH_DEBUG` is set."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:432
+#, no-wrap
+msgid "`CMAKE_SOURCE_PATH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:434
+#, no-wrap
+msgid "Path to the source directory. Default is `${WRKSRC}`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:436
+#, no-wrap
+msgid "Additional environment variables to be set for the `cmake` binary."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:439
+#, no-wrap
+msgid "Variables the Users Can Define for `cmake` Builds"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:446
+#, no-wrap
+msgid "`CMAKE_NOCOLOR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:447
+#, no-wrap
+msgid "Disables color build output. Default not set, unless `BATCH` or `PACKAGE_BUILDING` are set."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:454
+msgid ""
+"CMake supports these build profiles: `Debug`, `Release`, `RelWithDebInfo` "
+"and `MinSizeRel`. `Debug` and `Release` profiles respect system `\\*FLAGS`, "
+"`RelWithDebInfo` and `MinSizeRel` will set `CFLAGS` to `-O2 -g` and `-Os -"
+"DNDEBUG` correspondingly. The lower-cased value of `CMAKE_BUILD_TYPE` is "
+"exported to `PLIST_SUB` and must be used if the port installs [.filename]#*."
+"cmake# depending on the build type (see package:devel/kf5-kcrash[] for an "
+"example). Please note that some projects may define their own build "
+"profiles and/or force particular build type by setting `CMAKE_BUILD_TYPE` in "
+"[.filename]#CMakeLists.txt#. To make a port for such a project respect "
+"`CFLAGS` and `WITH_DEBUG`, the `CMAKE_BUILD_TYPE` definitions must be "
+"removed from those files."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:459
+msgid ""
+"Most CMake-based projects support an out-of-source method of building. The "
+"out-of-source build for a port is the default setting. An in-source build "
+"can be requested by using the `:insource` suffix. With out-of-source "
+"builds, `CONFIGURE_WRKSRC`, `BUILD_WRKSRC` and `INSTALL_WRKSRC` will be set "
+"to `${WRKDIR}/.build` and this directory will be used to keep all files "
+"generated during configuration and build stages, leaving the source "
+"directory intact."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:461
+#, no-wrap
+msgid "`USES= cmake` Example"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:466
+msgid ""
+"This snippet demonstrates the use of CMake for a port. `CMAKE_SOURCE_PATH` "
+"is not usually required, but can be set when the sources are not located in "
+"the top directory, or if only a subset of the project is intended to be "
+"built by the port."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:471
+#, no-wrap
+msgid ""
+"USES=\t\t\tcmake\n"
+"CMAKE_SOURCE_PATH=\t${WRKSRC}/subproject\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:476
+#, no-wrap
+msgid "`CMAKE_ON` and `CMAKE_OFF`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:480
+msgid ""
+"When adding boolean values to `CMAKE_ARGS`, it is easier to use the "
+"`CMAKE_ON` and `CMAKE_OFF` variables instead. This:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:485
+#, no-wrap
+msgid ""
+"CMAKE_ON=\tVAR1 VAR2\n"
+"CMAKE_OFF=\tVAR3\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:488
+msgid "Is equivalent to:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:492
+#, no-wrap
+msgid "CMAKE_ARGS=\t-DVAR1:BOOL=TRUE -DVAR2:BOOL=TRUE -DVAR3:BOOL=FALSE\n"
+msgstr ""
+
+#. type: delimited block = 6
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:498
+msgid ""
+"This is only for the default values off `CMAKE_ARGS`. The helpers described "
+"in crossref:makefiles[options-cmake_bool,`OPT_CMAKE_BOOL` and "
+"`OPT_CMAKE_BOOL_OFF`] use the same semantics, but for optional values."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:503
+#, no-wrap
+msgid "Using `scons`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:506
+msgid "If the port uses SCons, define `USES=scons`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:508
+msgid ""
+"To make third party [.filename]#SConstruct# respect everything that is "
+"passed to SCons in the environment (that is, most importantly, `CC/CXX/"
+"CFLAGS/CXXFLAGS`), patch [.filename]#SConstruct# so build `Environment` is "
+"constructed like this:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:512
+#, no-wrap
+msgid "env = Environment(**ARGUMENTS)\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:515
+msgid "It may be then modified with `env.Append` and `env.Replace`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:517
+#, no-wrap
+msgid "Building Rust Applications with `cargo`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:520
+msgid "For ports that use Cargo, define `USES=cargo`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:522
+#, no-wrap
+msgid "Variables the Users Can Define for `cargo` Builds"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:527
+#, no-wrap
+msgid "Default"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:529
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:811
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1730
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1898
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1916
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2084
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2150
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2394
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2411
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2446
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2466
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2542
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3121
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3779
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3813
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3856
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3882
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3986
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4156
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4208
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4300
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4392
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4454
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4714
+#, no-wrap
+msgid "Description"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:530
+#, no-wrap
+msgid "`CARGO_CRATES`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:536
+#, no-wrap
+msgid ""
+"List of crates the port depends on. Each entry needs to have a format like `cratename-semver` for example, `libc-0.2.40`. Port maintainers can generate this list from [.filename]#Cargo.lock# using `make cargo-crates`. Manually bumping crate versions is possible but be mindful of transitive dependencies.\n"
+"If the list generated by `make cargo-crates` is big, it might be convenient to place it inside a `Makefile.crates` file in the top-level port directory.\n"
+"If present, the ports framework sources that file automatically.\n"
+"This help keep the main port Makefile within a manageable size."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:537
+#, no-wrap
+msgid "`CARGO_FEATURES`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:540
+#, no-wrap
+msgid "List of application features to build (space separated list). To deactivate all default features add the special token `--no-default-features` to `CARGO_FEATURES`. Manually passing it to `CARGO_BUILD_ARGS`, `CARGO_INSTALL_ARGS`, and `CARGO_TEST_ARGS` is not needed."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:541
+#, no-wrap
+msgid "`CARGO_CARGOTOML`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:542
+#, no-wrap
+msgid "`${WRKSRC}/Cargo.toml`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:544
+#, no-wrap
+msgid "The path to the [.filename]#Cargo.toml# to use."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:545
+#, no-wrap
+msgid "`CARGO_CARGOLOCK`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:546
+#, no-wrap
+msgid "`${WRKSRC}/Cargo.lock`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:548
+#, no-wrap
+msgid "The path to the [.filename]#Cargo.lock# to use for `make cargo-crates`. It is possible to specify more than one lock file when necessary."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:549
+#, no-wrap
+msgid "`CARGO_ENV`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:552
+#, no-wrap
+msgid "A list of environment variables to pass to Cargo similar to `MAKE_ENV`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:553
+#, no-wrap
+msgid "`RUSTFLAGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:556
+#, no-wrap
+msgid "Flags to pass to the Rust compiler."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:557
+#, no-wrap
+msgid "`CARGO_CONFIGURE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:558
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:566
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:574
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:582
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:594
+#, no-wrap
+msgid "`yes`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:560
+#, no-wrap
+msgid "Use the default `do-configure`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:561
+#, no-wrap
+msgid "`CARGO_UPDATE_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:564
+#, no-wrap
+msgid "Extra arguments to pass to Cargo during the configure phase. Valid arguments can be looked up with `cargo update --help`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:565
+#, no-wrap
+msgid "`CARGO_BUILDDEP`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:568
+#, no-wrap
+msgid "Add a build dependency on package:lang/rust[]."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:569
+#, no-wrap
+msgid "`CARGO_CARGO_BIN`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:570
+#, no-wrap
+msgid "`${LOCALBASE}/bin/cargo`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:572
+#, no-wrap
+msgid "Location of the `cargo` binary."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:573
+#, no-wrap
+msgid "`CARGO_BUILD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:576
+#, no-wrap
+msgid "Use the default `do-build`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:577
+#, no-wrap
+msgid "`CARGO_BUILD_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:580
+#, no-wrap
+msgid "Extra arguments to pass to Cargo during the build phase. Valid arguments can be looked up with `cargo build --help`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:581
+#, no-wrap
+msgid "`CARGO_INSTALL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:584
+#, no-wrap
+msgid "Use the default `do-install`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:585
+#, no-wrap
+msgid "`CARGO_INSTALL_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:588
+#, no-wrap
+msgid "Extra arguments to pass to Cargo during the install phase. Valid arguments can be looked up with `cargo install --help`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:589
+#, no-wrap
+msgid "`CARGO_INSTALL_PATH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:590
+#, no-wrap
+msgid "`.`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:592
+#, no-wrap
+msgid "Path to the crate to install. This is passed to `cargo install` via its `--path` argument. When multiple paths are specified `cargo install` is run multiple times."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:593
+#, no-wrap
+msgid "`CARGO_TEST`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:596
+#, no-wrap
+msgid "Use the default `do-test`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:597
+#, no-wrap
+msgid "`CARGO_TEST_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:600
+#, no-wrap
+msgid "Extra arguments to pass to Cargo during the test phase. Valid arguments can be looked up with `cargo test --help`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:601
+#, no-wrap
+msgid "`CARGO_TARGET_DIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:602
+#, no-wrap
+msgid "`${WRKDIR}/target`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:604
+#, no-wrap
+msgid "Location of the cargo output directory."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:605
+#, no-wrap
+msgid "`CARGO_DIST_SUBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:606
+#, no-wrap
+msgid "[.filename]#rust/crates#"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:608
+#, no-wrap
+msgid "Directory relative to `DISTDIR` where the crate distribution files will be stored."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:609
+#, no-wrap
+msgid "`CARGO_VENDOR_DIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:610
+#, no-wrap
+msgid "`${WRKSRC}/cargo-crates`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:612
+#, no-wrap
+msgid "Location of the vendor directory where all crates will be extracted to. Try to keep this under `PATCH_WRKSRC`, so that patches can be applied easily."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:613
+#, no-wrap
+msgid "`CARGO_USE_GITHUB`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:614
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:618
+#, no-wrap
+msgid "`no`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:616
+#, no-wrap
+msgid "Enable fetching of crates locked to specific Git commits on GitHub via `GH_TUPLE`. This will try to patch all [.filename]#Cargo.toml# under `WRKDIR` to point to the offline sources instead of fetching them from a Git repository during the build."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:617
+#, no-wrap
+msgid "`CARGO_USE_GITLAB`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:619
+#, no-wrap
+msgid "Same as `CARGO_USE_GITHUB` but for GitLab instances and `GL_TUPLE`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:622
+#, no-wrap
+msgid "Creating a Port for a Simple Rust Application"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:627
+msgid ""
+"Creating a Cargo based port is a three stage process. First we need to "
+"provide a ports template that fetches the application distribution file:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:634
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:679
+#, no-wrap
+msgid ""
+"PORTNAME=\ttokei\n"
+"DISTVERSIONPREFIX=\tv\n"
+"DISTVERSION=\t7.0.2\n"
+"CATEGORIES=\tdevel\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:638
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:683
+#, no-wrap
+msgid ""
+"MAINTAINER=\ttobik@FreeBSD.org\n"
+"COMMENT=\tDisplay statistics about your code\n"
+"WWW=\t\thttps://github.com/XAMPPRocky/tokei/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:642
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:687
+#, no-wrap
+msgid ""
+"USES=\t\tcargo\n"
+"USE_GITHUB=\tyes\n"
+"GH_ACCOUNT=\tAaronepower\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:644
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:697
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:864
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:887
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:945
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1016
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1103
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1119
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1133
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1250
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1271
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1644
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3469
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3529
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3645
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4240
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4264
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4502
+#, no-wrap
+msgid ".include <bsd.port.mk>\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:647
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:890
+msgid "Generate an initial [.filename]#distinfo#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:655
+#, no-wrap
+msgid ""
+"% make makesum\n"
+"=> Aaronepower-tokei-v7.0.2_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://codeload.github.com/Aaronepower/tokei/tar.gz/v7.0.2?dummy=/Aaronepower-tokei-v7.0.2_GH0.tar.gz\n"
+"fetch: https://codeload.github.com/Aaronepower/tokei/tar.gz/v7.0.2?dummy=/Aaronepower-tokei-v7.0.2_GH0.tar.gz: size of remote file is not known\n"
+"Aaronepower-tokei-v7.0.2_GH0.tar.gz 45 kB 239 kBps 00m00s\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:658
+msgid ""
+"Now the distribution file is ready to use and we can go ahead and extract "
+"crate dependencies from the bundled [.filename]#Cargo.lock#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:669
+#, no-wrap
+msgid ""
+"% make cargo-crates\n"
+"CARGO_CRATES= aho-corasick-0.6.4 \\\n"
+" ansi_term-0.11.0 \\\n"
+" arrayvec-0.4.7 \\\n"
+" atty-0.2.9 \\\n"
+" bitflags-1.0.1 \\\n"
+" byteorder-1.2.2 \\\n"
+" [...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:672
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:920
+msgid ""
+"The output of this command needs to be pasted directly into the Makefile:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:695
+#, no-wrap
+msgid ""
+"CARGO_CRATES= aho-corasick-0.6.4 \\\n"
+" ansi_term-0.11.0 \\\n"
+" arrayvec-0.4.7 \\\n"
+" atty-0.2.9 \\\n"
+" bitflags-1.0.1 \\\n"
+" byteorder-1.2.2 \\\n"
+" [...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:700
+msgid ""
+"[.filename]#distinfo# needs to be regenerated to contain all the crate "
+"distribution files:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:718
+#, no-wrap
+msgid ""
+"% make makesum\n"
+"=> rust/crates/aho-corasick-0.6.4.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://crates.io/api/v1/crates/aho-corasick/0.6.4/download?dummy=/rust/crates/aho-corasick-0.6.4.tar.gz\n"
+"rust/crates/aho-corasick-0.6.4.tar.gz 100% of 24 kB 6139 kBps 00m00s\n"
+"=> rust/crates/ansi_term-0.11.0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://crates.io/api/v1/crates/ansi_term/0.11.0/download?dummy=/rust/crates/ansi_term-0.11.0.tar.gz\n"
+"rust/crates/ansi_term-0.11.0.tar.gz 100% of 16 kB 21 MBps 00m00s\n"
+"=> rust/crates/arrayvec-0.4.7.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://crates.io/api/v1/crates/arrayvec/0.4.7/download?dummy=/rust/crates/arrayvec-0.4.7.tar.gz\n"
+"rust/crates/arrayvec-0.4.7.tar.gz 100% of 22 kB 3237 kBps 00m00s\n"
+"=> rust/crates/atty-0.2.9.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://crates.io/api/v1/crates/atty/0.2.9/download?dummy=/rust/crates/atty-0.2.9.tar.gz\n"
+"rust/crates/atty-0.2.9.tar.gz 100% of 5898 B 81 MBps 00m00s\n"
+"=> rust/crates/bitflags-1.0.1.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"[...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:721
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:964
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1076
+msgid ""
+"The port is now ready for a test build and further adjustments like creating "
+"a plist, writing a description, adding license information, options, etc. as "
+"normal."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:723
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:966
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1078
+msgid ""
+"If you are not testing your port in a clean environment like with poudriere, "
+"remember to run `make clean` before any testing."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:726
+#, no-wrap
+msgid "Enabling Additional Application Features"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:731
+msgid ""
+"Some applications define additional features in their [.filename]#Cargo."
+"toml#. They can be compiled in by setting `CARGO_FEATURES` in the port."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:733
+msgid "Here we enable Tokei's `json` and `yaml` features:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:737
+#, no-wrap
+msgid "CARGO_FEATURES=\tjson yaml\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:742
+#, no-wrap
+msgid "Encoding Application Features As Port Options"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:746
+msgid ""
+"An example `[features]` section in [.filename]#Cargo.toml# could look like "
+"this:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:753
+#, no-wrap
+msgid ""
+"[features]\n"
+"pulseaudio_backend = [\"librespot-playback/pulseaudio-backend\"]\n"
+"portaudio_backend = [\"librespot-playback/portaudio-backend\"]\n"
+"default = [\"pulseaudio_backend\"]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:758
+msgid ""
+"`pulseaudio_backend` is a default feature. It is always enabled unless we "
+"explicitly turn off default features by adding `--no-default-features` to "
+"`CARGO_FEATURES`. Here we turn the `portaudio_backend` and "
+"`pulseaudio_backend` features into port options:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:762
+#, no-wrap
+msgid "CARGO_FEATURES=\t--no-default-features\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:764
+#, no-wrap
+msgid "OPTIONS_DEFINE=\tPORTAUDIO PULSEAUDIO\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:767
+#, no-wrap
+msgid ""
+"PORTAUDIO_VARS=\t\tCARGO_FEATURES+=portaudio_backend\n"
+"PULSEAUDIO_VARS=\tCARGO_FEATURES+=pulseaudio_backend\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:772
+#, no-wrap
+msgid "Listing Crate Licenses"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:778
+msgid ""
+"Crates have their own licenses. It is important to know what they are when "
+"adding a `LICENSE` block to the port (see crossref:makefiles[licenses,"
+"Licenses]). The helper target `cargo-crates-licenses` will try to list all "
+"the licenses of all crates defined in `CARGO_CRATES`."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:789
+#, no-wrap
+msgid ""
+"% make cargo-crates-licenses\n"
+"aho-corasick-0.6.4 Unlicense/MIT\n"
+"ansi_term-0.11.0 MIT\n"
+"arrayvec-0.4.7 MIT/Apache-2.0\n"
+"atty-0.2.9 MIT\n"
+"bitflags-1.0.1 MIT/Apache-2.0\n"
+"byteorder-1.2.2 Unlicense/MIT\n"
+"[...]\n"
+msgstr ""
+
+#. type: delimited block = 6
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:795
+msgid ""
+"The license names `make cargo-crates-licenses` outputs are SPDX 2.1 licenses "
+"expression which do not match the license names defined in the ports "
+"framework. They need to be translated to the names from crossref:"
+"makefiles[licenses-license-list,Predefined License List]."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:800
+#, no-wrap
+msgid "Using `meson`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:803
+msgid "For ports that use Meson, define `USES=meson`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:805
+#, no-wrap
+msgid "Variables for Ports That Use `meson`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:812
+#, no-wrap
+msgid "`MESON_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:814
+#, no-wrap
+msgid "Port specific Meson flags to be passed to the `meson` binary."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:815
+#, no-wrap
+msgid "`MESON_BUILD_DIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:816
+#, no-wrap
+msgid "Path to the build directory relative to `WRKSRC`. Default is `_build`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:819
+#, no-wrap
+msgid "`USES=meson` Example"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:823
+msgid "This snippet demonstrates the use of Meson for a port."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:828
+#, no-wrap
+msgid ""
+"USES=\t\tmeson\n"
+"MESON_ARGS=\t-Dfoo=enabled\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:833
+#, no-wrap
+msgid "Building Go Applications"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:837
+msgid ""
+"For ports that use Go, define `USES=go`. Refer to crossref:uses[uses-go,"
+"`go`] for a list of variables that can be set to control the build process."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:839
+#, no-wrap
+msgid "Creating a Port for a Go Modules Based Application"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:843
+msgid ""
+"In most cases, it is sufficient to set the `GO_MODULE` variable to the value "
+"specified by the `module` directive in `go.mod`:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:850
+#, no-wrap
+msgid ""
+"PORTNAME= hey\n"
+"DISTVERSIONPREFIX=\tv\n"
+"DISTVERSION= 0.1.4\n"
+"CATEGORIES= benchmarks\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:854
+#, no-wrap
+msgid ""
+"MAINTAINER= dmgk@FreeBSD.org\n"
+"COMMENT= Tiny program that sends some load to a web application\n"
+"WWW= https://github.com/rakyll/hey/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:857
+#, no-wrap
+msgid ""
+"LICENSE= APACHE20\n"
+"LICENSE_FILE= ${WRKSRC}/LICENSE\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:860
+#, no-wrap
+msgid ""
+"USES= go:modules\n"
+"GO_MODULE= github.com/rakyll/hey\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:862
+#, no-wrap
+msgid "PLIST_FILES= bin/hey\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:867
+msgid ""
+"If the \"easy\" way is not adequate or more control over dependencies is "
+"needed, the full porting process is described below."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:870
+msgid ""
+"Creating a Go-based port is a five-stage process. First we need to provide "
+"a ports template that fetches the application distribution file:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:877
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:927
+#, no-wrap
+msgid ""
+"PORTNAME=\tghq\n"
+"DISTVERSIONPREFIX=\tv\n"
+"DISTVERSION=\t0.12.5\n"
+"CATEGORIES=\tdevel\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:881
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:931
+#, no-wrap
+msgid ""
+"MAINTAINER=\ttobik@FreeBSD.org\n"
+"COMMENT=\tRemote repository management made easy\n"
+"WWW=\t\thttps://github.com/x-motemen/ghq/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:885
+#, no-wrap
+msgid ""
+"USES=\t\tgo:modules\n"
+"USE_GITHUB=\tyes\n"
+"GH_ACCOUNT=\tmotemen\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:899
+#, no-wrap
+msgid ""
+"% make makesum\n"
+"===> License MIT accepted by the user\n"
+"=> motemen-ghq-v0.12.5_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://codeload.github.com/motemen/ghq/tar.gz/v0.12.5?dummy=/motemen-ghq-v0.12.5_GH0.tar.gz\n"
+"fetch: https://codeload.github.com/motemen/ghq/tar.gz/v0.12.5?dummy=/motemen-ghq-v0.12.5_GH0.tar.gz: size of remote file is not known\n"
+"motemen-ghq-v0.12.5_GH0.tar.gz 32 kB 177 kBps 00s\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:903
+msgid ""
+"Now the distribution file is ready to use and we can extract the required Go "
+"module dependencies. This step requires having package:ports-mgmt/"
+"modules2tuple[] installed:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:917
+#, no-wrap
+msgid ""
+"% make gomod-vendor\n"
+"[...]\n"
+"GH_TUPLE=\t\\\n"
+"\t\tSongmu:gitconfig:v0.0.2:songmu_gitconfig/vendor/github.com/Songmu/gitconfig \\\n"
+"\t\tdaviddengcn:go-colortext:186a3d44e920:daviddengcn_go_colortext/vendor/github.com/daviddengcn/go-colortext \\\n"
+"\t\tgo-yaml:yaml:v2.2.2:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \\\n"
+"\t\tgolang:net:3ec191127204:golang_net/vendor/golang.org/x/net \\\n"
+"\t\tgolang:sync:112230192c58:golang_sync/vendor/golang.org/x/sync \\\n"
+"\t\tgolang:xerrors:3ee3066db522:golang_xerrors/vendor/golang.org/x/xerrors \\\n"
+"\t\tmotemen:go-colorine:45d19169413a:motemen_go_colorine/vendor/github.com/motemen/go-colorine \\\n"
+"\t\turfave:cli:v1.20.0:urfave_cli/vendor/github.com/urfave/cli\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:943
+#, no-wrap
+msgid ""
+"USES=\t\tgo:modules\n"
+"USE_GITHUB=\tyes\n"
+"GH_ACCOUNT=\tmotemen\n"
+"GH_TUPLE=\tSongmu:gitconfig:v0.0.2:songmu_gitconfig/vendor/github.com/Songmu/gitconfig \\\n"
+"\t\tdaviddengcn:go-colortext:186a3d44e920:daviddengcn_go_colortext/vendor/github.com/daviddengcn/go-colortext \\\n"
+"\t\tgo-yaml:yaml:v2.2.2:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \\\n"
+"\t\tgolang:net:3ec191127204:golang_net/vendor/golang.org/x/net \\\n"
+"\t\tgolang:sync:112230192c58:golang_sync/vendor/golang.org/x/sync \\\n"
+"\t\tgolang:xerrors:3ee3066db522:golang_xerrors/vendor/golang.org/x/xerrors \\\n"
+"\t\tmotemen:go-colorine:45d19169413a:motemen_go_colorine/vendor/github.com/motemen/go-colorine \\\n"
+"\t\turfave:cli:v1.20.0:urfave_cli/vendor/github.com/urfave/cli\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:948
+msgid ""
+"[.filename]#distinfo# needs to be regenerated to contain all the "
+"distribution files:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:961
+#, no-wrap
+msgid ""
+"% make makesum\n"
+"=> Songmu-gitconfig-v0.0.2_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://codeload.github.com/Songmu/gitconfig/tar.gz/v0.0.2?dummy=/Songmu-gitconfig-v0.0.2_GH0.tar.gz\n"
+"fetch: https://codeload.github.com/Songmu/gitconfig/tar.gz/v0.0.2?dummy=/Songmu-gitconfig-v0.0.2_GH0.tar.gz: size of remote file is not known\n"
+"Songmu-gitconfig-v0.0.2_GH0.tar.gz 5662 B 936 kBps 00s\n"
+"=> daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
+"=> Attempting to fetch https://codeload.github.com/daviddengcn/go-colortext/tar.gz/186a3d44e920?dummy=/daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz\n"
+"fetch: https://codeload.github.com/daviddengcn/go-colortext/tar.gz/186a3d44e920?dummy=/daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz: size of remote file is not known\n"
+"daviddengcn-go-colortext-186a3d44e920_GH0.tar. 4534 B 1098 kBps 00s\n"
+"[...]\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:969
+#, no-wrap
+msgid "Setting Output Binary Name or Installation Path"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:974
+msgid ""
+"Some ports need to install the resulting binary under a different name or to "
+"a path other than the default `${PREFIX}/bin`. This can be done by using "
+"`GO_TARGET` tuple syntax, for example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:978
+#, no-wrap
+msgid "GO_TARGET= ./cmd/ipfs:ipfs-go\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:981
+msgid "will install `ipfs` binary as `${PREFIX}/bin/ipfs-go` and"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:985
+#, no-wrap
+msgid "GO_TARGET= ./dnscrypt-proxy:${PREFIX}/sbin/dnscrypt-proxy\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:988
+msgid "will install `dnscrypt-proxy` to `${PREFIX}/sbin`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:991
+#, no-wrap
+msgid "Building Haskell Applications with `cabal`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:995
+msgid ""
+"For ports that use Cabal, build system defines `USES=cabal`. Refer to "
+"crossref:uses[uses-cabal,`cabal`] for a list of variables that can be set to "
+"control the build process."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:997
+#, no-wrap
+msgid "Creating a Port for a Hackage-hosted Haskell Application"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1002
+msgid ""
+"When preparing a Haskell Cabal port, package:devel/hs-cabal-install[] and "
+"package:ports-mgmt/hs-cabal2tuple[] programs are required, so make sure they "
+"are installed beforehand. First we need to define common ports variables "
+"that allow cabal-install to fetch the package distribution file:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1008
+#, no-wrap
+msgid ""
+"PORTNAME=\tShellCheck\n"
+"DISTVERSION=\t0.6.0\n"
+"CATEGORIES=\tdevel\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1012
+#, no-wrap
+msgid ""
+"MAINTAINER=\thaskell@FreeBSD.org\n"
+"COMMENT=\tShell script analysis tool\n"
+"WWW=\t\thttps://www.shellcheck.net/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1014
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1097
+#, no-wrap
+msgid "USES=\t\tcabal\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1019
+msgid ""
+"This minimal Makefile fetches the distribution file with the `cabal-extract` "
+"helper target:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1029
+#, no-wrap
+msgid ""
+"% make cabal-extract\n"
+"[...]\n"
+"Downloading the latest package list from hackage.haskell.org\n"
+"cabal get ShellCheck-0.6.0\n"
+"Downloading ShellCheck-0.6.0\n"
+"Downloaded ShellCheck-0.6.0\n"
+"Unpacking to ShellCheck-0.6.0/\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1032
+msgid ""
+"Now that we have ShellCheck.cabal package description file under `${WRKSRC}"
+"`, we can use `cabal-configure` to generate the build plan:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1043
+#, no-wrap
+msgid ""
+"% make cabal-configure\n"
+"[...]\n"
+"Resolving dependencies...\n"
+"Build profile: -w ghc-8.10.7 -O1\n"
+"In order, the following would be built (use -v for more details):\n"
+" - Diff-0.4.1 (lib) (requires download & build)\n"
+" - OneTuple-0.3.1 (lib) (requires download & build)\n"
+"[...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1046
+msgid "Once done, a list of required dependencies can generated:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1054
+#, no-wrap
+msgid ""
+"% make make-use-cabal\n"
+"USE_CABAL=\tQuickCheck-2.12.6.1 \\\n"
+"\t\thashable-1.3.0.0 \\\n"
+"\t\tinteger-logarithms-1.0.3 \\\n"
+"[...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1060
+msgid ""
+"Haskell packages may contain revisions, just like FreeBSD ports. Revisions "
+"can affect [.filename]#.cabal# files only. Note additional version numbers "
+"after the `_` symbol. Put newly generated `USE_CABAL` list instead of an "
+"old one."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1062
+msgid ""
+"Finally, [.filename]#distinfo# needs to be regenerated to contain all the "
+"distribution files:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1073
+#, no-wrap
+msgid ""
+"% make makesum\n"
+"=> ShellCheck-0.6.0.tar.gz doesn't seem to exist in /usr/local/poudriere/ports/git/distfiles/cabal.\n"
+"=> Attempting to fetch https://hackage.haskell.org/package/ShellCheck-0.6.0/ShellCheck-0.6.0.tar.gz\n"
+"ShellCheck-0.6.0.tar.gz 136 kB 642 kBps 00s\n"
+"=> QuickCheck-2.12.6.1/QuickCheck-2.12.6.1.tar.gz doesn't seem to exist in /usr/local/poudriere/ports/git/distfiles/cabal.\n"
+"=> Attempting to fetch https://hackage.haskell.org/package/QuickCheck-2.12.6.1/QuickCheck-2.12.6.1.tar.gz\n"
+"QuickCheck-2.12.6.1/QuickCheck-2.12.6.1.tar.gz 65 kB 361 kBps 00s\n"
+"[...]\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1083
+msgid ""
+"Some Haskell ports install various data files under `share/${PORTNAME}`. For "
+"such cases special handling is required on the port side. The port should "
+"define the `CABAL_WRAPPER_SCRIPTS` knob listing each executable that is "
+"going to use data files. Moreover, in rare cases the program being ported "
+"uses data files of other Haskell packages, in which case the "
+"`FOO_DATADIR_VARS` comes to the rescue."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1085
+#, no-wrap
+msgid "Handling Data Files in a Haskell Port"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1089
+msgid ""
+"`devel/hs-profiteur` is a Haskell application that generates a single-page "
+"HTML with some content."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1093
+#, no-wrap
+msgid "PORTNAME=\tprofiteur\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1095
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1110
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1128
+#, no-wrap
+msgid "[...]\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1101
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1114
+#, no-wrap
+msgid ""
+"USE_CABAL=\tOneTuple-0.3.1_2 \\\n"
+"\t\tQuickCheck-2.14.2 \\\n"
+"\t\t[...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1106
+msgid ""
+"It installs HTML templates under `share/profiteur`, so we need to add "
+"`CABAL_WRAPPER_SCRIPTS` knob:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1117
+#, no-wrap
+msgid "CABAL_WRAPPER_SCRIPTS=\t\t${CABAL_EXECUTABLES}\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1124
+msgid ""
+"The program also tries to access the `jquery.js` file, which is a part of "
+"`js-jquery-3.3.1` Haskell package. For that file to be found, we need to "
+"make the wrapper script to look for `js-jquery` data files in `share/"
+"profiteur` too. We use `profiteur_DATADIR_VARS` for this:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1131
+#, no-wrap
+msgid ""
+"CABAL_WRAPPER_SCRIPTS=\t\t${CABAL_EXECUTABLES}\n"
+"profiteur_DATADIR_VARS=\t\tjs-jquery\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1136
+msgid ""
+"Now the port will install the actual binary into `libexec/cabal/profiteur` "
+"and the script into `bin/profiteur`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1141
+msgid ""
+"There is no easy way to find out a proper value for the `FOO_DATADIR_VARS` "
+"knob apart from running the program and checking that everything works. "
+"Luckily, the need to use `FOO_DATADIR_VARS` is very rare."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1143
+msgid ""
+"Another corner case when porting complex Haskell programs is the presence of "
+"VCS dependencies in the `cabal.project` file."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1145
+#, no-wrap
+msgid "Porting Haskell Applications with VCS Dependencies"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1150
+msgid ""
+"`net-p2p/cardano-node` is an extremely complex piece of software. In its "
+"`cabal.project` there are a lot of blocks like this:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1159
+#, no-wrap
+msgid ""
+"[...]\n"
+"source-repository-package\n"
+" type: git\n"
+" location: https://github.com/input-output-hk/cardano-crypto\n"
+" tag: f73079303f663e028288f9f4a9e08bcca39a923e\n"
+"[...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1165
+msgid ""
+"Dependencies of type `source-repository-package` are automatically pulled in "
+"by `cabal` during the build process. Unfortunately, this makes use of the "
+"network after the `fetch` stage. This is disallowed by the ports framework. "
+"These sources need to be listed in the port's Makefile. The `make-use-cabal` "
+"helper target can make it easy for packages hosted on GitHub. Running this "
+"target after the usual `cabal-extract` and `cabal-configure` will produce "
+"not only the `USE_CABAL` knob, but also `GH_TUPLE`:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1173
+#, no-wrap
+msgid ""
+"% make make-use-cabal\n"
+"USE_CABAL=\tDiff-0.4.1 \\\n"
+"\t\tGlob-0.10.2_3 \\\n"
+"\t\tHUnit-1.6.2.0 \\\n"
+"\t\t[...]\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1177
+#, no-wrap
+msgid ""
+"GH_TUPLE=\t\tinput-output-hk:cardano-base:0f3a867493059e650cda69e20a5cbf1ace289a57:cardano_base/dist-newstyle/src/cardano-b_-c8db9876882556ed \\\n"
+"\t\tinput-output-hk:cardano-crypto:f73079303f663e028288f9f4a9e08bcca39a923e:cardano_crypto/dist-newstyle/src/cardano-c_-253fd88117badd8f \\\n"
+"\t\t[...]\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1180
+msgid ""
+"It might be useful to separate the `GH_TUPLE` items coming from `make-use-"
+"cabal` from the other ones to make it easy to update the port:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1186
+#, no-wrap
+msgid ""
+"GH_TUPLE=\tinput-output-hk:cardano-base:0f3a867493059e650cda69e20a5cbf1ace289a57:cardano_base/dist-newstyle/src/cardano-b_-c8db9876882556ed \\\n"
+"\t\tinput-output-hk:cardano-crypto:f73079303f663e028288f9f4a9e08bcca39a923e:cardano_crypto/dist-newstyle/src/cardano-c_-253fd88117badd8f \\\n"
+"\t\t[...]\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1188
+#, no-wrap
+msgid "GH_TUPLE+=\tbitcoin-core:secp256k1:ac83be33d0956faf6b7f61a60ab524ef7d6a473a:secp\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1191
+msgid ""
+"Haskell ports with VCS dependencies also require the following hack for the "
+"time being:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1195
+#, no-wrap
+msgid "BINARY_ALIAS=\tgit=true\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1200
+#, no-wrap
+msgid "Using GNU Autotools"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1204
+msgid ""
+"If a port needs any of the GNU Autotools software, add `USES=autoreconf`. "
+"See crossref:uses[uses-autoreconf,`autoreconf`] for more information."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1206
+#, no-wrap
+msgid "Using GNU `gettext`"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1209
+#, no-wrap
+msgid "Basic Usage"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1213
+msgid ""
+"If the port requires `gettext`, set `USES= gettext`, and the port will "
+"inherit a dependency on [.filename]#libintl.so# from package:devel/"
+"gettext[]. Other values for `gettext` usage are listed in crossref:"
+"uses[uses-gettext,`USES=gettext`]."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1216
+msgid ""
+"A rather common case is a port using `gettext` and `configure`. Generally, "
+"GNU `configure` should be able to locate `gettext` automatically."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1221
+#, no-wrap
+msgid ""
+"USES=\tgettext\n"
+"GNU_CONFIGURE=\tyes\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1224
+msgid ""
+"If it ever fails to, hints at the location of `gettext` can be passed in "
+"`CPPFLAGS` and `LDFLAGS` using `localbase` as follows:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1229
+#, no-wrap
+msgid ""
+"USES=\tgettext localbase:ldflags\n"
+"GNU_CONFIGURE=\tyes\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1232
+#, no-wrap
+msgid "Optional Usage"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1238
+msgid ""
+"Some software products allow for disabling NLS. For example, through "
+"passing `--disable-nls` to `configure`. In that case, the port must use "
+"`gettext` conditionally, depending on the status of the `NLS` option. For "
+"ports of low to medium complexity, use this idiom:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1242
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1257
+#, no-wrap
+msgid "GNU_CONFIGURE=\t\tyes\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1245
+#, no-wrap
+msgid ""
+"OPTIONS_DEFINE=\t\tNLS\n"
+"OPTIONS_SUB=\t\tyes\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1248
+#, no-wrap
+msgid ""
+"NLS_USES=\t\tgettext\n"
+"NLS_CONFIGURE_ENABLE=\tnls\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1253
+msgid "Or using the older way of using options:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1259
+#, no-wrap
+msgid "OPTIONS_DEFINE=\t\tNLS\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1261
+#, no-wrap
+msgid ".include <bsd.port.options.mk>\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1269
+#, no-wrap
+msgid ""
+".if ${PORT_OPTIONS:MNLS}\n"
+"USES+=\t\t\tgettext\n"
+"PLIST_SUB+=\t\tNLS=\"\"\n"
+".else\n"
+"CONFIGURE_ARGS+=\t--disable-nls\n"
+"PLIST_SUB+=\t\tNLS=\"@comment \"\n"
+".endif\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1280
+msgid ""
+"The next item on the to-do list is to arrange so that the message catalog "
+"files are included in the packing list conditionally. The [."
+"filename]#Makefile# part of this task is already provided by the idiom. It "
+"is explained in the section on crossref:plist[plist-sub,advanced [."
+"filename]#pkg-plist# practices]. In a nutshell, each occurrence of `%%NLS%"
+"%` in [.filename]#pkg-plist# will be replaced by \"`@comment `\" if NLS is "
+"disabled, or by a null string if NLS is enabled. Consequently, the lines "
+"prefixed by `%%NLS%%` will become mere comments in the final packing list if "
+"NLS is off; otherwise the prefix will be just left out. Then insert `%%NLS%"
+"%` before each path to a message catalog file in [.filename]#pkg-plist#. "
+"For example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1285
+#, no-wrap
+msgid ""
+"%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo\n"
+"%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1288
+msgid ""
+"In high complexity cases, more advanced techniques may be needed, such as "
+"crossref:plist[plist-dynamic,dynamic packing list generation]."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1290
+#, no-wrap
+msgid "Handling Message Catalog Directories"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1297
+msgid ""
+"There is a point to note about installing message catalog files. The target "
+"directories for them, which reside under [.filename]#LOCALBASE/share/"
+"locale#, must not be created and removed by a port. The most popular "
+"languages have their respective directories listed in [.filename]#PORTSDIR/"
+"Templates/BSD.local.dist#. The directories for many other languages are "
+"governed by the package:devel/gettext[] port. Consult its [.filename]#pkg-"
+"plist# and see whether the port is going to install a message catalog file "
+"for a unique language."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1299
+#, no-wrap
+msgid "Using Perl"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1307
+msgid ""
+"If `MASTER_SITES` is set to `CPAN`, the correct subdirectory is usually "
+"selected automatically. If the default subdirectory is wrong, `CPAN/Module` "
+"can be used to change it. `MASTER_SITES` can also be set to the old "
+"`MASTER_SITE_PERL_CPAN`, then the preferred value of `MASTER_SITE_SUBDIR` is "
+"the top-level hierarchy name. For example, the recommended value for `p5-"
+"Module-Name` is `Module`. The top-level hierarchy can be examined at "
+"https://cpan.org/modules/by-module/[cpan.org]. This keeps the port working "
+"when the author of the module changes."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1312
+msgid ""
+"The exception to this rule is when the relevant directory does not exist or "
+"the distfile does not exist in that directory. In such case, using author's "
+"id as `MASTER_SITE_SUBDIR` is allowed. The `CPAN:AUTHOR` macro can be used, "
+"which will be translated to the hashed author directory. For example, `CPAN:"
+"AUTHOR` will be converted to `authors/id/A/AU/AUTHOR`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1314
+msgid ""
+"When a port needs Perl support, it must set `USES=perl5` with the optional "
+"`USE_PERL5` described in crossref:uses[uses-perl5,the perl5 USES "
+"description]."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1316
+#, no-wrap
+msgid "Read-Only Variables for Ports That Use Perl"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1320
+#, no-wrap
+msgid "Read only variables"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1323
+#, no-wrap
+msgid "`PERL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1325
+#, no-wrap
+msgid "The full path of the Perl 5 interpreter, either in the system or installed from a port, but without the version number. Use this when the software needs the path to the Perl interpreter. To replace \"``#!``\"lines in scripts, use crossref:uses[uses-shebangfix,`shebangfix`]."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1326
+#, no-wrap
+msgid "`PERL_VERSION`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1328
+#, no-wrap
+msgid "The full version of Perl installed (for example, `5.8.9`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1329
+#, no-wrap
+msgid "`PERL_LEVEL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1331
+#, no-wrap
+msgid "The installed Perl version as an integer of the form `MNNNPP` (for example, `500809`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1332
+#, no-wrap
+msgid "`PERL_ARCH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1334
+#, no-wrap
+msgid "Where Perl stores architecture dependent libraries. Defaults to `${ARCH}-freebsd`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1335
+#, no-wrap
+msgid "`PERL_PORT`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1337
+#, no-wrap
+msgid "Name of the Perl port that is installed (for example, `perl5`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1338
+#, no-wrap
+msgid "`SITE_PERL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1339
+#, no-wrap
+msgid "Directory name where site specific Perl packages go. This value is added to `PLIST_SUB`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1345
+msgid ""
+"Ports of Perl modules which do not have an official website must link to "
+"`cpan.org` in the WWW line of [.filename]#Makefile#. The preferred URL form "
+"is `https://search.cpan.org/dist/Module-Name/` (including the trailing "
+"slash)."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1353
+msgid ""
+"Do not use `${SITE_PERL}` in dependency declarations. Doing so assumes that "
+"[.filename]#perl5.mk# has been included, which is not always true. Ports "
+"depending on this port will have incorrect dependencies if this port's files "
+"move later in an upgrade. The right way to declare Perl module dependencies "
+"is shown in the example below."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1356
+#, no-wrap
+msgid "Perl Dependency Example"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1362
+#, no-wrap
+msgid "p5-IO-Tee>=0.64:devel/p5-IO-Tee\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1367
+msgid ""
+"For Perl ports that install manual pages, the macro `PERL5_MAN3` and "
+"`PERL5_MAN1` can be used inside [.filename]#pkg-plist#. For example,"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1372
+#, no-wrap
+msgid ""
+"lib/perl5/5.14/man/man1/event.1.gz\n"
+"lib/perl5/5.14/man/man3/AnyEvent::I3.3.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1375
+msgid "can be replaced with"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1380
+#, no-wrap
+msgid ""
+"%%PERL5_MAN1%%/event.1.gz\n"
+"%%PERL5_MAN3%%/AnyEvent::I3.3.gz\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1385
+msgid ""
+"There are no `PERL5_MAN_x_` macros for the other sections (_x_ in `2` and "
+"`4` to `9`) because those get installed in the regular directories."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1388
+#, no-wrap
+msgid "A Port Which Only Requires Perl to Build"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1392
+msgid "As the default USE_PERL5 value is build and run, set it to:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1397
+#, no-wrap
+msgid ""
+"USES=\t\tperl5\n"
+"USE_PERL5=\tbuild\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1402
+#, no-wrap
+msgid "A Port Which Also Requires Perl to Patch"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1407
+msgid ""
+"From time to time, using man:sed[1] for patching is not enough. When using "
+"man:perl[1] is easier, use:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1412
+#, no-wrap
+msgid ""
+"USES=\t\tperl5\n"
+"USE_PERL5=\tpatch build run\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1417
+#, no-wrap
+msgid "A Perl Module Which Needs `ExtUtils::MakeMaker` to Build"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1422
+msgid ""
+"Most Perl modules come with a [.filename]#Makefile.PL# configure script. In "
+"this case, set:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1427
+#, no-wrap
+msgid ""
+"USES=\t\tperl5\n"
+"USE_PERL5=\tconfigure\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1432
+#, no-wrap
+msgid "A Perl Module Which Needs `Module::Build` to Build"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1436
+msgid ""
+"When a Perl module comes with a [.filename]#Build.PL# configure script, it "
+"can require Module::Build, in which case, set"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1441
+#, no-wrap
+msgid ""
+"USES=\t\tperl5\n"
+"USE_PERL5=\tmodbuild\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1444
+msgid "If it instead requires Module::Build::Tiny, set"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1449
+#, no-wrap
+msgid ""
+"USES=\t\tperl5\n"
+"USE_PERL5=\tmodbuildtiny\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1454
+#, no-wrap
+msgid "Using X11"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1457
+#, no-wrap
+msgid "X.Org Components"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1462
+msgid ""
+"The X11 implementation available in The Ports Collection is X.Org. If the "
+"application depends on X components, add `USES= xorg` and set `USE_XORG` to "
+"the list of required components. A full list can be found in crossref:"
+"uses[uses-xorg,`xorg`]."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1467
+msgid ""
+"The Mesa Project is an effort to provide free OpenGL implementation. To "
+"specify a dependency on various components of this project, use `USES= gl` "
+"and `USE_GL`. See crossref:uses[uses-gl,`gl`] for a full list of available "
+"components. For backwards compatibility, the value of `yes` maps to `glu`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1469
+#, no-wrap
+msgid "`USE_XORG` Example"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1477
+#, no-wrap
+msgid ""
+"USES=\t\tgl xorg\n"
+"USE_GL=\t\tglu\n"
+"USE_XORG=\txrender xft xkbfile xt xaw\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1482
+#, no-wrap
+msgid "Variables for Ports That Use X"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1486
+#, no-wrap
+msgid "`USES= imake`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1488
+#, no-wrap
+msgid "The port uses `imake`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1489
+#, no-wrap
+msgid "`XMKMF`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1490
+#, no-wrap
+msgid "Set to the path of `xmkmf` if not in the `PATH`. Defaults to `xmkmf -a`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1493
+#, no-wrap
+msgid "Using X11-Related Variables"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1501
+#, no-wrap
+msgid ""
+"# Use some X11 libraries\n"
+"USES=\t\txorg\n"
+"USE_XORG=\tx11 xpm\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1506
+#, no-wrap
+msgid "Ports That Require Motif"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1512
+msgid ""
+"If the port requires a Motif library, define `USES= motif` in the [."
+"filename]#Makefile#. Default Motif implementation is package:x11-toolkits/"
+"open-motif[]. Users can choose package:x11-toolkits/lesstif[] instead by "
+"setting `WANT_LESSTIF` in their [.filename]#make.conf#. Similarly package:"
+"x11-toolkits/open-motif-devel[] can be chosen by setting "
+"`WANT_OPEN_MOTIF_DEVEL` in [.filename]#make.conf#."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1515
+msgid ""
+"`MOTIFLIB` will be set by [.filename]#motif.mk# to reference the appropriate "
+"Motif library. Please patch the source of the port to use `${MOTIFLIB}` "
+"wherever the Motif library is referenced in the original [."
+"filename]#Makefile# or [.filename]#Imakefile#."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1517
+msgid "There are two common cases:"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1519
+msgid ""
+"If the port refers to the Motif library as `-lXm` in its [."
+"filename]#Makefile# or [.filename]#Imakefile#, substitute `${MOTIFLIB}` for "
+"it."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1520
+msgid ""
+"If the port uses `XmClientLibs` in its [.filename]#Imakefile#, change it to "
+"`${MOTIFLIB} ${XTOOLLIB} ${XLIB}`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1522
+msgid ""
+"Note that `MOTIFLIB` (usually) expands to `-L/usr/local/lib -lXm -lXp` or `/"
+"usr/local/lib/libXm.a`, so there is no need to add `-L` or `-l` in front."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1524
+#, no-wrap
+msgid "X11 Fonts"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1527
+msgid ""
+"If the port installs fonts for the X Window System, put them in [."
+"filename]#LOCALBASE/lib/X11/fonts/local#."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1529
+#, no-wrap
+msgid "Getting a Fake `DISPLAY` with Xvfb"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1536
+msgid ""
+"Some applications require a working X11 display for compilation to succeed. "
+"This poses a problem for machines that operate headless. When this variable "
+"is used, the build infrastructure will start the virtual framebuffer X "
+"server. The working `DISPLAY` is then passed to the build. See crossref:"
+"uses[uses-display,`USES=display`] for the possible arguments."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1540
+#, no-wrap
+msgid "USES=\tdisplay\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1544
+#, no-wrap
+msgid "Desktop Entries"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1550
+msgid ""
+"Desktop entries (https://standards.freedesktop.org/desktop-entry-spec/latest/"
+"[a Freedesktop standard]) provide a way to automatically adjust desktop "
+"features when a new program is installed, without requiring user "
+"intervention. For example, newly-installed programs automatically appear in "
+"the application menus of compatible desktop environments. Desktop entries "
+"originated in the GNOME desktop environment, but are now a standard and also "
+"work with KDE and Xfce. This bit of automation provides a real benefit to "
+"the user, and desktop entries are encouraged for applications which can be "
+"used in a desktop environment."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1552
+#, no-wrap
+msgid "Using Predefined [.filename]#.desktop# Files"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1556
+msgid ""
+"Ports that include predefined [.filename]#*.desktop# must include those "
+"files in [.filename]#pkg-plist# and install them in the [."
+"filename]#$LOCALBASE/share/applications# directory. The crossref:"
+"makefiles[install-macros,`INSTALL_DATA` macro] is useful for installing "
+"these files."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1558
+#, no-wrap
+msgid "Updating Desktop Database"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1562
+msgid ""
+"If a port has a MimeType entry in its [.filename]#portname.desktop#, the "
+"desktop database must be updated after install and deinstall. To do this, "
+"define `USES`= desktop-file-utils."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1564
+#, no-wrap
+msgid "Creating Desktop Entries with `DESKTOP_ENTRIES`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1569
+msgid ""
+"Desktop entries can be easily created for applications by using "
+"`DESKTOP_ENTRIES`. A file named [.filename]#name.desktop# will be created, "
+"installed, and added to [.filename]#pkg-plist# automatically. Syntax is:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1573
+#, no-wrap
+msgid "DESKTOP_ENTRIES=\t\"NAME\" \"COMMENT\" \"ICON\" \"COMMAND\" \"CATEGORY\" StartupNotify\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1580
+msgid ""
+"The list of possible categories is available on the https://standards."
+"freedesktop.org/menu-spec/latest/apa.html[Freedesktop website]. "
+"`StartupNotify` indicates whether the application is compatible with "
+"_startup notifications_. These are typically a graphic indicator like a "
+"clock that appear at the mouse pointer, menu, or panel to give the user an "
+"indication when a program is starting. A program that is compatible with "
+"startup notifications clears the indicator after it has started. Programs "
+"that are not compatible with startup notifications would never clear the "
+"indicator (potentially confusing and infuriating the user), and must have "
+"`StartupNotify` set to `false` so the indicator is not shown at all."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1582
+msgid "Example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1589
+#, no-wrap
+msgid ""
+"DESKTOP_ENTRIES=\t\"ToME\" \"Roguelike game based on JRR Tolkien's work\" \\\n"
+"\t\t\t\"${DATADIR}/xtra/graf/tome-128.png\" \\\n"
+"\t\t\t\"tome -v -g\" \"Application;Game;RolePlaying;\" \\\n"
+"\t\t\tfalse\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1594
+msgid ""
+"`DESKTOP_ENTRIES` are installed in the directory pointed to by the "
+"`DESKTOPDIR` variable. `DESKTOPDIR` defaults to [.filename]#${PREFIX}/share/"
+"applications#"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1597
+#, no-wrap
+msgid "Using GNOME"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1600
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3757
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4058
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4274
+#, no-wrap
+msgid "Introduction"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1604
+msgid ""
+"This chapter explains the GNOME framework as used by ports. The framework "
+"can be loosely divided into the base components, GNOME desktop components, "
+"and a few special macros that simplify the work of port maintainers."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1606
+#, no-wrap
+msgid "Using `USE_GNOME`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1614
+msgid ""
+"Adding this variable to the port allows the use of the macros and components "
+"defined in [.filename]#bsd.gnome.mk#. The code in [.filename]#bsd.gnome.mk# "
+"adds the needed build-time, run-time or library dependencies or the handling "
+"of special files. GNOME applications under FreeBSD use the `USE_GNOME` "
+"infrastructure. Include all the needed components as a space-separated "
+"list. The `USE_GNOME` components are divided into these virtual lists: "
+"basic components, GNOME 3 components and legacy components. If the port "
+"needs only GTK3 libraries, this is the shortest way to define it:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1618
+#, no-wrap
+msgid "USE_GNOME=\tgtk30\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1622
+msgid ""
+"`USE_GNOME` components automatically add the dependencies they need. Please "
+"see <<gnome-components>> for an exhaustive list of all `USE_GNOME` "
+"components and which other components they imply and their dependencies."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1625
+msgid ""
+"Here is an example [.filename]#Makefile# for a GNOME port that uses many of "
+"the techniques outlined in this document. Please use it as a guide for "
+"creating new ports."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1632
+#, no-wrap
+msgid ""
+"PORTNAME=\tregexxer\n"
+"DISTVERSION=\t0.10\n"
+"CATEGORIES=\tdevel textproc gnome\n"
+"MASTER_SITES=\tGNOME\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1636
+#, no-wrap
+msgid ""
+"MAINTAINER=\tkwm@FreeBSD.org\n"
+"COMMENT=\tInteractive tool for performing search and replace operations\n"
+"WWW=\t\thttp://regexxer.sourceforge.net/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1640
+#, no-wrap
+msgid ""
+"USES=\t\tgettext gmake localbase:ldflags pathfix pkgconfig tar:xz\n"
+"GNU_CONFIGURE=\tyes\n"
+"USE_GNOME=\tgnomeprefix intlhack gtksourceviewmm3\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1642
+#, no-wrap
+msgid "GLIB_SCHEMAS=\torg.regexxer.gschema.xml\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1650
+msgid ""
+"The `USE_GNOME` macro without any arguments does not add any dependencies to "
+"the port. `USE_GNOME` cannot be set after [.filename]#bsd.port.pre.mk#."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1653
+#, no-wrap
+msgid "Variables"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1659
+msgid ""
+"This section explains which macros are available and how they are used. "
+"Like they are used in the above example. The <<gnome-components>> has a "
+"more in-depth explanation. `USE_GNOME` has to be set for these macros to be "
+"of use."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1660
+#, no-wrap
+msgid "`GLIB_SCHEMAS`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1663
+msgid ""
+"List of all the glib schema files the port installs. The macro will add the "
+"files to the port plist and handle the registration of these files on "
+"install and deinstall."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1668
+msgid ""
+"The glib schema files are written in XML and end with the [."
+"filename]#gschema.xml# extension. They are installed in the [."
+"filename]#share/glib-2.0/schemas/# directory. These schema files contain "
+"all application config values with their default settings. The actual "
+"database used by the applications is built by glib-compile-schema, which is "
+"run by the `GLIB_SCHEMAS` macro."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1672
+#, no-wrap
+msgid "GLIB_SCHEMAS=foo.gschema.xml\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1678
+msgid ""
+"Do not add glib schemas to the [.filename]#pkg-plist#. If they are listed "
+"in [.filename]#pkg-plist#, they will not be registered and the applications "
+"might not work properly."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1680
+#, no-wrap
+msgid "`GCONF_SCHEMAS`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1683
+msgid ""
+"List all the gconf schema files. The macro will add the schema files to the "
+"port plist and will handle their registration on install and deinstall."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1688
+msgid ""
+"GConf is the XML-based database that virtually all GNOME applications use "
+"for storing their settings. These files are installed into the [."
+"filename]#etc/gconf/schemas# directory. This database is defined by "
+"installed schema files that are used to generate [.filename]#%gconf.xml# key "
+"files. For each schema file installed by the port, there must be an entry "
+"in the [.filename]#Makefile#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1692
+#, no-wrap
+msgid "GCONF_SCHEMAS=my_app.schemas my_app2.schemas my_app3.schemas\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1698
+msgid ""
+"Gconf schemas are listed in the `GCONF_SCHEMAS` macro rather than [."
+"filename]#pkg-plist#. If they are listed in [.filename]#pkg-plist#, they "
+"will not be registered and the applications might not work properly."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1700
+#, no-wrap
+msgid "`INSTALLS_OMF`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1704
+msgid ""
+"Open Source Metadata Framework (OMF) files are commonly used by GNOME 2 "
+"applications. These files contain the application help file information, "
+"and require special processing by ScrollKeeper/rarian. To properly register "
+"OMF files when installing GNOME applications from packages, make sure that "
+"`omf` files are listed in `pkg-plist` and that the port [."
+"filename]#Makefile# has `INSTALLS_OMF` defined:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1708
+#, no-wrap
+msgid "INSTALLS_OMF=yes\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1711
+msgid ""
+"When set, [.filename]#bsd.gnome.mk# automatically scans [.filename]#pkg-"
+"plist# and adds appropriate `@exec` and `@unexec` directives for each [."
+"filename]#.omf# to track in the OMF registration database."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1713
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1723
+#, no-wrap
+msgid "GNOME Components"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1721
+msgid ""
+"For further help with a GNOME port, look at some of the link:https://www."
+"FreeBSD.org/ports/gnome.html[existing ports] for examples. The link:https://"
+"www.FreeBSD.org/gnome/[FreeBSD GNOME page] has contact information if more "
+"help is needed. The components are divided into GNOME components that are "
+"currently in use and legacy components. If the component supports argument, "
+"they are listed between parenthesis in the description. The first is the "
+"default. \"Both\" is shown if the component defaults to adding to both "
+"build and run dependencies."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1727
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1896
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1913
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2082
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3899
+#, no-wrap
+msgid "Component"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1728
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1914
+#, no-wrap
+msgid "Associated program"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1731
+#, no-wrap
+msgid "`atk`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1732
+#, no-wrap
+msgid "accessibility/atk"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1734
+#, no-wrap
+msgid "Accessibility toolkit (ATK)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1735
+#, no-wrap
+msgid "`atkmm`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1736
+#, no-wrap
+msgid "accessibility/atkmm"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1738
+#, no-wrap
+msgid "c++ bindings for atk"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1739
+#, no-wrap
+msgid "`cairo`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1740
+#, no-wrap
+msgid "graphics/cairo"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1742
+#, no-wrap
+msgid "Vector graphics library with cross-device output support"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1743
+#, no-wrap
+msgid "`cairomm`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1744
+#, no-wrap
+msgid "graphics/cairomm"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1746
+#, no-wrap
+msgid "c++ bindings for cairo"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1747
+#, no-wrap
+msgid "`dconf`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1748
+#, no-wrap
+msgid "devel/dconf"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1750
+#, no-wrap
+msgid "Configuration database system (both, build, run)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1751
+#, no-wrap
+msgid "`evolutiondataserver3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1752
+#, no-wrap
+msgid "databases/evolution-data-server"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1754
+#, no-wrap
+msgid "Data backends for the Evolution integrated mail/PIM suite"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1755
+#, no-wrap
+msgid "`gdkpixbuf2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1756
+#, no-wrap
+msgid "graphics/gdk-pixbuf2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1758
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1940
+#, no-wrap
+msgid "Graphics library for GTK+"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1759
+#, no-wrap
+msgid "`glib20`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1760
+#, no-wrap
+msgid "devel/glib20"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1762
+#, no-wrap
+msgid "GNOME core library `glib20`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1763
+#, no-wrap
+msgid "`glibmm`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1764
+#, no-wrap
+msgid "devel/glibmm"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1766
+#, no-wrap
+msgid "c++ bindings for glib20"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1767
+#, no-wrap
+msgid "`gnomecontrolcenter3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1768
+#, no-wrap
+msgid "sysutils/gnome-control-center"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1770
+#, no-wrap
+msgid "GNOME 3 Control Center"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1771
+#, no-wrap
+msgid "`gnomedesktop3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1772
+#, no-wrap
+msgid "x11/gnome-desktop"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1774
+#, no-wrap
+msgid "GNOME 3 desktop UI library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1775
+#, no-wrap
+msgid "`gsound`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1776
+#, no-wrap
+msgid "audio/gsound"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1778
+#, no-wrap
+msgid "GObject library for playing system sounds (both, build, run)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1779
+#, no-wrap
+msgid "`gtk-update-icon-cache`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1780
+#, no-wrap
+msgid "graphics/gtk-update-icon-cache"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1782
+#, no-wrap
+msgid "Gtk-update-icon-cache utility from the Gtk+ toolkit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1783
+#, no-wrap
+msgid "`gtk20`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1784
+#, no-wrap
+msgid "x11-toolkits/gtk20"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1786
+#, no-wrap
+msgid "Gtk+ 2 toolkit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1787
+#, no-wrap
+msgid "`gtk30`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1788
+#, no-wrap
+msgid "x11-toolkits/gtk30"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1790
+#, no-wrap
+msgid "Gtk+ 3 toolkit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1791
+#, no-wrap
+msgid "`gtkmm20`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1792
+#, no-wrap
+msgid "x11-toolkits/gtkmm20"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1794
+#, no-wrap
+msgid "c++ bindings 2.0 for the gtk20 toolkit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1795
+#, no-wrap
+msgid "`gtkmm24`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1796
+#, no-wrap
+msgid "x11-toolkits/gtkmm24"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1798
+#, no-wrap
+msgid "c++ bindings 2.4 for the gtk20 toolkit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1799
+#, no-wrap
+msgid "`gtkmm30`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1800
+#, no-wrap
+msgid "x11-toolkits/gtkmm30"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1802
+#, no-wrap
+msgid "c++ bindings 3.0 for the gtk30 toolkit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1803
+#, no-wrap
+msgid "`gtksourceview2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1804
+#, no-wrap
+msgid "x11-toolkits/gtksourceview2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1806
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1984
+#, no-wrap
+msgid "Widget that adds syntax highlighting to GtkTextView"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1807
+#, no-wrap
+msgid "`gtksourceview3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1808
+#, no-wrap
+msgid "x11-toolkits/gtksourceview3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1810
+#, no-wrap
+msgid "Text widget that adds syntax highlighting to the GtkTextView widget"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1811
+#, no-wrap
+msgid "`gtksourceviewmm3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1812
+#, no-wrap
+msgid "x11-toolkits/gtksourceviewmm3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1814
+#, no-wrap
+msgid "c++ bindings for the gtksourceview3 library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1815
+#, no-wrap
+msgid "`gvfs`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1816
+#, no-wrap
+msgid "devel/gvfs"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1818
+#, no-wrap
+msgid "GNOME virtual file system"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1819
+#, no-wrap
+msgid "`intltool`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1820
+#, no-wrap
+msgid "textproc/intltool"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1822
+#, no-wrap
+msgid "Tool for internationalization (also see intlhack)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1823
+#, no-wrap
+msgid "`introspection`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1824
+#, no-wrap
+msgid "devel/gobject-introspection"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1826
+#, no-wrap
+msgid "Basic introspection bindings and tools to generate introspection bindings. Most of the time :build is enough, :both/:run is only need for applications that use introspection bindings. (both, build, run)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1827
+#, no-wrap
+msgid "`libgda5`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1828
+#, no-wrap
+msgid "databases/libgda5"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1830
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2000
+#, no-wrap
+msgid "Provides uniform access to different kinds of data sources"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1831
+#, no-wrap
+msgid "`libgda5-ui`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1832
+#, no-wrap
+msgid "databases/libgda5-ui"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1834
+#, no-wrap
+msgid "UI library from the libgda5 library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1835
+#, no-wrap
+msgid "`libgdamm5`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1836
+#, no-wrap
+msgid "databases/libgdamm5"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1838
+#, no-wrap
+msgid "c++ bindings for the libgda5 library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1839
+#, no-wrap
+msgid "`libgsf`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1840
+#, no-wrap
+msgid "devel/libgsf"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1842
+#, no-wrap
+msgid "Extensible I/O abstraction for dealing with structured file formats"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1843
+#, no-wrap
+msgid "`librsvg2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1844
+#, no-wrap
+msgid "graphics/librsvg2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1846
+#, no-wrap
+msgid "Library for parsing and rendering SVG vector-graphic files"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1847
+#, no-wrap
+msgid "`libsigc++20`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1848
+#, no-wrap
+msgid "devel/libsigc++20"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1850
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2044
+#, no-wrap
+msgid "Callback Framework for C++"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1851
+#, no-wrap
+msgid "`libxml++26`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1852
+#, no-wrap
+msgid "textproc/libxml++26"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1854
+#, no-wrap
+msgid "c++ bindings for the libxml2 library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1855
+#, no-wrap
+msgid "`libxml2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1856
+#, no-wrap
+msgid "textproc/libxml2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1858
+#, no-wrap
+msgid "XML parser library (both, build, run)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1859
+#, no-wrap
+msgid "`libxslt`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1860
+#, no-wrap
+msgid "textproc/libxslt"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1862
+#, no-wrap
+msgid "XSLT C library (both, build, run)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1863
+#, no-wrap
+msgid "`metacity`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1864
+#, no-wrap
+msgid "x11-wm/metacity"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1866
+#, no-wrap
+msgid "Window manager from GNOME"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1867
+#, no-wrap
+msgid "`nautilus3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1868
+#, no-wrap
+msgid "x11-fm/nautilus"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1870
+#, no-wrap
+msgid "GNOME file manager"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1871
+#, no-wrap
+msgid "`pango`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1872
+#, no-wrap
+msgid "x11-toolkits/pango"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1874
+#, no-wrap
+msgid "Open-source framework for the layout and rendering of i18n text"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1875
+#, no-wrap
+msgid "`pangomm`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1876
+#, no-wrap
+msgid "x11-toolkits/pangomm"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1878
+#, no-wrap
+msgid "c++ bindings for the pango library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1879
+#, no-wrap
+msgid "`py3gobject3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1880
+#, no-wrap
+msgid "devel/py3-gobject3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1882
+#, no-wrap
+msgid "Python 3, GObject 3.0 bindings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1883
+#, no-wrap
+msgid "`pygobject3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1884
+#, no-wrap
+msgid "devel/py-gobject3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1886
+#, no-wrap
+msgid "Python 2, GObject 3.0 bindings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1887
+#, no-wrap
+msgid "`vte3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1888
+#, no-wrap
+msgid "x11-toolkits/vte3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1889
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2075
+#, no-wrap
+msgid "Terminal widget with improved accessibility and I18N support"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1892
+#, no-wrap
+msgid "GNOME Macro Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1899
+#, no-wrap
+msgid "`gnomeprefix`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1901
+#, no-wrap
+msgid "Supply `configure` with some default locations."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1902
+#, no-wrap
+msgid "`intlhack`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1904
+#, no-wrap
+msgid "Same as intltool, but patches to make sure [.filename]#share/locale/# is used. Please only use when `intltool` alone is not enough."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1905
+#, no-wrap
+msgid "`referencehack`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1906
+#, no-wrap
+msgid "This macro is there to help splitting of the API or reference documentation into its own port."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1909
+#, no-wrap
+msgid "GNOME Legacy Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1917
+#, no-wrap
+msgid "`atspi`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1918
+#, no-wrap
+msgid "accessibility/at-spi"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1920
+#, no-wrap
+msgid "Assistive Technology Service Provider Interface"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1921
+#, no-wrap
+msgid "`esound`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1922
+#, no-wrap
+msgid "audio/esound"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1924
+#, no-wrap
+msgid "Enlightenment sound package"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1925
+#, no-wrap
+msgid "`gal2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1926
+#, no-wrap
+msgid "x11-toolkits/gal2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1928
+#, no-wrap
+msgid "Collection of widgets taken from GNOME 2 gnumeric"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1929
+#, no-wrap
+msgid "`gconf2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1930
+#, no-wrap
+msgid "devel/gconf2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1932
+#, no-wrap
+msgid "Configuration database system for GNOME 2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1933
+#, no-wrap
+msgid "`gconfmm26`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1934
+#, no-wrap
+msgid "devel/gconfmm26"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1936
+#, no-wrap
+msgid "c++ bindings for gconf2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1937
+#, no-wrap
+msgid "`gdkpixbuf`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1938
+#, no-wrap
+msgid "graphics/gdk-pixbuf"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1941
+#, no-wrap
+msgid "`glib12`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1942
+#, no-wrap
+msgid "devel/glib12"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1944
+#, no-wrap
+msgid "glib 1.2 core library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1945
+#, no-wrap
+msgid "`gnomedocutils`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1946
+#, no-wrap
+msgid "textproc/gnome-doc-utils"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1948
+#, no-wrap
+msgid "GNOME doc utils"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1949
+#, no-wrap
+msgid "`gnomemimedata`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1950
+#, no-wrap
+msgid "misc/gnome-mime-data"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1952
+#, no-wrap
+msgid "MIME and Application database for GNOME 2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1953
+#, no-wrap
+msgid "`gnomesharp20`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1954
+#, no-wrap
+msgid "x11-toolkits/gnome-sharp20"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1956
+#, no-wrap
+msgid "GNOME 2 interfaces for the .NET runtime"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1957
+#, no-wrap
+msgid "`gnomespeech`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1958
+#, no-wrap
+msgid "accessibility/gnome-speech"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1960
+#, no-wrap
+msgid "GNOME 2 text-to-speech API"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1961
+#, no-wrap
+msgid "`gnomevfs2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1962
+#, no-wrap
+msgid "devel/gnome-vfs"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1964
+#, no-wrap
+msgid "GNOME 2 Virtual File System"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1965
+#, no-wrap
+msgid "`gtk12`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1966
+#, no-wrap
+msgid "x11-toolkits/gtk12"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1968
+#, no-wrap
+msgid "Gtk+ 1.2 toolkit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1969
+#, no-wrap
+msgid "`gtkhtml3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1970
+#, no-wrap
+msgid "www/gtkhtml3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1972
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1976
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2032
+#, no-wrap
+msgid "Lightweight HTML rendering/printing/editing engine"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1973
+#, no-wrap
+msgid "`gtkhtml4`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1974
+#, no-wrap
+msgid "www/gtkhtml4"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1977
+#, no-wrap
+msgid "`gtksharp20`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1978
+#, no-wrap
+msgid "x11-toolkits/gtk-sharp20"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1980
+#, no-wrap
+msgid "GTK+ and GNOME 2 interfaces for the .NET runtime"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1981
+#, no-wrap
+msgid "`gtksourceview`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1982
+#, no-wrap
+msgid "x11-toolkits/gtksourceview"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1985
+#, no-wrap
+msgid "`libartgpl2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1986
+#, no-wrap
+msgid "graphics/libart_lgpl"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1988
+#, no-wrap
+msgid "Library for high-performance 2D graphics"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1989
+#, no-wrap
+msgid "`libbonobo`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1990
+#, no-wrap
+msgid "devel/libbonobo"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1992
+#, no-wrap
+msgid "Component and compound document system for GNOME 2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1993
+#, no-wrap
+msgid "`libbonoboui`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1994
+#, no-wrap
+msgid "x11-toolkits/libbonoboui"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1996
+#, no-wrap
+msgid "GUI frontend to the libbonobo component of GNOME 2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1997
+#, no-wrap
+msgid "`libgda4`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:1998
+#, no-wrap
+msgid "databases/libgda4"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2001
+#, no-wrap
+msgid "`libglade2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2002
+#, no-wrap
+msgid "devel/libglade2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2004
+#, no-wrap
+msgid "GNOME 2 glade library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2005
+#, no-wrap
+msgid "`libgnome`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2006
+#, no-wrap
+msgid "x11/libgnome"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2008
+#, no-wrap
+msgid "Libraries for GNOME 2, a GNU desktop environment"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2009
+#, no-wrap
+msgid "`libgnomecanvas`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2010
+#, no-wrap
+msgid "graphics/libgnomecanvas"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2012
+#, no-wrap
+msgid "Graphics library for GNOME 2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2013
+#, no-wrap
+msgid "`libgnomekbd`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2014
+#, no-wrap
+msgid "x11/libgnomekbd"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2016
+#, no-wrap
+msgid "GNOME 2 keyboard shared library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2017
+#, no-wrap
+msgid "`libgnomeprint`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2018
+#, no-wrap
+msgid "print/libgnomeprint"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2020
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2024
+#, no-wrap
+msgid "Gnome 2 print support library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2021
+#, no-wrap
+msgid "`libgnomeprintui`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2022
+#, no-wrap
+msgid "x11-toolkits/libgnomeprintui"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2025
+#, no-wrap
+msgid "`libgnomeui`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2026
+#, no-wrap
+msgid "x11-toolkits/libgnomeui"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2028
+#, no-wrap
+msgid "Libraries for the GNOME 2 GUI, a GNU desktop environment"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2029
+#, no-wrap
+msgid "`libgtkhtml`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2030
+#, no-wrap
+msgid "www/libgtkhtml"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2033
+#, no-wrap
+msgid "`libgtksourceviewmm`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2034
+#, no-wrap
+msgid "x11-toolkits/libgtksourceviewmm"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2036
+#, no-wrap
+msgid "c++ binding of GtkSourceView"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2037
+#, no-wrap
+msgid "`libidl`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2038
+#, no-wrap
+msgid "devel/libIDL"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2040
+#, no-wrap
+msgid "Library for creating trees of CORBA IDL file"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2041
+#, no-wrap
+msgid "`libsigc++12`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2042
+#, no-wrap
+msgid "devel/libsigc++12"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2045
+#, no-wrap
+msgid "`libwnck`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2046
+#, no-wrap
+msgid "x11-toolkits/libwnck"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2048
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2052
+#, no-wrap
+msgid "Library used for writing pagers and taskslists"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2049
+#, no-wrap
+msgid "`libwnck3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2050
+#, no-wrap
+msgid "x11-toolkits/libwnck3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2053
+#, no-wrap
+msgid "`orbit2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2054
+#, no-wrap
+msgid "devel/ORBit2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2056
+#, no-wrap
+msgid "High-performance CORBA ORB with support for the C language"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2057
+#, no-wrap
+msgid "`pygnome2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2058
+#, no-wrap
+msgid "x11-toolkits/py-gnome2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2060
+#, no-wrap
+msgid "Python bindings for GNOME 2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2061
+#, no-wrap
+msgid "`pygobject`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2062
+#, no-wrap
+msgid "devel/py-gobject"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2064
+#, no-wrap
+msgid "Python 2, GObject 2.0 bindings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2065
+#, no-wrap
+msgid "`pygtk2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2066
+#, no-wrap
+msgid "x11-toolkits/py-gtk2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2068
+#, no-wrap
+msgid "Set of Python bindings for GTK+"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2069
+#, no-wrap
+msgid "`pygtksourceview`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2070
+#, no-wrap
+msgid "x11-toolkits/py-gtksourceview"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2072
+#, no-wrap
+msgid "Python bindings for GtkSourceView 2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2073
+#, no-wrap
+msgid "`vte`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2074
+#, no-wrap
+msgid "x11-toolkits/vte"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2078
+#, no-wrap
+msgid "Deprecated Components: Do Not Use"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2085
+#, no-wrap
+msgid "`pangox-compat`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2086
+#, no-wrap
+msgid "pangox-compat has been deprecated and split off from the pango package."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2089
+#, no-wrap
+msgid "Using Qt"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2094
+msgid ""
+"For ports that are part of Qt itself, see crossref:uses[uses-qt-dist,`qt-"
+"dist`]."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2097
+#, no-wrap
+msgid "Ports That Require Qt"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2102
+msgid ""
+"The Ports Collection provides support for Qt 5 and Qt 6 with `USES+=qt:5` "
+"and `USES+=qt:6` respectively. Set `USE_QT` to the list of required Qt "
+"components (libraries, tools, plugins)."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2104
+msgid ""
+"The Qt framework exports a number of variables which can be used by ports, "
+"some of them listed below:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2106
+#, no-wrap
+msgid "Variables Provided to Ports That Use Qt"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2110
+#, no-wrap
+msgid "`QMAKE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2112
+#, no-wrap
+msgid "Full path to `qmake` binary."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2113
+#, no-wrap
+msgid "`LRELEASE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2115
+#, no-wrap
+msgid "Full path to `lrelease` utility."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2116
+#, no-wrap
+msgid "`MOC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2118
+#, no-wrap
+msgid "Full path to `moc`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2119
+#, no-wrap
+msgid "`RCC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2121
+#, no-wrap
+msgid "Full path to `rcc`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2122
+#, no-wrap
+msgid "`UIC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2124
+#, no-wrap
+msgid "Full path to `uic`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2125
+#, no-wrap
+msgid "`QT_INCDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2127
+#, no-wrap
+msgid "Qt include directory."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2128
+#, no-wrap
+msgid "`QT_LIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2130
+#, no-wrap
+msgid "Qt libraries path."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2131
+#, no-wrap
+msgid "`QT_PLUGINDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2132
+#, no-wrap
+msgid "Qt plugins path."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2135
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3845
+#, no-wrap
+msgid "Component Selection"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2142
+msgid ""
+"Individual Qt tool and library dependencies must be specified in `USE_QT`. "
+"Every component can be suffixed with `_build` or `_run`, the suffix "
+"indicating whether the dependency on the component is at buildtime or "
+"runtime. If unsuffixed, the component will be depended on at both build- "
+"and runtime. Usually, library components are specified unsuffixed, tool "
+"components are mostly specified with the `_build` suffix and plugin "
+"components are specified with the `_run` suffix. The most commonly used "
+"components are listed below (all available components are listed in "
+"`_USE_QT_ALL`, which is generated from `_USE_QT_COMMON` and "
+"`_USE_QT[56]_ONLY` in [.filename]#/usr/ports/Mk/Uses/qt.mk#):"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2144
+#, no-wrap
+msgid "Available Qt Library Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2148
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2392
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2409
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2540
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3119
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3835
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3855
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3880
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3984
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4154
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4206
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4298
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4389
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4451
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4712
+#, no-wrap
+msgid "Name"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2151
+#, no-wrap
+msgid "`3d`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2153
+#, no-wrap
+msgid "Qt3D module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2154
+#, no-wrap
+msgid "`5compat`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2156
+#, no-wrap
+msgid "Qt 5 compatibility module for Qt 6"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2157
+#, no-wrap
+msgid "`assistant`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2159
+#, no-wrap
+msgid "Qt 5 documentation browser"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2160
+#, no-wrap
+msgid "`base`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2162
+#, no-wrap
+msgid "Qt 6 base module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2163
+#, no-wrap
+msgid "`canvas3d`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2165
+#, no-wrap
+msgid "Qt canvas3d module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2166
+#, no-wrap
+msgid "`charts`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2168
+#, no-wrap
+msgid "Qt 5 charts module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2169
+#, no-wrap
+msgid "`concurrent`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2171
+#, no-wrap
+msgid "Qt multi-threading module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2172
+#, no-wrap
+msgid "`connectivity`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2174
+#, no-wrap
+msgid "Qt connectivity (Bluetooth/NFC) module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2175
+#, no-wrap
+msgid "`core`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2177
+#, no-wrap
+msgid "Qt core non-graphical module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2178
+#, no-wrap
+msgid "`datavis3d`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2180
+#, no-wrap
+msgid "Qt 5 3D data visualization module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2181
+#, no-wrap
+msgid "`dbus`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2183
+#, no-wrap
+msgid "Qt D-Bus inter-process communication module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2184
+#, no-wrap
+msgid "`declarative`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2186
+#, no-wrap
+msgid "Qt declarative framework for dynamic user interfaces"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2187
+#, no-wrap
+msgid "`designer`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2189
+#, no-wrap
+msgid "Qt 5 graphical user interface designer"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2190
+#, no-wrap
+msgid "`diag`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2192
+#, no-wrap
+msgid "Tool for reporting diagnostic information about Qt and its environment"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2193
+#, no-wrap
+msgid "`doc`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2195
+#, no-wrap
+msgid "Qt 5 documentation"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2196
+#, no-wrap
+msgid "`examples`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2198
+#, no-wrap
+msgid "Qt 5 examples sourcecode"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2199
+#, no-wrap
+msgid "`gamepad`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2201
+#, no-wrap
+msgid "Qt 5 Gamepad Module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2202
+#, no-wrap
+msgid "`graphicaleffects`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2204
+#, no-wrap
+msgid "Qt Quick graphical effects"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2205
+#, no-wrap
+msgid "`gui`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2207
+#, no-wrap
+msgid "Qt graphical user interface module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2208
+#, no-wrap
+msgid "`help`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2210
+#, no-wrap
+msgid "Qt online help integration module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2211
+#, no-wrap
+msgid "`l10n`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2213
+#, no-wrap
+msgid "Qt localized messages"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2214
+#, no-wrap
+msgid "`languageserver`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2216
+#, no-wrap
+msgid "Qt 6 Language Server Protocol implementation"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2217
+#, no-wrap
+msgid "`linguist`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2219
+#, no-wrap
+msgid "Qt 5 translation tool"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2220
+#, no-wrap
+msgid "`location`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2222
+#, no-wrap
+msgid "Qt location module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2223
+#, no-wrap
+msgid "`lottie`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2225
+#, no-wrap
+msgid "Qt 6 QML API for rendering graphics and animations"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2226
+#, no-wrap
+msgid "`multimedia`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2228
+#, no-wrap
+msgid "Qt audio, video, radio and camera support module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2229
+#, no-wrap
+msgid "`network`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2231
+#, no-wrap
+msgid "Qt network module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2232
+#, no-wrap
+msgid "`networkauth`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2234
+#, no-wrap
+msgid "Qt network auth module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2235
+#, no-wrap
+msgid "`opengl`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2237
+#, no-wrap
+msgid "Qt 5-compatible OpenGL support module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2238
+#, no-wrap
+msgid "`paths`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2240
+#, no-wrap
+msgid "Command line client to QStandardPaths"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2241
+#, no-wrap
+msgid "`phonon4`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2243
+#, no-wrap
+msgid "KDE multimedia framework"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2244
+#, no-wrap
+msgid "`pixeltool`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2246
+#, no-wrap
+msgid "Qt 5 screen magnifier"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2247
+#, no-wrap
+msgid "`plugininfo`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2249
+#, no-wrap
+msgid "Qt 5 plugin metadata dumper"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2250
+#, no-wrap
+msgid "`positioning`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2252
+#, no-wrap
+msgid "Qt 6 positioning API from sources such as satellite, wifi or text files."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2253
+#, no-wrap
+msgid "`printsupport`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2255
+#, no-wrap
+msgid "Qt print support module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2256
+#, no-wrap
+msgid "`qdbus`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2258
+#, no-wrap
+msgid "Qt command-line interface to D-Bus"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2259
+#, no-wrap
+msgid "`qdbusviewer`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2261
+#, no-wrap
+msgid "Qt 5 graphical interface to D-Bus"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2262
+#, no-wrap
+msgid "`qdoc`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2264
+#, no-wrap
+msgid "Qt documentation generator"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2265
+#, no-wrap
+msgid "`qdoc-data`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2267
+#, no-wrap
+msgid "QDoc configuration files"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2268
+#, no-wrap
+msgid "`qev`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2270
+#, no-wrap
+msgid "Qt QWidget events introspection tool"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2271
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2401
+#, no-wrap
+msgid "`qmake`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2273
+#, no-wrap
+msgid "Qt Makefile generator"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2274
+#, no-wrap
+msgid "`quickcontrols`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2276
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2279
+#, no-wrap
+msgid "Set of controls for building complete interfaces in Qt Quick"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2277
+#, no-wrap
+msgid "`quickcontrols2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2280
+#, no-wrap
+msgid "`remoteobjects`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2282
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2291
+#, no-wrap
+msgid "Qt 5 SXCML module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2283
+#, no-wrap
+msgid "`script`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2285
+#, no-wrap
+msgid "Qt 4-compatible scripting module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2286
+#, no-wrap
+msgid "`scripttools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2288
+#, no-wrap
+msgid "Qt Script additional components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2289
+#, no-wrap
+msgid "`scxml`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2292
+#, no-wrap
+msgid "`sensors`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2294
+#, no-wrap
+msgid "Qt sensors module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2295
+#, no-wrap
+msgid "`serialbus`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2297
+#, no-wrap
+msgid "Qt functions to access industrial bus systems"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2298
+#, no-wrap
+msgid "`serialport`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2300
+#, no-wrap
+msgid "Qt functions to access serial ports"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2301
+#, no-wrap
+msgid "`shadertools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2303
+#, no-wrap
+msgid "Qt 6 tools for the cross-platform Qt shader pipeline"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2304
+#, no-wrap
+msgid "`speech`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2306
+#, no-wrap
+msgid "Accessibility features for Qt5"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2307
+#, no-wrap
+msgid "`sql`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2309
+#, no-wrap
+msgid "Qt SQL database integration module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2310
+#, no-wrap
+msgid "`sql-ibase`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2312
+#, no-wrap
+msgid "Qt InterBase/Firebird database plugin"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2313
+#, no-wrap
+msgid "`sql-mysql`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2315
+#, no-wrap
+msgid "Qt MySQL database plugin"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2316
+#, no-wrap
+msgid "`sql-odbc`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2318
+#, no-wrap
+msgid "Qt Open Database Connectivity plugin"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2319
+#, no-wrap
+msgid "`sql-pgsql`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2321
+#, no-wrap
+msgid "Qt PostgreSQL database plugin"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2322
+#, no-wrap
+msgid "`sql-sqlite2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2324
+#, no-wrap
+msgid "Qt SQLite 2 database plugin"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2325
+#, no-wrap
+msgid "`sql-sqlite3`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2327
+#, no-wrap
+msgid "Qt SQLite 3 database plugin"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2328
+#, no-wrap
+msgid "`sql-tds`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2330
+#, no-wrap
+msgid "Qt TDS Database Connectivity database plugin"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2331
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3914
+#, no-wrap
+msgid "`svg`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2333
+#, no-wrap
+msgid "Qt SVG support module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2334
+#, no-wrap
+msgid "`testlib`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2336
+#, no-wrap
+msgid "Qt unit testing module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2337
+#, no-wrap
+msgid "`tools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2339
+#, no-wrap
+msgid "Qt 6 assorted tools"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2340
+#, no-wrap
+msgid "`translations`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2342
+#, no-wrap
+msgid "Qt 6 translation module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2343
+#, no-wrap
+msgid "`uiplugin`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2345
+#, no-wrap
+msgid "Custom Qt widget plugin interface for Qt Designer"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2346
+#, no-wrap
+msgid "`uitools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2348
+#, no-wrap
+msgid "Qt Designer UI forms support module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2349
+#, no-wrap
+msgid "`virtualkeyboard`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2351
+#, no-wrap
+msgid "Qt 5 Virtual Keyboard Module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2352
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3074
+#, no-wrap
+msgid "`wayland`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2354
+#, no-wrap
+msgid "Qt 5 wrapper for Wayland"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2355
+#, no-wrap
+msgid "`webchannel`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2357
+#, no-wrap
+msgid "Qt 5 library for integration of C++/QML with HTML/js clients"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2358
+#, no-wrap
+msgid "`webengine`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2360
+#, no-wrap
+msgid "Qt 5 library to render web content"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2361
+#, no-wrap
+msgid "`webkit`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2363
+#, no-wrap
+msgid "QtWebKit with a more modern WebKit code base"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2364
+#, no-wrap
+msgid "`websockets`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2366
+#, no-wrap
+msgid "Qt implementation of WebSocket protocol"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2367
+#, no-wrap
+msgid "`websockets-qml`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2369
+#, no-wrap
+msgid "Qt implementation of WebSocket protocol (QML bindings)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2370
+#, no-wrap
+msgid "`webview`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2372
+#, no-wrap
+msgid "Qt component for displaying web content"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2373
+#, no-wrap
+msgid "`widgets`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2375
+#, no-wrap
+msgid "Qt C++ widgets module"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2376
+#, no-wrap
+msgid "`x11extras`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2378
+#, no-wrap
+msgid "Qt platform-specific features for X11-based systems"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2379
+#, no-wrap
+msgid "`xml`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2381
+#, no-wrap
+msgid "Qt SAX and DOM implementations"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2382
+#, no-wrap
+msgid "`xmlpatterns`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2383
+#, no-wrap
+msgid "Qt support for XPath, XQuery, XSLT and XML Schema"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2386
+msgid ""
+"To determine the libraries an application depends on, run `ldd` on the main "
+"executable after a successful compilation."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2388
+#, no-wrap
+msgid "Available Qt Tool Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2395
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3122
+#, no-wrap
+msgid "`buildtools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2397
+#, no-wrap
+msgid "build tools (`moc`, `rcc`), needed for almost every Qt application."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2398
+#, no-wrap
+msgid "`linguisttools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2400
+#, no-wrap
+msgid "localization tools: `lrelease`, `lupdate`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2402
+#, no-wrap
+msgid "Makefile generator/build utility"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2405
+#, no-wrap
+msgid "Available Qt Plugin Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2412
+#, no-wrap
+msgid "`imageformats`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2413
+#, no-wrap
+msgid "plugins for TGA, TIFF, and MNG image formats"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2416
+#, no-wrap
+msgid "Selecting Qt 5 Components"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2422
+msgid ""
+"In this example, the ported application uses the Qt 5 graphical user "
+"interface library, the Qt 5 core library, all of the Qt 5 code generation "
+"tools and Qt 5's Makefile generator. Since the `gui` library implies a "
+"dependency on the core library, `core` does not need to be specified. The "
+"Qt 5 code generation tools `moc`, `uic` and `rcc`, as well as the Makefile "
+"generator `qmake` are only needed at buildtime, thus they are specified with "
+"the `_build` suffix:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2427
+#, no-wrap
+msgid ""
+"USES=\tqt:5\n"
+"USE_QT=\tgui buildtools_build qmake_build\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2432
+#, no-wrap
+msgid "Using `qmake`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2438
+msgid ""
+"If the application provides a qmake project file ([.filename]#*.pro#), "
+"define `USES= qmake` along with `USE_QT`. `USES= qmake` already implies a "
+"build dependency on qmake, therefore the qmake component can be omitted from "
+"`USE_QT`. Similar to <<using-cmake,CMake>>, qmake supports out-of-source "
+"builds, which can be enabled by specifying the `outsource` argument (see "
+"<<using-qmake-example,`USES= qmake` example>>). Also see <<using-qmake-"
+"arguments>>."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2440
+#, no-wrap
+msgid "Possible Arguments for `USES= qmake`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2447
+#, no-wrap
+msgid "`no_configure`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2449
+#, no-wrap
+msgid "Do not add the configure target. This is implied by `HAS_CONFIGURE=yes` and `GNU_CONFIGURE=yes`. It is required when the build only needs the environment setup from `USES= qmake`, but otherwise runs `qmake` on its own."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2450
+#, no-wrap
+msgid "`no_env`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2452
+#, no-wrap
+msgid "Suppress modification of the configure and make environments. It is only required when `qmake` is used to configure the software and the build fails to understand the environment setup by `USES= qmake`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2453
+#, no-wrap
+msgid "`norecursive`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2455
+#, no-wrap
+msgid "Do not pass the `-recursive` argument to `qmake`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2456
+#, no-wrap
+msgid "`outsource`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2457
+#, no-wrap
+msgid "Perform an out-of-source build."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2460
+#, no-wrap
+msgid "Variables for Ports That Use `qmake`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2467
+#, no-wrap
+msgid "`QMAKE_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2469
+#, no-wrap
+msgid "Port specific qmake flags to be passed to the `qmake` binary."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2470
+#, no-wrap
+msgid "`QMAKE_ENV`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2472
+#, no-wrap
+msgid "Environment variables to be set for the `qmake` binary. The default is `${CONFIGURE_ENV}`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2473
+#, no-wrap
+msgid "`QMAKE_SOURCE_PATH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2474
+#, no-wrap
+msgid "Path to qmake project files ([.filename]#.pro#). The default is `${WRKSRC}` if an out-of-source build is requested, empty otherwise."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2477
+msgid "When using `USES= qmake`, these settings are deployed:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2484
+#, no-wrap
+msgid ""
+"CONFIGURE_ARGS+=\t--with-qt-includes=${QT_INCDIR} \\\n"
+"\t\t\t--with-qt-libraries=${QT_LIBDIR} \\\n"
+"\t\t\t--with-extra-libs=${LOCALBASE}/lib \\\n"
+"\t\t\t--with-extra-includes=${LOCALBASE}/include\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2488
+#, no-wrap
+msgid ""
+"CONFIGURE_ENV+=\tQTDIR=\"${QT_PREFIX}\" QMAKE=\"${QMAKE}\" \\\n"
+"\t\tMOC=\"${MOC}\" RCC=\"${RCC}\" UIC=\"${UIC}\" \\\n"
+"\t\tQMAKESPEC=\"${QMAKESPEC}\"\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2492
+#, no-wrap
+msgid ""
+"PLIST_SUB+=\tQT_INCDIR=${QT_INCDIR_REL} \\\n"
+"\t\tQT_LIBDIR=${QT_LIBDIR_REL} \\\n"
+"\t\tQT_PLUGINDIR=${QT_PLUGINDIR_REL}\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2496
+msgid ""
+"Some configure scripts do not support the arguments above. To suppress "
+"modification of `CONFIGURE_ENV` and `CONFIGURE_ARGS`, set `USES= qmake:"
+"no_env`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2498
+#, no-wrap
+msgid "`USES= qmake` Example"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2502
+msgid "This snippet demonstrates the use of qmake for a Qt 5 port:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2507
+#, no-wrap
+msgid ""
+"USES=\tqmake:outsource qt:5\n"
+"USE_QT=\tbuildtools_build\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2512
+msgid ""
+"Qt applications are often written to be cross-platform and often X11/Unix is "
+"not the platform they are developed on, which in turn leads to certain loose "
+"ends, like:"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2514
+msgid ""
+"_Missing additional include paths._ Many applications come with system tray "
+"icon support, but neglect to look for includes and/or libraries in the X11 "
+"directories. To add directories to `qmake`'s include and library search "
+"paths via the command line, use:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2519
+#, no-wrap
+msgid ""
+"QMAKE_ARGS+=\tINCLUDEPATH+=${LOCALBASE}/include \\\n"
+"\t\tLIBS+=-L${LOCALBASE}/lib\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2522
+msgid ""
+"_Bogus installation paths._ Sometimes data such as icons or .desktop files "
+"are by default installed into directories which are not scanned by XDG-"
+"compatible applications. package:editors/texmaker[] is an example for this - "
+"look at [.filename]#patch-texmaker.pro# in the [.filename]#files# directory "
+"of that port for a template on how to remedy this directly in the `qmake` "
+"project file."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2524
+#, no-wrap
+msgid "Using KDE"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2527
+#, no-wrap
+msgid "KDE Variable Definitions"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2534
+msgid ""
+"If the application depends on KDE, set `USES+=kde:5` and `USE_KDE` to the "
+"list of required components. `_build` and `_run` suffixes can be used to "
+"force components dependency type (for example, `baseapps_run`). If no "
+"suffix is set, a default dependency type will be used. To force both types, "
+"add the component twice with both suffixes (for example, `ecm_build "
+"ecm_run`). Available components are listed below (up-to-date components are "
+"also listed in [.filename]#/usr/ports/Mk/Uses/kde.mk#):"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2536
+#, no-wrap
+msgid "Available KDE Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2543
+#, no-wrap
+msgid "`activities`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2545
+#, no-wrap
+msgid "KF5 runtime and library to organize work in separate activities"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2546
+#, no-wrap
+msgid "`activities-stats`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2548
+#, no-wrap
+msgid "KF5 statistics for activities"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2549
+#, no-wrap
+msgid "`activitymanagerd`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2551
+#, no-wrap
+msgid "System service to manage user's activities, track the usage patterns"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2552
+#, no-wrap
+msgid "`akonadi`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2554
+#, no-wrap
+msgid "Storage server for KDE-Pim"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2555
+#, no-wrap
+msgid "`akonadicalendar`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2557
+#, no-wrap
+msgid "Akonadi Calendar Integration"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2558
+#, no-wrap
+msgid "`akonadiconsole`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2560
+#, no-wrap
+msgid "Akonadi management and debugging console"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2561
+#, no-wrap
+msgid "`akonadicontacts`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2563
+#, no-wrap
+msgid "Libraries and daemons to implement Contact Management in Akonadi"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2564
+#, no-wrap
+msgid "`akonadiimportwizard`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2566
+#, no-wrap
+msgid "Import data from other mail clients to KMail"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2567
+#, no-wrap
+msgid "`akonadimime`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2569
+#, no-wrap
+msgid "Libraries and daemons to implement basic email handling"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2570
+#, no-wrap
+msgid "`akonadinotes`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2572
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2935
+#, no-wrap
+msgid "KDE library for accessing mail storages in MBox format"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2573
+#, no-wrap
+msgid "`akonadisearch`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2575
+#, no-wrap
+msgid "Libraries and daemons to implement searching in Akonadi"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2576
+#, no-wrap
+msgid "`akregator`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2578
+#, no-wrap
+msgid "A Feed Reader by KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2579
+#, no-wrap
+msgid "`alarmcalendar`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2581
+#, no-wrap
+msgid "KDE API for KAlarm alarms"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2582
+#, no-wrap
+msgid "`apidox`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2584
+#, no-wrap
+msgid "KF5 API Documentation Tools"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2585
+#, no-wrap
+msgid "`archive`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2587
+#, no-wrap
+msgid "KF5 library that provides classes for handling archive formats"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2588
+#, no-wrap
+msgid "`attica`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2590
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2593
+#, no-wrap
+msgid "Open Collaboration Services API library KDE5 version"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2591
+#, no-wrap
+msgid "`attica5`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2594
+#, no-wrap
+msgid "`auth`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2596
+#, no-wrap
+msgid "KF5 abstraction to system policy and authentication features"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2597
+#, no-wrap
+msgid "`baloo`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2599
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2605
+#, no-wrap
+msgid "KF5 Framework for searching and managing user metadata"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2600
+#, no-wrap
+msgid "`baloo-widgets`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2602
+#, no-wrap
+msgid "BalooWidgets library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2603
+#, no-wrap
+msgid "`baloo5`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2606
+#, no-wrap
+msgid "`blog`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2608
+#, no-wrap
+msgid "KDE API for weblogging access"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2609
+#, no-wrap
+msgid "`bookmarks`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2611
+#, no-wrap
+msgid "KF5 library for bookmarks and the XBEL format"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2612
+#, no-wrap
+msgid "`breeze`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2614
+#, no-wrap
+msgid "Plasma5 artwork, styles and assets for the Breeze visual style"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2615
+#, no-wrap
+msgid "`breeze-gtk`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2617
+#, no-wrap
+msgid "Plasma5 Breeze visual style for Gtk"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2618
+#, no-wrap
+msgid "`breeze-icons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2620
+#, no-wrap
+msgid "Breeze icon theme for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2621
+#, no-wrap
+msgid "`calendarcore`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2623
+#, no-wrap
+msgid "KDE calendar access library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2624
+#, no-wrap
+msgid "`calendarsupport`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2626
+#, no-wrap
+msgid "Calendar support libraries for KDEPim"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2627
+#, no-wrap
+msgid "`calendarutils`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2629
+#, no-wrap
+msgid "KDE utility and user interface functions for accessing calendar"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2630
+#, no-wrap
+msgid "`codecs`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2632
+#, no-wrap
+msgid "KF5 library for string manipulation"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2633
+#, no-wrap
+msgid "`completion`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2635
+#, no-wrap
+msgid "KF5 text completion helpers and widgets"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2636
+#, no-wrap
+msgid "`config`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2638
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2641
+#, no-wrap
+msgid "KF5 widgets for configuration dialogs"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2639
+#, no-wrap
+msgid "`configwidgets`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2642
+#, no-wrap
+msgid "`contacts`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2644
+#, no-wrap
+msgid "KDE api to manage contact information"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2645
+#, no-wrap
+msgid "`coreaddons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2647
+#, no-wrap
+msgid "KF5 addons to QtCore"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2648
+#, no-wrap
+msgid "`crash`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2650
+#, no-wrap
+msgid "KF5 library to handle crash analysis and bug report from apps"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2651
+#, no-wrap
+msgid "`dbusaddons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2653
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3061
+#, no-wrap
+msgid "KF5 addons to QtDBus"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2654
+#, no-wrap
+msgid "`decoration`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2656
+#, no-wrap
+msgid "Plasma5 library to create window decorations"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2657
+#, no-wrap
+msgid "`designerplugin`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2659
+#, no-wrap
+msgid "KF5 integration of Frameworks widgets in Qt Designer/Creator"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2660
+#, no-wrap
+msgid "`discover`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2662
+#, no-wrap
+msgid "Plasma5 package management tools"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2663
+#, no-wrap
+msgid "`dnssd`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2665
+#, no-wrap
+msgid "KF5 abstraction to system DNSSD features"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2666
+#, no-wrap
+msgid "`doctools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2668
+#, no-wrap
+msgid "KF5 documentation generation from docbook"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2669
+#, no-wrap
+msgid "`drkonqi`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2671
+#, no-wrap
+msgid "Plasma5 crash handler"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2672
+#, no-wrap
+msgid "`ecm`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2674
+#, no-wrap
+msgid "Extra modules and scripts for CMake"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2675
+#, no-wrap
+msgid "`emoticons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2677
+#, no-wrap
+msgid "KF5 library to convert emoticons"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2678
+#, no-wrap
+msgid "`eventviews`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2680
+#, no-wrap
+msgid "Event view libriares for KDEPim"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2681
+#, no-wrap
+msgid "`filemetadata`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2683
+#, no-wrap
+msgid "KF5 library for extracting file metadata"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2684
+#, no-wrap
+msgid "`frameworkintegration`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2686
+#, no-wrap
+msgid "KF5 workspace and cross-framework integration plugins"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2687
+#, no-wrap
+msgid "`gapi`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2689
+#, no-wrap
+msgid "KDE based library to access google services"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2690
+#, no-wrap
+msgid "`globalaccel`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2692
+#, no-wrap
+msgid "KF5 library to add support for global workspace shortcuts"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2693
+#, no-wrap
+msgid "`grantlee-editor`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2695
+#, no-wrap
+msgid "Editor for Grantlee themes"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2696
+#, no-wrap
+msgid "`grantleetheme`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2698
+#, no-wrap
+msgid "KDE PIM grantleetheme"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2699
+#, no-wrap
+msgid "`gravatar`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2701
+#, no-wrap
+msgid "Library for gravatar support"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2702
+#, no-wrap
+msgid "`guiaddons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2704
+#, no-wrap
+msgid "KF5 addons to QtGui"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2705
+#, no-wrap
+msgid "`holidays`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2707
+#, no-wrap
+msgid "KDE library for calendar holidays"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2708
+#, no-wrap
+msgid "`hotkeys`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2710
+#, no-wrap
+msgid "Plasma5 library for hotkeys"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2711
+#, no-wrap
+msgid "`i18n`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2713
+#, no-wrap
+msgid "KF5 advanced internationalization framework"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2714
+#, no-wrap
+msgid "`iconthemes`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2716
+#, no-wrap
+msgid "KF5 library for handling icons in applications"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2717
+#, no-wrap
+msgid "`identitymanagement`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2719
+#, no-wrap
+msgid "KDE pim identities"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2720
+#, no-wrap
+msgid "`idletime`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2722
+#, no-wrap
+msgid "KF5 library for monitoring user activity"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2723
+#, no-wrap
+msgid "`imap`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2725
+#, no-wrap
+msgid "KDE API for IMAP support"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2726
+#, no-wrap
+msgid "`incidenceeditor`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2728
+#, no-wrap
+msgid "Incidence editor libriares for KDEPim"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2729
+#, no-wrap
+msgid "`infocenter`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2731
+#, no-wrap
+msgid "Plasma5 utility providing system information"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2732
+#, no-wrap
+msgid "`init`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2734
+#, no-wrap
+msgid "KF5 process launcher to speed up launching KDE applications"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2735
+#, no-wrap
+msgid "`itemmodels`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2737
+#, no-wrap
+msgid "KF5 models for Qt Model/View system"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2738
+#, no-wrap
+msgid "`itemviews`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2740
+#, no-wrap
+msgid "KF5 widget addons for Qt Model/View"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2741
+#, no-wrap
+msgid "`jobwidgets`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2743
+#, no-wrap
+msgid "KF5 widgets for tracking KJob instance"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2744
+#, no-wrap
+msgid "`js`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2746
+#, no-wrap
+msgid "KF5 library providing an ECMAScript interpreter"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2747
+#, no-wrap
+msgid "`jsembed`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2749
+#, no-wrap
+msgid "KF5 library for binding JavaScript objects to QObjects"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2750
+#, no-wrap
+msgid "`kaddressbook`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2752
+#, no-wrap
+msgid "KDE contact manager"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2753
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2756
+#, no-wrap
+msgid "`kalarm`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2755
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2758
+#, no-wrap
+msgid "Personal alarm scheduler"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2759
+#, no-wrap
+msgid "`kate`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2761
+#, no-wrap
+msgid "Basic editor framework for the KDE system"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2762
+#, no-wrap
+msgid "`kcmutils`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2764
+#, no-wrap
+msgid "KF5 utilities for working with KCModules"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2765
+#, no-wrap
+msgid "`kde-cli-tools`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2767
+#, no-wrap
+msgid "Plasma5 non-interactive system tools"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2768
+#, no-wrap
+msgid "`kde-gtk-config`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2770
+#, no-wrap
+msgid "Plasma5 GTK2 and GTK3 configurator"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2771
+#, no-wrap
+msgid "`kdeclarative`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2773
+#, no-wrap
+msgid "KF5 library providing integration of QML and KDE Frameworks"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2774
+#, no-wrap
+msgid "`kded`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2776
+#, no-wrap
+msgid "KF5 extensible daemon for providing system level services"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2777
+#, no-wrap
+msgid "`kdelibs4support`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2779
+#, no-wrap
+msgid "KF5 porting aid from KDELibs4"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2780
+#, no-wrap
+msgid "`kdepim-addons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2782
+#, no-wrap
+msgid "KDE PIM addons"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2783
+#, no-wrap
+msgid "`kdepim-apps-libs`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2785
+#, no-wrap
+msgid "KDE PIM mail related libraries"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2786
+#, no-wrap
+msgid "`kdepim-runtime5`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2788
+#, no-wrap
+msgid "KDE PIM tools and services"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2789
+#, no-wrap
+msgid "`kdeplasma-addons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2791
+#, no-wrap
+msgid "Plasma5 addons to improve the Plasma experience"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2792
+#, no-wrap
+msgid "`kdesu`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2794
+#, no-wrap
+msgid "KF5 integration with su for elevated privileges"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2795
+#, no-wrap
+msgid "`kdewebkit`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2797
+#, no-wrap
+msgid "KF5 library providing integration of QtWebKit"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2798
+#, no-wrap
+msgid "`kgamma5`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2800
+#, no-wrap
+msgid "Plasma5 monitor's gamma settings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2801
+#, no-wrap
+msgid "`khtml`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2803
+#, no-wrap
+msgid "KF5 KTHML rendering engine"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2804
+#, no-wrap
+msgid "`kimageformats`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2806
+#, no-wrap
+msgid "KF5 library providing support for additional image formats"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2807
+#, no-wrap
+msgid "`kio`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2809
+#, no-wrap
+msgid "KF5 resource and network access abstraction"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2810
+#, no-wrap
+msgid "`kirigami2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2812
+#, no-wrap
+msgid "QtQuick based components set"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2813
+#, no-wrap
+msgid "`kitinerary`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2815
+#, no-wrap
+msgid "Data Model and Extraction System for Travel Reservation information"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2816
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2819
+#, no-wrap
+msgid "`kmail`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2818
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2821
+#, no-wrap
+msgid "KDE mail client"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2822
+#, no-wrap
+msgid "`kmail-account-wizard`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2824
+#, no-wrap
+msgid "KDE mail account wizard"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2825
+#, no-wrap
+msgid "`kmenuedit`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2827
+#, no-wrap
+msgid "Plasma5 menu editor"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2828
+#, no-wrap
+msgid "`knotes`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2830
+#, no-wrap
+msgid "Popup notes"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2831
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2834
+#, no-wrap
+msgid "`kontact`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2833
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2836
+#, no-wrap
+msgid "KDE Personal Information Manager"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2837
+#, no-wrap
+msgid "`kontactinterface`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2839
+#, no-wrap
+msgid "KDE glue for embedding KParts into Kontact"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2840
+#, no-wrap
+msgid "`korganizer`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2842
+#, no-wrap
+msgid "Calendar and scheduling Program"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2843
+#, no-wrap
+msgid "`kpimdav`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2845
+#, no-wrap
+msgid "A DAV protocol implementation with KJobs"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2846
+#, no-wrap
+msgid "`kpkpass`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2848
+#, no-wrap
+msgid "Library to deal with Apple Wallet pass files"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2849
+#, no-wrap
+msgid "`kross`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2851
+#, no-wrap
+msgid "KF5 multi-language application scripting"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2852
+#, no-wrap
+msgid "`kscreen`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2854
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2914
+#, no-wrap
+msgid "Plasma5 screen management library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2855
+#, no-wrap
+msgid "`kscreenlocker`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2857
+#, no-wrap
+msgid "Plasma5 secure lock screen architecture"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2858
+#, no-wrap
+msgid "`ksmtp`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2860
+#, no-wrap
+msgid "Job-based library to send email through an SMTP server"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2861
+#, no-wrap
+msgid "`ksshaskpass`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2863
+#, no-wrap
+msgid "Plasma5 ssh-add frontend"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2864
+#, no-wrap
+msgid "`ksysguard`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2866
+#, no-wrap
+msgid "Plasma5 utility to track and control the running processes"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2867
+#, no-wrap
+msgid "`kwallet-pam`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2869
+#, no-wrap
+msgid "Plasma5 KWallet PAM Integration"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2870
+#, no-wrap
+msgid "`kwayland-integration`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2872
+#, no-wrap
+msgid "Integration plugins for a Wayland-based desktop"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2873
+#, no-wrap
+msgid "`kwin`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2875
+#, no-wrap
+msgid "Plasma5 window manager"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2876
+#, no-wrap
+msgid "`kwrited`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2878
+#, no-wrap
+msgid "Plasma5 daemon listening for wall and write messages"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2879
+#, no-wrap
+msgid "`ldap`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2881
+#, no-wrap
+msgid "LDAP access API for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2882
+#, no-wrap
+msgid "`libkcddb`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2884
+#, no-wrap
+msgid "KDE CDDB library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2885
+#, no-wrap
+msgid "`libkcompactdisc`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2887
+#, no-wrap
+msgid "KDE library for interfacing with audio CDs"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2888
+#, no-wrap
+msgid "`libkdcraw`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2890
+#, no-wrap
+msgid "LibRaw interface for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2891
+#, no-wrap
+msgid "`libkdegames`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2893
+#, no-wrap
+msgid "Libraries used by KDE games"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2894
+#, no-wrap
+msgid "`libkdepim`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2896
+#, no-wrap
+msgid "KDE PIM Libraries"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2897
+#, no-wrap
+msgid "`libkeduvocdocument`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2899
+#, no-wrap
+msgid "Library for reading and writing vocabulary files"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2900
+#, no-wrap
+msgid "`libkexiv2`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2902
+#, no-wrap
+msgid "Exiv2 library interface for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2903
+#, no-wrap
+msgid "`libkipi`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2905
+#, no-wrap
+msgid "KDE Image Plugin Interface"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2906
+#, no-wrap
+msgid "`libkleo`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2908
+#, no-wrap
+msgid "Certificate manager for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2909
+#, no-wrap
+msgid "`libksane`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2911
+#, no-wrap
+msgid "SANE library interface for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2912
+#, no-wrap
+msgid "`libkscreen`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2915
+#, no-wrap
+msgid "`libksieve`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2917
+#, no-wrap
+msgid "Sieve libriares for KDEPim"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2918
+#, no-wrap
+msgid "`libksysguard`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2920
+#, no-wrap
+msgid "Plasma5 library to track and control running processes"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2921
+#, no-wrap
+msgid "`mailcommon`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2923
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2983
+#, no-wrap
+msgid "Common libriares for KDEPim"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2924
+#, no-wrap
+msgid "`mailimporter`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2926
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2938
+#, no-wrap
+msgid "Import mbox files to KMail"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2927
+#, no-wrap
+msgid "`mailtransport`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2929
+#, no-wrap
+msgid "KDE library to managing mail transport"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2930
+#, no-wrap
+msgid "`marble`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2932
+#, no-wrap
+msgid "Virtual globe and world atlas for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2933
+#, no-wrap
+msgid "`mbox`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2936
+#, no-wrap
+msgid "`mbox-importer`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2939
+#, no-wrap
+msgid "`mediaplayer`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2941
+#, no-wrap
+msgid "KF5 plugin interface for media player features"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2942
+#, no-wrap
+msgid "`messagelib`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2944
+#, no-wrap
+msgid "Library for handling messages"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2945
+#, no-wrap
+msgid "`milou`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2947
+#, no-wrap
+msgid "Plasma5 Plasmoid for search"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2948
+#, no-wrap
+msgid "`mime`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2950
+#, no-wrap
+msgid "Library for handling MIME data"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2951
+#, no-wrap
+msgid "`newstuff`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2953
+#, no-wrap
+msgid "KF5 library for downloading application assets from the network"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2954
+#, no-wrap
+msgid "`notifications`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2956
+#, no-wrap
+msgid "KF5 abstraction for system notifications"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2957
+#, no-wrap
+msgid "`notifyconfig`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2959
+#, no-wrap
+msgid "KF5 configuration system for KNotify"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2960
+#, no-wrap
+msgid "`okular`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2962
+#, no-wrap
+msgid "KDE universal document viewer"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2963
+#, no-wrap
+msgid "`oxygen`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2965
+#, no-wrap
+msgid "Plasma5 Oxygen style"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2966
+#, no-wrap
+msgid "`oxygen-icons5`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2968
+#, no-wrap
+msgid "The Oxygen icon theme for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2969
+#, no-wrap
+msgid "`package`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2971
+#, no-wrap
+msgid "KF5 library to load and install packages"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2972
+#, no-wrap
+msgid "`parts`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2974
+#, no-wrap
+msgid "KF5 document centric plugin system"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2975
+#, no-wrap
+msgid "`people`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2977
+#, no-wrap
+msgid "KF5 library providing access to contacts"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2978
+#, no-wrap
+msgid "`pim-data-exporter`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2980
+#, no-wrap
+msgid "Import and export KDE PIM settings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2981
+#, no-wrap
+msgid "`pimcommon`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2984
+#, no-wrap
+msgid "`pimtextedit`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2986
+#, no-wrap
+msgid "KDE library for PIM-specific text editing utilities"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2987
+#, no-wrap
+msgid "`plasma-browser-integration`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2989
+#, no-wrap
+msgid "Plasma5 components to integrate browsers into the desktop"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2990
+#, no-wrap
+msgid "`plasma-desktop`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2992
+#, no-wrap
+msgid "Plasma5 plasma desktop"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2993
+#, no-wrap
+msgid "`plasma-framework`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2995
+#, no-wrap
+msgid "KF5 plugin based UI runtime used to write user interfaces"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2996
+#, no-wrap
+msgid "`plasma-integration`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2998
+#, no-wrap
+msgid "Qt Platform Theme integration plugins for the Plasma workspaces"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:2999
+#, no-wrap
+msgid "`plasma-pa`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3001
+#, no-wrap
+msgid "Plasma5 Plasma pulse audio mixer"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3002
+#, no-wrap
+msgid "`plasma-sdk`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3004
+#, no-wrap
+msgid "Plasma5 applications useful for Plasma development"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3005
+#, no-wrap
+msgid "`plasma-workspace`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3007
+#, no-wrap
+msgid "Plasma5 Plasma workspace"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3008
+#, no-wrap
+msgid "`plasma-workspace-wallpapers`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3010
+#, no-wrap
+msgid "Plasma5 wallpapers"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3011
+#, no-wrap
+msgid "`plotting`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3013
+#, no-wrap
+msgid "KF5 lightweight plotting framework"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3014
+#, no-wrap
+msgid "`polkit-kde-agent-1`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3016
+#, no-wrap
+msgid "Plasma5 daemon providing a polkit authentication UI"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3017
+#, no-wrap
+msgid "`powerdevil`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3019
+#, no-wrap
+msgid "Plasma5 tool to manage the power consumption settings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3020
+#, no-wrap
+msgid "`prison`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3022
+#, no-wrap
+msgid "API to produce barcodes"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3023
+#, no-wrap
+msgid "`pty`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3025
+#, no-wrap
+msgid "KF5 pty abstraction"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3026
+#, no-wrap
+msgid "`purpose`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3028
+#, no-wrap
+msgid "Offers available actions for a specific purpose"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3029
+#, no-wrap
+msgid "`qqc2-desktop-style`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3031
+#, no-wrap
+msgid "Qt QuickControl2 style for KDE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3032
+#, no-wrap
+msgid "`runner`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3034
+#, no-wrap
+msgid "KF5 parallelized query system"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3035
+#, no-wrap
+msgid "`service`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3037
+#, no-wrap
+msgid "KF5 advanced plugin and service introspection"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3038
+#, no-wrap
+msgid "`solid`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3040
+#, no-wrap
+msgid "KF5 hardware integration and detection"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3041
+#, no-wrap
+msgid "`sonnet`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3043
+#, no-wrap
+msgid "KF5 plugin-based spell checking library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3044
+#, no-wrap
+msgid "`syndication`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3046
+#, no-wrap
+msgid "KDE RSS feed handling library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3047
+#, no-wrap
+msgid "`syntaxhighlighting`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3049
+#, no-wrap
+msgid "KF5 syntax highlighting engine for structured text and code"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3050
+#, no-wrap
+msgid "`systemsettings`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3052
+#, no-wrap
+msgid "Plasma5 system settings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3053
+#, no-wrap
+msgid "`texteditor`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3055
+#, no-wrap
+msgid "KF5 advanced embeddable text editor"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3056
+#, no-wrap
+msgid "`textwidgets`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3058
+#, no-wrap
+msgid "KF5 advanced text editing widgets"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3059
+#, no-wrap
+msgid "`threadweaver`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3062
+#, no-wrap
+msgid "`tnef`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3064
+#, no-wrap
+msgid "KDE API for the handling of TNEF data"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3065
+#, no-wrap
+msgid "`unitconversion`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3067
+#, no-wrap
+msgid "KF5 library for unit conversion"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3068
+#, no-wrap
+msgid "`user-manager`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3070
+#, no-wrap
+msgid "Plasma5 user manager"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3071
+#, no-wrap
+msgid "`wallet`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3073
+#, no-wrap
+msgid "KF5 secure and unified container for user passwords"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3076
+#, no-wrap
+msgid "KF5 Client and Server library wrapper for the Wayland libraries"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3077
+#, no-wrap
+msgid "`widgetsaddons`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3079
+#, no-wrap
+msgid "KF5 addons to QtWidgets"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3080
+#, no-wrap
+msgid "`windowsystem`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3082
+#, no-wrap
+msgid "KF5 library for access to the windowing system"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3083
+#, no-wrap
+msgid "`xmlgui`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3085
+#, no-wrap
+msgid "KF5 user configurable main windows"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3086
+#, no-wrap
+msgid "`xmlrpcclient`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3087
+#, no-wrap
+msgid "KF5 interaction with XMLRPC services"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3090
+#, no-wrap
+msgid "`USE_KDE` Example"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3099
+msgid ""
+"This is a simple example for a KDE port. `USES= cmake` instructs the port "
+"to utilize CMake, a configuration tool widely used by KDE projects (see "
+"<<using-cmake>> for detailed usage). `USE_KDE` brings dependency on KDE "
+"libraries. Required KDE components and other dependencies can be determined "
+"through the configure log. `USE_KDE` does not imply `USE_QT`. If a port "
+"requires some Qt components, specify them in `USE_QT`."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3105
+#, no-wrap
+msgid ""
+"USES=\t\tcmake kde:5 qt:5\n"
+"USE_KDE=\tecm\n"
+"USE_QT=\t\tcore buildtools_build qmake_build\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3110
+#, no-wrap
+msgid "Using LXQt"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3113
+msgid ""
+"Applications depending on LXQt should set `USES+= lxqt` and set `USE_LXQT` "
+"to the list of required components from the table below"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3115
+#, no-wrap
+msgid "Available LXQt Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3124
+#, no-wrap
+msgid "Helpers for additional CMake modules"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3125
+#, no-wrap
+msgid "`libfmqt`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3127
+#, no-wrap
+msgid "Libfm Qt bindings"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3128
+#, no-wrap
+msgid "`lxqt`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3130
+#, no-wrap
+msgid "LXQt core library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3131
+#, no-wrap
+msgid "`qtxdg`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3132
+#, no-wrap
+msgid "Qt implementation of freedesktop.org XDG specifications"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3135
+#, no-wrap
+msgid "`USE_LXQT` Example"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3140
+msgid ""
+"This is a simple example, `USE_LXQT` adds a dependency on LXQt libraries. "
+"Required LXQt components and other dependencies can be determined from the "
+"configure log."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3146
+#, no-wrap
+msgid ""
+"USES=\tcmake lxqt qt:5 tar:xz\n"
+"USE_QT=\t\tcore dbus widgets buildtools_build qmake_build\n"
+"USE_LXQT=\tbuildtools libfmqt\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3151
+#, no-wrap
+msgid "Using Java"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3154
+#, no-wrap
+msgid "Variable Definitions"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3157
+msgid ""
+"If the port needs a Java(TM) Development Kit (JDK(TM)) to either build, run "
+"or even extract the distfile, then define `USE_JAVA`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3161
+msgid ""
+"There are several JDKs in the ports collection, from various vendors, and in "
+"several versions. If the port must use a particular version, specify it "
+"using the `JAVA_VERSION` variable. The most current version is package:java/"
+"openjdk18[], with package:java/openjdk17[], package:java/openjdk16[], "
+"package:java/openjdk15[], package:java/openjdk14[], package:java/"
+"openjdk13[], package:java/openjdk12[], package:java/openjdk11[], package:"
+"java/openjdk8[], and package:java/openjdk7[] also available."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3163
+#, no-wrap
+msgid "Variables Which May be Set by Ports That Use Java"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3170
+#, no-wrap
+msgid "`USE_JAVA`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3172
+#, no-wrap
+msgid "Define for the remaining variables to have any effect."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3173
+#, no-wrap
+msgid "`JAVA_VERSION`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3176
+#, no-wrap
+msgid ""
+"List of space-separated suitable Java versions for the port.\n"
+"An optional `\\+` allows specifying a range of versions (allowed values: `8[+] 11[\\+] 17[+] 18[\\+] 19[+] 20[\\+] 21[+]`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3177
+#, no-wrap
+msgid "`JAVA_OS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3179
+#, no-wrap
+msgid "List of space-separated suitable JDK port operating systems for the port (allowed values: `native linux`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3180
+#, no-wrap
+msgid "`JAVA_VENDOR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3182
+#, no-wrap
+msgid "List of space-separated suitable JDK port vendors for the port (allowed values: `openjdk oracle`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3183
+#, no-wrap
+msgid "`JAVA_BUILD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3185
+#, no-wrap
+msgid "When set, add the selected JDK port to the build dependencies."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3186
+#, no-wrap
+msgid "`JAVA_RUN`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3188
+#, no-wrap
+msgid "When set, add the selected JDK port to the run dependencies."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3189
+#, no-wrap
+msgid "`JAVA_EXTRACT`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3190
+#, no-wrap
+msgid "When set, add the selected JDK port to the extract dependencies."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3193
+msgid ""
+"Below is the list of all settings a port will receive after setting "
+"`USE_JAVA`:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3195
+#, no-wrap
+msgid "Variables Provided to Ports That Use Java"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3201
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3280
+#, no-wrap
+msgid "Value"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3202
+#, no-wrap
+msgid "`JAVA_PORT`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3204
+#, no-wrap
+msgid "The name of the JDK port (for example, `java/openjdk6`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3205
+#, no-wrap
+msgid "`JAVA_PORT_VERSION`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3207
+#, no-wrap
+msgid "The full version of the JDK port (for example, `1.6.0`). Only the first two digits of this version number are needed, use `${JAVA_PORT_VERSION:C/^([0-9])\\.([0-9])(.*)$/\\1.\\2/}`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3208
+#, no-wrap
+msgid "`JAVA_PORT_OS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3210
+#, no-wrap
+msgid "The operating system used by the JDK port (for example, `'native'`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3211
+#, no-wrap
+msgid "`JAVA_PORT_VENDOR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3213
+#, no-wrap
+msgid "The vendor of the JDK port (for example, `'openjdk'`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3214
+#, no-wrap
+msgid "`JAVA_PORT_OS_DESCRIPTION`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3216
+#, no-wrap
+msgid "Description of the operating system used by the JDK port (for example, `'Native'`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3217
+#, no-wrap
+msgid "`JAVA_PORT_VENDOR_DESCRIPTION`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3219
+#, no-wrap
+msgid "Description of the vendor of the JDK port (for example, `'OpenJDK BSD Porting Team'`)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3220
+#, no-wrap
+msgid "`JAVA_HOME`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3222
+#, no-wrap
+msgid "Path to the installation directory of the JDK (for example, [.filename]#'/usr/local/openjdk6'#)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3223
+#, no-wrap
+msgid "`JAVAC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3225
+#, no-wrap
+msgid "Path to the Java compiler to use (for example, [.filename]#'/usr/local/openjdk6/bin/javac'#)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3226
+#, no-wrap
+msgid "`JAR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3228
+#, no-wrap
+msgid "Path to the `jar` tool to use (for example, [.filename]#'/usr/local/openjdk6/bin/jar'# or [.filename]#'/usr/local/bin/fastjar'#)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3229
+#, no-wrap
+msgid "`APPLETVIEWER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3231
+#, no-wrap
+msgid "Path to the `appletviewer` utility (for example, [.filename]#'/usr/local/openjdk6/bin/appletviewer'#)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3232
+#, no-wrap
+msgid "`JAVA`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3234
+#, no-wrap
+msgid "Path to the `java` executable. Use this for executing Java programs (for example, [.filename]#'/usr/local/openjdk6/bin/java'#)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3235
+#, no-wrap
+msgid "`JAVADOC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3237
+#, no-wrap
+msgid "Path to the `javadoc` utility program."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3238
+#, no-wrap
+msgid "`JAVAH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3240
+#, no-wrap
+msgid "Path to the `javah` program."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3241
+#, no-wrap
+msgid "`JAVAP`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3243
+#, no-wrap
+msgid "Path to the `javap` program."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3244
+#, no-wrap
+msgid "`JAVA_KEYTOOL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3246
+#, no-wrap
+msgid "Path to the `keytool` utility program."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3247
+#, no-wrap
+msgid "`JAVA_N2A`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3249
+#, no-wrap
+msgid "Path to the `native2ascii` tool."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3250
+#, no-wrap
+msgid "`JAVA_POLICYTOOL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3252
+#, no-wrap
+msgid "Path to the `policytool` program."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3253
+#, no-wrap
+msgid "`JAVA_SERIALVER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3255
+#, no-wrap
+msgid "Path to the `serialver` utility program."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3256
+#, no-wrap
+msgid "`RMIC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3258
+#, no-wrap
+msgid "Path to the RMI stub/skeleton generator, `rmic`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3259
+#, no-wrap
+msgid "`RMIREGISTRY`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3261
+#, no-wrap
+msgid "Path to the RMI registry program, `rmiregistry`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3262
+#, no-wrap
+msgid "`RMID`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3264
+#, no-wrap
+msgid "Path to the RMI daemon program `rmid`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3265
+#, no-wrap
+msgid "`JAVA_CLASSES`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3266
+#, no-wrap
+msgid "Path to the archive that contains the JDK class files, [.filename]#${JAVA_HOME}/jre/lib/rt.jar#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3270
+msgid ""
+"Use the `java-debug` make target to get information for debugging the port. "
+"It will display the value of many of the previously listed variables."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3272
+msgid ""
+"Additionally, these constants are defined so all Java ports may be installed "
+"in a consistent way:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3274
+#, no-wrap
+msgid "Constants Defined for Ports That Use Java"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3278
+#, no-wrap
+msgid "Constant"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3281
+#, no-wrap
+msgid "`JAVASHAREDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3283
+#, no-wrap
+msgid "The base directory for everything related to Java. Default: [.filename]#${PREFIX}/share/java#."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3284
+#, no-wrap
+msgid "`JAVAJARDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3286
+#, no-wrap
+msgid "The directory where JAR files is installed. Default: [.filename]#${JAVASHAREDIR}/classes#."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3287
+#, no-wrap
+msgid "`JAVALIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3288
+#, no-wrap
+msgid "The directory where JAR files installed by other ports are located. Default: [.filename]#${LOCALBASE}/share/java/classes#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3291
+msgid ""
+"The related entries are defined in both `PLIST_SUB` (documented in crossref:"
+"plist[plist-sub,Changing pkg-plist Based on Make Variables]) and `SUB_LIST`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3293
+#, no-wrap
+msgid "Building with Ant"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3299
+msgid ""
+"When the port is to be built using Apache Ant, it has to define `USE_ANT`. "
+"Ant is thus considered to be the sub-make command. When no `do-build` "
+"target is defined by the port, a default one will be set that runs Ant "
+"according to `MAKE_ENV`, `MAKE_ARGS` and `ALL_TARGET`. This is similar to "
+"the `USES= gmake` mechanism, which is documented in <<building>>."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3301
+#, no-wrap
+msgid "Best Practices"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3306
+msgid ""
+"When porting a Java library, the port has to install the JAR file(s) in [."
+"filename]#${JAVAJARDIR}#, and everything else under [."
+"filename]#${JAVASHAREDIR}/${PORTNAME}# (except for the documentation, see "
+"below). To reduce the packing file size, reference the JAR file(s) directly "
+"in the [.filename]#Makefile#. Use this statement (where [.filename]#myport."
+"jar# is the name of the JAR file installed as part of the port):"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3310
+#, no-wrap
+msgid "PLIST_FILES+=\t${JAVAJARDIR}/myport.jar\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3315
+msgid ""
+"When porting a Java application, the port usually installs everything under "
+"a single directory (including its JAR dependencies). The use of [."
+"filename]#${JAVASHAREDIR}/${PORTNAME}# is strongly encouraged in this "
+"regard. It is up the porter to decide whether the port installs the "
+"additional JAR dependencies under this directory or uses the already "
+"installed ones (from [.filename]#${JAVAJARDIR}#)."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3322
+msgid ""
+"When porting a Java(TM) application that requires an application server such "
+"as package:www/tomcat7[] to run the service, it is quite common for a vendor "
+"to distribute a [.filename]#.war#. A [.filename]#.war# is a Web application "
+"ARchive and is extracted when called by the application. Avoid adding a [."
+"filename]#.war# to [.filename]#pkg-plist#. It is not considered best "
+"practice. An application server will expand war archive, but not clean it "
+"up properly if the port is removed. A more desirable way of working with "
+"this file is to extract the archive, then install the files, and lastly add "
+"these files to [.filename]#pkg-plist#."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3327
+#, no-wrap
+msgid ""
+"TOMCATDIR=\t${LOCALBASE}/apache-tomcat-7.0\n"
+"WEBAPPDIR=\tmyapplication\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3331
+#, no-wrap
+msgid ""
+"post-extract:\n"
+"\t@${MKDIR} ${WRKDIR}/${PORTDIRNAME}\n"
+"\t@${TAR} xf ${WRKDIR}/myapplication.war -C ${WRKDIR}/${PORTDIRNAME}\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3336
+#, no-wrap
+msgid ""
+"do-install:\n"
+"\tcd ${WRKDIR} && \\\n"
+"\t${INSTALL} -d -o ${WWWOWN} -g ${WWWGRP} ${TOMCATDIR}/webapps/${PORTDIRNAME}\n"
+"\tcd ${WRKDIR}/${PORTDIRNAME} && ${COPYTREE_SHARE} \\* ${WEBAPPDIR}/${PORTDIRNAME}\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3343
+msgid ""
+"Regardless of the type of port (library or application), the additional "
+"documentation is installed in the crossref:makefiles[install-documentation,"
+"same location] as for any other port. The Javadoc tool is known to produce "
+"a different set of files depending on the version of the JDK that is used. "
+"For ports that do not enforce the use of a particular JDK, it is therefore a "
+"complex task to specify the packing list ([.filename]#pkg-plist#). This is "
+"one reason why porters are strongly encouraged to use `PORTDOCS`. Moreover, "
+"even if the set of files that will be generated by `javadoc` can be "
+"predicted, the size of the resulting [.filename]#pkg-plist# advocates for "
+"the use of `PORTDOCS`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3347
+msgid ""
+"The default value for `DATADIR` is [.filename]#${PREFIX}/share/${PORTNAME}"
+"#. It is a good idea to override `DATADIR` to [.filename]#${JAVASHAREDIR}/"
+"${PORTNAME}# for Java ports. Indeed, `DATADIR` is automatically added to "
+"`PLIST_SUB` (documented in crossref:plist[plist-sub,Changing pkg-plist Based "
+"on Make Variables]) so use `%%DATADIR%%` directly in [.filename]#pkg-plist#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3350
+msgid ""
+"As for the choice of building Java ports from source or directly installing "
+"them from a binary distribution, there is no defined policy at the time of "
+"writing. However, people from the https://www.freebsd.org/java/[FreeBSD "
+"Java Project] encourage porters to have their ports built from source "
+"whenever it is a trivial task."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3354
+msgid ""
+"All the features that have been presented in this section are implemented in "
+"[.filename]#bsd.java.mk#. If the port needs more sophisticated Java "
+"support, please first have a look at the https://cgit.FreeBSD.org/ports/tree/"
+"Mk/bsd.java.mk[bsd.java.mk Git log] as it usually takes some time to "
+"document the latest features. Then, if the needed support that is lacking "
+"would be beneficial to many other Java ports, feel free to discuss it on the "
+"freebsd-java."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3357
+msgid ""
+"Although there is a `java` category for PRs, it refers to the JDK porting "
+"effort from the FreeBSD Java project. Therefore, submit the Java port in "
+"the `ports` category as for any other port, unless the issue is related to "
+"either a JDK implementation or [.filename]#bsd.java.mk#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3359
+msgid ""
+"Similarly, there is a defined policy regarding the `CATEGORIES` of a Java "
+"port, which is detailed in crossref:makefiles[makefile-categories,"
+"Categorization]."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3361
+#, no-wrap
+msgid "Web Applications, Apache and PHP"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3364
+#, no-wrap
+msgid "Apache"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3367
+#, no-wrap
+msgid "Variables for Ports That Use Apache"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3371
+#, no-wrap
+msgid "`USE_APACHE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3373
+#, no-wrap
+msgid "The port requires Apache. Possible values: `yes` (gets any version), `22`, `24`, `22-24`, `22+`, etc. The default APACHE version is `22`. More details are available in [.filename]#ports/Mk/bsd.apache.mk# and at https://wiki.freebsd.org/Apache/[wiki.freebsd.org/Apache/]."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3374
+#, no-wrap
+msgid "`APXS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3376
+#, no-wrap
+msgid "Full path to the `apxs` binary. Can be overridden in the port."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3377
+#, no-wrap
+msgid "`HTTPD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3379
+#, no-wrap
+msgid "Full path to the `httpd` binary. Can be overridden in the port."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3380
+#, no-wrap
+msgid "`APACHE_VERSION`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3382
+#, no-wrap
+msgid "The version of present Apache installation (read-only variable). This variable is only available after inclusion of [.filename]#bsd.port.pre.mk#. Possible values: `22`, `24`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3383
+#, no-wrap
+msgid "`APACHEMODDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3385
+#, no-wrap
+msgid "Directory for Apache modules. This variable is automatically expanded in [.filename]#pkg-plist#."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3386
+#, no-wrap
+msgid "`APACHEINCLUDEDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3388
+#, no-wrap
+msgid "Directory for Apache headers. This variable is automatically expanded in [.filename]#pkg-plist#."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3389
+#, no-wrap
+msgid "`APACHEETCDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3390
+#, no-wrap
+msgid "Directory for Apache configuration files. This variable is automatically expanded in [.filename]#pkg-plist#."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3393
+#, no-wrap
+msgid "Useful Variables for Porting Apache Modules"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3397
+#, no-wrap
+msgid "`MODULENAME`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3399
+#, no-wrap
+msgid "Name of the module. Default value is `PORTNAME`. Example: `mod_hello`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3400
+#, no-wrap
+msgid "`SHORTMODNAME`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3402
+#, no-wrap
+msgid "Short name of the module. Automatically derived from `MODULENAME`, but can be overridden. Example: `hello`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3403
+#, no-wrap
+msgid "`AP_FAST_BUILD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3405
+#, no-wrap
+msgid "Use `apxs` to compile and install the module."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3406
+#, no-wrap
+msgid "`AP_GENPLIST`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3408
+#, no-wrap
+msgid "Also automatically creates a [.filename]#pkg-plist#."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3409
+#, no-wrap
+msgid "`AP_INC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3411
+#, no-wrap
+msgid "Adds a directory to a header search path during compilation."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3412
+#, no-wrap
+msgid "`AP_LIB`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3414
+#, no-wrap
+msgid "Adds a directory to a library search path during compilation."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3415
+#, no-wrap
+msgid "`AP_EXTRAS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3416
+#, no-wrap
+msgid "Additional flags to pass to `apxs`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3419
+#, no-wrap
+msgid "Web Applications"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3423
+msgid ""
+"Web applications must be installed into [.filename]#PREFIX/www/appname#. "
+"This path is available both in [.filename]#Makefile# and in [.filename]#pkg-"
+"plist# as `WWWDIR`, and the path relative to `PREFIX` is available in [."
+"filename]#Makefile# as `WWWDIR_REL`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3428
+msgid ""
+"The user and group of web server process are available as `WWWOWN` and "
+"`WWWGRP`, in case the ownership of some files needs to be changed. The "
+"default values of both are `www`. Use `WWWOWN?= myuser` and `WWWGRP?= "
+"mygroup` if the port needs different values. This allows the user to "
+"override them easily."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3433
+msgid ""
+"Use `WWWOWN` and `WWWGRP` sparingly. Remember that every file the web "
+"server can write to is a security risk waiting to happen."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3437
+msgid ""
+"Do not depend on Apache unless the web app explicitly needs Apache. Respect "
+"that users may wish to run a web application on a web server other than "
+"Apache."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3439
+#, no-wrap
+msgid "PHP"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3443
+msgid ""
+"PHP web applications declare their dependency on it with `USES=php`. See "
+"crossref:uses[uses-php,`php`] for more information."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3445
+#, no-wrap
+msgid "PEAR Modules"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3448
+msgid "Porting PEAR modules is a very simple process."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3451
+msgid ""
+"Add `USES=pear` to the port's [.filename]#Makefile#. The framework will "
+"install the relevant files in the right places and automatically generate "
+"the plist at install time."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3453
+#, no-wrap
+msgid "Example Makefile for PEAR Class"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3461
+#, no-wrap
+msgid ""
+"PORTNAME= Date\n"
+"DISTVERSION=\t1.4.3\n"
+"CATEGORIES=\tdevel www pear\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3465
+#, no-wrap
+msgid ""
+"MAINTAINER=\tsomeone@example.org\n"
+"COMMENT=\tPEAR Date and Time Zone Classes\n"
+"WWW=\t\thttps://pear.php.net/package/Date/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3467
+#, no-wrap
+msgid "USES=\tpear\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3476
+msgid ""
+"PEAR modules will automatically be flavorized using crossref:flavors[flavors-"
+"auto-php,PHP flavors]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3481
+msgid ""
+"If a non default `PEAR_CHANNEL` is used, the build and run-time dependencies "
+"will automatically be added."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3487
+msgid ""
+"PEAR modules do not need to defined `PKGNAMESUFFIX` it is automatically "
+"filled in using `PEAR_PKGNAMEPREFIX`. If a port needs to add to "
+"`PKGNAMEPREFIX`, it must also use `PEAR_PKGNAMEPREFIX` to differentiate "
+"between different flavors."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3490
+#, no-wrap
+msgid "Horde Modules"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3493
+msgid "In the same way, porting Horde modules is a simple process."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3496
+msgid ""
+"Add `USES=horde` to the port's [.filename]#Makefile#. The framework will "
+"install the relevant files in the right places and automatically generate "
+"the plist at install time."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3499
+msgid ""
+"The `USE_HORDE_BUILD` and `USE_HORDE_RUN` variables can be used to add "
+"buildtime and runtime dependencies on other Horde modules. See [."
+"filename]#Mk/Uses/horde.mk# for a complete list of available modules."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3501
+#, no-wrap
+msgid "Example Makefile for Horde Module"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3509
+#, no-wrap
+msgid ""
+"PORTNAME=\tHorde_Core\n"
+"DISTVERSION=\t2.14.0\n"
+"CATEGORIES=\tdevel www pear\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3513
+#, no-wrap
+msgid ""
+"MAINTAINER=\thorde@FreeBSD.org\n"
+"COMMENT=\tHorde Core Framework libraries\n"
+"WWW=\t\thttps://pear.horde.org/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3517
+#, no-wrap
+msgid ""
+"OPTIONS_DEFINE=\tKOLAB SOCKETS\n"
+"KOLAB_DESC=\tEnable Kolab server support\n"
+"SOCKETS_DESC=\tDepend on sockets PHP extension\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3520
+#, no-wrap
+msgid ""
+"USES=\thorde\n"
+"USE_PHP=\tsession\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3524
+#, no-wrap
+msgid ""
+"USE_HORDE_BUILD=\tHorde_Role\n"
+"USE_HORDE_RUN=\tHorde_Role Horde_History Horde_Pack \\\n"
+"\t\tHorde_Text_Filter Horde_View\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3527
+#, no-wrap
+msgid ""
+"KOLAB_USE=\tHORDE_RUN=Horde_Kolab_Server,Horde_Kolab_Session\n"
+"SOCKETS_USE=\tPHP=sockets\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3536
+msgid ""
+"As Horde modules are also PEAR modules they will also automatically be "
+"flavorized using crossref:flavors[flavors-auto-php,PHP flavors]."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3539
+#, no-wrap
+msgid "Using Python"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3544
+msgid ""
+"The Ports Collection supports parallel installation of multiple Python "
+"versions. Ports must use a correct `python` interpreter, according to the "
+"user-settable `PYTHON_VERSION`. Most prominently, this means replacing the "
+"path to `python` executable in scripts with the value of `PYTHON_CMD`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3546
+msgid ""
+"Ports that install files under `PYTHON_SITELIBDIR` must use the `pyXY-` "
+"package name prefix, so their package name embeds the version of Python they "
+"are installed into."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3550
+#, no-wrap
+msgid "PKGNAMEPREFIX=\t${PYTHON_PKGNAMEPREFIX}\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3554
+#, no-wrap
+msgid "Most Useful Variables for Ports That Use Python"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3558
+#, no-wrap
+msgid "`USES=python`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3560
+#, no-wrap
+msgid "The port needs Python. The minimal required version can be specified with values such as `3.10+`. Version ranges can also be specified by separating two version numbers with a dash: `USES=python:3.8-3.9`. Note that `USES=python` does _not_ cover Python 2.7, it needs to be requested explicitly with `USES=python:2.7+`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3561
+#, no-wrap
+msgid "`USE_PYTHON=distutils`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3563
+#, no-wrap
+msgid "Use Python distutils for configuring, compiling, and installing. This is required when the port comes with [.filename]#setup.py#. This overrides the `do-build` and `do-install` targets and may also override `do-configure` if `GNU_CONFIGURE` is not defined. Additionally, it implies `USE_PYTHON=flavors`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3564
+#, no-wrap
+msgid "`USE_PYTHON=autoplist`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3566
+#, no-wrap
+msgid "Create the packaging list automatically. This also requires `USE_PYTHON=distutils` to be set."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3567
+#, no-wrap
+msgid "`USE_PYTHON=concurrent`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3569
+#, no-wrap
+msgid "The port will use an unique prefix, typically `PYTHON_PKGNAMEPREFIX` for certain directories, such as `EXAMPLESDIR` and `DOCSDIR` and also will append a suffix, the python version from `PYTHON_VER`, to binaries and scripts to be installed. This allows ports to be installed for different Python versions at the same time, which otherwise would install conflicting files."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3570
+#, no-wrap
+msgid "`USE_PYTHON=flavors`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3572
+#, no-wrap
+msgid "The port does not use distutils but still supports multiple Python versions. `FLAVORS` will be set to the supported Python versions. See crossref:flavors[flavors-auto-python,`USES`=python and Flavors] for more information."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3573
+#, no-wrap
+msgid "`USE_PYTHON=optsuffix`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3575
+#, no-wrap
+msgid "If the current Python version is not the default version, the port will gain `PKGNAMESUFFIX=${PYTHON_PKGNAMESUFFIX}`. Only useful with flavors."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3576
+#, no-wrap
+msgid "`PYTHON_PKGNAMEPREFIX`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3578
+#, no-wrap
+msgid "Used as a `PKGNAMEPREFIX` to distinguish packages for different Python versions. Example: `py27-`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3579
+#, no-wrap
+msgid "`PYTHON_SITELIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3581
+#, no-wrap
+msgid "Location of the site-packages tree, that contains installation path of Python (usually `LOCALBASE`). `PYTHON_SITELIBDIR` can be very useful when installing Python modules."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3582
+#, no-wrap
+msgid "`PYTHONPREFIX_SITELIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3584
+#, no-wrap
+msgid "The PREFIX-clean variant of PYTHON_SITELIBDIR. Always use `%%PYTHON_SITELIBDIR%%` in [.filename]#pkg-plist# when possible. The default value of `%%PYTHON_SITELIBDIR%%` is `lib/python%%PYTHON_VERSION%%/site-packages`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3585
+#, no-wrap
+msgid "`PYTHON_CMD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3586
+#, no-wrap
+msgid "Python interpreter command line, including version number."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3589
+#, no-wrap
+msgid "Python Module Dependency Helpers"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3593
+#, no-wrap
+msgid "`PYNUMERIC`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3595
+#, no-wrap
+msgid "Dependency line for numeric extension."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3596
+#, no-wrap
+msgid "`PYNUMPY`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3598
+#, no-wrap
+msgid "Dependency line for the new numeric extension, numpy. (PYNUMERIC is deprecated by upstream vendor)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3599
+#, no-wrap
+msgid "`PYXML`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3601
+#, no-wrap
+msgid "Dependency line for XML extension (not needed for Python 2.0 and higher as it is also in base distribution)."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3602
+#, no-wrap
+msgid "`PY_ENUM34`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3604
+#, no-wrap
+msgid "Conditional dependency on package:devel/py-enum34[] depending on the Python version."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3605
+#, no-wrap
+msgid "`PY_ENUM_COMPAT`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3607
+#, no-wrap
+msgid "Conditional dependency on package:devel/py-enum-compat[] depending on the Python version."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3608
+#, no-wrap
+msgid "`PY_PATHLIB`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3610
+#, no-wrap
+msgid "Conditional dependency on package:devel/py-pathlib[] depending on the Python version."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3611
+#, no-wrap
+msgid "`PY_IPADDRESS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3613
+#, no-wrap
+msgid "Conditional dependency on package:net/py-ipaddress[] depending on the Python version."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3614
+#, no-wrap
+msgid "`PY_FUTURES`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3615
+#, no-wrap
+msgid "Conditional dependency on package:devel/py-futures[] depending on the Python version."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3618
+msgid ""
+"A complete list of available variables can be found in [.filename]#/usr/"
+"ports/Mk/Uses/python.mk#."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3623
+msgid ""
+"All dependencies to Python ports using crossref:flavors[flavors-auto-python,"
+"Python flavors] (either with `USE_PYTHON=distutils` or `USE_PYTHON=flavors`) "
+"must have the Python flavor appended to their origin using `@${PY_FLAVOR}`. "
+"See <<python-Makefile>>."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3626
+#, no-wrap
+msgid "Makefile for a Simple Python Module"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3634
+#, no-wrap
+msgid ""
+"PORTNAME=\tsample\n"
+"DISTVERSION=\t1.2.3\n"
+"CATEGORIES=\tdevel\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3638
+#, no-wrap
+msgid ""
+"MAINTAINER=\tfred.bloggs@example.com\n"
+"COMMENT=\tPython sample module\n"
+"WWW=\t\thttps://example.com/project/sample/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3640
+#, no-wrap
+msgid "RUN_DEPENDS=\t${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3643
+#, no-wrap
+msgid ""
+"USES=\t\tpython\n"
+"USE_PYTHON=\tautoplist distutils\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3653
+msgid ""
+"Some Python applications claim to have `DESTDIR` support (which would be "
+"required for staging) but it is broken (Mailman up to 2.1.16, for "
+"instance). This can be worked around by recompiling the scripts. This can "
+"be done, for example, in the `post-build` target. Assuming the Python "
+"scripts are supposed to reside in `PYTHONPREFIX_SITELIBDIR` after "
+"installation, this solution can be applied:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3659
+#, no-wrap
+msgid ""
+"(cd ${STAGEDIR}${PREFIX} \\\n"
+" && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \\\n"
+" -d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;})\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3662
+msgid ""
+"This recompiles the sources with a path relative to the stage directory, and "
+"prepends the value of `PREFIX` to the file name recorded in the byte-"
+"compiled output file by `-d`. `-f` is required to force recompilation, and "
+"the `:S;${PREFIX}/;;` strips prefixes from the value of "
+"`PYTHONPREFIX_SITELIBDIR` to make it relative to `PREFIX`."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3664
+#, no-wrap
+msgid "Using Tcl/Tk"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3669
+msgid ""
+"The Ports Collection supports parallel installation of multiple Tcl/Tk "
+"versions. Ports should try to support at least the default Tcl/Tk version "
+"and higher with `USES=tcl`. It is possible to specify the desired version "
+"of `tcl` by appending `:_xx_`, for example, `USES=tcl:85`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3671
+#, no-wrap
+msgid "The Most Useful Read-Only Variables for Ports That Use Tcl/Tk"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3675
+#, no-wrap
+msgid "`TCL_VER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3677
+#, no-wrap
+msgid "chosen major.minor version of Tcl"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3678
+#, no-wrap
+msgid "`TCLSH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3680
+#, no-wrap
+msgid "full path of the Tcl interpreter"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3681
+#, no-wrap
+msgid "`TCL_LIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3683
+#, no-wrap
+msgid "path of the Tcl libraries"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3684
+#, no-wrap
+msgid "`TCL_INCLUDEDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3686
+#, no-wrap
+msgid "path of the Tcl C header files"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3687
+#, no-wrap
+msgid "`TK_VER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3689
+#, no-wrap
+msgid "chosen major.minor version of Tk"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3690
+#, no-wrap
+msgid "`WISH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3692
+#, no-wrap
+msgid "full path of the Tk interpreter"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3693
+#, no-wrap
+msgid "`TK_LIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3695
+#, no-wrap
+msgid "path of the Tk libraries"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3696
+#, no-wrap
+msgid "`TK_INCLUDEDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3697
+#, no-wrap
+msgid "path of the Tk C header files"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3701
+msgid ""
+"See the crossref:uses[uses-tcl,`USES=tcl`] and crossref:uses[uses-tk,"
+"`USES=tk`] of crossref:uses[uses,Using `USES` Macros] for a full description "
+"of those variables. A complete list of those variables is available in [."
+"filename]#/usr/ports/Mk/Uses/tcl.mk#."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3703
+#, no-wrap
+msgid "Using SDL"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3706
+msgid ""
+"`USE_SDL` is used to autoconfigure the dependencies for ports which use an "
+"SDL based library like package:devel/sdl12[] and package:graphics/"
+"sdl_image[]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3708
+msgid "These SDL libraries for version 1.2 are recognized:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3710
+msgid "sdl: package:devel/sdl12[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3711
+msgid "console: package:devel/sdl_console[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3712
+msgid "gfx: package:graphics/sdl_gfx[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3713
+msgid "image: package:graphics/sdl_image[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3714
+msgid "mixer: package:audio/sdl_mixer[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3715
+msgid "mm: package:devel/sdlmm[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3716
+msgid "net: package:net/sdl_net[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3717
+msgid "pango: package:x11-toolkits/sdl_pango[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3718
+msgid "sound: package:audio/sdl_sound[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3719
+msgid "ttf: package:graphics/sdl_ttf[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3721
+msgid "These SDL libraries for version 2.0 are recognized:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3723
+msgid "sdl: package:devel/sdl20[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3724
+msgid "gfx: package:graphics/sdl2_gfx[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3725
+msgid "image: package:graphics/sdl2_image[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3726
+msgid "mixer: package:audio/sdl2_mixer[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3727
+msgid "net: package:net/sdl2_net[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3728
+msgid "ttf: package:graphics/sdl2_ttf[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3730
+msgid ""
+"Therefore, if a port has a dependency on package:net/sdl_net[] and package:"
+"audio/sdl_mixer[], the syntax will be:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3734
+#, no-wrap
+msgid "USE_SDL=\tnet mixer\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3737
+msgid ""
+"The dependency package:devel/sdl12[], which is required by package:net/"
+"sdl_net[] and package:audio/sdl_mixer[], is automatically added as well."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3739
+msgid "Using `USE_SDL` with entries for SDL 1.2, it will automatically:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3741
+msgid "Add a dependency on sdl12-config to `BUILD_DEPENDS`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3742
+msgid "Add the variable `SDL_CONFIG` to `CONFIGURE_ENV`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3743
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3749
+msgid "Add the dependencies of the selected libraries to `LIB_DEPENDS`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3745
+msgid "Using `USE_SDL` with entries for SDL 2.0, it will automatically:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3747
+msgid "Add a dependency on sdl2-config to `BUILD_DEPENDS`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3748
+msgid "Add the variable `SDL2_CONFIG` to `CONFIGURE_ENV`"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3752
+#, no-wrap
+msgid "Using wxWidgets"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3755
+msgid ""
+"This section describes the status of the wxWidgets libraries in the ports "
+"tree and its integration with the ports system."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3761
+msgid ""
+"There are many versions of the wxWidgets libraries which conflict between "
+"them (install files under the same name). In the ports tree this problem "
+"has been solved by installing each version under a different name using "
+"version number suffixes."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3767
+msgid ""
+"The obvious disadvantage of this is that each application has to be modified "
+"to find the expected version. Fortunately, most of the applications call "
+"the `wx-config` script to determine the necessary compiler and linker "
+"flags. The script is named differently for every available version. "
+"Majority of applications respect an environment variable, or accept a "
+"configure argument, to specify which `wx-config` script to call. Otherwise "
+"they have to be patched."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3769
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4070
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4289
+#, no-wrap
+msgid "Version Selection"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3772
+msgid ""
+"To make the port use a specific version of wxWidgets there are two variables "
+"available for defining (if only one is defined the other will be set to a "
+"default value):"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3774
+#, no-wrap
+msgid "Variables to Select wxWidgets Versions"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3781
+#, no-wrap
+msgid "Default value"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3782
+#, no-wrap
+msgid "`USE_WX`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3783
+#, no-wrap
+msgid "List of versions the port can use"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3785
+#, no-wrap
+msgid "All available versions"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3786
+#, no-wrap
+msgid "`USE_WX_NOT`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3787
+#, no-wrap
+msgid "List of versions the port cannot use"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3788
+#, no-wrap
+msgid "None"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3791
+msgid ""
+"The available wxWidgets versions and the corresponding ports in the tree are:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3793
+#, no-wrap
+msgid "Available wxWidgets Versions"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3797
+#, no-wrap
+msgid "Version"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3799
+#, no-wrap
+msgid "Port"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3800
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3818
+#, no-wrap
+msgid "`2.8`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3802
+#, no-wrap
+msgid "package:x11-toolkits/wxgtk28[]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3803
+#, no-wrap
+msgid "`3.0`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3804
+#, no-wrap
+msgid "package:x11-toolkits/wxgtk30[]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3807
+msgid ""
+"The variables in <<wx-ver-sel-table>> can be set to one or more of these "
+"combinations separated by spaces:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3809
+#, no-wrap
+msgid "wxWidgets Version Specifications"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3815
+#, no-wrap
+msgid "Example"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3816
+#, no-wrap
+msgid "Single version"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3819
+#, no-wrap
+msgid "Ascending range"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3821
+#, no-wrap
+msgid "`2.8+`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3822
+#, no-wrap
+msgid "Descending range"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3824
+#, no-wrap
+msgid "`3.0-`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3825
+#, no-wrap
+msgid "Full range (must be ascending)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3826
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3869
+#, no-wrap
+msgid "`2.8-3.0`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3830
+msgid ""
+"There are also some variables to select the preferred versions from the "
+"available ones. They can be set to a list of versions, the first ones will "
+"have higher priority."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3831
+#, no-wrap
+msgid "Variables to Select Preferred wxWidgets Versions"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3837
+#, no-wrap
+msgid "Designed for"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3838
+#, no-wrap
+msgid "`WANT_WX_VER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3840
+#, no-wrap
+msgid "the port"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3841
+#, no-wrap
+msgid "`WITH_WX_VER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3842
+#, no-wrap
+msgid "the user"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3849
+msgid ""
+"There are other applications that, while not being wxWidgets libraries, are "
+"related to them. These applications can be specified in `WX_COMPS`. These "
+"components are available:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3851
+#, no-wrap
+msgid "Available wxWidgets Components"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3858
+#, no-wrap
+msgid "Version restriction"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3859
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3902
+#, no-wrap
+msgid "`wx`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3860
+#, no-wrap
+msgid "main library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3862
+#, no-wrap
+msgid "none"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3863
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3905
+#, no-wrap
+msgid "`contrib`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3864
+#, no-wrap
+msgid "contributed libraries"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3866
+#, no-wrap
+msgid "`none`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3867
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3908
+#, no-wrap
+msgid "`python`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3868
+#, no-wrap
+msgid "wxPython (Python bindings)"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3874
+msgid ""
+"The dependency type can be selected for each component by adding a suffix "
+"separated by a semicolon. If not present then a default type will be used "
+"(see <<wx-def-dep-types>>). These types are available:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3876
+#, no-wrap
+msgid "Available wxWidgets Dependency Types"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3883
+#, no-wrap
+msgid "`build`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3885
+#, no-wrap
+msgid "Component is required for building, equivalent to `BUILD_DEPENDS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3886
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3910
+#, no-wrap
+msgid "`run`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3888
+#, no-wrap
+msgid "Component is required for running, equivalent to `RUN_DEPENDS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3889
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3904
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3907
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3913
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3915
+#, no-wrap
+msgid "`lib`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3890
+#, no-wrap
+msgid "Component is required for building and running, equivalent to `LIB_DEPENDS`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3893
+msgid "The default values for the components are detailed in this table:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3895
+#, no-wrap
+msgid "Default wxWidgets Dependency Types"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3901
+#, no-wrap
+msgid "Dependency type"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3911
+#, no-wrap
+msgid "`mozilla`"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3918
+#, no-wrap
+msgid "Selecting wxWidgets Components"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3922
+msgid ""
+"This fragment corresponds to a port which uses wxWidgets version `2.4` and "
+"its contributed libraries."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3927
+#, no-wrap
+msgid ""
+"USE_WX=\t\t2.8\n"
+"WX_COMPS=\twx contrib\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3932
+#, no-wrap
+msgid "Detecting Installed Versions"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3937
+msgid ""
+"To detect an installed version, define `WANT_WX`. If it is not set to a "
+"specific version then the components will have a version suffix. `HAVE_WX` "
+"will be filled after detection."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3939
+#, no-wrap
+msgid "Detecting Installed wxWidgets Versions and Components"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3943
+msgid ""
+"This fragment can be used in a port that uses wxWidgets if it is installed, "
+"or an option is selected."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3947
+#, no-wrap
+msgid "WANT_WX=\tyes\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3949
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3965
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4018
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4608
+#, no-wrap
+msgid ".include <bsd.port.pre.mk>\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3954
+#, no-wrap
+msgid ""
+".if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.8)\n"
+"USE_WX=\t\t\t2.8\n"
+"CONFIGURE_ARGS+=\t--enable-wx\n"
+".endif\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3957
+msgid ""
+"This fragment can be used in a port that enables wxPython support if it is "
+"installed or if an option is selected, in addition to wxWidgets, both "
+"version `2.8`."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3963
+#, no-wrap
+msgid ""
+"USE_WX=\t\t2.8\n"
+"WX_COMPS=\twx\n"
+"WANT_WX=\t2.8\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3970
+#, no-wrap
+msgid ""
+".if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || !empty(HAVE_WX:Mpython)\n"
+"WX_COMPS+=\t\tpython\n"
+"CONFIGURE_ARGS+=\t--enable-wxpython\n"
+".endif\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3975
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4145
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4380
+#, no-wrap
+msgid "Defined Variables"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3978
+msgid ""
+"These variables are available in the port (after defining one from <<wx-ver-"
+"sel-table>>)."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3980
+#, no-wrap
+msgid "Variables Defined for Ports That Use wxWidgets"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3987
+#, no-wrap
+msgid "`WX_CONFIG`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3989
+#, no-wrap
+msgid "The path to the wxWidgets`wx-config` script (with different name)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3990
+#, no-wrap
+msgid "`WXRC_CMD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3992
+#, no-wrap
+msgid "The path to the wxWidgets`wxrc` program (with different name)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3993
+#, no-wrap
+msgid "`WX_VERSION`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3994
+#, no-wrap
+msgid "The wxWidgets version that is going to be used (for example, `2.6`)"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:3997
+#, no-wrap
+msgid "Processing in [.filename]#bsd.port.pre.mk#"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4000
+msgid ""
+"Define `WX_PREMK` to be able to use the variables right after including [."
+"filename]#bsd.port.pre.mk#."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4004
+msgid ""
+"When defining `WX_PREMK`, then the version, dependencies, components and "
+"defined variables will not change if modifying the wxWidgets port variables "
+"_after_ including [.filename]#bsd.port.pre.mk#."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4007
+#, no-wrap
+msgid "Using wxWidgets Variables in Commands"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4011
+msgid ""
+"This fragment illustrates the use of `WX_PREMK` by running the `wx-config` "
+"script to obtain the full version string, assign it to a variable and pass "
+"it to the program."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4016
+#, no-wrap
+msgid ""
+"USE_WX=\t\t2.8\n"
+"WX_PREMK=\tyes\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4021
+#, no-wrap
+msgid ""
+".if exists(${WX_CONFIG})\n"
+"VER_STR!=\t${WX_CONFIG} --release\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4024
+#, no-wrap
+msgid ""
+"PLIST_SUB+=\tVERSION=\"${VER_STR}\"\n"
+".endif\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4031
+msgid ""
+"The wxWidgets variables can be safely used in commands when they are inside "
+"targets without the need of `WX_PREMK`."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4034
+#, no-wrap
+msgid "Additional `configure` Arguments"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4037
+msgid ""
+"Some GNU `configure` scripts cannot find wxWidgets with just the `WX_CONFIG` "
+"environment variable set, requiring additional arguments. `WX_CONF_ARGS` can "
+"be used for provide them."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4039
+#, no-wrap
+msgid "Legal Values for `WX_CONF_ARGS`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4043
+#, no-wrap
+msgid "Possible value"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4045
+#, no-wrap
+msgid "Resulting argument"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4046
+#, no-wrap
+msgid "`absolute`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4048
+#, no-wrap
+msgid "`--with-wx-config=${WX_CONFIG}`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4049
+#, no-wrap
+msgid "`relative`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4050
+#, no-wrap
+msgid "`--with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}`"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4053
+#, no-wrap
+msgid "Using Lua"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4056
+msgid ""
+"This section describes the status of the Lua libraries in the ports tree and "
+"its integration with the ports system."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4062
+msgid ""
+"There are many versions of the Lua libraries and corresponding interpreters, "
+"which conflict between them (install files under the same name). In the "
+"ports tree this problem has been solved by installing each version under a "
+"different name using version number suffixes."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4065
+msgid ""
+"The obvious disadvantage of this is that each application has to be modified "
+"to find the expected version. But it can be solved by adding some "
+"additional flags to the compiler and linker."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4068
+msgid ""
+"Applications that use Lua should normally build for just one version. "
+"However, loadable modules for Lua are built in a separate flavor for each "
+"Lua version that they support, and dependencies on such modules should "
+"specify the flavor using the `@${LUA_FLAVOR}` suffix on the port origin."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4073
+msgid "A port using Lua should have a line of this form:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4077
+#, no-wrap
+msgid "USES=\tlua\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4082
+msgid ""
+"If a specific version of Lua, or range of versions, is needed, it can be "
+"specified as a parameter in the form `XY` (which may be used multiple "
+"times), `XY+`, `-XY`, or `XY-ZA`. The default version of Lua as set via "
+"`DEFAULT_VERSIONS` will be used if it falls in the requested range, "
+"otherwise the closest requested version to the default will be used. For "
+"example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4086
+#, no-wrap
+msgid "USES=\tlua:52-53\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4089
+msgid ""
+"Note that no attempt is made to adjust the version selection based on the "
+"presence of any already-installed Lua version."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4094
+msgid ""
+"The `XY+` form of version specification should not be used without careful "
+"consideration; the Lua API changes to some extent in every version, and "
+"configuration tools like CMake or Autoconf will often fail to work on future "
+"versions of Lua until updated to do so."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4097
+#, no-wrap
+msgid "Configuration and Compiler flags"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4102
+msgid ""
+"Software that uses Lua may have been written to auto-detect the Lua version "
+"in use. In general ports should override this assumption, and force the use "
+"of the specific Lua version selected as described above. Depending on the "
+"software being ported, this might require any or all of:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4104
+msgid ""
+"Using `LUA_VER` as part of a parameter to the software's configuration "
+"script via `CONFIGURE_ARGS` or `CONFIGURE_ENV` (or equivalent for other "
+"build systems);"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4105
+msgid ""
+"Adding `-I${LUA_INCDIR}`, `-L${LUA_LIBDIR}`, and `-llua-${LUA_VER}` to "
+"`CFLAGS`, `LDFLAGS`, `LIBS` respectively as appropriate;"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4106
+msgid ""
+"Patch the software's configuration or build files to select the correct "
+"version."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4109
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4353
+#, no-wrap
+msgid "Version Flavors"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4113
+msgid ""
+"A port which installs a Lua module (rather than an application that simply "
+"makes use of Lua) should build a separate flavor for each supported Lua "
+"version. This is done by adding the `module` parameter:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4117
+#, no-wrap
+msgid "USES=\tlua:module\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4120
+msgid ""
+"A version number or range of versions can be specified as well; use a comma "
+"to separate parameters."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4122
+msgid ""
+"Since each flavor must have a different package name, the variable "
+"`LUA_PKGNAMEPREFIX` is provided which will be set to an appropriate value; "
+"the intended usage is:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4126
+#, no-wrap
+msgid "PKGNAMEPREFIX=\t${LUA_PKGNAMEPREFIX}\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4130
+msgid ""
+"Module ports should normally install files only to `LUA_MODLIBDIR`, "
+"`LUA_MODSHAREDIR`, `LUA_DOCSDIR`, and `LUA_EXAMPLESDIR`, all of which are "
+"set up to refer to version-specific subdirectories. Installing any other "
+"files must be done with care to avoid conflicts between versions."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4132
+msgid ""
+"A port (other than a Lua module) which wishes to build a separate package "
+"for each Lua version should use the `flavors` parameter:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4136
+#, no-wrap
+msgid "USES=\tlua:flavors\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4140
+msgid ""
+"This operates the same way as the `module` parameter described above, but "
+"without the assumption that the package should be documented as a Lua module "
+"(so `LUA_DOCSDIR` and `LUA_EXAMPLESDIR` are not defined by default). "
+"However, the port may choose to define `LUA_DOCSUBDIR` as a suitable "
+"subdirectory name (usually the port's `PORTNAME` as long as this does not "
+"conflict with the `PORTNAME` of any module), in which case the framework "
+"will define both `LUA_DOCSDIR` and `LUA_EXAMPLESDIR`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4143
+msgid ""
+"As with module ports, a flavored port should avoid installing files that "
+"would conflict between versions. Typically this is done by adding "
+"`LUA_VER_STR` as a suffix to program names (e.g. using crossref:uses[uses-"
+"uniquefiles,`uniquefiles`]), and otherwise using either `LUA_VER` or "
+"`LUA_VER_STR` as part of any other files or subdirectories used outside of "
+"`LUA_MODLIBDIR` and `LUA_MODSHAREDIR`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4148
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4383
+msgid "These variables are available in the port."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4150
+#, no-wrap
+msgid "Variables Defined for Ports That Use Lua"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4157
+#, no-wrap
+msgid "`LUA_VER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4159
+#, no-wrap
+msgid "The Lua version that is going to be used (for example, `5.4`)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4160
+#, no-wrap
+msgid "`LUA_VER_STR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4162
+#, no-wrap
+msgid "The Lua version without the dots (for example, `54`)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4163
+#, no-wrap
+msgid "`LUA_FLAVOR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4165
+#, no-wrap
+msgid "The flavor name corresponding to the selected Lua version, to be used for specifying dependencies"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4166
+#, no-wrap
+msgid "`LUA_BASE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4168
+#, no-wrap
+msgid "The prefix that should be used to locate Lua (and components) that are already installed"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4169
+#, no-wrap
+msgid "`LUA_PREFIX`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4171
+#, no-wrap
+msgid "The prefix where Lua (and components) are to be installed by this port"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4172
+#, no-wrap
+msgid "`LUA_INCDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4174
+#, no-wrap
+msgid "The directory where Lua header files are installed"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4175
+#, no-wrap
+msgid "`LUA_LIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4177
+#, no-wrap
+msgid "The directory where Lua libraries are installed"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4178
+#, no-wrap
+msgid "`LUA_REFMODLIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4180
+#, no-wrap
+msgid "The directory where Lua module libraries ([.filename]#.so#) that are already installed are to be found"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4181
+#, no-wrap
+msgid "`LUA_REFMODSHAREDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4183
+#, no-wrap
+msgid "The directory where Lua modules ([.filename]#.lua#) that are already installed are to be found"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4184
+#, no-wrap
+msgid "`LUA_MODLIBDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4186
+#, no-wrap
+msgid "The directory where Lua module libraries ([.filename]#.so#) are to be installed by this port"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4187
+#, no-wrap
+msgid "`LUA_MODSHAREDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4189
+#, no-wrap
+msgid "The directory where Lua modules ([.filename]#.lua#) are to be installed by this port"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4190
+#, no-wrap
+msgid "`LUA_PKGNAMEPREFIX`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4192
+#, no-wrap
+msgid "The package name prefix used by Lua modules"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4193
+#, no-wrap
+msgid "`LUA_CMD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4195
+#, no-wrap
+msgid "The name of the Lua interpreter (e.g. `lua54`)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4196
+#, no-wrap
+msgid "`LUAC_CMD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4197
+#, no-wrap
+msgid "The name of the Lua compiler (e.g. `luac54`)"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4200
+msgid ""
+"These additional variables are available for ports that specified the "
+"`module` parameter:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4202
+#, no-wrap
+msgid "Variables Defined for Lua Module Ports"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4209
+#, no-wrap
+msgid "`LUA_DOCSDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4211
+#, no-wrap
+msgid "the directory to which the module's documentation should be installed."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4212
+#, no-wrap
+msgid "`LUA_EXAMPLESDIR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4213
+#, no-wrap
+msgid "the directory to which the module's example files should be installed."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4219
+#, no-wrap
+msgid "Makefile for an application using Lua"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4224
+msgid ""
+"This example shows how to reference a Lua module required at run time. "
+"Notice that the reference must specify a flavor."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4230
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4491
+#, no-wrap
+msgid ""
+"PORTNAME=\tsample\n"
+"DISTVERSION=\t1.2.3\n"
+"CATEGORIES=\twhatever\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4234
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4258
+#, no-wrap
+msgid ""
+"MAINTAINER=\tfred.bloggs@example.com\n"
+"COMMENT=\tSample\n"
+"WWW=\t\thttps://example.com/lua_sample/sample/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4236
+#, no-wrap
+msgid "RUN_DEPENDS=\t${LUA_REFMODLIBDIR}/lpeg.so:devel/lua-lpeg@${LUA_FLAVOR}\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4238
+#, no-wrap
+msgid "USES=\t\tlua\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4245
+#, no-wrap
+msgid "Makefile for a simple Lua module"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4254
+#, no-wrap
+msgid ""
+"PORTNAME=\tsample\n"
+"DISTVERSION=\t1.2.3\n"
+"CATEGORIES=\twhatever\n"
+"PKGNAMEPREFIX=\t${LUA_PKGNAMEPREFIX}\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4260
+#, no-wrap
+msgid "USES=\t\tlua:module\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4262
+#, no-wrap
+msgid "DOCSDIR=\t${LUA_DOCSDIR}\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4269
+#, no-wrap
+msgid "Using Guile"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4272
+msgid ""
+"This section describes the status of Guile in the ports tree and its "
+"integration with the ports system."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4281
+msgid ""
+"There are multiple versions of the Guile libraries and corresponding "
+"interpreters, which conflict between them (install files under the same "
+"name). In the ports tree this problem has been solved by installing each "
+"version under a different name using version number suffixes. In most "
+"cases, applications should detect the correct version from the configuration "
+"variables provided and use `pkg-config` to determine the name and associated "
+"paths. However, some applications (especially those using their own "
+"configuration rules for `cmake` or `meson`) will always try to use the "
+"latest available version. In this case, either patch the port or declare a "
+"build conflict (see the `conflicts` option below) to ensure that the correct "
+"dependency is generated when building outside of poudriere."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4287
+msgid ""
+"Applications that use Guile should normally build for just one version, "
+"preferably the one specified in `DEFAULT_VERSIONS`, or failing that the "
+"latest version that they support. However, Guile or Scheme libraries, or "
+"extension modules for Guile are built in a separate flavor for each Guile "
+"version that they support, and dependencies on such ports should specify the "
+"flavor using the `@${GUILE_FLAVOR}` suffix on the port origin."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4292
+msgid ""
+"A port using Guile should define `USES=guile:__arg,arg...__` with "
+"appropriate arguments as follows:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4294
+#, no-wrap
+msgid "Arguments Defined for Ports That Use Guile"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4301
+#, no-wrap
+msgid "_X.Y_"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4305
+#, no-wrap
+msgid ""
+"Declare compatibility with Guile version `X.Y`.\n"
+"Currently available versions are `1.8` (obsolete), `2.2` and `3.0`.\n"
+"Multiple versions may be specified."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4306
+#, no-wrap
+msgid "flavors"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4310
+#, no-wrap
+msgid ""
+"Create a flavor for every Guile version specified.\n"
+"The version specified by `DEFAULT_VERSIONS` will become the default flavor.\n"
+"Flavor names are of the form `guileXY`."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4311
+#, no-wrap
+msgid "build"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4314
+#, no-wrap
+msgid ""
+"Add the Guile interpreter as a build dependency only, rather than a library dependency.\n"
+"`build` and `run` may both be specified."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4315
+#, no-wrap
+msgid "run"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4318
+#, no-wrap
+msgid ""
+"Add the Guile interpreter as a runtime dependency only, rather than a library dependency.\n"
+"`build` and `run` may both be specified."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4319
+#, no-wrap
+msgid "alias"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4321
+#, no-wrap
+msgid "Add `BINARY_ALIAS` values for the interpreter and tools."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4322
+#, no-wrap
+msgid "conflicts"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4324
+#, no-wrap
+msgid ""
+"Declare `CONFLICTS_BUILD` for Guile versions newer than the one selected.\n"
+"Use this when the port cannot be configured to use a specific Guile version."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4327
+msgid ""
+"Some additional arguments are available for handling unusual cases; see `Mk/"
+"Uses/guile.mk` for details."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4330
+msgid ""
+"Unless `build` or `run` is specified, then `LIB_DEPENDS` receives both the "
+"`libguile` library dependency and also any additional dependencies required "
+"by the guile version, e.g. `libgc`. Normally the port should not need any "
+"additional dependencies related to its use of Guile."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4332
+#, no-wrap
+msgid "Configuration flags"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4337
+msgid ""
+"Software that uses Guile should be using the `pkg-config` mechanism to "
+"obtain compiler and linker flags. Some older or esoteric ports may be using "
+"`guile-config` or obtaining values directly from `guile` instead, which "
+"should also work (the `alias` argument may be useful in some of these cases)."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4339
+msgid ""
+"The framework tries to inform the port of the desired Guile version using "
+"the following methods:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4341
+msgid "`GUILE_EFFECTIVE_VERSION` is added to `CONFIGURE_ENV`;"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4342
+msgid ""
+"The full path to the Guile binary is specified in the `GUILE` variable in "
+"`CONFIGURE_ENV` and `MAKE_ENV`;"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4343
+msgid ""
+"If the `alias` option is used, the desired Guile version's binaries are the "
+"ones aliased;"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4344
+msgid ""
+"If the `alias` option is not used, paths to the desired Guile version's "
+"tools (`guild`, `guile-config`, etc.) are added to `CONFIGURE_ENV` and "
+"`MAKE_ENV` as variables `GUILD`, `GUILE_CONFIG`, etc."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4347
+msgid ""
+"For some ports, it may be necessary to specify the version in additional "
+"ways, such as via `CONFIGURE_ARGS` or `MESON_ARGS`, depending on the port."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4351
+msgid ""
+"If none of these methods cause the port to select the specified Guile "
+"version when other versions are present, then preferably patch it to do so. "
+"If that is not feasible, specify the `conflicts` option to prevent building "
+"the port under conditions where it will detect the wrong version."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4358
+msgid ""
+"A port which installs a Guile extension or library, or a Scheme library that "
+"precompiles for Guile, should build a separate flavor for each supported "
+"Guile version. This is done by adding the `flavors` option."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4360
+msgid ""
+"Since each flavor must have a different package name, such ports must set "
+"`PKGNAMESUFFIX`, typically:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4364
+#, no-wrap
+msgid "PKGNAMESUFFIX=\t-${FLAVOR}\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4368
+msgid ""
+"Such ports must install Scheme files to `GUILE_SITE_DIR` rather than to "
+"`GUILE_GLOBAL_SITE_DIR` even when the files are not version-specific. This "
+"often requires patching the port."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4371
+msgid ""
+"Additionally, if such a port installs a `.pc` file, it must be placed in "
+"`GUILE_PKGCONFIG_PATH` rather than in the global `pkgconfig` directory. "
+"This allows dependent ports to find a correct configuration for the specific "
+"Guile version in use."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4374
+msgid ""
+"If a Guile extension port installs a `.so` file, then it must usually be "
+"placed in the Guile-version-specific `extensions` directory. `USE_LDCONFIG` "
+"should usually not be used."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4378
+msgid ""
+"Any other files installed by a flavored port must likewise be in version-"
+"specific directories or use version-specific filenames. For documentation "
+"and examples, `GUILE_DOCS_DIR` and `GUILE_EXAMPLES_DIR` specify suitable "
+"locations in which the port should create a subdirectory, see below."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4385
+#, no-wrap
+msgid "Variables Defined for Ports That Use Guile"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4390
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4452
+#, no-wrap
+msgid "Sample Value"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4393
+#, no-wrap
+msgid "`GUILE_VER`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4394
+#, no-wrap
+msgid "3.0"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4396
+#, no-wrap
+msgid "Guile version in use."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4397
+#, no-wrap
+msgid "`GUILE_SFX`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4398
+#, no-wrap
+msgid "3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4401
+#, no-wrap
+msgid ""
+"Short suffix used on some names.\n"
+"Use only with care; may be non-unique or may change in the future."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4402
+#, no-wrap
+msgid "`GUILE_FLAVOR`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4403
+#, no-wrap
+msgid "guile30"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4405
+#, no-wrap
+msgid "Flavor name corresponding to the selected version."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4406
+#, no-wrap
+msgid "`GUILE_PORT`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4407
+#, no-wrap
+msgid "lang/guile3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4409
+#, no-wrap
+msgid "Port origin of the specified Guile version."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4410
+#, no-wrap
+msgid "`GUILE_PREFIX`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4411
+#, no-wrap
+msgid "${PREFIX}"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4413
+#, no-wrap
+msgid "Directory prefix to be used for installation."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4414
+#, no-wrap
+msgid "`GUILE_CMD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4415
+#, no-wrap
+msgid "guile-3.0"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4417
+#, no-wrap
+msgid "Name of the Guile interpreter, with version suffix."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4418
+#, no-wrap
+msgid "`GUILE_CMDPATH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4419
+#, no-wrap
+msgid "${LOCALBASE}/bin/guile-3.0"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4421
+#, no-wrap
+msgid "Full path to the Guile interpreter."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4422
+#, no-wrap
+msgid "`GUILD_CMD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4423
+#, no-wrap
+msgid "guild-3.0"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4425
+#, no-wrap
+msgid "Name of the Guild tool, with version suffix."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4426
+#, no-wrap
+msgid "`GUILD_CMDPATH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4427
+#, no-wrap
+msgid "${LOCALBASE}/bin/guild-3.0"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4429
+#, no-wrap
+msgid "Full path to the Guild tool."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4431
+#, no-wrap
+msgid ""
+"`++GUILE_*_CMD++` +\n"
+"`++GUILE_*_CMDPATH++`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4434
+#, no-wrap
+msgid "Like `GUILE_CMD` and `GUILE_CMDPATH`, but for other tool binaries."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4435
+#, no-wrap
+msgid "`GUILE_PKGCONFIG_PATH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4436
+#, no-wrap
+msgid "${LOCALBASE}/libdata/pkgconfig/guile/3.0"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4438
+#, no-wrap
+msgid "Where packages using `flavors` should install `.pc` files."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4439
+#, no-wrap
+msgid "`GUILE_INFO_PATH`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4440
+#, no-wrap
+msgid "share/info/guile3"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4441
+#, no-wrap
+msgid "A suitable value for `INFO_PATH` for ports using the `flavors` option."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4445
+msgid ""
+"The following are defined as variables and as `PLIST_SUB` entries. The "
+"variable form is suffixed with `_DIR` and is a full path (prefixed with "
+"`GUILE_PREFIX`)."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4447
+#, no-wrap
+msgid "Path Substitutions Defined for Ports That Use Guile"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4455
+#, no-wrap
+msgid "GUILE_GLOBAL_SITE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4456
+#, no-wrap
+msgid "share/guile/site"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4458
+#, no-wrap
+msgid "Site directory shared by all guile versions; this should not usually be used."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4459
+#, no-wrap
+msgid "GUILE_SITE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4460
+#, no-wrap
+msgid "share/guile/3.0/site"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4462
+#, no-wrap
+msgid "Site directory for the selected Guile version."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4463
+#, no-wrap
+msgid "GUILE_SITE_CCACHE"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4464
+#, no-wrap
+msgid "lib/guile/3.0/site-ccache"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4466
+#, no-wrap
+msgid "Directory for compiled bytecode files."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4467
+#, no-wrap
+msgid "GUILE_DOCS"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4468
+#, no-wrap
+msgid "share/doc/guile30"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4470
+#, no-wrap
+msgid "Parent directory for version-specific documentation."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4471
+#, no-wrap
+msgid "GUILE_EXAMPLES"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4472
+#, no-wrap
+msgid "share/examples/guile30"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4473
+#, no-wrap
+msgid "Parent directory for version-specific examples."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4479
+#, no-wrap
+msgid "Makefile for an application using Guile"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4485
+msgid ""
+"This example shows how to reference a Guile library required at build and "
+"run time. Notice that the reference must specify a flavor. This example "
+"assumes that the application is using `pkg-config` to locate dependencies."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4495
+#, no-wrap
+msgid ""
+"MAINTAINER=\tfred.bloggs@example.com\n"
+"COMMENT=\tSample\n"
+"WWW=\t\thttps://example.com/guile_sample/sample/\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4498
+#, no-wrap
+msgid ""
+"BUILD_DEPENDS=\tguile-lib-${GUILE_FLAVOR}>=0.2.5:devel/guile-lib@${GUILE_FLAVOR}\n"
+"RUN_DEPENDS=\tguile-lib-${GUILE_FLAVOR}>=0.2.5:devel/guile-lib@${GUILE_FLAVOR}\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4500
+#, no-wrap
+msgid "USES=\t\tguile:2.2,3.0 pkgconfig\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4507
+#, no-wrap
+msgid "Using `iconv`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4510
+msgid "FreeBSD has a native `iconv` in the operating system."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4512
+msgid "For software that needs `iconv`, define `USES=iconv`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4514
+msgid "When a port defines `USES=iconv`, these variables will be available:"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4519
+#, no-wrap
+msgid "Variable name"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4520
+#, no-wrap
+msgid "Purpose"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4521
+#, no-wrap
+msgid "Port iconv (when using WCHAR_T or //TRANSLIT extensions)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4524
+#, no-wrap
+msgid "Base iconv"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4525
+#, no-wrap
+msgid "`ICONV_CMD`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4526
+#, no-wrap
+msgid "Directory where the `iconv` binary resides"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4527
+#, no-wrap
+msgid "`${LOCALBASE}/bin/iconv`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4529
+#, no-wrap
+msgid "[.filename]#/usr/bin/iconv#"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4530
+#, no-wrap
+msgid "`ICONV_LIB`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4531
+#, no-wrap
+msgid "`ld` argument to link to [.filename]#libiconv# (if needed)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4532
+#, no-wrap
+msgid "`-liconv`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4534
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4544
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4548
+#, no-wrap
+msgid "(empty)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4535
+#, no-wrap
+msgid "`ICONV_PREFIX`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4536
+#, no-wrap
+msgid "Directory where the `iconv` implementation resides (useful for configure scripts)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4537
+#, no-wrap
+msgid "`${LOCALBASE}`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4539
+#, no-wrap
+msgid "[.filename]#/usr#"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4540
+#, no-wrap
+msgid "`ICONV_CONFIGURE_ARG`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4541
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4546
+#, no-wrap
+msgid "Preconstructed configure argument for configure scripts"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4542
+#, no-wrap
+msgid "`--with-libiconv-prefix=${LOCALBASE}`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4545
+#, no-wrap
+msgid "`ICONV_CONFIGURE_BASE`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4547
+#, no-wrap
+msgid "`--with-libiconv=${LOCALBASE}`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4551
+msgid ""
+"These two examples automatically populate the variables with the correct "
+"value for systems using package:converters/libiconv[] or the native `iconv` "
+"respectively:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4553
+#, no-wrap
+msgid "Simple `iconv` Usage"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4560
+#, no-wrap
+msgid ""
+"USES=\t\ticonv\n"
+"LDFLAGS+=\t-L${LOCALBASE}/lib ${ICONV_LIB}\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4565
+#, no-wrap
+msgid "`iconv` Usage with `configure`"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4572
+#, no-wrap
+msgid ""
+"USES=\t\ticonv\n"
+"CONFIGURE_ARGS+=${ICONV_CONFIGURE_ARG}\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4578
+msgid ""
+"As shown above, `ICONV_LIB` is empty when a native `iconv` is present. This "
+"can be used to detect the native `iconv` and respond appropriately."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4581
+msgid ""
+"Sometimes a program has an `ld` argument or search path hardcoded in a [."
+"filename]#Makefile# or configure script. This approach can be used to solve "
+"that problem:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4583
+#, no-wrap
+msgid "Fixing Hardcoded `-liconv`"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4589
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4606
+#, no-wrap
+msgid "USES=\t\ticonv\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4592
+#, no-wrap
+msgid ""
+"post-patch:\n"
+"\t@${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/Makefile\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4598
+msgid ""
+"In some cases it is necessary to set alternate values or perform operations "
+"depending on whether there is a native `iconv`. [.filename]#bsd.port.pre."
+"mk# must be included before testing the value of `ICONV_LIB`:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4600
+#, no-wrap
+msgid "Checking for Native `iconv` Availability"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4614
+#, no-wrap
+msgid ""
+"post-patch:\n"
+".if empty(ICONV_LIB)\n"
+"\t# native iconv detected\n"
+"\t@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh\n"
+".endif\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4616
+#, no-wrap
+msgid ".include <bsd.port.post.mk>\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4621
+#, no-wrap
+msgid "Using Xfce"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4624
+msgid "Ports that need Xfce libraries or applications set `USES=xfce`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4628
+msgid ""
+"Specific Xfce library and application dependencies are set with values "
+"assigned to `USE_XFCE`. They are defined in [.filename]#/usr/ports/Mk/Uses/"
+"xfce.mk#. The possible values are:"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4629
+#, no-wrap
+msgid "Values of `USE_XFCE`"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4630
+#, no-wrap
+msgid "garcon"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4632
+msgid "package:sysutils/garcon[]"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4633
+#, no-wrap
+msgid "libexo"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4635
+msgid "package:x11/libexo[]"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4636
+#, no-wrap
+msgid "libgui"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4638
+msgid "package:x11-toolkits/libxfce4gui[]"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4639
+#, no-wrap
+msgid "libmenu"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4641
+msgid "package:x11/libxfce4menu[]"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4642
+#, no-wrap
+msgid "libutil"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4644
+msgid "package:x11/libxfce4util[]"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4645
+#, no-wrap
+msgid "panel"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4647
+msgid "package:x11-wm/xfce4-panel[]"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4648
+#, no-wrap
+msgid "thunar"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4650
+msgid "package:x11-fm/thunar[]"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4651
+#, no-wrap
+msgid "xfconf"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4653
+msgid "package:x11/xfce4-conf[]"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4655
+#, no-wrap
+msgid "`USES=xfce` Example"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4662
+#, no-wrap
+msgid ""
+"USES=\t\txfce\n"
+"USE_XFCE=\tlibmenu\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4667
+#, no-wrap
+msgid "Using Xfce's Own GTK2 Widgets"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4671
+msgid ""
+"In this example, the ported application uses the GTK2-specific widgets "
+"package:x11/libxfce4menu[] and package:x11/xfce4-conf[]."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4676
+#, no-wrap
+msgid ""
+"USES=\t\txfce:gtk2\n"
+"USE_XFCE=\tlibmenu xfconf\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4685
+msgid ""
+"Xfce components included this way will automatically include any "
+"dependencies they need. It is no longer necessary to specify the entire "
+"list. If the port only needs package:x11-wm/xfce4-panel[], use:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4690
+#, no-wrap
+msgid ""
+"USES=\t\txfce\n"
+"USE_XFCE=\tpanel\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4693
+msgid ""
+"There is no need to list the components package:x11-wm/xfce4-panel[] needs "
+"itself like this:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4698
+#, no-wrap
+msgid ""
+"USES=\t\txfce\n"
+"USE_XFCE=\tlibexo libmenu libutil panel\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4702
+msgid ""
+"However, Xfce components and non-Xfce dependencies of the port must be "
+"included explicitly. Do not count on an Xfce component to provide a sub-"
+"dependency other than itself for the main port."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4705
+#, no-wrap
+msgid "Using Budgie"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4708
+msgid ""
+"Applications or libraries depending on the Budgie desktop should set `USES= "
+"budgie` and set `USE_BUDGIE` to the list of required components."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4715
+#, no-wrap
+msgid "`libbudgie`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4717
+#, no-wrap
+msgid "Desktop core (library)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4718
+#, no-wrap
+msgid "`libmagpie`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4720
+#, no-wrap
+msgid "Budgie's X11 window manager and compositor library"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4721
+#, no-wrap
+msgid "`raven`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4723
+#, no-wrap
+msgid "All-in-one center in panel for accessing different applications widgets"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4724
+#, no-wrap
+msgid "`screensaver`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4726
+#, no-wrap
+msgid "Desktop-specific screensaver"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4731
+msgid ""
+"All application widgets communicate through the *org.budgie_desktop.Raven* "
+"service."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4733
+msgid ""
+"The default dependency is lib- and run-time, it can be changed with `:build` "
+"or `:run`, for example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4738
+#, no-wrap
+msgid ""
+"USES=\t\tbudgie\n"
+"USE_BUDGIE=\tscreensaver:build\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4742
+#, no-wrap
+msgid "`USE_BUDGIE` Example"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4749
+#, no-wrap
+msgid ""
+"USES=\t\tbudgie gettext gnome meson pkgconfig\n"
+"USE_BUDGIE=\tlibbudgie\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4753
+#, no-wrap
+msgid "Using Databases"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4756
+msgid ""
+"Use one of the `USES` macros from <<using-databases-uses>> to add a "
+"dependency on a database."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4758
+#, no-wrap
+msgid "Database `USES` Macros"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4762
+#, no-wrap
+msgid "Database"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4764
+#, no-wrap
+msgid "USES Macro"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4765
+#, no-wrap
+msgid "Berkeley DB"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4767
+#, no-wrap
+msgid "crossref:uses[uses-bdb,`bdb`]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4768
+#, no-wrap
+msgid "MariaDB, MySQL, Percona"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4770
+#, no-wrap
+msgid "crossref:uses[uses-mysql,`mysql`]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4771
+#, no-wrap
+msgid "PostgreSQL"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4773
+#, no-wrap
+msgid "crossref:uses[uses-pgsql,`pgsql`]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4774
+#, no-wrap
+msgid "SQLite"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4775
+#, no-wrap
+msgid "crossref:uses[uses-sqlite,`sqlite`]"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4778
+#, no-wrap
+msgid "Using Berkeley DB 6"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4784
+#, no-wrap
+msgid "USES=\tbdb:6\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4787
+msgid "See crossref:uses[uses-bdb,`bdb`] for more information."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4790
+#, no-wrap
+msgid "Using MySQL"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4794
+msgid "When a port needs the MySQL client library add"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4798
+#, no-wrap
+msgid "USES=\tmysql\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4801
+msgid "See crossref:uses[uses-mysql,`mysql`] for more information."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4804
+#, no-wrap
+msgid "Using PostgreSQL"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4808
+msgid "When a port needs the PostgreSQL server version 9.6 or later add"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4813
+#, no-wrap
+msgid ""
+"USES=\t\tpgsql:9.6+\n"
+"WANT_PGSQL=\tserver\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4816
+msgid "See crossref:uses[uses-pgsql,`pgsql`] for more information."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4819
+#, no-wrap
+msgid "Using SQLite 3"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4825
+#, no-wrap
+msgid "USES=\tsqlite:3\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4828
+msgid "See crossref:uses[uses-sqlite,`sqlite`] for more information."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4831
+#, no-wrap
+msgid "Starting and Stopping Services (`rc` Scripts)"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4838
+msgid ""
+"[.filename]#rc.d# scripts are used to start services on system startup, and "
+"to give administrators a standard way of stopping, starting and restarting "
+"the service. Ports integrate into the system [.filename]#rc.d# framework. "
+"Details on its usage can be found in extref:{handbook}[the rc.d Handbook "
+"chapter, configtuning-rcd]. Detailed explanation of the available commands "
+"is provided in man:rc[8] and man:rc.subr[8]. Finally, there is extref:{rc-"
+"scripting}[an article] on practical aspects of [.filename]#rc.d# scripting."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4841
+msgid ""
+"With a mythical port called _doorman_, which needs to start a _doormand_ "
+"daemon. Add the following to the [.filename]#Makefile#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4845
+#, no-wrap
+msgid "USE_RC_SUBR=\tdoormand\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4852
+msgid ""
+"Multiple scripts may be listed and will be installed. Scripts must be "
+"placed in the [.filename]#files# subdirectory and a `.in` suffix must be "
+"added to their filename. Standard `SUB_LIST` expansions will be ran against "
+"this file. Use of the `%%PREFIX%%` and `%%LOCALBASE%%` expansions is "
+"strongly encouraged as well. More on `SUB_LIST` in crossref:pkg-files[using-"
+"sub-files,the relevant section]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4854
+msgid ""
+"As of FreeBSD 6.1-RELEASE, local [.filename]#rc.d# scripts (including those "
+"installed by ports) are included in the overall man:rcorder[8] of the base "
+"system."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4856
+msgid ""
+"An example simple [.filename]#rc.d# script to start the doormand daemon:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4860
+#, no-wrap
+msgid "#!/bin/sh\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4872
+#, no-wrap
+msgid ""
+"# PROVIDE: doormand\n"
+"# REQUIRE: LOGIN\n"
+"# KEYWORD: shutdown\n"
+"#\n"
+"# Add these lines to /etc/rc.conf.local or /etc/rc.conf\n"
+"# to enable this service:\n"
+"#\n"
+"# doormand_enable (bool):\tSet to NO by default.\n"
+"#\t\t\t\tSet it to YES to enable doormand.\n"
+"# doormand_config (path):\tSet to %%PREFIX%%/etc/doormand/doormand.cf\n"
+"#\t\t\t\tby default.\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4874
+#, no-wrap
+msgid ". /etc/rc.subr\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4877
+#, no-wrap
+msgid ""
+"name=doormand\n"
+"rcvar=doormand_enable\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4879
+#, no-wrap
+msgid "load_rc_config $name\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4882
+#, no-wrap
+msgid ""
+": ${doormand_enable:=\"NO\"}\n"
+": ${doormand_config=\"%%PREFIX%%/etc/doormand/doormand.cf\"}\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4885
+#, no-wrap
+msgid ""
+"command=%%PREFIX%%/sbin/${name}\n"
+"pidfile=/var/run/${name}.pid\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4887
+#, no-wrap
+msgid "command_args=\"-p $pidfile -f $doormand_config\"\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4889
+#, no-wrap
+msgid "run_rc_command \"$1\"\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4892
+msgid ""
+"Unless there is a very good reason to start the service earlier, or it runs "
+"as a particular user (other than root), all ports scripts must use:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4896
+#, no-wrap
+msgid "REQUIRE: LOGIN\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4899
+msgid ""
+"If the startup script launches a daemon that must be shutdown, the following "
+"will trigger a stop of the service on system shutdown:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4903
+#, no-wrap
+msgid "KEYWORD: shutdown\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4906
+msgid ""
+"If the script is not starting a persistent service this is not necessary."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4909
+msgid ""
+"For optional configuration elements the \"=\" style of default variable "
+"assignment is preferable to the \":=\" style here, since the former sets a "
+"default value only if the variable is unset, and the latter sets one if the "
+"variable is unset _or_ null. A user might very well include something like:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4913
+#, no-wrap
+msgid "doormand_flags=\"\"\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4917
+msgid ""
+"in their [.filename]#rc.conf.local#, and a variable substitution using \":"
+"=\" would inappropriately override the user's intention. The `_enable` "
+"variable is not optional, and must use the \":\" for the default."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4922
+msgid ""
+"Ports _must not_ start and stop their services when installing and "
+"deinstalling. Do not abuse the [.filename]#plist# keywords described in "
+"crossref:plist[plist-keywords-base-exec, \"the @preexec command,@postexec "
+"command,@preunexec command,@postunexec command section\"] by running "
+"commands that modify the currently running system, including starting or "
+"stopping services."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4925
+#, no-wrap
+msgid "Pre-Commit Checklist"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4928
+msgid ""
+"Before contributing a port with an [.filename]#rc.d# script, and more "
+"importantly, before committing one, please consult this checklist to be sure "
+"that it is ready."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4930
+msgid ""
+"The package:devel/rclint[] port can check for most of these, but it is not a "
+"substitute for proper review."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4933
+msgid ""
+"If this is a new file, does it have a [.filename]#.sh# extension? If so, "
+"that must be changed to just [.filename]#file.in# since [.filename]#rc.d# "
+"files may not end with that extension."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4934
+msgid ""
+"Do the name of the file (minus [.filename]#.in#), the `PROVIDE` line, and "
+"`$` _name_ all match? The file name matching `PROVIDE` makes debugging "
+"easier, especially for man:rcorder[8] issues. Matching the file name and "
+"`$`_name_ makes it easier to figure out which variables are relevant in [."
+"filename]#rc.conf[.local]#. It is also a policy for all new scripts, "
+"including those in the base system."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4935
+msgid ""
+"Is the `REQUIRE` line set to `LOGIN`? This is mandatory for scripts that run "
+"as a non-root user. If it runs as root, is there a good reason for it to run "
+"prior to `LOGIN`? If not, it must run after so that local scrips can be "
+"loosely grouped to a point in man:rcorder[8] after most everything in the "
+"base is already running."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4936
+msgid ""
+"Does the script start a persistent service? If so, it must have `KEYWORD: "
+"shutdown`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4937
+msgid ""
+"Make sure there is no `KEYWORD: FreeBSD` present. This has not been "
+"necessary nor desirable for years. It is also an indication that the new "
+"script was copy/pasted from an old script, so extra caution must be given to "
+"the review."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4938
+msgid ""
+"If the script uses an interpreted language like `perl`, `python`, or `ruby`, "
+"make certain that `command_interpreter` is set appropriately, for example, "
+"for Perl, by adding `PERL=${PERL}` to `SUB_LIST` and using `%%PERL%%`. "
+"Otherwise,"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4942
+#, no-wrap
+msgid "# service name stop\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4945
+msgid ""
+"will probably not work properly. See man:service[8] for more information."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4946
+msgid ""
+"Have all occurrences of [.filename]#/usr/local# been replaced with `%%PREFIX%"
+"%`?"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4947
+msgid "Do the default variable assignments come after `load_rc_config`?"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4948
+msgid ""
+"Are there default assignments to empty strings? They should be removed, but "
+"double-check that the option is documented in the comments at the top of the "
+"file."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4949
+msgid "Are things that are set in variables actually used in the script?"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4950
+msgid ""
+"Are options listed in the default _name_`_flags` things that are actually "
+"mandatory? If so, they must be in `command_args`. `-d` is a red flag (pardon "
+"the pun) here, since it is usually the option to \"daemonize\" the process, "
+"and therefore is actually mandatory."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4951
+msgid ""
+"`_name__flags` must never be included in `command_args` (and vice versa, "
+"although that error is less common)."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4952
+msgid ""
+"Does the script execute any code unconditionally? This is frowned on. "
+"Usually these things must be dealt with through a `start_precmd`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4953
+msgid ""
+"All boolean tests must use the `checkyesno` function. No hand-rolled tests "
+"for `[Yy][Ee][Ss]`, etc."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4954
+msgid ""
+"If there is a loop (for example, waiting for something to start) does it "
+"have a counter to terminate the loop? We do not want the boot to be stuck "
+"forever if there is an error."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4955
+msgid ""
+"Does the script create files or directories that need specific permissions, "
+"for example, a [.filename]#pid# that needs to be owned by the user that runs "
+"the process? Rather than the traditional man:touch[1]/man:chown[8]/man:"
+"chmod[1] routine, consider using man:install[1] with the proper command line "
+"arguments to do the whole procedure with one step."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4957
+#, no-wrap
+msgid "Adding Users and Groups"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4962
+msgid ""
+"Some ports require a particular user account to be present, usually for "
+"daemons that run as that user. For these ports, choose a _unique_ UID from "
+"50 to 999 and register it in [.filename]#ports/UIDs# (for users) and [."
+"filename]#ports/GIDs# (for groups). The unique identification should be the "
+"same for users and groups."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4964
+msgid ""
+"Please include a patch against these two files when requiring a new user or "
+"group to be created for the port."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4966
+msgid ""
+"Then use `USERS` and `GROUPS` in [.filename]#Makefile#, and the user will be "
+"automatically created when installing the port."
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4971
+#, no-wrap
+msgid ""
+"USERS=\tpulse\n"
+"GROUPS=\tpulse pulse-access pulse-rt\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4974
+msgid ""
+"The current list of reserved UIDs and GIDs can be found in [.filename]#ports/"
+"UIDs# and [.filename]#ports/GIDs#."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4976
+#, no-wrap
+msgid "Ports That Rely on Kernel Sources"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4980
+msgid ""
+"Some ports (such as kernel loadable modules) need the kernel source files so "
+"that the port can compile. Here is the correct way to determine if the user "
+"has them installed:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4984
+#, no-wrap
+msgid "USES=\tkmod\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4987
+msgid ""
+"Apart from this check, the `kmod` feature takes care of most items that "
+"these ports need to take into account."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4989
+#, no-wrap
+msgid "Go Libraries"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4993
+msgid ""
+"Ports must not package or install Go libs or source code. Go ports must "
+"fetch the required deps at the normal fetch time and should only install the "
+"programs and things users need, not the things Go developers would need."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4995
+msgid "Ports should (in order of preference):"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4997
+msgid "Use vendored dependencies included with the package source."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4998
+msgid ""
+"Fetch the versions of deps specified by upstream (in the case of go.mod, "
+"vendor.json or similar)."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:4999
+msgid ""
+"As a last resort (deps are not included nor versions specified exactly) "
+"fetch versions of dependencies available at the time of upstream development/"
+"release."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5001
+#, no-wrap
+msgid "Haskell Libraries"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5005
+msgid ""
+"Just like in case of Go language, Ports must not package or install Haskell "
+"libraries. Haskell ports must link statically to their dependencies and "
+"fetch all distribution files on fetch stage."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5007
+#, no-wrap
+msgid "Shell Completion Files"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5012
+msgid ""
+"Many modern shells (including bash, fish, tcsh and zsh) support parameter "
+"and/or option tab-completion. This support usually comes from completion "
+"files, which contain the definitions for how tab completion will work for a "
+"certain command. Ports sometimes ship with their own completion files, or "
+"porters may have created them themselves."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5016
+msgid ""
+"When available, completion files should always be installed. It is not "
+"necessary to make an option for it. If an option is used, though, always "
+"enable it in `OPTIONS_DEFAULT`."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5018
+#, no-wrap
+msgid "Full shell completion file names"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5022
+#, no-wrap
+msgid "`bash`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5023
+#, no-wrap
+msgid "[.filename]#${PREFIX}/etc/bash_completion.d# or [.filename]#${PREFIX}/share/bash-completion/completions#"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5025
+#, no-wrap
+msgid "(any unique file names in one of these folders)"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5026
+#, no-wrap
+msgid "`fish`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5027
+#, no-wrap
+msgid "[.filename]#${PREFIX}/share/fish/completions/${PORTNAME}.fish#"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5030
+#, no-wrap
+msgid "`zsh`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5031
+#, no-wrap
+msgid "[.filename]#${PREFIX}/share/zsh/site-functions/_${PORTNAME}#"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/special/_index.adoc:5034
+msgid "Do not register any dependencies on the shells themselves."
+msgstr ""