Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/en/books/porters-handbook/special/_index.po
18099 views
# 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: 2026-05-09 23:29+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\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:14
#, no-wrap
msgid "Special Considerations"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:52
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:54
#, no-wrap
msgid "Splitting long files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:61
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:63
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:65
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:66
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:67
msgid "[.filename]#Makefile.${ARCH}-${OPSYS}#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:68
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:69
msgid "[.filename]#Makefile.${ARCH}#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:70
msgid "[.filename]#Makefile.local#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:76
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:78
#, no-wrap
msgid "Staging"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:85
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:92
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:97
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:101
#, no-wrap
msgid "NO_MTREE=\tyes\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:107
msgid ""
"Metaports should use crossref:special[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:113
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`, `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:117
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:120
#, no-wrap
msgid "Handling Symbolic Links"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:125
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:127
#, no-wrap
msgid "Create Relative Symbolic Links Automatically"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:131
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:137
#, 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:140
msgid "Will generate:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:150
#, 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:155
#, no-wrap
msgid "Bundled Libraries"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:158
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:160
#, no-wrap
msgid "Why Bundled Libraries Are Bad"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:165
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:167
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:168
#, no-wrap
msgid "Security"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:174
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:175
#, no-wrap
msgid "Bugs"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:177
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:178
#, no-wrap
msgid "Forking"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:182
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:185
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:186
#, no-wrap
msgid "Symbol collision"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:191
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:192
#, no-wrap
msgid "Licensing"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:194
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:195
#, no-wrap
msgid "Waste of resources"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:199
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:200
#, no-wrap
msgid "Waste of effort"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:204
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:206
#, no-wrap
msgid "What to do About Bundled Libraries"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:210
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:212
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:220
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:223
#, no-wrap
msgid "Shared Libraries"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:227
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:231
#, no-wrap
msgid "USE_LDCONFIG=\tyes\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:235
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:239
#, 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:242
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:244
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:246
msgid ""
"If the software uses crossref:special[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:248
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:250
#, no-wrap
msgid "Ports with Distribution Restrictions or Legal Concerns"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:253
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:258
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:261
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:263
#, no-wrap
msgid "`NO_PACKAGE`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:267
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:270
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:273
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:275
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:277
#, no-wrap
msgid "`NO_CDROM`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:281
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:283
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:286
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:288
#, no-wrap
msgid "`NOFETCHFILES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:292
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:294
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:296
#, no-wrap
msgid "`RESTRICTED`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:299
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:301
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:305
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:307
#, no-wrap
msgid "`RESTRICTED_FILES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:311
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:313
#, no-wrap
msgid "`LEGAL_TEXT`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:317
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:319
#, no-wrap
msgid "[.filename]#/usr/ports/LEGAL# and `LEGAL`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:325
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:327
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4247
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4507
#, no-wrap
msgid "Examples"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:330
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:336
#, 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:339
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:341
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:343
#, no-wrap
msgid "Building Mechanisms"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:346
#, no-wrap
msgid "Building Ports in Parallel"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:350
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:355
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:360
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:363
#, no-wrap
msgid "`make`, `gmake`, and `imake`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:366
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:368
msgid "If the port uses GNU make, add `gmake` to `USES`."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:371
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:374
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:377
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:379
#, no-wrap
msgid "`configure` Script"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:384
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=${PREFIX}/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:386
#, no-wrap
msgid "Variables for Ports That Use `configure`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:390
#: documentation/content/en/books/porters-handbook/special/_index.adoc:418
#: documentation/content/en/books/porters-handbook/special/_index.adoc:446
#: documentation/content/en/books/porters-handbook/special/_index.adoc:529
#: documentation/content/en/books/porters-handbook/special/_index.adoc:812
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2465
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2485
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3189
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3221
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3809
#, no-wrap
msgid "Variable"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:392
#: documentation/content/en/books/porters-handbook/special/_index.adoc:420
#: documentation/content/en/books/porters-handbook/special/_index.adoc:448
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1353
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3191
#, no-wrap
msgid "Means"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:393
#, no-wrap
msgid "`GNU_CONFIGURE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:395
#, no-wrap
msgid "The port uses `configure` script to prepare build."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:396
#, no-wrap
msgid "`HAS_CONFIGURE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:398
#, 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:399
#, no-wrap
msgid "`CONFIGURE_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:401
#, no-wrap
msgid "Additional arguments passed to `configure` script."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:402
#: documentation/content/en/books/porters-handbook/special/_index.adoc:438
#, no-wrap
msgid "`CONFIGURE_ENV`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:404
#, 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:405
#, no-wrap
msgid "`CONFIGURE_TARGET`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:406
#, 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:409
#, no-wrap
msgid "Using `cmake`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:412
msgid "For ports that use CMake, define `USES= cmake`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:414
#, no-wrap
msgid "Variables for Ports That Use `cmake`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:421
#, no-wrap
msgid "`CMAKE_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:423
#, 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:424
#, no-wrap
msgid "`CMAKE_ON`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:427
#, no-wrap
msgid ""
"For each entry in `CMAKE_ON`, an enabled boolean value is added to\n"
"`CMAKE_ARGS`. See crossref:special[using-cmake-example2,`CMAKE_ON` and `CMAKE_OFF`]."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:428
#, no-wrap
msgid "`CMAKE_OFF`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:431
#, no-wrap
msgid ""
"For each entry in `CMAKE_OFF`, a disabled boolean value is added to\n"
"`CMAKE_ARGS`. See crossref:special[using-cmake-example2,`CMAKE_ON` and `CMAKE_OFF`]."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:432
#, no-wrap
msgid "`CMAKE_BUILD_TYPE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:434
#, 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:435
#, no-wrap
msgid "`CMAKE_SOURCE_PATH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:437
#, no-wrap
msgid "Path to the source directory. Default is `${WRKSRC}`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:439
#, 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:442
#, no-wrap
msgid "Variables the Users Can Define for `cmake` Builds"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:449
#, no-wrap
msgid "`CMAKE_NOCOLOR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:450
#, 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:457
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:462
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:464
#, no-wrap
msgid "`USES= cmake` Example"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:469
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:474
#, 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:479
#, no-wrap
msgid "`CMAKE_ON` and `CMAKE_OFF`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:483
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:488
#, 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:491
msgid "Is equivalent to:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:495
#, 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:501
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:506
#, no-wrap
msgid "Using `scons`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:509
msgid "If the port uses SCons, define `USES=scons`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:511
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:515
#, no-wrap
msgid "env = Environment(**ARGUMENTS)\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:518
msgid "It may be then modified with `env.Append` and `env.Replace`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:520
#, no-wrap
msgid "Building Rust Applications with `cargo`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:523
msgid "For ports that use Cargo, define `USES=cargo`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:525
#, no-wrap
msgid "Variables the Users Can Define for `cargo` Builds"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:530
#, no-wrap
msgid "Default"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:532
#: documentation/content/en/books/porters-handbook/special/_index.adoc:814
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1749
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1917
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1935
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2103
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2169
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2413
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2430
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2467
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2487
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2563
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3143
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3810
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3844
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3887
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3913
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4017
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4187
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4239
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4331
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4423
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4485
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4745
#, no-wrap
msgid "Description"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:533
#, no-wrap
msgid "`CARGO_CRATES`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:539
#, 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:540
#, no-wrap
msgid "`CARGO_FEATURES`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:543
#, 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:544
#, no-wrap
msgid "`CARGO_CARGOTOML`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:545
#, no-wrap
msgid "`${WRKSRC}/Cargo.toml`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:547
#, no-wrap
msgid "The path to the [.filename]#Cargo.toml# to use."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:548
#, no-wrap
msgid "`CARGO_CARGOLOCK`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:549
#, no-wrap
msgid "`${WRKSRC}/Cargo.lock`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:551
#, 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:552
#, no-wrap
msgid "`CARGO_ENV`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:555
#, 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:556
#, no-wrap
msgid "`RUSTFLAGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:559
#, no-wrap
msgid "Flags to pass to the Rust compiler."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:560
#, no-wrap
msgid "`CARGO_CONFIGURE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:561
#: documentation/content/en/books/porters-handbook/special/_index.adoc:569
#: documentation/content/en/books/porters-handbook/special/_index.adoc:577
#: documentation/content/en/books/porters-handbook/special/_index.adoc:585
#: documentation/content/en/books/porters-handbook/special/_index.adoc:597
#, no-wrap
msgid "`yes`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:563
#, no-wrap
msgid "Use the default `do-configure`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:564
#, no-wrap
msgid "`CARGO_UPDATE_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:567
#, 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:568
#, no-wrap
msgid "`CARGO_BUILDDEP`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:571
#, no-wrap
msgid "Add a build dependency on package:lang/rust[]."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:572
#, no-wrap
msgid "`CARGO_CARGO_BIN`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:573
#, no-wrap
msgid "`${LOCALBASE}/bin/cargo`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:575
#, no-wrap
msgid "Location of the `cargo` binary."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:576
#, no-wrap
msgid "`CARGO_BUILD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:579
#, no-wrap
msgid "Use the default `do-build`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:580
#, no-wrap
msgid "`CARGO_BUILD_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:583
#, 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:584
#, no-wrap
msgid "`CARGO_INSTALL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:587
#, no-wrap
msgid "Use the default `do-install`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:588
#, no-wrap
msgid "`CARGO_INSTALL_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:591
#, 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:592
#, no-wrap
msgid "`CARGO_INSTALL_PATH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:593
#, no-wrap
msgid "`.`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:595
#, 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:596
#, no-wrap
msgid "`CARGO_TEST`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:599
#, no-wrap
msgid "Use the default `do-test`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:600
#, no-wrap
msgid "`CARGO_TEST_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:603
#, 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:604
#, no-wrap
msgid "`CARGO_TARGET_DIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:605
#, no-wrap
msgid "`${WRKDIR}/target`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:607
#, no-wrap
msgid "Location of the cargo output directory."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:608
#, no-wrap
msgid "`CARGO_DIST_SUBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:609
#, no-wrap
msgid "[.filename]#rust/crates#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:611
#, 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:612
#, no-wrap
msgid "`CARGO_VENDOR_DIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:613
#, no-wrap
msgid "`${WRKSRC}/cargo-crates`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:615
#, 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:616
#, no-wrap
msgid "`CARGO_USE_GITHUB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:617
#: documentation/content/en/books/porters-handbook/special/_index.adoc:621
#, no-wrap
msgid "`no`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:619
#, 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:620
#, no-wrap
msgid "`CARGO_USE_GITLAB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:622
#, 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:625
#, 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:630
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:637
#: documentation/content/en/books/porters-handbook/special/_index.adoc:682
#, 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:641
#: documentation/content/en/books/porters-handbook/special/_index.adoc:686
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:645
#: documentation/content/en/books/porters-handbook/special/_index.adoc:690
#, 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:647
#: documentation/content/en/books/porters-handbook/special/_index.adoc:700
#: documentation/content/en/books/porters-handbook/special/_index.adoc:867
#: documentation/content/en/books/porters-handbook/special/_index.adoc:890
#: documentation/content/en/books/porters-handbook/special/_index.adoc:948
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1047
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1134
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1150
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1164
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1281
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1302
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1675
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3491
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3551
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3670
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4271
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4295
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4533
#, no-wrap
msgid ".include <bsd.port.mk>\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:650
#: documentation/content/en/books/porters-handbook/special/_index.adoc:893
msgid "Generate an initial [.filename]#distinfo#:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:658
#, 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:661
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:672
#, 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:675
#: documentation/content/en/books/porters-handbook/special/_index.adoc:923
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:698
#, 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:703
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:721
#, 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:724
#: documentation/content/en/books/porters-handbook/special/_index.adoc:967
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1107
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:726
#: documentation/content/en/books/porters-handbook/special/_index.adoc:969
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1109
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:729
#, no-wrap
msgid "Enabling Additional Application Features"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:734
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:736
msgid "Here we enable Tokei's `json` and `yaml` features:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:740
#, no-wrap
msgid "CARGO_FEATURES=\tjson yaml\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:745
#, no-wrap
msgid "Encoding Application Features As Port Options"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:749
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:756
#, 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:761
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:765
#, no-wrap
msgid "CARGO_FEATURES=\t--no-default-features\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:767
#, no-wrap
msgid "OPTIONS_DEFINE=\tPORTAUDIO PULSEAUDIO\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:770
#, 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:775
#, no-wrap
msgid "Listing Crate Licenses"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:781
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:792
#, 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:798
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:803
#, no-wrap
msgid "Using `meson`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:806
msgid "For ports that use Meson, define `USES=meson`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:808
#, no-wrap
msgid "Variables for Ports That Use `meson`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:815
#, no-wrap
msgid "`MESON_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:817
#, 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:818
#, no-wrap
msgid "`MESON_BUILD_DIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:819
#, 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:822
#, no-wrap
msgid "`USES=meson` Example"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:826
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:831
#, 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:836
#, no-wrap
msgid "Building Go Applications"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:840
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:842
#, 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:846
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:853
#, 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:857
#, no-wrap
msgid ""
"MAINTAINER=     [email protected]\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:860
#, 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:863
#, 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:865
#, no-wrap
msgid "PLIST_FILES=    bin/hey\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:870
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:873
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:880
#: documentation/content/en/books/porters-handbook/special/_index.adoc:930
#, 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:884
#: documentation/content/en/books/porters-handbook/special/_index.adoc:934
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:888
#, 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:902
#, 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:906
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:920
#, 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:946
#, 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:951
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:964
#, 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:972
#, no-wrap
msgid "Setting Output Binary Name or Installation Path"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:977
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:981
#, no-wrap
msgid "GO_TARGET=  ./cmd/ipfs:ipfs-go\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:984
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:988
#, 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:991
msgid "will install `dnscrypt-proxy` to `${PREFIX}/sbin`."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:994
#, no-wrap
msgid "Overriding go.mod in Modules Mode"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:999
msgid ""
"During the fetch phase, modules-aware mode (that is, `USES=go:modules`) "
"obtains sources for dependent packages by fetching the port's "
"[.filename]#go.mod# and then immediately running `go mod download` against "
"it.  Because the fetch phase occurs long before patching, regular patches in "
"[.filename]#files/# are applied far too late to affect those dependency "
"resolution and fetch steps."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1001
msgid ""
"While patching the upstream [.filename]#go.mod# to alter dependencies isn't "
"possible at this time, you can still *override* it by listing another "
"[.filename]#go.mod# as a second distfile."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1009
#, no-wrap
msgid ""
"PORTNAME=\tmiller\n"
"DISTVERSIONPREFIX=\tv\n"
"DISTVERSION=\t6.17.0\n"
"CATEGORIES=\ttextproc\n"
"MASTER_SITES=\thttps://raw.githubusercontent.com/johnkerl/${PORTNAME}/${DISTVERSIONFULL}/:gomod\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1011
#, no-wrap
msgid "DISTFILES=\tgo.mod:gomod\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1014
msgid "To override [.filename]#go.sum# as well, just add it to `DISTFILES`:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1018
#, no-wrap
msgid "DISTFILES=\tgo.mod:gomod go.sum:gomod\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1022
#, no-wrap
msgid "Building Haskell Applications with `cabal`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1026
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:1028
#, 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:1033
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:1039
#, 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:1043
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:1045
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1128
#, no-wrap
msgid "USES=\t\tcabal\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1050
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:1060
#, 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:1063
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:1074
#, 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:1077
msgid "Once done, a list of required dependencies can generated:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1085
#, 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:1091
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:1093
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:1104
#, 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:1114
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:1116
#, no-wrap
msgid "Handling Data Files in a Haskell Port"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1120
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:1124
#, no-wrap
msgid "PORTNAME=\tprofiteur\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1126
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1141
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1159
#, no-wrap
msgid "[...]\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1132
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1145
#, 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:1137
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:1148
#, no-wrap
msgid "CABAL_WRAPPER_SCRIPTS=\t\t${CABAL_EXECUTABLES}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1155
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:1162
#, 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:1167
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:1172
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:1174
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:1176
#, no-wrap
msgid "Porting Haskell Applications with VCS Dependencies"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1181
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:1190
#, 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:1196
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:1204
#, 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:1208
#, 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:1211
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:1217
#, 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:1219
#, no-wrap
msgid "GH_TUPLE+=\tbitcoin-core:secp256k1:ac83be33d0956faf6b7f61a60ab524ef7d6a473a:secp\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1222
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:1226
#, no-wrap
msgid "BINARY_ALIAS=\tgit=true\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1231
#, no-wrap
msgid "Using GNU Autotools"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1235
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:1237
#, no-wrap
msgid "Using GNU `gettext`"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1240
#, no-wrap
msgid "Basic Usage"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1244
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:1247
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:1252
#, no-wrap
msgid ""
"USES=\tgettext\n"
"GNU_CONFIGURE=\tyes\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1255
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:1260
#, no-wrap
msgid ""
"USES=\tgettext localbase:ldflags\n"
"GNU_CONFIGURE=\tyes\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1263
#, no-wrap
msgid "Optional Usage"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1269
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:1273
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1288
#, no-wrap
msgid "GNU_CONFIGURE=\t\tyes\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1276
#, 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:1279
#, 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:1284
msgid "Or using the older way of using options:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1290
#, no-wrap
msgid "OPTIONS_DEFINE=\t\tNLS\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1292
#, no-wrap
msgid ".include <bsd.port.options.mk>\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1300
#, 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:1311
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:1316
#, 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:1319
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:1321
#, no-wrap
msgid "Handling Message Catalog Directories"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1328
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:1330
#, no-wrap
msgid "Using Perl"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1338
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:1343
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:1345
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:1347
#, no-wrap
msgid "Read-Only Variables for Ports That Use Perl"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1351
#, no-wrap
msgid "Read only variables"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1354
#, no-wrap
msgid "`PERL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1356
#, 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:1357
#, no-wrap
msgid "`PERL_VERSION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1359
#, 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:1360
#, no-wrap
msgid "`PERL_LEVEL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1362
#, 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:1363
#, no-wrap
msgid "`PERL_ARCH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1365
#, 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:1366
#, no-wrap
msgid "`PERL_PORT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1368
#, 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:1369
#, no-wrap
msgid "`SITE_PERL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1370
#, 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:1376
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:1384
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:1387
#, no-wrap
msgid "Perl Dependency Example"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1393
#, 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:1398
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:1403
#, 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:1406
msgid "can be replaced with"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1411
#, 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:1416
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:1419
#, 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:1423
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:1428
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tbuild\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1433
#, no-wrap
msgid "A Port Which Also Requires Perl to Patch"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1438
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:1443
#, 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:1448
#, 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:1453
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:1458
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tconfigure\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1463
#, 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:1467
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:1472
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tmodbuild\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1475
msgid "If it instead requires Module::Build::Tiny, set"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1480
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tmodbuildtiny\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1485
#, no-wrap
msgid "Using X11"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1488
#, no-wrap
msgid "X.Org Components"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1493
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:1498
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:1500
#, no-wrap
msgid "`USE_XORG` Example"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1508
#, 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:1513
#, no-wrap
msgid "Variables for Ports That Use X"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1517
#, no-wrap
msgid "`USES= imake`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1519
#, no-wrap
msgid "The port uses `imake`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1520
#, no-wrap
msgid "`XMKMF`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1521
#, 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:1524
#, no-wrap
msgid "Using X11-Related Variables"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1532
#, 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:1537
#, no-wrap
msgid "Ports That Require Motif"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1543
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:1546
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:1548
msgid "There are two common cases:"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1550
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:1551
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:1553
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:1555
#, no-wrap
msgid "X11 Fonts"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1558
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:1560
#, no-wrap
msgid "Getting a Fake `DISPLAY` with Xvfb"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1567
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:1571
#, no-wrap
msgid "USES=\tdisplay\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1575
#, no-wrap
msgid "Desktop Entries"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1581
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:1583
#, no-wrap
msgid "Using Predefined [.filename]#.desktop# Files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1587
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:1589
#, no-wrap
msgid "Updating Desktop Database"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1593
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:1595
#, no-wrap
msgid "Creating Desktop Entries with `DESKTOP_ENTRIES`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1600
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:1604
#, 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:1611
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:1613
msgid "Example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1620
#, 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:1625
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:1628
#, no-wrap
msgid "Using GNOME"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1631
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3788
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4089
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4305
#, no-wrap
msgid "Introduction"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1635
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:1637
#, no-wrap
msgid "Using `USE_GNOME`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1645
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:1649
#, no-wrap
msgid "USE_GNOME=\tgtk30\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1653
msgid ""
"`USE_GNOME` components automatically add the dependencies they need.  Please "
"see crossref:special[gnome-components, 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:1656
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:1663
#, 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:1667
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:1671
#, 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:1673
#, no-wrap
msgid "GLIB_SCHEMAS=\torg.regexxer.gschema.xml\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1681
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:1684
#, no-wrap
msgid "Variables"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1690
msgid ""
"This section explains which macros are available and how they are used.  "
"Like they are used in the above example.  The crossref:special[gnome-"
"components, 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:1691
#, no-wrap
msgid "`GLIB_SCHEMAS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1694
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:1699
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:1703
#, no-wrap
msgid "GLIB_SCHEMAS=foo.gschema.xml\n"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1709
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:1711
#, no-wrap
msgid "`GCONF_SCHEMAS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1714
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:1719
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:1723
#, 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:1729
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: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1732
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1742
#, no-wrap
msgid "GNOME Components"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1740
msgid ""
"For further help with a GNOME port, look at some of the link:https://"
"ports.FreeBSD.org[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:1746
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1915
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1932
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2101
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3930
#, no-wrap
msgid "Component"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1747
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1933
#, no-wrap
msgid "Associated program"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1750
#, no-wrap
msgid "`atk`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1751
#, no-wrap
msgid "accessibility/atk"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1753
#, no-wrap
msgid "Accessibility toolkit (ATK)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1754
#, no-wrap
msgid "`atkmm`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1755
#, no-wrap
msgid "accessibility/atkmm"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1757
#, no-wrap
msgid "c++ bindings for atk"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1758
#, no-wrap
msgid "`cairo`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1759
#, no-wrap
msgid "graphics/cairo"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1761
#, no-wrap
msgid "Vector graphics library with cross-device output support"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1762
#, no-wrap
msgid "`cairomm`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1763
#, no-wrap
msgid "graphics/cairomm"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1765
#, no-wrap
msgid "c++ bindings for cairo"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1766
#, no-wrap
msgid "`dconf`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1767
#, no-wrap
msgid "devel/dconf"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1769
#, no-wrap
msgid "Configuration database system (both, build, run)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1770
#, no-wrap
msgid "`evolutiondataserver3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1771
#, no-wrap
msgid "databases/evolution-data-server"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1773
#, no-wrap
msgid "Data backends for the Evolution integrated mail/PIM suite"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1774
#, no-wrap
msgid "`gdkpixbuf2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1775
#, no-wrap
msgid "graphics/gdk-pixbuf2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1777
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1959
#, no-wrap
msgid "Graphics library for GTK+"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1778
#, no-wrap
msgid "`glib20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1779
#, no-wrap
msgid "devel/glib20"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1781
#, no-wrap
msgid "GNOME core library `glib20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1782
#, no-wrap
msgid "`glibmm`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1783
#, no-wrap
msgid "devel/glibmm"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1785
#, no-wrap
msgid "c++ bindings for glib20"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1786
#, no-wrap
msgid "`gnomecontrolcenter3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1787
#, no-wrap
msgid "sysutils/gnome-control-center"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1789
#, no-wrap
msgid "GNOME 3 Control Center"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1790
#, no-wrap
msgid "`gnomedesktop3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1791
#, no-wrap
msgid "x11/gnome-desktop"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1793
#, no-wrap
msgid "GNOME 3 desktop UI library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1794
#, no-wrap
msgid "`gsound`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1795
#, no-wrap
msgid "audio/gsound"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1797
#, no-wrap
msgid "GObject library for playing system sounds (both, build, run)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1798
#, no-wrap
msgid "`gtk-update-icon-cache`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1799
#, no-wrap
msgid "graphics/gtk-update-icon-cache"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1801
#, no-wrap
msgid "Gtk-update-icon-cache utility from the Gtk+ toolkit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1802
#, no-wrap
msgid "`gtk20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1803
#, no-wrap
msgid "x11-toolkits/gtk20"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1805
#, no-wrap
msgid "Gtk+ 2 toolkit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1806
#, no-wrap
msgid "`gtk30`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1807
#, no-wrap
msgid "x11-toolkits/gtk30"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1809
#, no-wrap
msgid "Gtk+ 3 toolkit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1810
#, no-wrap
msgid "`gtkmm20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1811
#, no-wrap
msgid "x11-toolkits/gtkmm20"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1813
#, no-wrap
msgid "c++ bindings 2.0 for the gtk20 toolkit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1814
#, no-wrap
msgid "`gtkmm24`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1815
#, no-wrap
msgid "x11-toolkits/gtkmm24"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1817
#, no-wrap
msgid "c++ bindings 2.4 for the gtk20 toolkit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1818
#, no-wrap
msgid "`gtkmm30`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1819
#, no-wrap
msgid "x11-toolkits/gtkmm30"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1821
#, no-wrap
msgid "c++ bindings 3.0 for the gtk30 toolkit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1822
#, no-wrap
msgid "`gtksourceview2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1823
#, no-wrap
msgid "x11-toolkits/gtksourceview2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1825
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2003
#, no-wrap
msgid "Widget that adds syntax highlighting to GtkTextView"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1826
#, no-wrap
msgid "`gtksourceview3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1827
#, no-wrap
msgid "x11-toolkits/gtksourceview3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1829
#, 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:1830
#, no-wrap
msgid "`gtksourceviewmm3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1831
#, no-wrap
msgid "x11-toolkits/gtksourceviewmm3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1833
#, no-wrap
msgid "c++ bindings for the gtksourceview3 library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1834
#, no-wrap
msgid "`gvfs`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1835
#, no-wrap
msgid "devel/gvfs"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1837
#, no-wrap
msgid "GNOME virtual file system"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1838
#, no-wrap
msgid "`intltool`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1839
#, no-wrap
msgid "textproc/intltool"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1841
#, no-wrap
msgid "Tool for internationalization (also see intlhack)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1842
#, no-wrap
msgid "`introspection`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1843
#, no-wrap
msgid "devel/gobject-introspection"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1845
#, 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:1846
#, no-wrap
msgid "`libgda5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1847
#, no-wrap
msgid "databases/libgda5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1849
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2019
#, no-wrap
msgid "Provides uniform access to different kinds of data sources"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1850
#, no-wrap
msgid "`libgda5-ui`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1851
#, no-wrap
msgid "databases/libgda5-ui"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1853
#, no-wrap
msgid "UI library from the libgda5 library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1854
#, no-wrap
msgid "`libgdamm5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1855
#, no-wrap
msgid "databases/libgdamm5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1857
#, no-wrap
msgid "c++ bindings for the libgda5 library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1858
#, no-wrap
msgid "`libgsf`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1859
#, no-wrap
msgid "devel/libgsf"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1861
#, 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:1862
#, no-wrap
msgid "`librsvg2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1863
#, no-wrap
msgid "graphics/librsvg2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1865
#, no-wrap
msgid "Library for parsing and rendering SVG vector-graphic files"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1866
#, no-wrap
msgid "`libsigc++20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1867
#, no-wrap
msgid "devel/libsigc++20"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1869
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2063
#, no-wrap
msgid "Callback Framework for C++"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1870
#, no-wrap
msgid "`libxml++26`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1871
#, no-wrap
msgid "textproc/libxml++26"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1873
#, no-wrap
msgid "c++ bindings for the libxml2 library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1874
#, no-wrap
msgid "`libxml2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1875
#, no-wrap
msgid "textproc/libxml2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1877
#, no-wrap
msgid "XML parser library (both, build, run)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1878
#, no-wrap
msgid "`libxslt`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1879
#, no-wrap
msgid "textproc/libxslt"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1881
#, no-wrap
msgid "XSLT C library (both, build, run)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1882
#, no-wrap
msgid "`metacity`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1883
#, no-wrap
msgid "x11-wm/metacity"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1885
#, no-wrap
msgid "Window manager from GNOME"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1886
#, no-wrap
msgid "`nautilus3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1887
#, no-wrap
msgid "x11-fm/nautilus"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1889
#, no-wrap
msgid "GNOME file manager"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1890
#, no-wrap
msgid "`pango`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1891
#, no-wrap
msgid "x11-toolkits/pango"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1893
#, 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:1894
#, no-wrap
msgid "`pangomm`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1895
#, no-wrap
msgid "x11-toolkits/pangomm"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1897
#, no-wrap
msgid "c++ bindings for the pango library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1898
#, no-wrap
msgid "`py3gobject3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1899
#, no-wrap
msgid "devel/py3-gobject3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1901
#, no-wrap
msgid "Python 3, GObject 3.0 bindings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1902
#, no-wrap
msgid "`pygobject3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1903
#, no-wrap
msgid "devel/py-gobject3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1905
#, no-wrap
msgid "Python 2, GObject 3.0 bindings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1906
#, no-wrap
msgid "`vte3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1907
#, no-wrap
msgid "x11-toolkits/vte3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1908
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2094
#, no-wrap
msgid "Terminal widget with improved accessibility and I18N support"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1911
#, no-wrap
msgid "GNOME Macro Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1918
#, no-wrap
msgid "`gnomeprefix`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1920
#, no-wrap
msgid "Supply `configure` with some default locations."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1921
#, no-wrap
msgid "`intlhack`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1923
#, 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:1924
#, no-wrap
msgid "`referencehack`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1925
#, 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:1928
#, no-wrap
msgid "GNOME Legacy Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1936
#, no-wrap
msgid "`atspi`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1937
#, no-wrap
msgid "accessibility/at-spi"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1939
#, no-wrap
msgid "Assistive Technology Service Provider Interface"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1940
#, no-wrap
msgid "`esound`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1941
#, no-wrap
msgid "audio/esound"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1943
#, no-wrap
msgid "Enlightenment sound package"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1944
#, no-wrap
msgid "`gal2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1945
#, no-wrap
msgid "x11-toolkits/gal2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1947
#, no-wrap
msgid "Collection of widgets taken from GNOME 2 gnumeric"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1948
#, no-wrap
msgid "`gconf2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1949
#, no-wrap
msgid "devel/gconf2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1951
#, no-wrap
msgid "Configuration database system for GNOME 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1952
#, no-wrap
msgid "`gconfmm26`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1953
#, no-wrap
msgid "devel/gconfmm26"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1955
#, no-wrap
msgid "c++ bindings for gconf2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1956
#, no-wrap
msgid "`gdkpixbuf`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1957
#, no-wrap
msgid "graphics/gdk-pixbuf"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1960
#, no-wrap
msgid "`glib12`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1961
#, no-wrap
msgid "devel/glib12"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1963
#, no-wrap
msgid "glib 1.2 core library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1964
#, no-wrap
msgid "`gnomedocutils`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1965
#, no-wrap
msgid "textproc/gnome-doc-utils"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1967
#, no-wrap
msgid "GNOME doc utils"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1968
#, no-wrap
msgid "`gnomemimedata`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1969
#, no-wrap
msgid "misc/gnome-mime-data"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1971
#, no-wrap
msgid "MIME and Application database for GNOME 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1972
#, no-wrap
msgid "`gnomesharp20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1973
#, no-wrap
msgid "x11-toolkits/gnome-sharp20"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1975
#, no-wrap
msgid "GNOME 2 interfaces for the .NET runtime"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1976
#, no-wrap
msgid "`gnomespeech`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1977
#, no-wrap
msgid "accessibility/gnome-speech"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1979
#, no-wrap
msgid "GNOME 2 text-to-speech API"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1980
#, no-wrap
msgid "`gnomevfs2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1981
#, no-wrap
msgid "devel/gnome-vfs"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1983
#, no-wrap
msgid "GNOME 2 Virtual File System"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1984
#, no-wrap
msgid "`gtk12`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1985
#, no-wrap
msgid "x11-toolkits/gtk12"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1987
#, no-wrap
msgid "Gtk+ 1.2 toolkit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1988
#, no-wrap
msgid "`gtkhtml3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1989
#, no-wrap
msgid "www/gtkhtml3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1991
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1995
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2051
#, no-wrap
msgid "Lightweight HTML rendering/printing/editing engine"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1992
#, no-wrap
msgid "`gtkhtml4`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1993
#, no-wrap
msgid "www/gtkhtml4"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1996
#, no-wrap
msgid "`gtksharp20`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1997
#, no-wrap
msgid "x11-toolkits/gtk-sharp20"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1999
#, no-wrap
msgid "GTK+ and GNOME 2 interfaces for the .NET runtime"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2000
#, no-wrap
msgid "`gtksourceview`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2001
#, no-wrap
msgid "x11-toolkits/gtksourceview"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2004
#, no-wrap
msgid "`libartgpl2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2005
#, no-wrap
msgid "graphics/libart_lgpl"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2007
#, no-wrap
msgid "Library for high-performance 2D graphics"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2008
#, no-wrap
msgid "`libbonobo`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2009
#, no-wrap
msgid "devel/libbonobo"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2011
#, no-wrap
msgid "Component and compound document system for GNOME 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2012
#, no-wrap
msgid "`libbonoboui`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2013
#, no-wrap
msgid "x11-toolkits/libbonoboui"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2015
#, no-wrap
msgid "GUI frontend to the libbonobo component of GNOME 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2016
#, no-wrap
msgid "`libgda4`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2017
#, no-wrap
msgid "databases/libgda4"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2020
#, no-wrap
msgid "`libglade2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2021
#, no-wrap
msgid "devel/libglade2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2023
#, no-wrap
msgid "GNOME 2 glade library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2024
#, no-wrap
msgid "`libgnome`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2025
#, no-wrap
msgid "x11/libgnome"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2027
#, no-wrap
msgid "Libraries for GNOME 2, a GNU desktop environment"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2028
#, no-wrap
msgid "`libgnomecanvas`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2029
#, no-wrap
msgid "graphics/libgnomecanvas"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2031
#, no-wrap
msgid "Graphics library for GNOME 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2032
#, no-wrap
msgid "`libgnomekbd`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2033
#, no-wrap
msgid "x11/libgnomekbd"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2035
#, no-wrap
msgid "GNOME 2 keyboard shared library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2036
#, no-wrap
msgid "`libgnomeprint`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2037
#, no-wrap
msgid "print/libgnomeprint"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2039
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2043
#, no-wrap
msgid "Gnome 2 print support library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2040
#, no-wrap
msgid "`libgnomeprintui`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2041
#, no-wrap
msgid "x11-toolkits/libgnomeprintui"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2044
#, no-wrap
msgid "`libgnomeui`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2045
#, no-wrap
msgid "x11-toolkits/libgnomeui"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2047
#, 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:2048
#, no-wrap
msgid "`libgtkhtml`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2049
#, no-wrap
msgid "www/libgtkhtml"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2052
#, no-wrap
msgid "`libgtksourceviewmm`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2053
#, no-wrap
msgid "x11-toolkits/libgtksourceviewmm"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2055
#, no-wrap
msgid "c++ binding of GtkSourceView"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2056
#, no-wrap
msgid "`libidl`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2057
#, no-wrap
msgid "devel/libIDL"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2059
#, no-wrap
msgid "Library for creating trees of CORBA IDL file"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2060
#, no-wrap
msgid "`libsigc++12`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2061
#, no-wrap
msgid "devel/libsigc++12"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2064
#, no-wrap
msgid "`libwnck`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2065
#, no-wrap
msgid "x11-toolkits/libwnck"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2067
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2071
#, no-wrap
msgid "Library used for writing pagers and taskslists"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2068
#, no-wrap
msgid "`libwnck3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2069
#, no-wrap
msgid "x11-toolkits/libwnck3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2072
#, no-wrap
msgid "`orbit2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2073
#, no-wrap
msgid "devel/ORBit2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2075
#, 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:2076
#, no-wrap
msgid "`pygnome2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2077
#, no-wrap
msgid "x11-toolkits/py-gnome2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2079
#, no-wrap
msgid "Python bindings for GNOME 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2080
#, no-wrap
msgid "`pygobject`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2081
#, no-wrap
msgid "devel/py-gobject"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2083
#, no-wrap
msgid "Python 2, GObject 2.0 bindings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2084
#, no-wrap
msgid "`pygtk2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2085
#, no-wrap
msgid "x11-toolkits/py-gtk2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2087
#, no-wrap
msgid "Set of Python bindings for GTK+"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2088
#, no-wrap
msgid "`pygtksourceview`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2089
#, no-wrap
msgid "x11-toolkits/py-gtksourceview"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2091
#, no-wrap
msgid "Python bindings for GtkSourceView 2"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2092
#, no-wrap
msgid "`vte`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2093
#, no-wrap
msgid "x11-toolkits/vte"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2097
#, no-wrap
msgid "Deprecated Components: Do Not Use"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2104
#, no-wrap
msgid "`pangox-compat`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2105
#, 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:2108
#, no-wrap
msgid "Using Qt"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2113
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:2116
#, no-wrap
msgid "Ports That Require Qt"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2121
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:2123
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:2125
#, no-wrap
msgid "Variables Provided to Ports That Use Qt"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2129
#, no-wrap
msgid "`QMAKE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2131
#, no-wrap
msgid "Full path to `qmake` binary."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2132
#, no-wrap
msgid "`LRELEASE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2134
#, no-wrap
msgid "Full path to `lrelease` utility."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2135
#, no-wrap
msgid "`MOC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2137
#, no-wrap
msgid "Full path to `moc`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2138
#, no-wrap
msgid "`RCC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2140
#, no-wrap
msgid "Full path to `rcc`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2141
#, no-wrap
msgid "`UIC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2143
#, no-wrap
msgid "Full path to `uic`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2144
#, no-wrap
msgid "`QT_INCDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2146
#, no-wrap
msgid "Qt include directory."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2147
#, no-wrap
msgid "`QT_LIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2149
#, no-wrap
msgid "Qt libraries path."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2150
#, no-wrap
msgid "`QT_PLUGINDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2151
#, no-wrap
msgid "Qt plugins path."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2154
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3876
#, no-wrap
msgid "Component Selection"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2161
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:2163
#, no-wrap
msgid "Available Qt Library Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2167
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2411
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2428
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2561
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3141
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3866
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3886
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3911
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4015
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4185
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4237
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4329
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4420
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4482
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4743
#, no-wrap
msgid "Name"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2170
#, no-wrap
msgid "`3d`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2172
#, no-wrap
msgid "Qt3D module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2173
#, no-wrap
msgid "`5compat`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2175
#, no-wrap
msgid "Qt 5 compatibility module for Qt 6"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2176
#, no-wrap
msgid "`assistant`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2178
#, no-wrap
msgid "Qt 5 documentation browser"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2179
#, no-wrap
msgid "`base`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2181
#, no-wrap
msgid "Qt 6 base module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2182
#, no-wrap
msgid "`canvas3d`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2184
#, no-wrap
msgid "Qt canvas3d module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2185
#, no-wrap
msgid "`charts`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2187
#, no-wrap
msgid "Qt 5 charts module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2188
#, no-wrap
msgid "`concurrent`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2190
#, no-wrap
msgid "Qt multi-threading module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2191
#, no-wrap
msgid "`connectivity`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2193
#, no-wrap
msgid "Qt connectivity (Bluetooth/NFC) module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2194
#, no-wrap
msgid "`core`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2196
#, no-wrap
msgid "Qt core non-graphical module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2197
#, no-wrap
msgid "`datavis3d`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2199
#, no-wrap
msgid "Qt 5 3D data visualization module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2200
#, no-wrap
msgid "`dbus`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2202
#, no-wrap
msgid "Qt D-Bus inter-process communication module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2203
#, no-wrap
msgid "`declarative`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2205
#, no-wrap
msgid "Qt declarative framework for dynamic user interfaces"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2206
#, no-wrap
msgid "`designer`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2208
#, no-wrap
msgid "Qt 5 graphical user interface designer"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2209
#, no-wrap
msgid "`diag`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2211
#, 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:2212
#, no-wrap
msgid "`doc`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2214
#, no-wrap
msgid "Qt 5 documentation"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2215
#, no-wrap
msgid "`examples`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2217
#, no-wrap
msgid "Qt 5 examples sourcecode"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2218
#, no-wrap
msgid "`gamepad`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2220
#, no-wrap
msgid "Qt 5 Gamepad Module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2221
#, no-wrap
msgid "`graphicaleffects`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2223
#, no-wrap
msgid "Qt Quick graphical effects"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2224
#, no-wrap
msgid "`gui`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2226
#, no-wrap
msgid "Qt graphical user interface module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2227
#, no-wrap
msgid "`help`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2229
#, no-wrap
msgid "Qt online help integration module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2230
#, no-wrap
msgid "`l10n`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2232
#, no-wrap
msgid "Qt localized messages"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2233
#, no-wrap
msgid "`languageserver`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2235
#, no-wrap
msgid "Qt 6 Language Server Protocol implementation"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2236
#, no-wrap
msgid "`linguist`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2238
#, no-wrap
msgid "Qt 5 translation tool"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2239
#, no-wrap
msgid "`location`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2241
#, no-wrap
msgid "Qt location module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2242
#, no-wrap
msgid "`lottie`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2244
#, no-wrap
msgid "Qt 6 QML API for rendering graphics and animations"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2245
#, no-wrap
msgid "`multimedia`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2247
#, no-wrap
msgid "Qt audio, video, radio and camera support module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2248
#, no-wrap
msgid "`network`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2250
#, no-wrap
msgid "Qt network module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2251
#, no-wrap
msgid "`networkauth`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2253
#, no-wrap
msgid "Qt network auth module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2254
#, no-wrap
msgid "`opengl`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2256
#, no-wrap
msgid "Qt 5-compatible OpenGL support module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2257
#, no-wrap
msgid "`paths`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2259
#, no-wrap
msgid "Command line client to QStandardPaths"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2260
#, no-wrap
msgid "`phonon4`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2262
#, no-wrap
msgid "KDE multimedia framework"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2263
#, no-wrap
msgid "`pixeltool`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2265
#, no-wrap
msgid "Qt 5 screen magnifier"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2266
#, no-wrap
msgid "`plugininfo`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2268
#, no-wrap
msgid "Qt 5 plugin metadata dumper"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2269
#, no-wrap
msgid "`positioning`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2271
#, 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:2272
#, no-wrap
msgid "`printsupport`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2274
#, no-wrap
msgid "Qt print support module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2275
#, no-wrap
msgid "`qdbus`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2277
#, no-wrap
msgid "Qt command-line interface to D-Bus"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2278
#, no-wrap
msgid "`qdbusviewer`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2280
#, no-wrap
msgid "Qt 5 graphical interface to D-Bus"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2281
#, no-wrap
msgid "`qdoc`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2283
#, no-wrap
msgid "Qt documentation generator"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2284
#, no-wrap
msgid "`qdoc-data`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2286
#, no-wrap
msgid "QDoc configuration files"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2287
#, no-wrap
msgid "`qev`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2289
#, no-wrap
msgid "Qt QWidget events introspection tool"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2290
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2420
#, no-wrap
msgid "`qmake`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2292
#, no-wrap
msgid "Qt Makefile generator"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2293
#, no-wrap
msgid "`quickcontrols`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2295
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2298
#, 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:2296
#, no-wrap
msgid "`quickcontrols2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2299
#, no-wrap
msgid "`remoteobjects`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2301
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2310
#, no-wrap
msgid "Qt 5 SXCML module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2302
#, no-wrap
msgid "`script`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2304
#, no-wrap
msgid "Qt 4-compatible scripting module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2305
#, no-wrap
msgid "`scripttools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2307
#, no-wrap
msgid "Qt Script additional components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2308
#, no-wrap
msgid "`scxml`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2311
#, no-wrap
msgid "`sensors`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2313
#, no-wrap
msgid "Qt sensors module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2314
#, no-wrap
msgid "`serialbus`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2316
#, no-wrap
msgid "Qt functions to access industrial bus systems"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2317
#, no-wrap
msgid "`serialport`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2319
#, no-wrap
msgid "Qt functions to access serial ports"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2320
#, no-wrap
msgid "`shadertools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2322
#, 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:2323
#, no-wrap
msgid "`speech`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2325
#, no-wrap
msgid "Accessibility features for Qt5"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2326
#, no-wrap
msgid "`sql`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2328
#, no-wrap
msgid "Qt SQL database integration module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2329
#, no-wrap
msgid "`sql-ibase`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2331
#, no-wrap
msgid "Qt InterBase/Firebird database plugin"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2332
#, no-wrap
msgid "`sql-mysql`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2334
#, no-wrap
msgid "Qt MySQL database plugin"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2335
#, no-wrap
msgid "`sql-odbc`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2337
#, no-wrap
msgid "Qt Open Database Connectivity plugin"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2338
#, no-wrap
msgid "`sql-pgsql`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2340
#, no-wrap
msgid "Qt PostgreSQL database plugin"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2341
#, no-wrap
msgid "`sql-sqlite2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2343
#, no-wrap
msgid "Qt SQLite 2 database plugin"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2344
#, no-wrap
msgid "`sql-sqlite3`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2346
#, no-wrap
msgid "Qt SQLite 3 database plugin"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2347
#, no-wrap
msgid "`sql-tds`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2349
#, no-wrap
msgid "Qt TDS Database Connectivity database plugin"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2350
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3945
#, no-wrap
msgid "`svg`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2352
#, no-wrap
msgid "Qt SVG support module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2353
#, no-wrap
msgid "`testlib`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2355
#, no-wrap
msgid "Qt unit testing module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2356
#, no-wrap
msgid "`tools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2358
#, no-wrap
msgid "Qt 6 assorted tools"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2359
#, no-wrap
msgid "`translations`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2361
#, no-wrap
msgid "Qt 6 translation module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2362
#, no-wrap
msgid "`uiplugin`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2364
#, no-wrap
msgid "Custom Qt widget plugin interface for Qt Designer"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2365
#, no-wrap
msgid "`uitools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2367
#, no-wrap
msgid "Qt Designer UI forms support module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2368
#, no-wrap
msgid "`virtualkeyboard`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2370
#, no-wrap
msgid "Qt 5 Virtual Keyboard Module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2371
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3095
#, no-wrap
msgid "`wayland`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2373
#, no-wrap
msgid "Qt 5 wrapper for Wayland"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2374
#, no-wrap
msgid "`webchannel`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2376
#, 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:2377
#, no-wrap
msgid "`webengine`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2379
#, no-wrap
msgid "Qt 5 library to render web content"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2380
#, no-wrap
msgid "`webkit`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2382
#, no-wrap
msgid "QtWebKit with a more modern WebKit code base"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2383
#, no-wrap
msgid "`websockets`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2385
#, no-wrap
msgid "Qt implementation of WebSocket protocol"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2386
#, no-wrap
msgid "`websockets-qml`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2388
#, no-wrap
msgid "Qt implementation of WebSocket protocol (QML bindings)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2389
#, no-wrap
msgid "`webview`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2391
#, no-wrap
msgid "Qt component for displaying web content"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2392
#, no-wrap
msgid "`widgets`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2394
#, no-wrap
msgid "Qt C++ widgets module"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2395
#, no-wrap
msgid "`x11extras`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2397
#, no-wrap
msgid "Qt platform-specific features for X11-based systems"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2398
#, no-wrap
msgid "`xml`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2400
#, no-wrap
msgid "Qt SAX and DOM implementations"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2401
#, no-wrap
msgid "`xmlpatterns`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2402
#, 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:2405
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:2407
#, no-wrap
msgid "Available Qt Tool Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2414
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3144
#, no-wrap
msgid "`buildtools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2416
#, 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:2417
#, no-wrap
msgid "`linguisttools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2419
#, no-wrap
msgid "localization tools: `lrelease`, `lupdate`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2421
#, no-wrap
msgid "Makefile generator/build utility"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2424
#, no-wrap
msgid "Available Qt Plugin Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2431
#, no-wrap
msgid "`imageformats`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2432
#, no-wrap
msgid "plugins for TGA, TIFF, and MNG image formats"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2435
#, no-wrap
msgid "Selecting Qt 5 Components"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2441
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:2446
#, 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:2451
#, no-wrap
msgid "Using `qmake`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2459
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 crossref:special[using-cmake,CMake], qmake supports "
"out-of-source builds, which can be enabled by specifying the `outsource` "
"argument (see crossref:special[using-qmake-example,`USES= qmake` example]).  "
"Also see crossref:special[using-qmake-arguments,Possible Arguments for `USES "
"qmake`]."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2461
#, no-wrap
msgid "Possible Arguments for `USES= qmake`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2468
#, no-wrap
msgid "`no_configure`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2470
#, 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:2471
#, no-wrap
msgid "`no_env`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2473
#, 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:2474
#, no-wrap
msgid "`norecursive`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2476
#, no-wrap
msgid "Do not pass the `-recursive` argument to `qmake`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2477
#, no-wrap
msgid "`outsource`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2478
#, no-wrap
msgid "Perform an out-of-source build."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2481
#, no-wrap
msgid "Variables for Ports That Use `qmake`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2488
#, no-wrap
msgid "`QMAKE_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2490
#, 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:2491
#, no-wrap
msgid "`QMAKE_ENV`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2493
#, 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:2494
#, no-wrap
msgid "`QMAKE_SOURCE_PATH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2495
#, 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:2498
msgid "When using `USES= qmake`, these settings are deployed:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2505
#, 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:2509
#, 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:2513
#, 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:2517
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:2519
#, no-wrap
msgid "`USES= qmake` Example"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2523
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:2528
#, 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:2533
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:2535
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:2540
#, 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:2543
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:2545
#, no-wrap
msgid "Using KDE"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2548
#, no-wrap
msgid "KDE Variable Definitions"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2555
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:2557
#, no-wrap
msgid "Available KDE Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2564
#, no-wrap
msgid "`activities`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2566
#, 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:2567
#, no-wrap
msgid "`activities-stats`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2569
#, no-wrap
msgid "KF5 statistics for activities"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2570
#, no-wrap
msgid "`activitymanagerd`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2572
#, 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:2573
#, no-wrap
msgid "`akonadi`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2575
#, no-wrap
msgid "Storage server for KDE-Pim"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2576
#, no-wrap
msgid "`akonadicalendar`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2578
#, no-wrap
msgid "Akonadi Calendar Integration"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2579
#, no-wrap
msgid "`akonadiconsole`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2581
#, no-wrap
msgid "Akonadi management and debugging console"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2582
#, no-wrap
msgid "`akonadicontacts`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2584
#, no-wrap
msgid "Libraries and daemons to implement Contact Management in Akonadi"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2585
#, no-wrap
msgid "`akonadiimportwizard`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2587
#, no-wrap
msgid "Import data from other mail clients to KMail"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2588
#, no-wrap
msgid "`akonadimime`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2590
#, no-wrap
msgid "Libraries and daemons to implement basic email handling"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2591
#, no-wrap
msgid "`akonadinotes`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2593
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2956
#, no-wrap
msgid "KDE library for accessing mail storages in MBox format"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2594
#, no-wrap
msgid "`akonadisearch`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2596
#, no-wrap
msgid "Libraries and daemons to implement searching in Akonadi"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2597
#, no-wrap
msgid "`akregator`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2599
#, no-wrap
msgid "A Feed Reader by KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2600
#, no-wrap
msgid "`alarmcalendar`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2602
#, no-wrap
msgid "KDE API for KAlarm alarms"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2603
#, no-wrap
msgid "`apidox`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2605
#, no-wrap
msgid "KF5 API Documentation Tools"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2606
#, no-wrap
msgid "`archive`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2608
#, no-wrap
msgid "KF5 library that provides classes for handling archive formats"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2609
#, no-wrap
msgid "`attica`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2611
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2614
#, no-wrap
msgid "Open Collaboration Services API library KDE5 version"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2612
#, no-wrap
msgid "`attica5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2615
#, no-wrap
msgid "`auth`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2617
#, no-wrap
msgid "KF5 abstraction to system policy and authentication features"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2618
#, no-wrap
msgid "`baloo`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2620
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2626
#, no-wrap
msgid "KF5 Framework for searching and managing user metadata"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2621
#, no-wrap
msgid "`baloo-widgets`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2623
#, no-wrap
msgid "BalooWidgets library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2624
#, no-wrap
msgid "`baloo5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2627
#, no-wrap
msgid "`blog`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2629
#, no-wrap
msgid "KDE API for weblogging access"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2630
#, no-wrap
msgid "`bookmarks`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2632
#, no-wrap
msgid "KF5 library for bookmarks and the XBEL format"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2633
#, no-wrap
msgid "`breeze`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2635
#, 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:2636
#, no-wrap
msgid "`breeze-gtk`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2638
#, no-wrap
msgid "Plasma5 Breeze visual style for Gtk"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2639
#, no-wrap
msgid "`breeze-icons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2641
#, no-wrap
msgid "Breeze icon theme for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2642
#, no-wrap
msgid "`calendarcore`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2644
#, no-wrap
msgid "KDE calendar access library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2645
#, no-wrap
msgid "`calendarsupport`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2647
#, no-wrap
msgid "Calendar support libraries for KDEPim"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2648
#, no-wrap
msgid "`calendarutils`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2650
#, no-wrap
msgid "KDE utility and user interface functions for accessing calendar"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2651
#, no-wrap
msgid "`codecs`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2653
#, no-wrap
msgid "KF5 library for string manipulation"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2654
#, no-wrap
msgid "`completion`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2656
#, no-wrap
msgid "KF5 text completion helpers and widgets"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2657
#, no-wrap
msgid "`config`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2659
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2662
#, no-wrap
msgid "KF5 widgets for configuration dialogs"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2660
#, no-wrap
msgid "`configwidgets`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2663
#, no-wrap
msgid "`contacts`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2665
#, no-wrap
msgid "KDE api to manage contact information"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2666
#, no-wrap
msgid "`coreaddons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2668
#, no-wrap
msgid "KF5 addons to QtCore"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2669
#, no-wrap
msgid "`crash`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2671
#, 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:2672
#, no-wrap
msgid "`dbusaddons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2674
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3082
#, no-wrap
msgid "KF5 addons to QtDBus"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2675
#, no-wrap
msgid "`decoration`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2677
#, no-wrap
msgid "Plasma5 library to create window decorations"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2678
#, no-wrap
msgid "`designerplugin`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2680
#, no-wrap
msgid "KF5 integration of Frameworks widgets in Qt Designer/Creator"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2681
#, no-wrap
msgid "`discover`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2683
#, no-wrap
msgid "Plasma5 package management tools"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2684
#, no-wrap
msgid "`dnssd`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2686
#, no-wrap
msgid "KF5 abstraction to system DNSSD features"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2687
#, no-wrap
msgid "`doctools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2689
#, no-wrap
msgid "KF5 documentation generation from docbook"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2690
#, no-wrap
msgid "`drkonqi`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2692
#, no-wrap
msgid "Plasma5 crash handler"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2693
#, no-wrap
msgid "`ecm`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2695
#, no-wrap
msgid "Extra modules and scripts for CMake"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2696
#, no-wrap
msgid "`emoticons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2698
#, no-wrap
msgid "KF5 library to convert emoticons"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2699
#, no-wrap
msgid "`eventviews`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2701
#, no-wrap
msgid "Event view libriares for KDEPim"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2702
#, no-wrap
msgid "`filemetadata`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2704
#, no-wrap
msgid "KF5 library for extracting file metadata"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2705
#, no-wrap
msgid "`frameworkintegration`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2707
#, no-wrap
msgid "KF5 workspace and cross-framework integration plugins"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2708
#, no-wrap
msgid "`gapi`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2710
#, no-wrap
msgid "KDE based library to access google services"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2711
#, no-wrap
msgid "`globalaccel`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2713
#, no-wrap
msgid "KF5 library to add support for global workspace shortcuts"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2714
#, no-wrap
msgid "`grantlee-editor`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2716
#, no-wrap
msgid "Editor for Grantlee themes"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2717
#, no-wrap
msgid "`grantleetheme`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2719
#, no-wrap
msgid "KDE PIM grantleetheme"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2720
#, no-wrap
msgid "`gravatar`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2722
#, no-wrap
msgid "Library for gravatar support"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2723
#, no-wrap
msgid "`guiaddons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2725
#, no-wrap
msgid "KF5 addons to QtGui"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2726
#, no-wrap
msgid "`holidays`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2728
#, no-wrap
msgid "KDE library for calendar holidays"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2729
#, no-wrap
msgid "`hotkeys`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2731
#, no-wrap
msgid "Plasma5 library for hotkeys"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2732
#, no-wrap
msgid "`i18n`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2734
#, no-wrap
msgid "KF5 advanced internationalization framework"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2735
#, no-wrap
msgid "`iconthemes`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2737
#, no-wrap
msgid "KF5 library for handling icons in applications"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2738
#, no-wrap
msgid "`identitymanagement`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2740
#, no-wrap
msgid "KDE pim identities"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2741
#, no-wrap
msgid "`idletime`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2743
#, no-wrap
msgid "KF5 library for monitoring user activity"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2744
#, no-wrap
msgid "`imap`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2746
#, no-wrap
msgid "KDE API for IMAP support"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2747
#, no-wrap
msgid "`incidenceeditor`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2749
#, no-wrap
msgid "Incidence editor libriares for KDEPim"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2750
#, no-wrap
msgid "`infocenter`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2752
#, no-wrap
msgid "Plasma5 utility providing system information"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2753
#, no-wrap
msgid "`init`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2755
#, no-wrap
msgid "KF5 process launcher to speed up launching KDE applications"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2756
#, no-wrap
msgid "`itemmodels`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2758
#, no-wrap
msgid "KF5 models for Qt Model/View system"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2759
#, no-wrap
msgid "`itemviews`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2761
#, no-wrap
msgid "KF5 widget addons for Qt Model/View"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2762
#, no-wrap
msgid "`jobwidgets`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2764
#, no-wrap
msgid "KF5 widgets for tracking KJob instance"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2765
#, no-wrap
msgid "`js`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2767
#, no-wrap
msgid "KF5 library providing an ECMAScript interpreter"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2768
#, no-wrap
msgid "`jsembed`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2770
#, no-wrap
msgid "KF5 library for binding JavaScript objects to QObjects"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2771
#, no-wrap
msgid "`kaddressbook`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2773
#, no-wrap
msgid "KDE contact manager"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2774
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2777
#, no-wrap
msgid "`kalarm`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2776
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2779
#, no-wrap
msgid "Personal alarm scheduler"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2780
#, no-wrap
msgid "`kate`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2782
#, no-wrap
msgid "Basic editor framework for the KDE system"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2783
#, no-wrap
msgid "`kcmutils`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2785
#, no-wrap
msgid "KF5 utilities for working with KCModules"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2786
#, no-wrap
msgid "`kde-cli-tools`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2788
#, no-wrap
msgid "Plasma5 non-interactive system tools"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2789
#, no-wrap
msgid "`kde-gtk-config`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2791
#, no-wrap
msgid "Plasma5 GTK2 and GTK3 configurator"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2792
#, no-wrap
msgid "`kdeclarative`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2794
#, no-wrap
msgid "KF5 library providing integration of QML and KDE Frameworks"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2795
#, no-wrap
msgid "`kded`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2797
#, no-wrap
msgid "KF5 extensible daemon for providing system level services"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2798
#, no-wrap
msgid "`kdelibs4support`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2800
#, no-wrap
msgid "KF5 porting aid from KDELibs4"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2801
#, no-wrap
msgid "`kdepim-addons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2803
#, no-wrap
msgid "KDE PIM addons"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2804
#, no-wrap
msgid "`kdepim-apps-libs`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2806
#, no-wrap
msgid "KDE PIM mail related libraries"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2807
#, no-wrap
msgid "`kdepim-runtime5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2809
#, no-wrap
msgid "KDE PIM tools and services"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2810
#, no-wrap
msgid "`kdeplasma-addons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2812
#, no-wrap
msgid "Plasma5 addons to improve the Plasma experience"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2813
#, no-wrap
msgid "`kdesu`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2815
#, no-wrap
msgid "KF5 integration with su for elevated privileges"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2816
#, no-wrap
msgid "`kdewebkit`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2818
#, no-wrap
msgid "KF5 library providing integration of QtWebKit"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2819
#, no-wrap
msgid "`kgamma5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2821
#, no-wrap
msgid "Plasma5 monitor's gamma settings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2822
#, no-wrap
msgid "`khtml`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2824
#, no-wrap
msgid "KF5 KTHML rendering engine"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2825
#, no-wrap
msgid "`kimageformats`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2827
#, no-wrap
msgid "KF5 library providing support for additional image formats"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2828
#, no-wrap
msgid "`kio`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2830
#, no-wrap
msgid "KF5 resource and network access abstraction"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2831
#, no-wrap
msgid "`kirigami2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2833
#, no-wrap
msgid "QtQuick based components set"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2834
#, no-wrap
msgid "`kitinerary`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2836
#, no-wrap
msgid "Data Model and Extraction System for Travel Reservation information"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2837
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2840
#, no-wrap
msgid "`kmail`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2839
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2842
#, no-wrap
msgid "KDE mail client"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2843
#, no-wrap
msgid "`kmail-account-wizard`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2845
#, no-wrap
msgid "KDE mail account wizard"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2846
#, no-wrap
msgid "`kmenuedit`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2848
#, no-wrap
msgid "Plasma5 menu editor"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2849
#, no-wrap
msgid "`knotes`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2851
#, no-wrap
msgid "Popup notes"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2852
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2855
#, no-wrap
msgid "`kontact`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2854
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2857
#, no-wrap
msgid "KDE Personal Information Manager"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2858
#, no-wrap
msgid "`kontactinterface`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2860
#, no-wrap
msgid "KDE glue for embedding KParts into Kontact"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2861
#, no-wrap
msgid "`korganizer`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2863
#, no-wrap
msgid "Calendar and scheduling Program"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2864
#, no-wrap
msgid "`kpimdav`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2866
#, no-wrap
msgid "A DAV protocol implementation with KJobs"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2867
#, no-wrap
msgid "`kpkpass`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2869
#, no-wrap
msgid "Library to deal with Apple Wallet pass files"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2870
#, no-wrap
msgid "`kross`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2872
#, no-wrap
msgid "KF5 multi-language application scripting"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2873
#, no-wrap
msgid "`kscreen`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2875
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2935
#, no-wrap
msgid "Plasma5 screen management library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2876
#, no-wrap
msgid "`kscreenlocker`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2878
#, no-wrap
msgid "Plasma5 secure lock screen architecture"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2879
#, no-wrap
msgid "`ksmtp`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2881
#, 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:2882
#, no-wrap
msgid "`ksshaskpass`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2884
#, no-wrap
msgid "Plasma5 ssh-add frontend"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2885
#, no-wrap
msgid "`ksysguard`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2887
#, no-wrap
msgid "Plasma5 utility to track and control the running processes"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2888
#, no-wrap
msgid "`kwallet-pam`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2890
#, no-wrap
msgid "Plasma5 KWallet PAM Integration"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2891
#, no-wrap
msgid "`kwayland-integration`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2893
#, no-wrap
msgid "Integration plugins for a Wayland-based desktop"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2894
#, no-wrap
msgid "`kwin`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2896
#, no-wrap
msgid "Plasma5 window manager"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2897
#, no-wrap
msgid "`kwrited`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2899
#, no-wrap
msgid "Plasma5 daemon listening for wall and write messages"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2900
#, no-wrap
msgid "`ldap`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2902
#, no-wrap
msgid "LDAP access API for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2903
#, no-wrap
msgid "`libkcddb`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2905
#, no-wrap
msgid "KDE CDDB library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2906
#, no-wrap
msgid "`libkcompactdisc`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2908
#, no-wrap
msgid "KDE library for interfacing with audio CDs"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2909
#, no-wrap
msgid "`libkdcraw`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2911
#, no-wrap
msgid "LibRaw interface for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2912
#, no-wrap
msgid "`libkdegames`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2914
#, no-wrap
msgid "Libraries used by KDE games"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2915
#, no-wrap
msgid "`libkdepim`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2917
#, no-wrap
msgid "KDE PIM Libraries"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2918
#, no-wrap
msgid "`libkeduvocdocument`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2920
#, no-wrap
msgid "Library for reading and writing vocabulary files"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2921
#, no-wrap
msgid "`libkexiv2`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2923
#, no-wrap
msgid "Exiv2 library interface for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2924
#, no-wrap
msgid "`libkipi`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2926
#, no-wrap
msgid "KDE Image Plugin Interface"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2927
#, no-wrap
msgid "`libkleo`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2929
#, no-wrap
msgid "Certificate manager for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2930
#, no-wrap
msgid "`libksane`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2932
#, no-wrap
msgid "SANE library interface for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2933
#, no-wrap
msgid "`libkscreen`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2936
#, no-wrap
msgid "`libksieve`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2938
#, no-wrap
msgid "Sieve libriares for KDEPim"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2939
#, no-wrap
msgid "`libksysguard`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2941
#, no-wrap
msgid "Plasma5 library to track and control running processes"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2942
#, no-wrap
msgid "`mailcommon`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2944
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3004
#, no-wrap
msgid "Common libriares for KDEPim"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2945
#, no-wrap
msgid "`mailimporter`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2947
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2959
#, no-wrap
msgid "Import mbox files to KMail"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2948
#, no-wrap
msgid "`mailtransport`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2950
#, no-wrap
msgid "KDE library to managing mail transport"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2951
#, no-wrap
msgid "`marble`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2953
#, no-wrap
msgid "Virtual globe and world atlas for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2954
#, no-wrap
msgid "`mbox`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2957
#, no-wrap
msgid "`mbox-importer`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2960
#, no-wrap
msgid "`mediaplayer`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2962
#, no-wrap
msgid "KF5 plugin interface for media player features"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2963
#, no-wrap
msgid "`messagelib`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2965
#, no-wrap
msgid "Library for handling messages"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2966
#, no-wrap
msgid "`milou`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2968
#, no-wrap
msgid "Plasma5 Plasmoid for search"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2969
#, no-wrap
msgid "`mime`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2971
#, no-wrap
msgid "Library for handling MIME data"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2972
#, no-wrap
msgid "`newstuff`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2974
#, no-wrap
msgid "KF5 library for downloading application assets from the network"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2975
#, no-wrap
msgid "`notifications`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2977
#, no-wrap
msgid "KF5 abstraction for system notifications"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2978
#, no-wrap
msgid "`notifyconfig`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2980
#, no-wrap
msgid "KF5 configuration system for KNotify"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2981
#, no-wrap
msgid "`okular`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2983
#, no-wrap
msgid "KDE universal document viewer"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2984
#, no-wrap
msgid "`oxygen`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2986
#, no-wrap
msgid "Plasma5 Oxygen style"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2987
#, no-wrap
msgid "`oxygen-icons5`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2989
#, no-wrap
msgid "The Oxygen icon theme for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2990
#, no-wrap
msgid "`package`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2992
#, no-wrap
msgid "KF5 library to load and install packages"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2993
#, no-wrap
msgid "`parts`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2995
#, no-wrap
msgid "KF5 document centric plugin system"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2996
#, no-wrap
msgid "`people`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2998
#, no-wrap
msgid "KF5 library providing access to contacts"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2999
#, no-wrap
msgid "`pim-data-exporter`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3001
#, no-wrap
msgid "Import and export KDE PIM settings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3002
#, no-wrap
msgid "`pimcommon`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3005
#, no-wrap
msgid "`pimtextedit`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3007
#, no-wrap
msgid "KDE library for PIM-specific text editing utilities"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3008
#, no-wrap
msgid "`plasma-browser-integration`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3010
#, no-wrap
msgid "Plasma5 components to integrate browsers into the desktop"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3011
#, no-wrap
msgid "`plasma-desktop`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3013
#, no-wrap
msgid "Plasma5 plasma desktop"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3014
#, no-wrap
msgid "`plasma-framework`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3016
#, 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:3017
#, no-wrap
msgid "`plasma-integration`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3019
#, no-wrap
msgid "Qt Platform Theme integration plugins for the Plasma workspaces"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3020
#, no-wrap
msgid "`plasma-pa`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3022
#, no-wrap
msgid "Plasma5 Plasma pulse audio mixer"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3023
#, no-wrap
msgid "`plasma-sdk`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3025
#, no-wrap
msgid "Plasma5 applications useful for Plasma development"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3026
#, no-wrap
msgid "`plasma-workspace`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3028
#, no-wrap
msgid "Plasma5 Plasma workspace"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3029
#, no-wrap
msgid "`plasma-workspace-wallpapers`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3031
#, no-wrap
msgid "Plasma5 wallpapers"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3032
#, no-wrap
msgid "`plotting`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3034
#, no-wrap
msgid "KF5 lightweight plotting framework"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3035
#, no-wrap
msgid "`polkit-kde-agent-1`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3037
#, no-wrap
msgid "Plasma5 daemon providing a polkit authentication UI"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3038
#, no-wrap
msgid "`powerdevil`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3040
#, no-wrap
msgid "Plasma5 tool to manage the power consumption settings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3041
#, no-wrap
msgid "`prison`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3043
#, no-wrap
msgid "API to produce barcodes"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3044
#, no-wrap
msgid "`pty`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3046
#, no-wrap
msgid "KF5 pty abstraction"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3047
#, no-wrap
msgid "`purpose`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3049
#, no-wrap
msgid "Offers available actions for a specific purpose"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3050
#, no-wrap
msgid "`qqc2-desktop-style`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3052
#, no-wrap
msgid "Qt QuickControl2 style for KDE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3053
#, no-wrap
msgid "`runner`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3055
#, no-wrap
msgid "KF5 parallelized query system"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3056
#, no-wrap
msgid "`service`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3058
#, no-wrap
msgid "KF5 advanced plugin and service introspection"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3059
#, no-wrap
msgid "`solid`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3061
#, no-wrap
msgid "KF5 hardware integration and detection"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3062
#, no-wrap
msgid "`sonnet`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3064
#, no-wrap
msgid "KF5 plugin-based spell checking library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3065
#, no-wrap
msgid "`syndication`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3067
#, no-wrap
msgid "KDE RSS feed handling library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3068
#, no-wrap
msgid "`syntaxhighlighting`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3070
#, no-wrap
msgid "KF5 syntax highlighting engine for structured text and code"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3071
#, no-wrap
msgid "`systemsettings`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3073
#, no-wrap
msgid "Plasma5 system settings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3074
#, no-wrap
msgid "`texteditor`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3076
#, no-wrap
msgid "KF5 advanced embeddable text editor"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3077
#, no-wrap
msgid "`textwidgets`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3079
#, no-wrap
msgid "KF5 advanced text editing widgets"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3080
#, no-wrap
msgid "`threadweaver`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3083
#, no-wrap
msgid "`tnef`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3085
#, no-wrap
msgid "KDE API for the handling of TNEF data"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3086
#, no-wrap
msgid "`unitconversion`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3088
#, no-wrap
msgid "KF5 library for unit conversion"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3089
#, no-wrap
msgid "`user-manager`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3091
#, no-wrap
msgid "Plasma5 user manager"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3092
#, no-wrap
msgid "`wallet`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3094
#, no-wrap
msgid "KF5 secure and unified container for user passwords"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3097
#, 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:3098
#, no-wrap
msgid "`widgetsaddons`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3100
#, no-wrap
msgid "KF5 addons to QtWidgets"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3101
#, no-wrap
msgid "`windowsystem`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3103
#, no-wrap
msgid "KF5 library for access to the windowing system"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3104
#, no-wrap
msgid "`xmlgui`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3106
#, no-wrap
msgid "KF5 user configurable main windows"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3107
#, no-wrap
msgid "`xmlrpcclient`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3108
#, no-wrap
msgid "KF5 interaction with XMLRPC services"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3111
#, no-wrap
msgid "`USE_KDE` Example"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3121
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 "
"crossref:special[using-cmake, 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:3127
#, 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:3132
#, no-wrap
msgid "Using LXQt"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3135
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:3137
#, no-wrap
msgid "Available LXQt Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3146
#, no-wrap
msgid "Helpers for additional CMake modules"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3147
#, no-wrap
msgid "`libfmqt`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3149
#, no-wrap
msgid "Libfm Qt bindings"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3150
#, no-wrap
msgid "`lxqt`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3152
#, no-wrap
msgid "LXQt core library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3153
#, no-wrap
msgid "`qtxdg`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3154
#, no-wrap
msgid "Qt implementation of freedesktop.org XDG specifications"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3157
#, no-wrap
msgid "`USE_LXQT` Example"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3162
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:3168
#, 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:3173
#, no-wrap
msgid "Using Java"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3176
#, no-wrap
msgid "Variable Definitions"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3179
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:3183
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/"
"openjdk25[], with package:java/openjdk24[], package:java/openjdk23[], "
"package:java/openjdk22[], package:java/openjdk21[], package:java/"
"openjdk17[], package:java/openjdk11[], and package:java/openjdk8[], also "
"available."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3185
#, 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:3192
#, no-wrap
msgid "`USE_JAVA`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3194
#, no-wrap
msgid "Define for the remaining variables to have any effect."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3195
#, no-wrap
msgid "`JAVA_VERSION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3198
#, 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:3199
#, no-wrap
msgid "`JAVA_OS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3201
#, 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:3202
#, no-wrap
msgid "`JAVA_VENDOR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3204
#, 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:3205
#, no-wrap
msgid "`JAVA_BUILD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3207
#, 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:3208
#, no-wrap
msgid "`JAVA_RUN`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3210
#, 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:3211
#, no-wrap
msgid "`JAVA_EXTRACT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3212
#, 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:3215
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:3217
#, no-wrap
msgid "Variables Provided to Ports That Use Java"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3223
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3302
#, no-wrap
msgid "Value"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3224
#, no-wrap
msgid "`JAVA_PORT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3226
#, 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:3227
#, no-wrap
msgid "`JAVA_PORT_VERSION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3229
#, 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:3230
#, no-wrap
msgid "`JAVA_PORT_OS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3232
#, 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:3233
#, no-wrap
msgid "`JAVA_PORT_VENDOR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3235
#, no-wrap
msgid "The vendor of the JDK port (for example, `'openjdk'`)."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3236
#, no-wrap
msgid "`JAVA_PORT_OS_DESCRIPTION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3238
#, 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:3239
#, no-wrap
msgid "`JAVA_PORT_VENDOR_DESCRIPTION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3241
#, 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:3242
#, no-wrap
msgid "`JAVA_HOME`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3244
#, 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:3245
#, no-wrap
msgid "`JAVAC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3247
#, 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:3248
#, no-wrap
msgid "`JAR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3250
#, 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:3251
#, no-wrap
msgid "`APPLETVIEWER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3253
#, 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:3254
#, no-wrap
msgid "`JAVA`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3256
#, 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:3257
#, no-wrap
msgid "`JAVADOC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3259
#, no-wrap
msgid "Path to the `javadoc` utility program."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3260
#, no-wrap
msgid "`JAVAH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3262
#, no-wrap
msgid "Path to the `javah` program."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3263
#, no-wrap
msgid "`JAVAP`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3265
#, no-wrap
msgid "Path to the `javap` program."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3266
#, no-wrap
msgid "`JAVA_KEYTOOL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3268
#, no-wrap
msgid "Path to the `keytool` utility program."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3269
#, no-wrap
msgid "`JAVA_N2A`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3271
#, no-wrap
msgid "Path to the `native2ascii` tool."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3272
#, no-wrap
msgid "`JAVA_POLICYTOOL`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3274
#, no-wrap
msgid "Path to the `policytool` program."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3275
#, no-wrap
msgid "`JAVA_SERIALVER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3277
#, no-wrap
msgid "Path to the `serialver` utility program."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3278
#, no-wrap
msgid "`RMIC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3280
#, no-wrap
msgid "Path to the RMI stub/skeleton generator, `rmic`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3281
#, no-wrap
msgid "`RMIREGISTRY`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3283
#, no-wrap
msgid "Path to the RMI registry program, `rmiregistry`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3284
#, no-wrap
msgid "`RMID`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3286
#, no-wrap
msgid "Path to the RMI daemon program `rmid`."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3287
#, no-wrap
msgid "`JAVA_CLASSES`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3288
#, 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:3292
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:3294
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:3296
#, no-wrap
msgid "Constants Defined for Ports That Use Java"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3300
#, no-wrap
msgid "Constant"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3303
#, no-wrap
msgid "`JAVASHAREDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3305
#, 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:3306
#, no-wrap
msgid "`JAVAJARDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3308
#, 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:3309
#, no-wrap
msgid "`JAVALIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3310
#, 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:3313
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:3315
#, no-wrap
msgid "Building with Ant"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3321
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 "
"crossref:special[building, Building Mechanisms]."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3323
#, no-wrap
msgid "Best Practices"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3328
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:3332
#, no-wrap
msgid "PLIST_FILES+=\t${JAVAJARDIR}/myport.jar\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3337
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:3344
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:3349
#, 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:3353
#, 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:3358
#, 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:3365
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:3369
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:3372
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:3376
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:3379
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:3381
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:3383
#, no-wrap
msgid "Web Applications, Apache and PHP"
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3386
#, no-wrap
msgid "Apache"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3389
#, no-wrap
msgid "Variables for Ports That Use Apache"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3393
#, no-wrap
msgid "`USE_APACHE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3395
#, 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:3396
#, no-wrap
msgid "`APXS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3398
#, 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:3399
#, no-wrap
msgid "`HTTPD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3401
#, 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:3402
#, no-wrap
msgid "`APACHE_VERSION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3404
#, 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:3405
#, no-wrap
msgid "`APACHEMODDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3407
#, 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:3408
#, no-wrap
msgid "`APACHEINCLUDEDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3410
#, 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:3411
#, no-wrap
msgid "`APACHEETCDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3412
#, 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:3415
#, no-wrap
msgid "Useful Variables for Porting Apache Modules"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3419
#, no-wrap
msgid "`MODULENAME`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3421
#, 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:3422
#, no-wrap
msgid "`SHORTMODNAME`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3424
#, 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:3425
#, no-wrap
msgid "`AP_FAST_BUILD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3427
#, no-wrap
msgid "Use `apxs` to compile and install the module."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3428
#, no-wrap
msgid "`AP_GENPLIST`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3430
#, no-wrap
msgid "Also automatically creates a [.filename]#pkg-plist#."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3431
#, no-wrap
msgid "`AP_INC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3433
#, 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:3434
#, no-wrap
msgid "`AP_LIB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3436
#, 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:3437
#, no-wrap
msgid "`AP_EXTRAS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3438
#, no-wrap
msgid "Additional flags to pass to `apxs`."
msgstr ""

