Go to file
Evan Goode 2eb33d2066 ci: Remove "ci" GitHub Actions workflow
We would like to switch to exclusively using Packit for building and
testing pull requests, so we are retiring this GitHub Action workflow.

In order to fully disable the action, this commit must be applied on
each branch in the upstream DNF5 repository. Otherwise, the action might
be triggered by a pull request to some stale branch.
2025-06-12 19:15:24 +00:00
.github/workflows ci: Remove "ci" GitHub Actions workflow 2025-06-12 19:15:24 +00:00
.tito Initialized to use tito. 2022-08-09 13:33:13 +02:00
bindings Revert "Fix rawhide build by removing Perl's `-D_FORTIFY_SOURCE=2`" 2023-04-18 18:05:23 +02:00
cmake translations: Configure cmake to generate translations 2022-10-13 14:44:08 +02:00
common :Basic pre-commit configuration 2023-03-14 16:26:42 +01:00
dnf5 [dnf5] Support for "--userinstalled" argument in repoquery 2023-04-18 12:45:57 +02:00
dnf5-plugins conf: Rename option getters 2023-03-13 08:49:28 +01:00
dnf5daemon-client dnfdaemon-client: Unify pkg_specs argument across commands 2023-03-24 16:04:47 +01:00
dnf5daemon-server dnfdaemon: Transaction commands work with file paths 2023-03-24 16:04:47 +01:00
doc dnf5] Add "--userinstalled" to "repoquery" man page 2023-04-18 12:45:57 +02:00
include repo_sack: Fix missing xml files for installed groups 2023-04-18 15:23:02 +02:00
libdnf solv_repo: Do not keep comps solvables ranges 2023-04-18 15:23:02 +02:00
libdnf-cli progressbar: Prevent length_error exception (RhBug:2184271) 2023-04-17 10:07:21 +02:00
libdnf-plugins :Basic pre-commit configuration 2023-03-14 16:26:42 +01:00
test modules: Rename ModuleState enum to ModuleStatus 2023-04-04 14:57:57 +02:00
.clang-format Fix .clang-format: Replace Cpp11 with c++20 2023-04-17 07:02:26 +02:00
.clang-tidy Disable irrelevant clang-tidy checks 2022-11-23 14:00:36 +01:00
.gitignore test/libdnf/rpm: Add source rpms to the testing repo 2022-08-09 13:33:10 +02:00
.packit.yaml update .packit.yaml 2023-04-18 17:29:33 +02:00
.pre-commit-config.yaml Add rpmlint to precommit 2023-03-16 15:32:23 +01:00
.readthedocs.yaml Update readthedocs config file 2023-02-06 09:13:09 +01:00
AUTHORS.md Import a new project template 2022-08-09 13:33:09 +02:00
CMakeLists.txt Define macros with versions from project version 2022-10-26 12:18:30 +02:00
COPYING.md Import a new project template 2022-08-09 13:33:09 +02:00
DCO Import a new project template 2022-08-09 13:33:09 +02:00
README.md Update README.md with up to date information 2022-11-30 16:43:26 +01:00
VERSION.cmake Release 5.0.9 2023-04-18 16:33:31 +02:00
clang-format New clang-format script to replace clang-format-changed 2022-08-09 13:33:17 +02:00
clang-tidy-changed Import a new project template 2022-08-09 13:33:09 +02:00
dnf5.spec Disable unit tests for epel9 build 2023-04-18 18:05:31 +02:00
gpl-2.0.txt Import a new project template 2022-08-09 13:33:09 +02:00
lgpl-2.1.txt :Basic pre-commit configuration 2023-03-14 16:26:42 +01:00

README.md

DNF5

DNF5 is a command-line package manager that automates the process of installing, upgrading, configuring, and removing computer programs in a consistent manner. It supports RPM packages, modulemd modules, and comps groups & environments.

As part of the DNF5 stack, libdnf is the package management library. It was originally written to support the DNF package manager and grew up into a versatile library. Now you can use it for building custom tools that load repositories, query packages, resolve dependencies and install packages.

It is powered with libsolv, wrapping it with an easy to use programming interface.

  • DNF5 supports working with the following artifacts:

    • RPM repositories (repomd)
    • RPM packages
    • Comps groups
    • Comps environments
    • Advisories (updateinfo, errata)
    • Modules (modulemd)

DNF5 is written in C++ and it can interface with several programming languages:

  • C++ - fully supported
  • Python 3 - fully supported
  • Perl 5 - best effort
  • Ruby - best effort
  • Go - doesn't work, looking for contributors
  • C - not implemented, doesn't seem to be a priority for any of our existing API users

⚠️ The current (main) branch is subject of a major rewrite. The API/ABI is currently unstable ⚠️

Documentation

  • For HTML documentation see https://dnf5.readthedocs.io/
  • The header files are documented because documentation is mainly generated from them

Reporting issues

Contributing

  • By contributing to this project you agree to the Developer Certificate of Origin (DCO). This document is a simple statement that you, as a contributor, have the legal right to submit the contribution. See the DCO file for details.
  • All contributions to this project are licensed under LGPLv2.1+ or GPLv2+. See the License section for details.

Writing patches

  • Please follow the contributing guidelines
  • When a patch is ready, submit a pull request
  • It is a good practice to write documentation and unit tests as part of the patches

Building

To install build requirements, run::

$ dnf builddep dnf5.spec [--define '_without_<option> 1 ...]

To build code, run::

$ mkdir build
$ cd build
$ cmake .. [-DWITH_<OPTION>=<ON|OFF> ...]
$ make -j4

To build rpms from git, run::

$ export PREFIX=$(rpmspec dnf5.spec -q --srpm --qf '%{name}-%{version}'); git archive --format=tar.gz --prefix=$PREFIX/ HEAD > $PREFIX.tar.gz
$ rpmbuild -ba --define "_sourcedir $(pwd)" dnf5.spec [--with=<option>|--without=<option> ...]

Testing

To run the tests, follow the steps to build the code and then run::

# from the 'build' directory
$ CTEST_OUTPUT_ON_FAILURE=1 make test

As an alternative, tests can be executed in a verbose mode::

# from the 'build' directory
$ make test ARGS='-V'

Translating

TBD

License

  • The libraries is licensed under LGPLv2.1+
  • The standalone programs that are part of this project are licensed under GPLv2+
  • See COPYING for more details