PKGDATA(1)

πŸ’– PKGDATA(1) πŸ’–

okay bestie, welcome to pkgdata β€” that's the ICU 78.3 manual's very own packaging girlie, and she's here to make your data files cute, fast, and portable. sit down, grab a strawberry drink πŸ“, and let's get into it.


✨ NAME ✨

pkgdata β€” package data for use by ICU. yes that's the whole name. short, iconic, does exactly what it says. πŸ’…


🌸 SYNOPSIS 🌸

pkgdata [ -h, -?, --help ] [ -v, --verbose ] [ -c, --copyright | -C,
--comment comment ] [ -m, --mode mode ] -p, --name name -O, --bldopt
options [ -e, --entrypoint name ] [ -r, --revision version ] [ -F,
--rebuild ] [ -I, --install ] [ -s, --sourcedir source ] [ -d, --destdir
destination ] [ -T, --tempdir directory ] [ file ...  ]

πŸŽ€ DESCRIPTION πŸŽ€

so pkgdata takes a whole lil pile of data files and packages them up for ICU, or for apps that use ICU. the vibe? make distribution easier, and make ICU load them faster while chewing through fewer of those precious limited system resources β€” file descriptors, we're looking at you, bestie, you are so limited. 😭 packaged data also means apps can ship with fewer resource files, or literally none at all if they link against the packaged data directly. ate.

pkgdata supports a few different packaging methods, each serving a different purpose. not all methods are for the same girlie, and that's fine.

πŸ“¦ the default: common (archive) mode

the default packaging mode is common, aka archive. in this mode the different data files get bundled together as an architecture-dependent file that ICU can later memory map. data packaged this way gets looked up under the ICU data directory. it's easy to use for applications' resource bundles, for example, as long as the application can install that packaged file into the ICU data directory. lowkey the classic.

πŸ’« dll (library) mode

another packaging mode is dll, aka library β€” where the data files get compiled into a shared library. ICU used to be able to dynamically load these shared libraries, but as of ICU 2.0 that support has been removed. 😭 it's still useful for two main purposes though:

  • to build ICU itself, since the ICU data is packaged as a shared library by default
  • to build resource bundles that are linked to the application that uses them

and those resource bundles can then live anywhere the system's dynamic linker looks for shared libraries β€” they're not forced to live inside the ICU data directory. freedom, slay. πŸ¦‹

🌈 static mode

the static packaging mode is basically the shared-library one but it produces a static library. same energy, different artifact.

🧚 files mode

and finally, pkgdata supports a files mode which just... copies the data files? no packaging into a single file or library, just copies. this mode is mainly there to support building ICU before it gets packaged into separate small packages for distribution with operating systems like Debian GNU/Linux, for example. if you want the full lore, please refer to the packaging documentation in the ICU source distribution for more info on using this mode. iykyk. πŸ“š

πŸ‘‘

pkgdata builds, packages, installs, or cleans the appropriate data based on the options you give it β€” with no need to call GNU make anymore. periodt. πŸ’…


✨ OPTIONS ✨

  • -h, -?, --help β€” print help about usage and exit. the "hi what do i do" button 🫢
  • -v, --verbose β€” display extra informative messages during execution. she gets chatty, we love that for her πŸ’¬
  • -c, --copyright β€” include a copyright notice in the binary data.
  • -C, --comment comment β€” includes the specified comment in the resulting data instead of the ICU copyright notice.
  • -m, --mode mode β€” set the packaging mode to be used by pkgdata. the different modes and what they mean are explained up in the DESCRIPTION section, bestie, go read it. the valid mode names are common (or archive), dll (or library), and files.
  • -O, --bldopt options β€” specify options for the builder. the builder is used internally by pkgdata to generate the correct packaged file. such options include, but are not limited to, setting variables used by make(1) during the build of the packaged file. ⚠️ note: if icu-config is available, then this option is not needed.
  • -p, --name name β€” set the packaged file name to name. this name is also used as the default entry point name, after having been turned into a valid C identifier. (she's a multitasker πŸ’…)
  • -e, --entrypoint name β€” set the data entry point (used for linking against the data in a shared library form) to name. the default entry point name is the name set by the -n, --name option.
  • -r, --revision version β€” enable versioning of the shared library produced in dll, or library, mode. the version number has the format major.minor.patchlevel, and all parts except for major are optional. if only major is supplied, then the version is assumed to be major.0 for versioning purposes.
  • -F, --rebuild β€” force the rebuilding of all data and their repackaging. no shortcuts, no stale files, we're doing the whole thing again πŸ”₯
  • -I, --install β€” install the packaged file (or all the files in the files mode). if the variable DESTDIR is set, it will be used for installation.
  • -s, --sourcedir source β€” set the source directory to source. the default source directory is the current directory.
  • -d, --destdir destination β€” set the destination directory to destination. the default destination directory is the current directory.
  • -T, --tempdir directory β€” set the directory used to generate temporary files to directory. the default temporary directory is the same as the destination directory as set by the -d, --destdir option. πŸ”

πŸ‘‘ AUTHORS πŸ‘‘

  • Steven Loomis
  • Yves Arrouye

the founding mothers of this whole operation, we thank them for their service 🫢


⭐ VERSION ⭐

78.3


Copyright (C) 2000-2009 IBM, Inc. and others.


okay that's the whole page bestie, you're officially pkgdata-pilled πŸ’…βœ¨ this masterpiece came to you straight from the ICU MANPAGE, dated 6 February 2009 β€” and yeah, she's still serving. go package something iconic. bye!! πŸŽ€πŸ¦‹πŸ’–

πŸ“¦ where this page comes from