Heads-up: brand new RPM version about to hit rawhide

Panu Matilainen pmatilai at redhat.com
Wed Jul 9 10:51:15 UTC 2008

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:

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).

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

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
    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 -

More information about the fedora-devel-list mailing list