Wiki Link: https://fedoraproject.org/wiki/Changes/BuildWithDNF5

= Build Fedora with DNF 5 =


== Summary ==
We are proposing to change the Mock configuration in Mock
(mock-core-configs), Koji, and Copr to use DNF 5 as Mock's package
manager instead of DNF 4. DNF 5 would be used by Mock to install build
dependencies into chroots for package builds. This change is related
to the build infrastructure and is distinct from changing the default
package manager in Fedora.


== Owner ==

* Name: [[User:egoode| Evan Goode]]
* Email: ego...@redhat.com

* Name: [[User:praiskup| Pavel Raiskup]]
* Email: prais...@redhat.com



== Detailed Description ==
DNF 5 is a new package manager intended to replace DNF:
https://dnf5.readthedocs.io/en/latest/about.html. It offers
significant performance improvements over DNF while achieving lower
memory usage and disk footprint. The switch to DNF 5 was originally
planned for Fedora 39, but it's been postponed to (likely) Fedora 41:
https://pagure.io/fesco/issue/3039.

In the meantime, we would like to start building Fedora with DNF 5.
The set of package management features that Mock needs for setting up
buildroots is small compared to the full capabilities of DNF, so it's
a good place to start deploying DNF 5. We will be able to test the
stability of DNF 5 at a large scale and gather data about its
performance.

The Mock developers have been working alongside the DNF 5 developers
for a while to ensure Mock can use DNF 5, per this tracking issue:
https://github.com/rpm-software-management/mock/issues/894. The two
remaining items on that issue are "optional" items that are not
blocking this proposed change.

== Feedback ==


== Benefit to Fedora ==
With the switch to DNF 5 as the default package manager on the
horizon, the build infrastructure offers an opportunity to subject a
crucial subset of DNF 5's features to heavy testing. This change will
let us verify that every build dependency in the distribution is
installable by DNF 5.

In addition, we expect a substantial performance improvement for
package builds that spend a significant portion of their time
installing build dependencies. Larger, compilation-heavy packages
likely won't see much improvement; the difference will be most
apparent when building many smaller packages. Switching the build
system over to DNF 5 will let us measure the performance improvement
over DNF across a wide variety of install transactions.

== Scope ==
* Proposal owners:
The work to support DNF 5 in Mock is done already. This change should
be as simple as setting the Mock option
`config_opts['package_manager'] = 'dnf5'` in Mock, Koji, and Copr for
F40+ builds (Koji config option exists from the `yum -> dnf4` era).
The `dnf5` doesn't necessarily have to be installed on building hosts
- in such a case, Mock will automatically use `/bin/dnf-3` (DNF4) from
the host to install DNF5 into the bootstrap chroot, to further use
*that* DNF5 for build chroot installation.

* Other developers:

* Release engineering: https://pagure.io/releng/issue/11737

* Policies and guidelines: N/A (not needed for this Change)

* Trademark approval: N/A (not needed for this Change)

* Alignment with Community Initiatives:


== Upgrade/compatibility impact ==



== How To Test ==

There are no special steps needed to test the change after it happens
(updated `mock-core-configs` package is installed on your host), just
enjoy the installation speedup.

There's a way to test this on Fedora 37+ or EPEL8+ host (builder) in
advance.  Considering you want to build SRCRPM like `mock -r
fedora-40-x86_64 your.src.rpm`, you can do this instead:

1. `mock -r fedora-40-x86_64 --scrub=all` (mandatory step to cleanup
DNF4 from all caches)

2.  `mock -r fedora-40-x86_64 --config-opts=package_manager=dnf5
your.src.rpm` (DNF5 is installed and cached in bootstrap)

3. `mock -r fedora-40-x86_64 --scrub=all` (to invalidate caches again)



== User Experience ==
This change will mostly be invisible to users. The builds, namely the
buildroot preparation, will be much faster.


== Dependencies ==


== Contingency Plan ==
* Contingency mechanism:
Revert the F40 Mock configuration in Koji and Copr back to using `dnf`
(5-minute work).

* Contingency deadline:
F40 Beta freeze

* Blocks release? Yes


== Documentation ==



== Release Notes ==




-- 
Aoife Moloney

Fedora Operations Architect

Fedora Project

Matrix: @amoloney:fedora.im

IRC: amoloney
_______________________________________________
devel-announce mailing list -- devel-annou...@lists.fedoraproject.org
To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel-annou...@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to