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:
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 -
More information about the fedora-devel-list
mailing list