File: index.rst

package info (click to toggle)
dnf5 5.4.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,960 kB
  • sloc: cpp: 94,312; python: 3,370; xml: 1,073; ruby: 600; sql: 250; ansic: 232; sh: 104; perl: 62; makefile: 30
file content (40 lines) | stat: -rw-r--r-- 1,476 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Tutorial: Writing Plugins
=========================

Plugins are the means to extend the existing functionality of DNF5. They are
written in the native language of DNF5, which is C++. Two types of plugins are
supported:

* :ref:`dnf5 plugins`:
    * **Active:** Used to implement one or more commands.
* :ref:`libdnf5 plugins`:
    * **Passive:** Used to implement additional logic into the library using hooks.

.. note::
    Existing plugins from the preceding DNF project are not compatible
    with the new DNF5. A different API is now used, and they were
    written in Python, which is not a mandatory component in DNF5.

For detailed information on both types of plugins, refer to their respective pages:

.. toctree::
    :maxdepth: 2

    dnf5-plugins
    libdnf5-plugins

Debugging Tips
--------------

To test your freshly built DNF5 Plugin, redirect DNF5 to load it by setting
the ``DNF5_PLUGINS_DIR`` environmental variable to your build directory (e.g.,
``DNF5_PLUGINS_DIR=~/dnf5/build/dnf5-plugins/template_plugin``).

Speaking about LIBDNF5 Plugins, utilize the ``LIBDNF_PLUGINS_CONFIG_DIR``
environmental variable to configure the directory with the plugin's configuration.
This can also be overridden by the ``pluginconfpath`` configuration option.
Additionally, set the directory for the plugin binaries with the ``pluginpath``
configuration option.

Ensure effective debugging by building the project with debugging symbols
(``-DCMAKE_BUILD_TYPE=Debug``).