From Fedora Project Wiki
(Ready for FESCo)
 
(4 intermediate revisions by 2 users not shown)
Line 25: Line 25:
== Summary ==
== Summary ==
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. -->
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. -->
Update RPM to the upcoming 4.14 release.
Update RPM to the 4.14.0 release.


== Owner ==
== Owner ==
Line 35: Line 35:
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
* Email: ignatenkobrain@fedoraproject.org, ffesti@redhat.com, pmatilai@redhat.com
* Email: ignatenkobrain@fedoraproject.org, ffesti@redhat.com, pmatilai@redhat.com
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->[mailto:sclark@fedoraproject.org Simon Clark] ([[User:sclark|sclark]])
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
Line 55: Line 55:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1474836 #1474836]
* Completed


== Detailed Description ==
== Detailed Description ==
Line 63: Line 64:
** Macro scope simplification + enforcing
** Macro scope simplification + enforcing
** Macro arguments expanded
** Macro arguments expanded
** Macro argument quoting support
** Nested lua macro scoping fixes
** Nested lua macro scoping fixes
** Improved error reporting
** Improved error reporting
Line 70: Line 72:
** Unified code path for all header/package signature checking
** Unified code path for all header/package signature checking
** Signature checking before header imports
** Signature checking before header imports
** Support for multiple signatures per package
** Support for configurable signature policies
* Major debuginfo rewrite (covered by two other changes and already applied in F27)
* Major debuginfo rewrite (covered by two other changes and already applied in F27)
** [[Changes/ParallelInstallableDebuginfo|Parallel Installable Debuginfo]]
** [[Changes/ParallelInstallableDebuginfo|Parallel Installable Debuginfo]]
Line 80: Line 80:
* SSD conservation mode
* SSD conservation mode
* Improved support for reproducible builds
* Improved support for reproducible builds
* RPMCALLBACK_ELEM_PROGRESS now carries index of header
* All RPMCALLBACK_* events run with the associated header
* Support for OpenSSL as a one of crypto libraries used for digests/signatures (already part of F27)
* Support for OpenSSL as a one of crypto libraries used for digests/signatures (already part of F27)
* Support for rich dependencies coming out from dependency generators
* Support for rich dependencies coming out from dependency generators
Line 88: Line 88:
* Improvements in Python dependency generator
* Improvements in Python dependency generator
* Improvements and stabilization of "ndb" ([[Changes/NewRpmDBFormat|New RPM DB Format database format]])
* Improvements and stabilization of "ndb" ([[Changes/NewRpmDBFormat|New RPM DB Format database format]])
* Support for "with" rich-operator:
* Support for "with", "without" and "unless" rich-operators:
** Specifying version range dependencies
** Specifying version range dependencies
** Specifying packages which provide special ability
** Specifying packages which provide special ability
Line 181: Line 181:


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Release notes (will be ready once 4.14 releases): http://rpm.org/wiki/Releases/4.14.0
Release notes: http://rpm.org/wiki/Releases/4.14.0


== Release Notes ==
== Release Notes ==
Line 190: Line 190:
-->
-->


[[Category:ChangeReadyForFesco]]
[[Category:ChangeAcceptedF27]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->

Latest revision as of 19:28, 3 November 2017


RPM 4.14

Summary

Update RPM to the 4.14.0 release.

Owner

Current status

Detailed Description

RPM 4.14 contains several improvements that needs to get released and integrated in Fedora:

  • Major macro engine bug fix + sanity work:
    • Macro scope simplification + enforcing
    • Macro arguments expanded
    • Macro argument quoting support
    • Nested lua macro scoping fixes
    • Improved error reporting
  • Major header/package/signature rewrite:
    • Unified code path for all header read/import
    • Major hardening work on header parsing
    • Unified code path for all header/package signature checking
    • Signature checking before header imports
  • Major debuginfo rewrite (covered by two other changes and already applied in F27)
  • Signal handling rewrite:
    • Custom signal handlers while rpmdb open
    • Signals blocked throughout write transactions
  • SSD conservation mode
  • Improved support for reproducible builds
  • All RPMCALLBACK_* events run with the associated header
  • Support for OpenSSL as a one of crypto libraries used for digests/signatures (already part of F27)
  • Support for rich dependencies coming out from dependency generators
  • %include can contain paths with whitespaces
  • Dependency generator for pkg-config files doesn't check dependencies in .pc recursively, but rather print top-level ones (if pkgconf is used)
  • Header digests use SHA256 by default
  • Improvements in Python dependency generator
  • Improvements and stabilization of "ndb" (New RPM DB Format database format)
  • Support for "with", "without" and "unless" rich-operators:
    • Specifying version range dependencies
    • Specifying packages which provide special ability

Benefit to Fedora

The above plus closing the gap between RPM upstream and the Fedora version.

Scope

  • Proposal owners: Rebase RPM
  • Other developers: Test new release, report issues and bugs, fix bugs in packaging (if it is not bug in RPM, should be detected during Mass Rebuild)
  • Release engineering: #6875 (a check of an impact with Release Engineering is needed)
  • Policies and guidelines: FPC should look (and possibly approve) "with" rich dependency in Packaging Guidelines
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

Using some of the new feature will break forward compatibility. Packages using these features will not be able be build or be installed on older Fedora versions. Backward compatibility is expected to be maintained.

How To Test

Testing is done in full operation.

User Experience

  • Packagers will see better error messages with broken macro
  • Packagers will be able to use unexpanded arguments for macro (like %autosetup %{?git:-n %{name}-%{commit}})
  • Release Engineers / Packagers will be able to use multiple keys for signing packages
  • Users will be able to install multiple versions of debuginfo packages at the same time
  • Packagers will be able to split debuginfo per (sub-)package and one debugsource for package
  • Release Engineers will be able to make reproducible builds easier
  • Packagers will be able to write dependency generators which returns rich dependencies
  • Packagers will be able to specify version range or "feature" dependencies (examples are below)
    • Requires: (foo >= 1.0 with foo < 2.0)
    • Requires: (kernel with flavor = desktop)
  • Packagers will stop missing autogenerated dependencies coming from pkg-config files if they don't have dependencies in buildroot
  • Users shouldn't see any regressions
  • Users will be able to test tech-preview version of ndb (by changing _db_backend to ndb and running rpmbuild --rebuild)

Dependencies

  • New (and old) kind of rich dependencies (in Requires / Recommends) could be used only when FPC approves them
  • Multiple keys per package might require some changes in DNF and/or Infrastructure
  • Better reporting of processing package (RPMCALLBACK_ELEM_PROGRESS) through DNF API (e.g. in Anaconda) requires support from DNF
  • Changing database from bdb to ndb requires patching of some programs who read/expect /var/lib/rpm/Packages and other files directly without using librpm

Nothing from above blocks implementing change.

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) Fix issues quickly / Go back to rpm-4.13. It is unlikely that this requires reverting some changes in other packages as the new features will probably not already be used in F27. In case something really bad happens it might be necessary to rebuild all packages built with the broken version
  • Contingency deadline: Alpha Release
  • Blocks release? Yes
  • Blocks product? -

Documentation

Release notes: http://rpm.org/wiki/Releases/4.14.0

Release Notes