At long last, we are about to get a brand new RPM version (alpha snapshot at the moment) into rawhide. The list of changes from 4.4.2.x is massive and a full summary needs a separate posting (will follow as time permits), this is just a heads-up of immediate consequences for Fedora packagers and rawhide consumers:
Users: 1) BACKUP YOUR RPMDB, NOW! We're not aware of any baby-eating bugs in rpm but I'd be shocked if there were no new bugs at all... Better safe than sorry - do something like this before updating to the new rpm: # cp -avp /var/lib/rpm /var/lib/rpm-`date +%d%m%y` 2) Rebuilding the rpmdb is not a bad idea (if not strictly necessary): # rpm --rebuilddb 3) Watch out for regressions and please report immediately if found. Again, we're not aware of any baby-eating bugs but there has been an enormous amount of changes in the codebase... The python bindings are supposed to be entirely backwards compatible but there are some small differences with returned types (notably returning an empty list vs None) on tag data in some cases, this breaks rpmlint (patch is trivial, will send to maintainer). Packagers: 1) So-name bumb is involved, the API has changed a lot. Here's the list of involved packages according to repoquery and status, I'll be sending patches to package maintainers shortly: - gdb (needs update to locate build-id patch) - perl-RPM2 (needs some updating) - apt (needs major work, but this is my headache) - ruby-rpm (needs quite a bit of work) - deltarpm (just needs a rebuild apparently) - net-snmp (needs rebuild with -D_RPM_4_4_COMPAT) - rpmreaper (needs rebuild with -D_RPM_4_4_COMPAT) 2) rpmbuild uses --fuzz=0 parameter to patch by default. This will "break" many many packages as this is stricter than the default of patch command itself. Two possibilities: - Rediff your patches and check they're applying correctly. This is the best thing to do, patches applied with fuzz can and do cause strange and nasty bugs. - As a temporary action, adding "%define _default_patch_fuzz 2" to spec will force rpm to use fuzz level 2 which is the default for patch itself. 3) %{_topdir} now defaults to $(HOME)/rpmbuild/, /usr/src/redhat/ is no more. 4) BuildRoot from spec is ignored. Rpm now defaults to buildroot under %{_topdir}/BUILDROOT/ 5) Rpm now supports "arch dependencies", so eg. foo-devel dependencies can be expressed correctly. Please wait for FPC recommendations on the subject, this needs a mass rebuild to be usable. 6) Rpm now collects pkg-config and libtool dependencies automatically. Initially only provides will be created to avoid creating unsolvable dependencies though. 7) Two new macros, %{patches} and %{sources} are supported in rpmbuild. In other words, you can now do things like: for p in %{patches}; do ... done Just keep in mind that using these in your spec will make the it incompatible with rpm 4.4.x versions. P.S. The new rpm will be initially built against Berkeley DB 4.5.20 from compat-db to ensure easy downgrade path to rpm 4.4.x should something go terribly, horribly wrong. Newer BDB would require manual db conversion to downgrade. - Panu - -- fedora-devel-list mailing list fedora-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/fedora-devel-list