Changes for version 1.49_01

  • Maintenance taken over by Alexey Tourbin <at@altlinux.org>.
  • This release has been tested on ALT Linux Sisyphus (rpm-4.0.4) and Fedora Core 6 (rpm-4.4.2).
  • The version has been bumped up to 1.49_01 to match RPM.pm $VERSION.
  • This release includes about 100 changes from the previous version 0.40, which was released almost 5 years ago. All known bugs and memory leaks has been fixed; the code has been updated for recent rpm-4.4 versions [rt.cpan.org #3930, #8710], as well as cleaned up and simplified.
  • Detailed list of changes since version 0.40 is available at http://git.altlinux.org/people/at/packages/?p=perl-RPM.git;a=summary
  • The most important changes are as follows.
  • Many memory leaks have been fixed, including lack of headerFree() in rpmdb_FETCH(). New file t/09_leaks.t implements tests for memory leaks (requires Devel::Leak module). [rt.cpan.org #12120]
  • RPM::Database caching layer was dropped, because of unacceptable memory usage for database traversal. However, due to Berkeley DB caching facilities, which is used by RPM, the overall performance seems much smoother.
  • RPM::Header caching layer was also dropped, due to many inconsistencies which arise from the "cache by tag name" approach. (For example, it was possible to assign different values for EPOCH and SERIAL rpm header tags, which actually alias each other.) However, ad-hoc cache for NAME, VERSION, and RELEASE tags has been kept, along with SEGV bugfix. [rt.cpan.org #14489]
  • XS code has been simplified by implementing RPM::Header and RPM::Database object boxing (and unboxing) completely with typemap.
  • Conversion between RPM tag names to their numeric values is now also handled with typemap.
  • Fixed wrong rpmError() usage, which expects printf-like format string and arguments, not just plain string.
  • Implemented RPM::evrcmp(a,b) to compare [Epoch:]Version[-Release] specification strings, possibly against RPM::Header objects.
  • Fixed wrong RPM_INT*_TYPE conversion in rpmhdr_STORE(), which made RPM::evrcmp() implementation possible.
  • Update RPM::Constants for new rpm, based on perl-RPM-43.patch from PLD Linux Distribution.

Documentation

Remove unneeded files from a list of RPM package files

Modules

RPM
Perl interface to the API for the RPM Package Manager
Groups of RPM-defined symbols
Access to the RPM database of installed packages
Functions to supplement the internal error management of RPM
Access to RPM package headers