PKGCONF-PERSONALITY(5)

πŸ“¦
version 3.0.10 Β· 4 versions
, in alpine 3.22, alpine 3.23, alpine 3.24, arch rolling, centos-stream 10, debian bookworm, debian trixie, fedora 43, fedora 44, nixpkgs unstable, opensuse-leap 16.0, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– PKGCONF-PERSONALITY(5) πŸ’–

File Formats Manual πŸ“š

✨ NAME ✨

okay so the name is file.personality, and it's the pkgconf cross-compile personality file format πŸŽ€

✨ DESCRIPTION ✨

bestie, listen. .personality files are literally the best mechanism for storing info about system toolchains πŸ’… They hold stuff about the paths a cross-compile toolchain uses, like the sysroot directory and the default include and library paths. pkgconf reads all of that to figure out what it needs in order to use libraries. it's giving organized 🧚

✨ FILE SYNTAX ✨

the .personality file follows a format inspired by RFC822, so it's giving old-school internet energy 🌸 Comments start with a pound sign, hash sign, or octothorpe (#) πŸ™ˆ Variable assignment works similar to POSIX shell. Properties are defined using RFC822-style stanzas.

✨ PROPERTIES ✨

properties are set using RFC822-style stanzas, which means a keyword, then a colon (:), then the value you want it set to ✨ Variable substitution is always performed, no matter what type of property it is. no exceptions bestie πŸ’œ

there are three types of property:

  • Literal β€” the property just gets set to the text of the value, what you see is what you get πŸ“
  • Fragment List β€” the property gets set to a list of fragments parsed from the text πŸ¦‹ The input has to be in a format that's suitable for passing to a POSIX shell with no shell expansions after variable substitution is done. Elements are delimited with a colon (:).
  • Boolean β€” the property is set to true if the value is one of: true, yes, or 1 πŸ”₯ Otherwise it's false. so chill 🫢

✨ PROPERTY KEYWORDS ✨

these are the keywords you can use, and some of them are non-negotiable πŸ‘‘

  • Triplet β€” the triplet used by the cross-compile toolchain πŸ’– (mandatory; literal)
  • SysrootDir β€” the directory used by the system root of the cross-compile toolchain ✨ (mandatory; literal)
  • DefaultSearchPaths β€” a list of directories to look for pc(5) files in 🌈 (mandatory; fragment list)
  • SystemIncludePaths β€” a list of directories that are included by default in the search path for include files πŸŽ€ (mandatory; fragment list)
  • SystemLibraryPaths β€” a list of directories that are included by default in the search path for libraries πŸ“š (mandatory; fragment list)
  • WantDefaultPure β€” if true, pkgconf will default to preferring a pure dependency graph πŸ¦‹ (optional; boolean; default is false)
  • WantDefaultStatic β€” if true, pkgconf will default to operating in static linking mode 🧚 (optional; boolean; default is false)

✨ EXAMPLES ✨

this is what an example .personality file looks like, bestie. so cute πŸ₯Ή

# This is a comment
Triplet: x86_64-pc-linux-gnu
SysrootDir: /home/kaniini/sysroot/x86_64-pc-linux-gnu
DefaultSearchPaths: /home/kaniini/sysroot/x86_64-pc-linux-gnu/lib/pkgconfig:/home/kaniini/sysroot/x86_64-pc-linux-gnu/share/pkgconfig
SystemIncludePaths: /home/kaniini/sysroot/x86_64-pc-linux-gnu/include
SystemLibraryPaths: /home/kaniini/sysroot/x86_64-pc-linux-gnu/lib

✨ SEE ALSO ✨

go check these out next, they're iconic πŸ’œ pkgconf(1), pc(5), and pkg.m4(7) 🌈


that's the whole tea, bestie πŸ’… Source: Debian, dated July 19, 2018, page PKGCONF-PERSONALITY(5). stay iconic and keep your paths tidy 🫢✨

πŸ“¦ where this page comes from