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``).
|