#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3441
#, no-wrap
msgid "Web Applications"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3445
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:3450
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:3455
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:3459
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:3461
#, no-wrap
msgid "PHP"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3465
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:3467
#, no-wrap
msgid "PEAR Modules"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3470
msgid "Porting PEAR modules is a very simple process."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3473
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:3475
#, no-wrap
msgid "Example Makefile for PEAR Class"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3483
#, 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:3487
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:3489
#, no-wrap
msgid "USES=\tpear\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3498
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:3503
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:3509
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:3512
#, no-wrap
msgid "Horde Modules"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3515
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:3518
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:3521
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:3523
#, no-wrap
msgid "Example Makefile for Horde Module"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3531
#, 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:3535
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:3539
#, 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:3542
#, no-wrap
msgid ""
"USES=\thorde\n"
"USE_PHP=\tsession\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3546
#, 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:3549
#, 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:3558
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:3561
#, no-wrap
msgid "Using Python"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3566
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:3568
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:3572
#, no-wrap
msgid "PKGNAMEPREFIX=\t${PYTHON_PKGNAMEPREFIX}\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3576
#, no-wrap
msgid "Most Useful Variables for Ports That Use Python"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3580
#, no-wrap
msgid "`USES=python`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3582
#, 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:3583
#, no-wrap
msgid "`USE_PYTHON=distutils`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3585
#, 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:3586
#, no-wrap
msgid "`USE_PYTHON=autoplist`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3588
#, 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:3589
#, no-wrap
msgid "`USE_PYTHON=concurrent`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3591
#, 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:3592
#, no-wrap
msgid "`USE_PYTHON=flavors`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3594
#, 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:3595
#, no-wrap
msgid "`USE_PYTHON=optsuffix`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3597
#, 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:3598
#, no-wrap
msgid "`USE_PYTHON=pep517`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3600
#, no-wrap
msgid "Support building and installing wheels according to the PEP-517 standard."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3601
#, no-wrap
msgid "`PYTHON_PKGNAMEPREFIX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3603
#, 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:3604
#, no-wrap
msgid "`PYTHON_SITELIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3606
#, 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:3607
#, no-wrap
msgid "`PYTHONPREFIX_SITELIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3609
#, 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:3610
#, no-wrap
msgid "`PYTHON_CMD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3611
#, no-wrap
msgid "Python interpreter command line, including version number."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3614
#, no-wrap
msgid "Python Module Dependency Helpers"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3618
#, no-wrap
msgid "`PYNUMERIC`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3620
#, no-wrap
msgid "Dependency line for numeric extension."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3621
#, no-wrap
msgid "`PYNUMPY`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3623
#, 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:3624
#, no-wrap
msgid "`PYXML`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3626
#, 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:3627
#, no-wrap
msgid "`PY_ENUM34`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3629
#, 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:3630
#, no-wrap
msgid "`PY_ENUM_COMPAT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3632
#, 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:3633
#, no-wrap
msgid "`PY_PATHLIB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3635
#, 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:3636
#, no-wrap
msgid "`PY_IPADDRESS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3638
#, 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:3639
#, no-wrap
msgid "`PY_FUTURES`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3640
#, 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:3643
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:3648
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 crossref:special[python-Makefile,Makefile for a "
"Simple Python Module]."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3651
#, no-wrap
msgid "Makefile for a Simple Python Module"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3659
#, 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:3663
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:3665
#, 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:3668
#, 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:3678
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:3684
#, 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:3687
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:3689
#, no-wrap
msgid "Using Tcl/Tk"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3694
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:3696
#, 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:3700
#, no-wrap
msgid "`TCL_VER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3702
#, no-wrap
msgid "chosen major.minor version of Tcl"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3703
#, no-wrap
msgid "`TCLSH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3705
#, no-wrap
msgid "full path of the Tcl interpreter"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3706
#, no-wrap
msgid "`TCL_LIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3708
#, no-wrap
msgid "path of the Tcl libraries"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3709
#, no-wrap
msgid "`TCL_INCLUDEDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3711
#, no-wrap
msgid "path of the Tcl C header files"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3712
#, no-wrap
msgid "`TCL_PKG_LIB_PREFIX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3714
#, no-wrap
msgid "Library prefix, as per TIP595"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3715
#, no-wrap
msgid "`TCL_PKG_STUB_POSTFIX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3717
#, no-wrap
msgid "Stub library postfix"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3718
#, no-wrap
msgid "`TK_VER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3720
#, no-wrap
msgid "chosen major.minor version of Tk"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3721
#, no-wrap
msgid "`WISH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3723
#, no-wrap
msgid "full path of the Tk interpreter"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3724
#, no-wrap
msgid "`TK_LIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3726
#, no-wrap
msgid "path of the Tk libraries"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3727
#, no-wrap
msgid "`TK_INCLUDEDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3728
#, no-wrap
msgid "path of the Tk C header files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3732
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:3734
#, no-wrap
msgid "Using SDL"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3737
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:3739
msgid "These SDL libraries for version 1.2 are recognized:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3741
msgid "sdl: package:devel/sdl12[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3742
msgid "console: package:devel/sdl_console[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3743
msgid "gfx: package:graphics/sdl_gfx[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3744
msgid "image: package:graphics/sdl_image[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3745
msgid "mixer: package:audio/sdl_mixer[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3746
msgid "mm: package:devel/sdlmm[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3747
msgid "net: package:net/sdl_net[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3748
msgid "pango: package:x11-toolkits/sdl_pango[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3749
msgid "sound: package:audio/sdl_sound[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3750
msgid "ttf: package:graphics/sdl_ttf[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3752
msgid "These SDL libraries for version 2.0 are recognized:"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3754
msgid "sdl: package:devel/sdl20[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3755
msgid "gfx: package:graphics/sdl2_gfx[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3756
msgid "image: package:graphics/sdl2_image[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3757
msgid "mixer: package:audio/sdl2_mixer[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3758
msgid "net: package:net/sdl2_net[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3759
msgid "ttf: package:graphics/sdl2_ttf[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3761
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:3765
#, no-wrap
msgid "USE_SDL=\tnet mixer\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3768
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:3770
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:3772
msgid "Add a dependency on sdl12-config to `BUILD_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3773
msgid "Add the variable `SDL_CONFIG` to `CONFIGURE_ENV`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3774
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3780
msgid "Add the dependencies of the selected libraries to `LIB_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3776
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:3778
msgid "Add a dependency on sdl2-config to `BUILD_DEPENDS`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3779
msgid "Add the variable `SDL2_CONFIG` to `CONFIGURE_ENV`"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3783
#, no-wrap
msgid "Using wxWidgets"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3786
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:3792
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:3798
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:3800
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4101
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4320
#, no-wrap
msgid "Version Selection"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3803
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:3805
#, no-wrap
msgid "Variables to Select wxWidgets Versions"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3812
#, no-wrap
msgid "Default value"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3813
#, no-wrap
msgid "`USE_WX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3814
#, no-wrap
msgid "List of versions the port can use"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3816
#, no-wrap
msgid "All available versions"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3817
#, no-wrap
msgid "`USE_WX_NOT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3818
#, no-wrap
msgid "List of versions the port cannot use"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3819
#, no-wrap
msgid "None"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3822
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:3824
#, no-wrap
msgid "Available wxWidgets Versions"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3828
#, no-wrap
msgid "Version"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3830
#, no-wrap
msgid "Port"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3831
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3849
#, no-wrap
msgid "`2.8`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3833
#, no-wrap
msgid "package:x11-toolkits/wxgtk28[]"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3834
#, no-wrap
msgid "`3.0`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3835
#, no-wrap
msgid "package:x11-toolkits/wxgtk30[]"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3838
msgid ""
"The variables in crossref:special[wx-ver-sel-table,Variables to Select "
"wxWidgets Versions] 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:3840
#, no-wrap
msgid "wxWidgets Version Specifications"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3846
#, no-wrap
msgid "Example"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3847
#, no-wrap
msgid "Single version"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3850
#, no-wrap
msgid "Ascending range"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3852
#, no-wrap
msgid "`2.8+`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3853
#, no-wrap
msgid "Descending range"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3855
#, no-wrap
msgid "`3.0-`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3856
#, no-wrap
msgid "Full range (must be ascending)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3857
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3900
#, no-wrap
msgid "`2.8-3.0`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3861
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:3862
#, no-wrap
msgid "Variables to Select Preferred wxWidgets Versions"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3868
#, no-wrap
msgid "Designed for"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3869
#, no-wrap
msgid "`WANT_WX_VER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3871
#, no-wrap
msgid "the port"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3872
#, no-wrap
msgid "`WITH_WX_VER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3873
#, no-wrap
msgid "the user"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3880
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:3882
#, no-wrap
msgid "Available wxWidgets Components"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3889
#, no-wrap
msgid "Version restriction"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3890
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3933
#, no-wrap
msgid "`wx`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3891
#, no-wrap
msgid "main library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3893
#, no-wrap
msgid "none"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3894
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3936
#, no-wrap
msgid "`contrib`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3895
#, no-wrap
msgid "contributed libraries"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3897
#, no-wrap
msgid "`none`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3898
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3939
#, no-wrap
msgid "`python`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3899
#, no-wrap
msgid "wxPython (Python bindings)"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3905
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 crossref:special[wx-def-dep-types,Default wxWidgets Dependency "
"Types]).  These types are available:"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3907
#, no-wrap
msgid "Available wxWidgets Dependency Types"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3914
#, no-wrap
msgid "`build`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3916
#, no-wrap
msgid "Component is required for building, equivalent to `BUILD_DEPENDS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3917
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3941
#, no-wrap
msgid "`run`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3919
#, no-wrap
msgid "Component is required for running, equivalent to `RUN_DEPENDS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3920
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3935
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3938
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3944
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3946
#, no-wrap
msgid "`lib`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3921
#, 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:3924
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:3926
#, no-wrap
msgid "Default wxWidgets Dependency Types"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3932
#, no-wrap
msgid "Dependency type"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3942
#, no-wrap
msgid "`mozilla`"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3949
#, no-wrap
msgid "Selecting wxWidgets Components"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3953
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:3958
#, 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:3963
#, no-wrap
msgid "Detecting Installed Versions"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3968
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:3970
#, no-wrap
msgid "Detecting Installed wxWidgets Versions and Components"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3974
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:3978
#, no-wrap
msgid "WANT_WX=\tyes\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3980
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3996
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4049
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4639
#, no-wrap
msgid ".include <bsd.port.pre.mk>\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3985
#, 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:3988
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:3994
#, 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:4001
#, 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:4006
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4176
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4411
#, no-wrap
msgid "Defined Variables"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4009
msgid ""
"These variables are available in the port (after defining one from "
"crossref:special[wx-ver-sel-table,Variables to Select wxWidgets Versions])."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4011
#, no-wrap
msgid "Variables Defined for Ports That Use wxWidgets"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4018
#, no-wrap
msgid "`WX_CONFIG`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4020
#, 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:4021
#, no-wrap
msgid "`WXRC_CMD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4023
#, 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:4024
#, no-wrap
msgid "`WX_VERSION`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4025
#, 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:4028
#, no-wrap
msgid "Processing in [.filename]#bsd.port.pre.mk#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4031
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:4035
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:4038
#, no-wrap
msgid "Using wxWidgets Variables in Commands"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4042
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:4047
#, 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:4052
#, 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:4055
#, no-wrap
msgid ""
"PLIST_SUB+=\tVERSION=\"${VER_STR}\"\n"
".endif\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4062
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:4065
#, no-wrap
msgid "Additional `configure` Arguments"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4068
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:4070
#, no-wrap
msgid "Legal Values for `WX_CONF_ARGS`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4074
#, no-wrap
msgid "Possible value"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4076
#, no-wrap
msgid "Resulting argument"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4077
#, no-wrap
msgid "`absolute`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4079
#, no-wrap
msgid "`--with-wx-config=${WX_CONFIG}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4080
#, no-wrap
msgid "`relative`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4081
#, no-wrap
msgid "`--with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}`"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4084
#, no-wrap
msgid "Using Lua"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4087
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:4093
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:4096
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:4099
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:4104
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:4108
#, no-wrap
msgid "USES=\tlua\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4113
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:4117
#, no-wrap
msgid "USES=\tlua:52-53\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4120
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:4125
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:4128
#, no-wrap
msgid "Configuration and Compiler flags"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4133
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:4135
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:4136
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:4137
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:4140
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4384
#, no-wrap
msgid "Version Flavors"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4144
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:4148
#, no-wrap
msgid "USES=\tlua:module\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4151
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:4153
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:4157
#, no-wrap
msgid "PKGNAMEPREFIX=\t${LUA_PKGNAMEPREFIX}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4161
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:4163
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:4167
#, no-wrap
msgid "USES=\tlua:flavors\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4171
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:4174
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:4179
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4414
msgid "These variables are available in the port."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4181
#, no-wrap
msgid "Variables Defined for Ports That Use Lua"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4188
#, no-wrap
msgid "`LUA_VER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4190
#, 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:4191
#, no-wrap
msgid "`LUA_VER_STR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4193
#, no-wrap
msgid "The Lua version without the dots (for example, `54`)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4194
#, no-wrap
msgid "`LUA_FLAVOR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4196
#, 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:4197
#, no-wrap
msgid "`LUA_BASE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4199
#, 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:4200
#, no-wrap
msgid "`LUA_PREFIX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4202
#, 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:4203
#, no-wrap
msgid "`LUA_INCDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4205
#, no-wrap
msgid "The directory where Lua header files are installed"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4206
#, no-wrap
msgid "`LUA_LIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4208
#, no-wrap
msgid "The directory where Lua libraries are installed"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4209
#, no-wrap
msgid "`LUA_REFMODLIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4211
#, 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:4212
#, no-wrap
msgid "`LUA_REFMODSHAREDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4214
#, 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:4215
#, no-wrap
msgid "`LUA_MODLIBDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4217
#, 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:4218
#, no-wrap
msgid "`LUA_MODSHAREDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4220
#, 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:4221
#, no-wrap
msgid "`LUA_PKGNAMEPREFIX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4223
#, no-wrap
msgid "The package name prefix used by Lua modules"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4224
#, no-wrap
msgid "`LUA_CMD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4226
#, no-wrap
msgid "The name of the Lua interpreter (e.g. `lua54`)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4227
#, no-wrap
msgid "`LUAC_CMD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4228
#, 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:4231
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:4233
#, no-wrap
msgid "Variables Defined for Lua Module Ports"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4240
#, no-wrap
msgid "`LUA_DOCSDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4242
#, 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:4243
#, no-wrap
msgid "`LUA_EXAMPLESDIR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4244
#, 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:4250
#, no-wrap
msgid "Makefile for an application using Lua"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4255
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:4261
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4522
#, 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:4265
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4289
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:4267
#, 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:4269
#, no-wrap
msgid "USES=\t\tlua\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4276
#, no-wrap
msgid "Makefile for a simple Lua module"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4285
#, 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:4291
#, no-wrap
msgid "USES=\t\tlua:module\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4293
#, no-wrap
msgid "DOCSDIR=\t${LUA_DOCSDIR}\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4300
#, no-wrap
msgid "Using Guile"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4303
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:4312
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:4318
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:4323
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:4325
#, no-wrap
msgid "Arguments Defined for Ports That Use Guile"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4332
#, no-wrap
msgid "_X.Y_"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4336
#, 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:4337
#, no-wrap
msgid "flavors"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4341
#, 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:4342
#, no-wrap
msgid "build"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4345
#, 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:4346
#, no-wrap
msgid "run"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4349
#, 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:4350
#, no-wrap
msgid "alias"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4352
#, no-wrap
msgid "Add `BINARY_ALIAS` values for the interpreter and tools."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4353
#, no-wrap
msgid "conflicts"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4355
#, 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:4358
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:4361
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:4363
#, no-wrap
msgid "Configuration flags"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4368
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:4370
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:4372
msgid "`GUILE_EFFECTIVE_VERSION` is added to `CONFIGURE_ENV`;"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4373
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:4374
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:4375
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:4378
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:4382
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:4389
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:4391
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:4395
#, no-wrap
msgid "PKGNAMESUFFIX=\t-${FLAVOR}\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4399
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:4402
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:4405
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:4409
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:4416
#, no-wrap
msgid "Variables Defined for Ports That Use Guile"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4421
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4483
#, no-wrap
msgid "Sample Value"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4424
#, no-wrap
msgid "`GUILE_VER`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4425
#, no-wrap
msgid "3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4427
#, no-wrap
msgid "Guile version in use."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4428
#, no-wrap
msgid "`GUILE_SFX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4429
#, no-wrap
msgid "3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4432
#, 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:4433
#, no-wrap
msgid "`GUILE_FLAVOR`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4434
#, no-wrap
msgid "guile30"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4436
#, no-wrap
msgid "Flavor name corresponding to the selected version."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4437
#, no-wrap
msgid "`GUILE_PORT`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4438
#, no-wrap
msgid "lang/guile3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4440
#, no-wrap
msgid "Port origin of the specified Guile version."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4441
#, no-wrap
msgid "`GUILE_PREFIX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4442
#, no-wrap
msgid "${PREFIX}"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4444
#, no-wrap
msgid "Directory prefix to be used for installation."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4445
#, no-wrap
msgid "`GUILE_CMD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4446
#, no-wrap
msgid "guile-3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4448
#, no-wrap
msgid "Name of the Guile interpreter, with version suffix."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4449
#, no-wrap
msgid "`GUILE_CMDPATH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4450
#, no-wrap
msgid "${LOCALBASE}/bin/guile-3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4452
#, no-wrap
msgid "Full path to the Guile interpreter."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4453
#, no-wrap
msgid "`GUILD_CMD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4454
#, no-wrap
msgid "guild-3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4456
#, no-wrap
msgid "Name of the Guild tool, with version suffix."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4457
#, no-wrap
msgid "`GUILD_CMDPATH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4458
#, no-wrap
msgid "${LOCALBASE}/bin/guild-3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4460
#, no-wrap
msgid "Full path to the Guild tool."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4462
#, no-wrap
msgid ""
"`++GUILE_*_CMD++` +\n"
"`++GUILE_*_CMDPATH++`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4465
#, 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:4466
#, no-wrap
msgid "`GUILE_PKGCONFIG_PATH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4467
#, no-wrap
msgid "${LOCALBASE}/libdata/pkgconfig/guile/3.0"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4469
#, no-wrap
msgid "Where packages using `flavors` should install `.pc` files."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4470
#, no-wrap
msgid "`GUILE_INFO_PATH`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4471
#, no-wrap
msgid "share/info/guile3"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4472
#, 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:4476
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:4478
#, no-wrap
msgid "Path Substitutions Defined for Ports That Use Guile"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4486
#, no-wrap
msgid "GUILE_GLOBAL_SITE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4487
#, no-wrap
msgid "share/guile/site"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4489
#, 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:4490
#, no-wrap
msgid "GUILE_SITE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4491
#, no-wrap
msgid "share/guile/3.0/site"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4493
#, no-wrap
msgid "Site directory for the selected Guile version."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4494
#, no-wrap
msgid "GUILE_SITE_CCACHE"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4495
#, no-wrap
msgid "lib/guile/3.0/site-ccache"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4497
#, no-wrap
msgid "Directory for compiled bytecode files."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4498
#, no-wrap
msgid "GUILE_DOCS"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4499
#, no-wrap
msgid "share/doc/guile30"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4501
#, no-wrap
msgid "Parent directory for version-specific documentation."
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4502
#, no-wrap
msgid "GUILE_EXAMPLES"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4503
#, no-wrap
msgid "share/examples/guile30"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4504
#, no-wrap
msgid "Parent directory for version-specific examples."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4510
#, no-wrap
msgid "Makefile for an application using Guile"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4516
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:4526
#, no-wrap
msgid ""
"MAINTAINER=\[email protected]\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:4529
#, 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:4531
#, no-wrap
msgid "USES=\t\tguile:2.2,3.0 pkgconfig\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4538
#, no-wrap
msgid "Using `iconv`"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4541
msgid "FreeBSD has a native `iconv` in the operating system."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4543
msgid "For software that needs `iconv`, define `USES=iconv`."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4545
msgid "When a port defines `USES=iconv`, these variables will be available:"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4550
#, no-wrap
msgid "Variable name"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4551
#, no-wrap
msgid "Purpose"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4552
#, no-wrap
msgid "Port iconv (when using WCHAR_T or //TRANSLIT extensions)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4555
#, no-wrap
msgid "Base iconv"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4556
#, no-wrap
msgid "`ICONV_CMD`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4557
#, no-wrap
msgid "Directory where the `iconv` binary resides"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4558
#, no-wrap
msgid "`${LOCALBASE}/bin/iconv`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4560
#, no-wrap
msgid "[.filename]#/usr/bin/iconv#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4561
#, no-wrap
msgid "`ICONV_LIB`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4562
#, no-wrap
msgid "`ld` argument to link to [.filename]#libiconv# (if needed)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4563
#, no-wrap
msgid "`-liconv`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4565
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4575
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4579
#, no-wrap
msgid "(empty)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4566
#, no-wrap
msgid "`ICONV_PREFIX`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4567
#, 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:4568
#, no-wrap
msgid "`${LOCALBASE}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4570
#, no-wrap
msgid "[.filename]#/usr#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4571
#, no-wrap
msgid "`ICONV_CONFIGURE_ARG`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4572
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4577
#, no-wrap
msgid "Preconstructed configure argument for configure scripts"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4573
#, no-wrap
msgid "`--with-libiconv-prefix=${LOCALBASE}`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4576
#, no-wrap
msgid "`ICONV_CONFIGURE_BASE`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4578
#, no-wrap
msgid "`--with-libiconv=${LOCALBASE}`"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4582
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:4584
#, no-wrap
msgid "Simple `iconv` Usage"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4591
#, 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:4596
#, no-wrap
msgid "`iconv` Usage with `configure`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4603
#, 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:4609
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:4612
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:4614
#, no-wrap
msgid "Fixing Hardcoded `-liconv`"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4620
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4637
#, no-wrap
msgid "USES=\t\ticonv\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4623
#, 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:4629
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:4631
#, no-wrap
msgid "Checking for Native `iconv` Availability"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4645
#, 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:4647
#, no-wrap
msgid ".include <bsd.port.post.mk>\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4652
#, no-wrap
msgid "Using Xfce"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4655
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:4659
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:4660
#, no-wrap
msgid "Values of `USE_XFCE`"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4661
#, no-wrap
msgid "garcon"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4663
msgid "package:sysutils/garcon[]"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4664
#, no-wrap
msgid "libexo"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4666
msgid "package:x11/libexo[]"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4667
#, no-wrap
msgid "libgui"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4669
msgid "package:x11-toolkits/libxfce4gui[]"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4670
#, no-wrap
msgid "libmenu"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4672
msgid "package:x11/libxfce4menu[]"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4673
#, no-wrap
msgid "libutil"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4675
msgid "package:x11/libxfce4util[]"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4676
#, no-wrap
msgid "panel"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4678
msgid "package:x11-wm/xfce4-panel[]"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4679
#, no-wrap
msgid "thunar"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4681
msgid "package:x11-fm/thunar[]"
msgstr ""

#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4682
#, no-wrap
msgid "xfconf"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4684
msgid "package:x11/xfce4-conf[]"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4686
#, no-wrap
msgid "`USES=xfce` Example"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4693
#, no-wrap
msgid ""
"USES=\t\txfce\n"
"USE_XFCE=\tlibmenu\n"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4698
#, no-wrap
msgid "Using Xfce's Own GTK2 Widgets"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4702
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:4707
#, 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:4716
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:4721
#, no-wrap
msgid ""
"USES=\t\txfce\n"
"USE_XFCE=\tpanel\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4724
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:4729
#, 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:4733
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:4736
#, no-wrap
msgid "Using Budgie"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4739
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:4746
#, no-wrap
msgid "`libbudgie`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4748
#, no-wrap
msgid "Desktop core (library)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4749
#, no-wrap
msgid "`libmagpie`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4751
#, no-wrap
msgid "Budgie's X11 window manager and compositor library"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4752
#, no-wrap
msgid "`raven`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4754
#, 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:4755
#, no-wrap
msgid "`screensaver`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4757
#, no-wrap
msgid "Desktop-specific screensaver"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4762
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:4764
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:4769
#, 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:4773
#, no-wrap
msgid "`USE_BUDGIE` Example"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4780
#, 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:4784
#, no-wrap
msgid "Using Databases"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4787
msgid ""
"Use one of the `USES` macros from crossref:special[using-databases-"
"uses,Database `USES` Macros] to add a dependency on a database."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4789
#, no-wrap
msgid "Database `USES` Macros"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4793
#, no-wrap
msgid "Database"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4795
#, no-wrap
msgid "USES Macro"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4796
#, no-wrap
msgid "Berkeley DB"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4798
#, no-wrap
msgid "crossref:uses[uses-bdb,`bdb`]"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4799
#, no-wrap
msgid "MariaDB, MySQL, Percona"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4801
#, no-wrap
msgid "crossref:uses[uses-mysql,`mysql`]"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4802
#, no-wrap
msgid "PostgreSQL"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4804
#, no-wrap
msgid "crossref:uses[uses-pgsql,`pgsql`]"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4805
#, no-wrap
msgid "SQLite"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4806
#, no-wrap
msgid "crossref:uses[uses-sqlite,`sqlite`]"
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4809
#, no-wrap
msgid "Using Berkeley DB 6"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4815
#, no-wrap
msgid "USES=\tbdb:6\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4818
msgid "See crossref:uses[uses-bdb,`bdb`] for more information."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4821
#, no-wrap
msgid "Using MySQL"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4825
msgid "When a port needs the MySQL client library add"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4829
#, no-wrap
msgid "USES=\tmysql\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4832
msgid "See crossref:uses[uses-mysql,`mysql`] for more information."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4835
#, no-wrap
msgid "Using PostgreSQL"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4839
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:4844
#, 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:4847
msgid "See crossref:uses[uses-pgsql,`pgsql`] for more information."
msgstr ""

#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4850
#, no-wrap
msgid "Using SQLite 3"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4856
#, no-wrap
msgid "USES=\tsqlite:3\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4859
msgid "See crossref:uses[uses-sqlite,`sqlite`] for more information."
msgstr ""

#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4862
#, no-wrap
msgid "Starting and Stopping Services (`rc` Scripts)"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4869
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}config[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:4872
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:4876
#, no-wrap
msgid "USE_RC_SUBR=\tdoormand\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4883
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:4885
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:4887
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:4891
#, no-wrap
msgid "#!/bin/sh\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4903
#, 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:4905
#, no-wrap
msgid ". /etc/rc.subr\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4908
#, no-wrap
msgid ""
"name=doormand\n"
"rcvar=doormand_enable\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4910
#, no-wrap
msgid "load_rc_config $name\n"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4913
#, 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:4916
#, 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:4918
#, 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:4920
#, no-wrap
msgid "run_rc_command \"$1\"\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4923
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:4927
#, no-wrap
msgid "REQUIRE: LOGIN\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4930
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:4934
#, no-wrap
msgid "KEYWORD: shutdown\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4937
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:4940
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:4944
#, no-wrap
msgid "doormand_flags=\"\"\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4948
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:4953
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:4956
#, no-wrap
msgid "Pre-Commit Checklist"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4959
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:4961
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:4964
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:4965
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:4966
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:4967
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:4968
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:4969
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:4973
#, no-wrap
msgid "# service name stop\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4976
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:4977
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:4978
msgid "Do the default variable assignments come after `load_rc_config`?"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4979
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:4980
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:4981
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:4982
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:4983
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:4984
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:4985
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:4986
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:4988
#, no-wrap
msgid "Adding Users and Groups"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4993
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:4995
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:4997
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:5002
#, 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:5005
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:5007
#, no-wrap
msgid "Ports That Rely on Kernel Sources"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5011
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:5015
#, no-wrap
msgid "USES=\tkmod\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5018
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:5020
#, no-wrap
msgid "Go Libraries"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5024
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:5026
msgid "Ports should (in order of preference):"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5028
msgid "Use vendored dependencies included with the package source."
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5029
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:5030
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:5032
#, no-wrap
msgid "Haskell Libraries"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5036
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:5038
#, no-wrap
msgid "Shell Completion Files"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5043
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:5047
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:5049
#, no-wrap
msgid "Full shell completion file names"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5053
#, no-wrap
msgid "`bash`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5054
#, 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:5056
#, no-wrap
msgid "(any unique file names in one of these folders)"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5057
#, no-wrap
msgid "`fish`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5058
#, no-wrap
msgid "[.filename]#${PREFIX}/share/fish/completions/${PORTNAME}.fish#"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5061
#, no-wrap
msgid "`zsh`"
msgstr ""

#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5062
#, no-wrap
msgid "[.filename]#${PREFIX}/share/zsh/site-functions/_${PORTNAME}#"
msgstr ""

#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:5065
msgid "Do not register any dependencies on the shells themselves."
msgstr ""