Fedora 31 System-Wide Change proposal: RPM 4.15

<a href="" title=""></a>

== Summary ==
Update RPM to the 4.15.0 release.

== Owner ==
* Name: User:pmatilai, User:ffesti
* Email: ... at redhat dot com, ... at redhat dot com

== Detailed Description ==

RPM 4.15 contains numerous improvements over previous versions
* Faster builds due to increased parallelism
* Dynamic build dependency generator (planned)
* Caret version operator (the opposite of tilde)
* String data is returned as surrogate-escaped utf-8 in Python 3 bindings
* %patchlist and %sourcelist spec sections for minimal boilerplate
patch and source declarations
* Experimental chroot operations for non-root users
* Many error and warning report improvements
* A new plugin for issuing audit log events on package install/update/erase
* Native support for Lua 5.2-5.3 without compat defines in Lua
* Numerous other improvements and bugfixes: <a href="" title=""></a>

Rawhide rpm will be updated to 4.15 alpha once released and updated through
beta and rc cycles, 5.15.0 final release is expected prior to F31 final freeze.

== Benefit to Fedora ==

See above.

== Scope ==
* Proposal owners:
** Rebase RPM
** help Python binding users adjust to the string change
** help coordinate for macro + helper script removals

* Other developers:
** Test new release, report issues and bugs.
** Fix Python 3 string/bytes usages in API users
(<a href="" title=""></a> already in
progress in rawhide)

* Release engineering: [ #8380]

* Policies and guidelines:
As always, utilizing new rpm features is subject to packaging guidelines,
but the time for this is after the new version has properly landed.
There is no need to change guidelines, any new features are optional.

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

== Upgrade/compatibility impact ==
* Python 3 bindings see a dramatic change as all string data is now
returned as utf-8 encoded string instead of bytes, but this is already
being test-driven in rawhide and at least anaconda, dnf and mock are
already compatible:
<a href="" title=""></a>
* Similar to compiler updates, some previously working specs might
fail to build due to stricter error checking and the like.
* Some long-standing perl and python macros and helpers have been
removed from rpm and might need either changes to packages or

== How To Test ==

Rpm receives a thorough and constant testing via every single package
build, system installs and updates. New features can be tested
specifically as per their documentation.

== User Experience ==
There are no significant user experience changes, but some more minor
ones include:
* faster package builds on SMP systems
* improved diagnostics from macro errors/warnings and spec constrcuts

== Dependencies ==
* There is a soname bump involved so all API-dependent packages will
need a rebuild.
* The Python 3 string change has impact on several packages but this
is already in process

== Contingency Plan ==

* Contingency mechanism: Roll back to rpm 4.14, but under no
circumstances should such a thing be necessary.
* Contingency deadline: Beta freeze.
* Blocks release? No

== Documentation ==
Draft release notes available at <a href="" title=""></a>