From aa4cd5a8af11f47b533b0af83a3bfd320724525e Mon Sep 17 00:00:00 2001 From: maxice8 Date: Mon, 20 Aug 2018 17:30:42 -0300 Subject: [PATCH] Manual.md: document xbps triggers. [ci skip] --- Manual.md | 379 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 379 insertions(+) diff --git a/Manual.md b/Manual.md index f46fb410920..a04a0b821a6 100644 --- a/Manual.md +++ b/Manual.md @@ -40,6 +40,30 @@ packages for XBPS, the `Void Linux` native packaging system. * [Haskell packages](#pkgs_haskell) * [Font packages](#pkgs_font) * [Removing a package](#pkg_remove) + * [XBPS Triggers](#xbps_triggers) + * [appstream-cache](#triggers_appstream_cache) + * [binfmts](#triggers_binfmts) + * [dkms](#triggers_dkms) + * [gconf-schemas](#triggers_gconf_schemas) + * [gdk-pixbuf-loaders](#triggers_gdk_pixbuf_loaders) + * [gio-modules](#triggers_gio_modules) + * [gettings-schemas](#triggers_gsettings_schemas) + * [gtk-icon-cache](#triggers_gtk_icon_cache) + * [gtk-immodules](#triggers_gtk_immodules) + * [gtk-pixbuf-loaders](#triggers_gtk_pixbuf_loaders) + * [gtk3-immodules](#triggers_gtk3_immodules) + * [hwdb.d-dir](#triggers_hwdb.d_dir) + * [info-files](#triggers_info_files) + * [kernel-hooks](#triggers_kernel_hooks) + * [mimedb](#triggers_mimedb) + * [mkdirs](#triggers_mkdirs) + * [pango-modules](#triggers_pango_module) + * [pycompile](#triggers_pycompile) + * [register-shell](#triggers_register_shell) + * [system-accounts](#triggers_system_accounts) + * [update-desktopdb](#triggers_update_desktopdb) + * [x11-fonts](#triggers_x11_fonts) + * [xml-catalog](#triggers_xml_catalog) * [Notes](#notes) * [Contributing via git](#contributing) * [Help](#help) @@ -1333,6 +1357,361 @@ For the one doing the merge of the removal: - Remove the package from the repository index or contact a team member that can do so. + +### XBPS Triggers + +XBPS triggers are a collection of snippets of code, provided by the `xbps-triggers` +package, that are added to the INSTALL/REMOVE scripts of packages either manually +by setting the `triggers` variable in the template, or automatically, when specific +conditions are met. + +The following is a list of all available triggers, their current status, what each +of them does and what conditions need to be for it to be included automatically on a +package. + +This is not a complete overview of the package. It is recommended to read the variables +referenced and the triggers themselves. + + +#### appstream-cache + +The appstream-cache trigger is responsible for rebuilding the appstream metadata cache. + +During installation it executes `appstreamcli refresh-cache --verbose --force --datapath +$APPSTREAM_PATHS --cachepath var/cache/app-info/gv`. By default APPSTREAM_PATHS are all the +paths that appstreamcli will look into for metadata files. + +The directories searched by appstreamcli are: + +- `usr/share/appdata` +- `usr/share/app-info` +- `var/lib/app-info` +- `var/cache/app-info` + +During removal of the `AppStream` package it will remove the `var/cache/app-info/gv` +directory. + +It is automatically added to packages that have XML files under one of the directories +searched by appstreamcli. + + +#### binfmts + +The binfmts trigger is responsible for registration and removal of arbitrary +executable binary formats, know as binfmts. + +During installation/removal it uses `update-binfmts` from the `binfmt-support` package +to register/remove entries from the arbitrary executable binary formats database. + +To include the trigger use the `binfmts` variable, as the trigger won't do anything unless +it is defined. + + +#### dkms + +The dkms trigger is responsible for compiling and removing dynamic kernel modules of a +package. + +During installation the trigger compiles and installs the dynamic module for all `linux` +packages that have their corresponding linux-headers package installed. During removal +the corresponding module will be removed + +To include the trigger use the `dkms_modules` variable, as the trigger won't do anything +unless it is defined. + + +#### gconf-schemas + +The gconf-schemas trigger is responsible for registering and removing .schemas and +.entries files into the schemas database directory + +During installation it uses `gconftool-2` to install .schemas and .entries files into +`usr/share/gconf/schemas`. During removal it uses `gconftool-2` to remove the entries +and schemas belonging to the package that is being removed from the database. + +To include it add `gconf-schemas` to `triggers` and add the appropriate .schemas in +the `gconf_schemas` variable and .entries in `gconf_entries`. + +It is automatically added to packages that have `/usr/share/gconf/schemas` present +as a directory. All files with the schemas file extension under that directory +are passed to the trigger. + + +#### gdk-pixbuf-loaders + +The gdk-pixbuf-loaders trigger is responsible for maintaining the GDK Pixbuf loaders cache. + +During installation it runs `gdk-pixbuf-query-loaders --update-cache` and also deletes +the obsolete `etc/gtk-2.0/gdk-pixbuf.loaders` file if present. During removal of the +gdk-pixbuf package it removes the cache file if present. Normally at +`usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache`. + +It can be added by defining `gdk-pixbuf-loaders` in the `triggers` variable. It is also +added automatically to any package that has the path `usr/lib/gdk-pixbuf-2.0/2.10.0/loaders` +available as a directory. + + +#### gio-modules + +The gio-modules trigger is responsible for updating the Glib GIO module cache with +`gio-querymodules` from the `glib` package + +During install and removal it just runs `gio-querymodules` to update the cache file +present under `usr/lib/gio/modules`. + +It is automatically added to packages that have `/usr/lib/gio/modules` present +as a directory. + + +#### gsettings-schemas + +The gsettings-schemas trigger is responsible for compiling Glib's GSettings XML +schema files during installation and removing the compiled files during removal. + +During installation it uses `glib-compile-schemas` from `glib` to compile the +schemas into files with the suffix .compiled into `/usr/share/glib-2.0/schemas`. + +During removal of the glib package it deletes all files inside +`/usr/share/glib-2.0/schemas` that end with .compiled. + +It is automatically added to packages that have `/usr/share/glib-2.0/schemas` present +as a directory. + + +#### gtk-icon-cache + +The gtk-icon-cache trigger is responsible for updating the gtk+ icon cache. + +During installation it uses `gtk-update-icon-cache` to update the icon cache. + +During removal of the gtk+ package it deletes the `icon-theme.cache` file +in the directories defined by the variable `gtk_iconcache_dirs`. + +It is automatically added on packages that have `/usr/share/icons` available +as a directory, all directories under that directory have their absolute path +passed to the trigger. + + +#### gtk-immodules + +The gtk-immodules trigger is responsible for updating the IM (Input Method) modules +file for gtk+. + +During installation it uses `gtk-query-immodules-2.0 --update-cache` to update the +cache file. It also removes the obsolete configuration file `etc/gtk-2.0/gtk.immodules` +if present. + +During removal of the `gtk+` package it removes the cache file which is located at +`usr/lib/gtk-2.0/2.10.0/immodules.cache`. + +It is automatically added to packages that have `/usr/lib/gtk-2.0/2.10.0/immodules` +present as a directory. + + +#### gtk-pixbuf-loaders + +gtk-pixbuf-loaders is the old name for the current `gdk-pixbuf-loaders` trigger and is +in the process of being removed. It currently re-execs into `gdk-pixbuf-loaders` as a +compatibility measure. + +For information about how it works refer to [gdk-pixbuf-loaders](#triggers_gdk_pixbuf_loaders). + + +#### gtk3-immodules + +The gtk3-immodules trigger is responsible for updating the IM (Input Method) modules +file for gtk+3. + +During installation it executes `gtk-query-immodules-3.0 --update-cache` to update the +cache file. It also removes the obsolete configuration file `etc/gtk-3.0/gtk.immodules` +if present. + +During removal of the `gtk+3` package it removes the cache file which is located at +`usr/lib/gtk-3.0/3.0.0/immodules.cache`. + +It is automatically added to packages that have `/usr/lib/gtk-3.0/3.0.0/immodules` +present as a directory. + + +#### hwdb.d-dir + +The hwdb.d-dir trigger is responsible for updating the hardware database. + +During installation and removal it runs `usr/bin/udevadm hwdb --root=. --update`. + +It is automatically added to packages that have `/usr/lib/udev/hwdb.d` present +as a directory. + + +#### info-files + +The info-files trigger is responsible for registering and unregistering the GNU info +files of a package. + +It checks the existence of the info files presented to it and if it is running under +another architecture. + +During installation it uses `install-info` to register info files into +`usr/share/info`. + +During removal it uses `install-info --delete` to remove the info files from the +registry located at `usr/share/info`. + +If it is running under another architecture it tries to use the host's `install-info` +utility. + + +#### kernel-hooks + +The kernel-hooks trigger is responsible for running scripts during installation/removal +of kernel packages. + +The available targets are pre-install, pre-remove, post-install and post-remove. + +When run it will try to run all executables found under `etc/kernel.d/$TARGET`. The +`TARGET` variable is one of the 4 targets available for the trigger. It will also +create the directory if it isn't present. + +During updates it won't try to run any executables when running with the pre-remove +target. + +It is automatically added if the helper variable `kernel_hooks_version` is defined. +However it is not obligatory to have it defined. + + +#### mimedb + +The mimedb trigger is responsible for updating the shared-mime-info database. + +In all runs it will just execute `update-mime-database -n usr/share/mime`. + +It is automatically added to packages that have `/usr/share/mime` available as +a directory. + + +#### mkdirs + +The mkdirs trigger is responsible for creating and removing directories dictated +by the `make_dirs` variable. + +During installation it takes the `make_dirs` variable and splits it into groups of +4 variables. + +- dir = full path to the directory +- mode = Unix permissions for the directory +- uid = name of the owning user +- gid = name of the owning group + +It will continue to split the values of `make_dirs` into groups of 4 until the values +end. + +During installation it will create a directory with `dir` then set mode with `mode` +and permission with `uid:gid`. + +During removal it will delete the directory using `rmdir`. + +To include this trigger use the `make_dirs` variable, as the trigger won't do anything +unless it is defined. + + +#### pango-modules + +The pango-modules trigger is currently being removed since upstream has removed the +code responsible for it. + +It used to update the pango modules file with `pango-modulesquery` during installation +of any package. + +Currently it removes `etc/pango/pango.modules` file during removal of the pango package. + +It can be added by defining `pango-modules` in the `triggers` variable and has no way to get +added automatically to a package. + + +#### pycompile + +The pycompile trigger is responsible for compiling python code into native +bytecode and removing generated bytecode. + +During installation it will compile all python code under the paths it is given by +`pycompile_dirs` and all modules described in `pycompile_module` into native bytecode and +update the ldconfig(8) cache. + +During removal it will remove all the native bytecode and update the ldconfig(8) cache. + +To include this trigger use the variables `pycompile_dirs` and `pycompile_module`. The +trigger won't do anything unless at least one of those variables is defined. + +A `python_version` variable can be set to direct behaviour of the trigger. + + +#### register-shell + +The register-shell trigger is responsible for registering and removing shell entries +into `etc/shells`. + +During installation it will append the `etc/shells` file with the new shell and also +change the permissions to `644` on the file. + +During removal it will use `sed` to delete the shell from the file. + +To include this trigger use the `register_shell` variable, as the trigger won't do +anything unless it is defined. + + +#### system-accounts + +The system-accounts trigger is responsible for creating and disabling system accounts +and groups. + +During removal it will disable the account by setting the Shell to /bin/false and appending +' - for uninstalled package $pkgname' to the Description. +Example: `transmission unprivileged user - for uninstalled package transmission` + +This trigger can only be used by using the `system_accounts` variable. + + +#### update-desktopdb + +The update-desktopdb trigger is responsible for updating the system's MIME database. + +During installation it will execute `update-desktop-database usr/share/applications` +which will result in a cache file being created at `usr/share/applications/mimeinfo.cache`. + +During removal of the `desktop-file-utils` package it will remove the cache file that +was created during installation. + +It is automatically added to packages that have `/usr/share/applications` available as +a directory. + + +#### x11-fonts + +The x11-fonts trigger is responsible for rebuilding the fonts.dir and fonts.scale files +for packages that install X11 fonts, and update fontconfig's cache for these fonts. + +During installation and removal it executes `mkfontdir`, `mkfontscale` and `fc-cache` for +all font directories it was given via the `font_dirs` variable. + +To include this trigger use the `font_dirs` variable, as the trigger won't do anything +unless it is defined. + + +#### xml-catalog + +The xml-catalog trigger is responsible for registering and removing SGML/XML catalog entries. + +During installation it uses `xmlcatmgr` to register all catalogs, passed to it by the +`sgml_entries` and `xml_entries` variables, in `usr/share/sgml/catalog` and +`usr/share/xml/catalog` respectively. + +During removal it uses `xmlcatmgr` to remove all catalogs passed to it by the +`sgml_entries` and `xml_entries` variables, in `usr/share/sgml/catalog` and +`usr/share/xml/catalog` respectively. + +To include this trigger use the `sgml_entries` variable or/and the `xml_entries` variable, +as the trigger won't do anything unless either of them are defined. + ### Notes