Home | Back
4.0.3 -> 4.0.4:
- turn off rpm-perl until it's self-hosting.
- jigger up rpm-python with python-2.2b2 for now.
- remove libtoolize from %%configure for now (#57039).
- teach find-requires to autogenerate GCC_3.0 dependencies.
- solaris: translate i86pc to i386 (#57182).
- fix: %GNUconfigure breaks with single quotes (#57264).
- look for PY_VERSION 2.2c1.
- fix: typo in find-requires.
- tru64 compiler message cleanup.
- add buildarch lines for hppa (#57728).
- sparc: make dbenv per-rpmdb, not per-dbi.
- handle lazy db open's in chroot with absolute path, not prefix strip.
- Depends should use CDB if configured.
- autodetect python 1.5/2.2.
- use db-4.0.14 final internally.
- make rpm-perl package self-hosting (#57748).
- permit gpg/pgp/pgp5 execs to be reconfigured.
- fix: signing multiple times dinna work, discard immutable region.
- remove poptmodule.so for separate packaging.
- permit subset installs for %lang colored hardlink file sets.
- missing key(s) on keyring when verifying a signature is now an error.
- remove dependency whiteout.
- calculate rpm-4.1 ordering/orientation metrics in rpmdepOrder().
- use beecrypt routines to calculate digests in rpm.
- dump legacy support for broken md5 signatures.
- sync popt and rpmio with rpm-4.1, rpmio has OpenPGP API.
- sync rpmdb and build with rpm-4.1, lots of splint annotations.
- add :armor and :base64 query format qualifiers for binary signatures.
- fix: query format qualifiers needed header.c merge.
- ppc64 arch added (#58634,#58636).
- turn on auto-generated perl requirements (#58519, #58536, #58537).
- add internal (customized) version of zlib.
- fix: %exclude functional (again).
- trap SIGILL for ppc64 inline asm voodoo fix from cross-dressed ppc32.
- rpm-perl: force numeric comparison on rpm version (#58882).
- fix: fancy hash fiddles if not a tty.
- fix: handle /.../ correctly in rpmCleanPath().
- transaction rollback code in rpmRollback().
- Red Hat 6.2 portability cruft.
- legacy: configurable whiteout for known Red Hat 7x dependency loops.
- perl.req: don't mis-generate dependencies like perl(::path/to/foo.pl).
- use chainsaw algorithm for dependency tree decimation when ordering.
- permit args to be hidden within %__find_{requires,provides}.
- a couple more perl.{prov,req} fiddles.
- macro for %files, always include %defattr(), redhat config only.
- fix: drop header region when writing repackaged legacy header.
- bail on %files macro.
- transaction rollbacks are functional.
- generate index for pkgid (aka Sigmd5) tag, query/verify by pkgid.
- generate index for hdrid (aka Sha1header) tag, query/verify by hdrid.
- generate index for fileid (aka Filemd5s) tag, query/verify by fileid.
- query/verify by install transaction id.
- rpm-4.0.4 release candidate.
- add cpanflute2, another perl.req fiddle.
- don't do close-on-exec, 2 powertools packages cannot be read when
  doing.
- reapply Berkeley DB patch #4491.

4.0.2 -> 4.0.3:
- update per-interpreter dependency scripts, add sql/tcl (#20295).
- fix: rpmvercmp("1.a", "1.") returned -1, not +1 (#21392).
- add cpuid asm voodoo to detect athlon processors.
- add %exclude support (i.e. "everything but") to %files.
  (Michael (Micksa) Slade" <micksa@knobbits.org>)
- add --with/--without popt glue for conditional builds(Tomasz Kloczko).
- python: strip header regions during unload.
- add -g to optflags in per-platform config.
- permit confgure/compile with db3-3.2.9.
- permit manifest files as args to query/verify/install modes.
- fix: parameterized macro segfault (Jakub Bogusz <qboosh@pld.org.pl>)
- fix: i18n tags in rpm-2.5.x had wrong offset/length (#33478).
- fix: AIX has sizeof(uint_16) != sizeof(mode_t) verify cast needed.
- fix: zero length hard links unpacked incorrectly (#34211).
- fix: --relocate missing trailing slash (#28874,#25876).
- fix: --excludedoc shouldn't create empty doc dir (#14531).
- fix: %_netsharedpath needs to look at basenames (#26561).
- fix: --excludepath was broken (#24434).
- fix: s390 (and ppc?) could return CPIOERR_BAD_HEADER (#28645).
- fix: Fwrite's are optimized out by aggressive compiler(irix) (#34711).
- portability: vsnprintf/snprintf wrappers for those without (#34657).
- more info provided by rpmdepOrder() debugging messages.
- merge (compatible) changes from top-of-stack into rpmlib.h.
- cpio mappings carry dirname/basename, not absolute path.
- fix: check waitpid return code.
- remove support for v1 src rpm's.
- re-position callbacks with ts/fi in cpio payload layer.
- state machines for packages (psm.c) and payloads (fsm.c)
- add --repackage option to put erased bits back into a package.
- fix: (ppc) copy va_list in loop (#36845).
- cpanflute perl dependency needs explicit epoch (#37034).
- regenerate rpm.8 man page from docbook glop (in max-rpm).
- lib/depends.c: diddle debugging messages.
- fix: readlink return value clobbered by header write.
- fix: ineeded count wrong for overlapped, created files.
- globalize _free(3) wrapper in rpmlib.h, consistent usage throughout.
- internalize locale insensitive ctype(3) in rpmio.h.
- boring lclint annotations and fiddles.
- transaction iterator(s) need to run in reverse order on pure erasures.
- erasures not yet strict, warn & chug on unlink(2)/rmdir(2) failure.
- more boring lclint annotations and fiddles.
- yet more boring lclint annotations and fiddles.
- still more boring lclint annotations and fiddles.
- enough lclint annotations and fiddles already.
- fix: specfile queries with BuildArch: (#27589).
- fix: debugging message displays header keys (#38454).
- use internal db-3.2.9 sources to build by default.
- don't build db1 support by default.
- create rpmdb.la so that linkage against rpm's db-3.2.9 is possible.
- rpm database has rpm.rpm g+w permissions to share db3 mutexes.
- expose more db3 macro configuration tokens.
- move fprint.[ch] and hash.[ch] to rpmdb directory.
- detect and fiddle incompatible mixtures of db3 env/open flags.
- add DBI_WRITECURSOR to map to db3 flags with CDB database model.
- add rpmdbSetIteratorRewrite to warn of pending lazy (re-)writes.
- harden rpmdb iterators from damaged header instance segfaults.
- add cron/logrotate scripts to save installed package filenames.
- upgrade to db-3.3.4.
- fix: filter duplicate package removals (#35828).
- add armv3l arch.
- fix: i18n strings need 1 on sucess return code (#41313).
- fix: skip %ghost files when building packages (#38218).
- headerFree() returns NULL, _free is C++ safe.
- remove all header region assertion failures, return NULL instead.
- perform db->verify when closing db files.
- eliminate db-1.85 and db-2.x configuration.
- fix: popt arg sanity checks broken, optarg != optArg.
- fix: popt range checks on floats/doubles broken.
- popt: return POPT_ERROR_ERRNO on config open/read/close failure.
- fix: popt exec doesn't add '--', --target et al no longer need '='.
- fix: popt consume-next-arg "!#:+" w/o side effect (#41956).
- fix: for busted db1, attempt chain reconnection to following record.
- return multiple suggested packages
  (Pawel Kolodziej <pawelk@pld.org.pl>).
- fix: return suggested packages when using Depends cache.
- merge sparc64/ia64 fiddles back into linux.{req,prov}.
- automagically generate perl module dependencies always.
- fix: lclint fiddles broke uCache initialization (#43139).
- always use db cursors.
- permit duplicates for btree indices.
- document build modes in rpmbuild.8, rpmbuild is born.
- default to dbenv with mpool, --rebuilddb with nofsync is much faster.
- fix: QUERY_FOR_LIST file count clobbered.
- create top level rpmcli API, factor top level modes into popt tables.
- popt: add POPT_BIT_SET/POPT_BIT_CLR to API.
- autogen.sh checks for latest libtool-1.4 and automake-1.4-p2.
- rpm --verify reports failure(s) if corresponding tag is not in header.
- rpm --verify honors %config(missingok), add -v for legacy behavior.
- remove dead code frpm popt table reorg.
- more CLI typedefs/prototypes moved from rpmlib.h to rpmcli.h.
- rpm --verify skips files in non-installed states.
- rpm --verify skips content checks for %ghost files.
- rpm --verify displays config/doc/gnost/license/readme atrrs for files.
- rpm --verify checks immutable header region digest if available.
- rpmbuild adds header region digest (SHA1 as string).
- use rpmTag* typedefs in new hge/hae/hme/hre header vectors.
- remove rpmrc Provides: Yet Again, use virtual packages.
- dump cursor debugging wrappers.
- rpm --verify can disable rpmFileAttr checks.
- add rpmdbSetIteratorRE() for regex matching in database iterators.
- permit rpm -qa to take RE args applied to name tag.
- permit dbiFindMatches() to use version/release patterns.
- eliminate all uses of rpmdbSetIterator{Version,Release}.
- fix: db1 end-of-file not detected in legacy compatible way.
- fix: remove (harmless) chown error message from %post.
- add --target/--host to %configure, add example cross-build/config.site
  scripts to /usr/lib/rpm <arjanv@redhat.com> (#44581).
- rpmdb iterator selectors permit default/strcmp/regex/glob matching.
- rpmdb iterator selectors permit negative matches.
- alpha: don't add "()(64bit)" dependency markers.
- ia64/sparc: <arch>.{req,prov} identical to linux.{req,prov}.
- add "rpmlib(ScriptletInterpreterArgs)" to track
    %post -p "/sbin/ldconfig -n /usr/lib"
  incompatibilities.
- popt: add POPT_ARGFLAG_SHOW_DEFAULT to display initial values(#32558).
- popt: add POPT_CONTEXT_ARG_OPTS for all opts to return 1 (#30912).
- fix: fsm reads/writes now return error on partial I/O.
- fix: Ferror returned spurious error for gzdio/bzdio.
- check for API/ABI creep, diddle up some compatibility.
- preliminary abstraction to support per-header methods.
- finalize per-header methods, accessing headerFoo through vector.
- make package ordering loop messages debug, not warning.
- remove {ia64,sparc}-linux.{prov,req}, changes merged into linux.*.
- fix: partial sets of hardlinked files permitted in payload.
- fix: mark rpmdb files with %config to prevent erasure on downgrade.
- work around a (possible) compiler problem on ia64.
- fix: rpm -qlv link count for directories dinna include '..'.
- fix: rpm -qlv size for directories should be zero.
- add --noghost to filter non-payload files from rpm -qlv output.
- add %{_gnu} macro to append "-gnu" to %{_target_platform} to
  support --target/--host flavored %configure. Legacy behavior
  available by undefining %{_gnu}.
- propagate %{_gnu} to per-platform configuration.
- fix: parameterized macros with massive mumber of options need
  "optind = 1" "Dmitry V. Levin" <ldv@alt-linux.org>.
- add athlon per-platform configuration.
- remove executable bit to disable autogenerated perl requires until
  perl provides can be vetted.
- disable per-platform %%configure use of %%_gnu until libtool package
  stabilizes.
- fix: permit partially enumerated hardlink file sets during build.
- fix: resurrect rpm signature modes.
- fix: sanity checks on #tags (<65K) and offset (<16Mb) in header.
- fix: add -r to useradd to prevent /etc/skel glop (#46215).
- fix: disambiguate typedef and struct name(s) for kpackage.
- update intl dirs to gettext-0.10.38.
- fix: sanity check for header size added in headerCopyLoad() (#46469).
- fix: redundant entries in file manifests handled correctly (#46914).
- map uid/gid from metadata into payload headers.
- add removetid to header during --repackage.
- expose rpmShowProgress() and rpmVerifyDigest() in rpmcli.h.
- portability: avoid st_mtime, gendiff uses basename, etc (#47497).
- glibc-2.0.x has not __va_copy().
- popthelp.c: don't use stpcpy to avoid portability grief (#47500).
- permit alias/exec description/arg text to be set from popt config.
- python: rhnLoad/rhnUnload to check header digest.
- package version now configureable, default v3.
- rename rpm libraries to have version with libtool -release.
- fix: -i CLI context broken Yet Again.
- unlink all __db.nnn files before 1st db open.
- python bindings should not segfault when fed bad data.
- fix: adjust arg count for --POPTdesc/--POPTargs deletion.
- add linux per-platform macro %_smp_mflags <sopwith@redhat.com>.
- document more popt aliases for --help usage.
- remove --tarbuild from man page(s), use -t[abpcils] instead (#48666).
- fix: scope multi-mode options like --nodeps correctly (#48825).
- isolate cdb access configuration (experimental, use at your own risk).
- fix: hard fail on locked dbopen if CDB locking not in use.
- fix: dbconfig with mp_mmapsize=16Mb/mp_size=1Mb for
  "everything ENOSPC" failure check.
- fix: don't total hard linked file size multiple times (#46286).
- add %dev(type,major,minor) directive to permit non-root dev build.
- fix: _smp_flags macro broken.
- python: bind rhnUnload differently.
- fix: rescusitate --querytags.
- fix: short aliases broken (#49213).
- python: "seal" immutable region for legacy headers in rhnUnload() .
- python: add poptmodule.so bindings.
- fix: %dev(...) needs to map rdev and mtime from metadata.
- resurrect --specedit for i18n.
- fix: 4 memory leaks eliminated.
- fix: yet another segfault from bad metadata prevented.
- add sha1 test vectors, verify on ix86/alpha/sparc.
- add (but disable for now) rpm-perl subpackage from Perl-RPM.
- python: parameterize with PYVER to handle 1.5 and/or 2.1 builds.
- add build dependency on zlib-devel (#49575).
- enable rpm-perl subpackage.
- add pmac/ppciseries/ppcpseries varieties to ppc arch family.
- include tdigest.c tkey.c and trpmio.c to "make dist".
- re-enable dependency resolution source from package NVR.
- rename pmac to ppcmac.
- ia64: revert -O0 compilation.
- upgrade to db-3.3.11 final.
- fix: don't segfault when presented with rpm-2.4.10 packaging (#49688).
- fix: --noscripts is another multimode option.
- add tmpdir to configure db3 tmpdir into chroot tree.
- permit lazy db opens within chroot.
- fix: diddle dbenv path to accomodate backing store reopen in chroot.
- add support for mips (#49283).
- add __as, _build_arch, and __cxx macros (#36662, #36663, #49280).
- detailed build package error messages.
- fix: i18n tags not terminated correctly with NUL (#50304).
- add explicit casts to work around a s390 compiler problem.
- fix: autoconf glob tests (#50845).
- portability: some compilers squawk at return ((void) foo()) (#50419).
- remove fdFileno() from librpmio, use inline version instead (#50420).
- fix: linux find-requires needs quotes around [:blank:].
- remove /var/lib/rpm/__db* cache files if %__dbi_cdb is not configured.
- python: add hiesenbug patch.
- add legacy (compile only) wrappers for fdFileno et al.
- add -D_REENTRANT (note rpmlib is still not thread safe).
- fix: segfault on headerFree given malicious data.
- fix: don't verify hash page nelem.
- better error messages for verification failures.
- include directory /usr/lib/rpm in rpm package.
- always use dl size in regionSwab() return.
- ppc: revert ppcmac to ppc.
- ppc: autoconf test for va_copy.
- python: add exception to detect bad data in hdrUnload.
- change dir creation message from warning to debug for now.
- verify perms (but not mode) on %ghost files.
- headers without RPMTAG_NAME are skipped when retrieved.
- within a region, entries sort by address; added drips sort by tag.
- fix: error message on failed package installs resurrected.
- python: memory leaks in headerLoad/headerunload bindings.
- python: retrofit sha1 digest using RPMTAG_SHA1RHN.
- python: change rhnUnload bindings.
- python: teach rhnLoad about RPMTAG_SHA1RHN as well.
- fix: Provides: /path did not work with added packages (#52183).
- fix: progress bar scaling did not include source rpm count.
- fix: hash page nelem failure to verify.
- fix: initialize "verify" transaction stepName with -vv (#53582).
- fix: ftp remote globs broken (#46892).
- popt: clarify X consortium license in popt.3 man page.
- close/discard Depends index after rpmdepCheck() use.
- lclint-3.0.0.15 fiddles.
- fix: harmless typo in db3 chroot hack.
- fix: big-endian's with sizeof(time_t) != sizeof(int_32) mtime broken.
- fix: add Korean message catalogs (#54473).
- add RPHNPLATFORM and PLATFORM tags.
- rpm-4.0.3 released.

4.0 -> 4.0.2
- fix: avoid calling getpass twice as side effect of xstrdup macro
  (katzj@linuxpower.org) (#17672).
- order packages using tsort, clipping Requires:'s in dependency loops.
- handle possible db3 dependency on -lpthread more gracefully.
- bump popt version to 1.6.1.
- fix: more (possible) xstrdup side effects.
- fix: rpm2cpio error check wrong on non-libio platforms.
- fix: runTriggers was not adding countCorrection.
- add rpmGetRpmlibProvides() to retrieve rpmlib(...) provides
  "Pawel A. Gajda" <mis@k2.net.pl>.
- syntax to specify source of Requires: (PreReq: now legacy).
- rip out rpm{get,put}text, use getpo.sh and specspo instead.
- fine-grained Requires, remove install PreReq's from Requires db.
- fix: duplicate headerFree() on instalBinaryPackage() error return.
- fix: work around for (mis-compilation?!) segfaults on signature paths.
- fix: segfault on exit of "rpm -qp --qf '%{#fsnames}' pkg" (#20595).
- hpux w/o -D_OPEN_SOURCE has not h_errno.
- verify MD5 sums of payload files when unpacking archive.
- hide libio lossage in prototype, not API.
- add support for SHA1 as well as MD5 message digests.
- don't verify src rpm MD5 sums (yet).
- md5 sums are little endian (no swap) so big endian needs the swap.
- add doxygen and lclint annotations most everywhere.
- consistent return for all signature verification.
- use enums for almost all rpmlib #define's.
- API: change rpmProblem typedef to pass by reference, not value.
- unify rpmError and rpmMessge interfaces through rpmlog.
- collect and display rpm build error messages at end of build.
- don't trim leading ./ in rpmCleanPath() (#14961).
- detect (still need to test) rdonly linux file systems.
- check available inodes as well as blocks on mounted file systems.
- pass rpmTransactionSet, not elements, to installBinaryPackage et al.
- add cscope/ctags (Rodrigo Barbosa<rodrigob@conectiva.com.br>).
- remove getMacroBody() from rpmio API.
- add support for unzip <rodrigob@conectiva.com.br>
- add brp-strip-shared script <rodrigob@conectiva.com.br>.
- better item/task progress bars <rodrigob@conectiva.com.br>.
- load headers as single contiguous region.
- add region marker as RPM_BIN_TYPE in packages and database.
- fix: don't headerCopy() relocateable packages if not relocating.
- merge signatures into header after reading from package.
- RPM_BIN_TYPE malloc'ed when retrieved through headerGetEntry().
- add headerFreeData() to free any data malloc'ed during retrieval.
- preserve exact image of original header when installing/upgrading.
- add missing headerFree for legacy signature header.
- fix: removed packages leaked DIRINDEXES tag data.
- reload tags added during install when loading header from rpmdb.
- avoid brp-compress hang with both compressed/uncompressed man pages.
- improved find-{requires,provides} for aix4/hpux/irix6/osf.
  Tim Mooney<mooney@dogbert.cc.ndsu.NoDak.edu>
- portability: remove use of GNU make subst in lib/Makefile (Joe Orton).
- python: bind package removal (#21274).
- autoconfigure building python bindings.
- autoconfigure generating rpm API doco.
- fix: don't fdFree in rpmVerifyScript, rpmtransFree does already.
- use package version 3 if --nodirtokens is specified.
- add package names to problem sets early, don't save removed header.
- make sure that replaced tags in region are counted in headerSizeof().
- support for dmalloc debugging.
- filter region tags in headerNextIterator, exit throut headerReload.
- add rpmtransGetKeys() to retrieve transaction keys in tsort'ed order.
- python bindings for rpmtransGetKeys().
- fix: include alignment in count when swabbing header region.
- handle added dirtoken tags (mostly) correctly with header regions.
- add FHS doc/man/info dirs, diddle autoconf goo.
- fix: headerUnload handles headers w/o regions correctly on rebuilddb.
- resurrect rpmrc Provides: as well as implicit dependency on packge
  info.
- change dependency loop message to RPMMESS_WARNING to use stderr, not
  stdout.
- fix: (transaction.c) assume file state normal if tag is missing.
- fix: failed signature read headerFree segfault.
- fix: revert ALPHA_LOSSAGE, breaks 6.2/i386.
- fix: synthesized callbacks for removed packages have not a pkgkey.
- identify install scriptlet failures with the name of the scriptlet.
- handle install chroot's identically throughout the install process.
- add rpmlib(HeaderLoadSortsTags) for tracking header regions
  "just in case".
- create _tmppath on the fly if not present.
- remove /etc/rpm/macros.db1 configuration file if db3 rebuilt.
- remove overly verbose dbiOpen() error messages, no longer needed.
- whiteout mozilla loop for 7.1.
- immutable headers, once installed by rpm3, need to lose immutablity.
- fix: removed headers from db need a headerCopy().
- send query/verify output through rpmlog().
- resurrect rpmErrorSetCallback() and rpmErrorString().
- use malloc'ed buffer for large queries.
- fix: avoid FAT and other brain-dead file systems that have not inodes.
- fix: hack around alpha mis-compilation signature problems.
- rpmmodule.c(handleDbResult): return empty list when nothing matches.
- (non-linux): move stubs.c to rpmio (#21132).
- (python): bind initdb (#20988).
- (popt): fix float/double handling (#19701).
- (popt): non-linux needs <float.h> (#22732).
- (popt): add POPT_ARGFLAG_OPTIONAL for long options with optional arg.
- (popt): diddle auto-help to include type of arg expected.
- use popt autohelp for rpm helper binaries.
- fix: avoid locale issues with strcasecmp/strncasecmp (#23199).
- remove almost all explicit uses of stderr in rpmlib using rpmError().
- fix: pass scriptlet args, as in %post -p "/sbin/ldconfig -n /lib".
  (Rodrigo Barbosa).
- fix: 3 packages from Red Hat 5.2 had bogus %verifyscript tag.
- tsorted packages processed in successor count order.
- fix: resurrect --excludepath (#19666).
- fix: digests on input FD_t dinna work.
- fix: remove rebuilddb debugging leakage.
- successors from tsort are processed in presentation order.
- fix: find-requires.perl needed update (#23450).
- fix: don't hang on build error.
- fix: remove "error: " prefix from signature verification message.
- hack: permit installer to determine package ordering using 1000003 tag.
- fix: extra newline in many error messages (#23947).
- fix: rpm -Va with db1 needs per-iterator, not per-index, offset.
- add install/remove transaction id tags.
- tsort prefers presentation order.
- 1st crack at Mandrake specific per-platform macros.
- fix: insure that %lang scopes over hard links correctly.
- fix: rpmCleanPath was nibbling at .. in macrofiles incorrectly.
- fix: check waitpid return code.
- fix: make a copy of retrieved header before loading.
- fix: diddle exit code for attempted installs of non-packages (#26850).
- python binding diddles to reduce installer memory footprint by
  delayed loading of file info.
- fix: remove fixed size buffer on output path (#26987,#26332).
- resurrect rpmErrorCode in the API for Perl-RPM.
- fix: permit packages to differ by 0 or 32 bytes (#26373).
- fix: permit HEADER_IMMUTABLE tag queries.
- split db configuration into separate file.
- portability changes from Joe Orton <jorton@redhat.com> et al.
- (alpha): rip out ALPHA_LOSSAGE now that gcc-2.96-76 has fix (#28509).
- (popt): use sprintf rather than snprintf for portability.
- (sparc) disable MD5 sum checks during install.
- (db1) plug largish memory leak in simulated interface for falloc.c.
- remove mozilla dependency white out, no longer needed.
- fix: adjust for libio breakage in Red Hat 5.x with glibc-2.0.7-29.4.
- map i686-like (i.e. w/o CMOV) platforms to better alternatives.

3.0.6 -> 4.0
- use DIRNAMES/BASENAMES/DIRINDICES not FILENAMES in packages and db.
- API: change dbi to pass by reference, not value.
- cram all of db1, db_185, and db2 interfaces into rpmlib.
- convert db1 -> db2 on-disk format using --rebuilddb.
- add db3 to the pile, isolate all with incremental link and vectors.
- prefer db3 as default.
- permit db3 configuration using macros.
- create dbi from template rather than passed args.
- use hashed access for package headers.
- db3: save join keys in endian neutral binary format.
- treat legacy falloc.c as "special" db[01] index for package headers.
- API: pass *SearchIndex() length of key (0 will use strlen(key)).
- API: remove rpmdb{First,Next}RecNum routines.
- add explcit "Provides: name = [epoch:]version-release" to headers.
- fix: cpio.c: pre-, not post-, decrement the link count.
  (from Fabrice Bellet <Fabrice.Bellet@creatis.insa-lyon.fr>)
- make db indices as lightweight as possible, with per-dbi config.
- db1.c will never be needed, eliminate.
- API: merge rebuilddb.c into rpmdb.c.
- API: replace rpmdbUpdateRecord with rpmdbSetIteratorModified.
- API: replace rpmdbFindByLabel with RPMDBI_LABEL iteration.
- API: replace rpmdbGetRecord with iterators.
- API: replace findMatches with iterators.
- Filter DB_INCOMPLETE on db->sync, it's usually harmless.
- Add per-transaction cache of resolved dependencies (aka Depends).
- Do lazy dbi{Open,Close} throughout.
- Attempt fine grained dbi cursors throughout.
- fix: free iterator *after* loop, not during.
- fix: Depends needed keylen in dbiPut, rpmdbFreeIterator after use.
- Rename db0.c to db1.c, resurrect db2.c (from db3.c).
- simplify --last popt alias, date like -qi (bjerrick@easystreet.com).
- fix: alloca'd memory used outside of scope (alpha segfault).
- fix: define/eval options assumed sizeof(int) == sizeof(void *).
- fix: sparc64 per-platform directory shouldn't be sparc64linux.
- fix: (segfault) verify needs rpmdb while query does not.
- add calculated nlink field to -qlv output (like ls -al).
- detects and builds properly against the new fopencookie API in
          glibc 2.2.
- change popt exec alias in oreder to exec rpm children.
- split rpm into 5 pieces along major mode fault lines with popt glue.
- turn on new, more complete version of %%configure.
- add %%makeinstall analogue of new %%configure for autoconf packages.
- mark packaging with version 4 to reflect filename/provide changes.
- change next version from 3.1 to 4.0 to reflect package format change.
- change %configure, add %makeinstall macros to handle FHS changes.
- add optflags for i486 and i586.
- fix: segfault with legacy packages missing RPMTAG_FILEINODES.
- require db3 in default configuration.
- create rpmio directory for librpmio.
- make librpmio standalone.
- fix: avoid clobbering db cursor in removeBinaryPackage.
- expose cursors in dbi interfaces, remove internal cursors.
- remove incremental link.
- portability: sparc-sun-solaris2.5.1.
- fix: don't count removed files if removed packages is empty set.
- fix: permit '\0' as special case key (e.g. "/" in Basenames).
- require --rebuilddb to convert db1 -> db3, better messages.
- fix: open all db indices before performing chroot.
- fix: typo in brp-compress caused i18n man pages not to compress.
- API: uncouple fadio from rest of rpmio.
- API: externalize legacy fdOpen interface for rpmfind et al.
- put version on rpmpopt filename to avoid legacy filename collision.
- change optflags for i386.
- multilib patch, take 1.
- add pre-transaction syscall's to handle /etc/init.d change.
- don't bother saving '/' as fingerprint subdir.
- prefix payload paths with "./", otherwise "/" can't be represented.
- fix: compressFilelist broke when fed '/'.
- fix: typo in --last popt alias (#12690).
- fix: clean file paths before performing -qf (#12493).
- remove build mode help from rpm.c, use rpmb instead.
- fix: set multilibno on sparc per-platform config.
- fix: legacy requires './' payload prefix to be omitted for rpm itself.
- fix: remove verbose database +++/--- messages to conform to doco.
- add S_ISLNK pre-transaction syscall test.
- fix: initialize pretransaction argv (segfault).
- fix: check rpmlib features w/o database (and check earlier as well).
- rip out pre-transaction syscalls, more design is needed.
- remove (dead) dependency checks on implicitly provided package names.
- remove (dead) rpmdb API code in python bindings.
- fix: make set of replaced file headers unique.
- fix: don't attempt dbiOpen with anything but requested dbN.
- create rpmbuild/rpmquery/rpmverify/rpmsign symlinks.
- fix: look for any/all dbapi when rebuilding.
- link rpm2cpio dynamically since cpio is linked dynamically.
- fix: uniqify dependency problems when printing (#14034).
- fix: segfault on erase if filestates is missing in header (#14679).
- fix: popt POST callbacks typo.
- fix: -Va broken, make db cursors per-iterator, not per-dbi.
- fix: segfault when globbing on "" (#15593).
- fix: rebuild db1 -> db3 ate 1st header (#16263).
- translate rpm.8 man page (Peter Ivanyi <ivanyi@internet.sk>).

3.0.6 -> 3.0.7

3.0.5 -> 3.0.6
- python bindings to query and verify signatures.
- add callbacks on package erasure.
- fix: preserve cpio errno when using Fclose with libio.
- fix: initialize sigs everywhere in python header object.
- popt: support for float/double args.
- fix: honor --test when doing --freshen.
- add alpha* architectures.

3.0.4 -> 3.0.5
- configure.in fiddles for BSD systems (Patrick Schoo).
- solaris2.6: avoid bsearch with empty dir list (Ric Klaren - klaren@cs.utwente.nl)
- include RPM-GPG-KEY in file manifest.
- Add ia64 and sparc64 changes.
- rpm.spec: add per-platform sub-directories.
- FreeBSD fixes (bero@redhat.com).
- handle version 4 packaging as input.
- builds against bzip2 1.0
- fix: resurrect symlink unique'ifying property of finger prints.
- fix: broken glob test with empty build directory (Geoff Keating).
        - fix: create per-platform directories correctly.
        - update brp-* scripts from rpm-4.0, enable in per-platform config.
        - alpha: add -mieee to default optflags.
- add RPMTAG_OPTFLAGS, configured optflags when package was built.
- add RPMTAG_DISTURL for rpmfind-like tools (content unknown yet).
- teach brp-compress about /usr/info and /usr/share/info as well.
- update macros.in from rpm-4.0 (w/o dbi configuration).
- fix: don't expand macros in false branch of %if (kasal@suse.cz).
- fix: macro expansion problem and clean up (#11484) (kasal@suse.cz).
- uname on i370 has s390 as arch (#11456).
- python: initdb binding (Dan Burcaw <dburcaw@terraplex.com>).
- internalize --freshen (Gordon Messmer <yinyang@eburg.com>).
- support for separate source/binary compression policy.
- support for bzip payloads.
- fix: payload compression tag not nul terminated.
- identify package when install scriptlet fails (#12448).
- remove (unused) RPMTAG_CAPABILITY.
- remove (legacy) use of RPMTAG_{OBSOLETES,PROVIDES} internally.
- remove (legacy) support for version 1 packaging.
- remove (legacy) support for converting gdbm databases.
- eliminate unused headerGz{Read,Write}.
- support for rpmlib(...) internal feature dependencies.
- display rpmlib provides when invoked with --showrc.
- fix: compare versions if doing --freshen.
- disable rpmlib(VersionedDependencies) by defining _noVersionedDependencies.

3.0.3 -> 3.0.4
- use compressed filenames on install side.
- start unifying FD types, CFD_t now gone.
- check for memory leaks (almost all leaks are plugged).
- fix: resurrect multiple target platform builds.
- freshen.sh: detect when all packages are up to date (Ian Macdonald).
- fix: typo in error message (#6858).
- add/update dependency scripts (Ken Estes).
- use directory tokens internally to reduce memory usage.
- permit --whatprovides to lookup file dependencies.
- fail to package if absolute symlink points within build root.
- initial version of check-prereqs.
- expose enough of legacy fdio interface to compile rpmfind/rpm2html.
- fix: Fopen should use 0666 as default (umask will be applied later).
- fix: default for rd_timeoutsecs is 1 sec (avoid ufdio assertion).
- fix: new FILENAMES tags require package index, not pointer in lookups.
- rename new FILENAMES tags to BASENAMES/DIRNAMES/DIRINDEXES.
- fix: don't look at password when searching urlCache.
- add contentLength sanity check on rpmdb headerWrite.
- fix: fprint abort on stat("/", ...) in empty chroots.
- perform glob on remote ftp query args.
- fix: ftpAbort must close the data channel to read abort status.
- perform glob on remote ftp install args.
- fix: reload macros from cmd line when re-reading config files.
- fix: compressFileList was over-generating dirNames.
- fix: alAddPackage sorted dirNames too soon, destroying dirMapping.
- expose enough of legacy fdio interface to compile gnorpm.
- fix: missing strdup when overriding buildroot from command line
  argument (#1026,#5006).
- diddle some names to keep my C++ brethern happy (i.e. kpackage port).
- fix: add ufdSeek.
- build popt (with libpopt.so*) as a sub-package of rpm.
- split python bindings into a separate sub-package of rpm.
- add ja translation and man pages (Kanda Mitsuru kanda@nn.iij4u.or.jp).
- fix: fp.subDir was incorrectly set to NULL in sparse chroot's.
- fix: manageFile needs to and with O_WRONLY(=1), not O_RDONLY(=0).
- fix: resurrect failed glob error message during build.
- add several BuildRoot FTW policies.
- add manpage for gendiff (pbrown@redhat.com).
- updated sv.po (goeran@uddeborg.pp.se) (#8349).
- configurable PATH for install %pre/%post et al scriptlets.
- use only %_install_langs, not LINGUAS/LANG when deciding to install.
- configurable compression type/level for package payloads.
- default value for %_install_langs is all.
- fix: resurrect relative path's in fprint lookup queries.
- extract spec files from bzip'ped tarballs too on tar builds.
- add %_rebuilddbpath macro to permit rebuilding db in new location.
- updated perl scripts (Ken Estes).
- fix: on --rebuilddb, make sure new/old paths are not the same (#8752).
- fix: on --erase, segfault caused by "" prefix.
- explicitly expand file lists in writeRPM for rpmputtext.
- {Free,Open}BSD find-{provides,requires} (suzukis@file.phys.tohoku.ac.jp).
- new rpm-build package to isolate rpm dependencies on perl/bash2.
- always remove duplicate identical package entries on --rebuilddb.
- add scripts for autogenerating CPAN dependencies.
- add sl.po from Primoz Peterlin <peterlin@biofiz.mf.uni-lj.si>.
- updated sv.po from <goeran@uddeborg.pp.se>.
- macro expansion (and absolute path) in %files -f arg (#9508,#9091).
- permit cli setting of build root policies.
- fix: filter excluded paths before adding install prefixes (#8709).
- add i18n lookaside to PO catalogue(s) for i18n strings.
- try for /etc/rpm/macros.specspo so that specspo autoconfigures rpm.
- per-platform configuration factored into /usr/lib/rpm subdir.
- sparc-sun-solaris2.6 portability check.
- simpler hpux.prov script (Tim Mooney).
- portability: skip bzip2 if not available.
- portability: skip gzseek if not available (zlib-1.0.4).
- portability: skip personality if not available (linux).
- portability: always include arpa/inet.h (HP-UX).
- portability: don't use id -u (Brandon Allbery).
- portability: don't chown/chgrp -h w/o lchown.
- portability: splats in rpm.spec to find /usr/{share,lib}/locale/* .
- fix: better filter in linux.req to avoid ARM specific objdump output.
- fix: use glibc 2.1 glob/fnmatch everywhere.
- fix: noLibio = 0 on Red Hat 4.x and 5.x.
- fix: typo in autodeps/linux.req.
- configure noarch compatibility in rpmrc for ia64.

3.0.2 -> 3.0.3
- add --eval to find result of macro expansion.
- add configure scaffolding to support rpm-4.0 packages.
- include shared libs in rpm-devel (no versioning yet).
- add epoch (as [0-9]*:version-release) to install dependency parse.
- move install/erase major modes into rpmlib.
- move checksig/resign major modes into rpmlib.
- add python bindings to rpm-devel (linux only).
- make query (rpm -qvl) behave like (POSIX?) ls for older files (#4050).
- fix: %if parsing skipped 3 chars too many.
- permit multiline macro expansions with comments and %if.
- add pl translation and man pages (PLD team - from Tomasz Kloczko).
- fix: incomplete cleanup if --rebuilddb fails (#4115).
- add versions to provides.
- fix: sanity test on specfile fails when encountering i18n chars.
- print all dependencies for each package at end of build.
- the death of RPMSENSE_SERIAL, use [epoch:]version[-release] instead.
- add _mandir/_infodir macro expansions to docdirs (Tomasz Kloczko).
- add post install configurable dependency checking.
- fix: segfault on --rebuild (#4185).
- macro fixes (Benedict Lofstedt, #4220):
   expand %# just like %{#} (and with same value as shell analogues).
   macro defaults for *, 0, and # if no args specified.
   getopt on non-linux requires optind to be saved/restored.
- fix: don't remove file until last occurence in transaction (#4291).
- resuscitate net shared paths (#4330).
- fix: macro table cannot contain NULL pointers (#4263).
- fix: last char in rpmrc w/o terminating newline lost (#4361).
- prepare for handling \r in macro exapnsions.
- fix: n>1 occurrences of %config(noreplace) should not FA_CREATE (#4355).
- fix: use pgp5 rather than pgp-2.6.3 if both are in %_pgpbin (#4564).
- match "de" when locale is specified as "de_DE.ISO-8859-1@Munich".
- add versions to obsoletes.
- add %_install_langs to configure languages to be installed.
- add LC_ALL/LC_MESSAGES to query locale search.
- fix: segfault with "--sign" w/o supplying files (#4651).
- add headerWrite return code and check for errors.
- update python bindings from anaconda.
- add versions to prereq.
- add syntax sensitive implict prereq on rpm-3.0.3.
- fix: don't successfully match with strncasecmp("sparc", "sparc64", 5)
- add sparcv9 architecture.
- add --freshen to usage message (#4823).
- suggested changes to docs from Ken Estes (#4451).
- link libbz2.a statically to avoid rpm->bzip2 dependence for now.
- Tru64: avoid find-requires variable size limit (Tim Mooney).
- Solaris: use getpassphrase rather than getpass if available.
- pgp and pgp5 have compatible RSA signature (#4780).
- fix: avoid db problems with self-obsoleting packages on install.
- glibc2: always enable dynamic mtrace if available.
- fix: versioned provides devolved to existence test with conflicts.
- fix: with unspecified epochs, skip dependency epoch compare.
- python: shared module linked correctly.
- do versioned provides/conflicts resolution correctly.
- rpmpopt: display versioned provides/obsoletes.
- revert to shared libbz2.so now that bzip2 is in base install.
- fix: command line install had header memory leak.
- check for NULL on all memory allocations.
- free rpmrc mallocs on exit.
- glibc2: permit run time leak detection.
- fix: removed files fingerprint memory leak.
- fix: resurrect allfiles flag from rpm-2.5.x.
- fix: version compares compatible with epoch-less requires/conflicts.
- fix: rpm-2.5.1 had file list w/o leading / fix.
- portatbility fiddles (solaris).
- create binary rpm directory (e.g. .../%{_target_cpu}) on the fly.
- updated pl/rpm.8 (PLD team).
- new find req/prov scripts for non-linux platforms (Tim Mooney).
- fix: non-GNU globs burp on repeated '/' in patterns.
- dumb cpp's want white space around lclint annotations (Tim Mooney).
- aix: aix.req broken by cut-and-paste (Tim Mooney).

3.0.1 -> 3.0.2
- eliminate armv4 entries from rpmrc (Andrew E. Mileski).
- permit multiple "Provides: " lines in rpmrc (#2999).
- add BuildConflicts: and BuildRequires: in spec file and src rpm.
- fix: bigendian's with longlong file sizes (e.g. IRIX) dinna work.
- move printDep* routines into rpmlib for gnorpm et al.
- updated ru translation (Sergey Kubushin).
- add vpkg-provides.sh (Tim Mooney).
- don't clobber LDFLAGS in top-level Makefile (Tim Mooney).
- fix: build root from cmd line did not set macro %buildroot (#1026).
- fix: resurrect "rpm -Va --nofiles" (verify dependencies only) (#3111).
- rpm-devel should require popt (#3125).
- don't spin while waiting for delayed requires/provides input (#3289).
- common parse for all dependency token syntax.
- eliminate find-requirements on libNoVersion (Red Hat linux only).
- add new-fangled requires on "libc.so.6(GLIBC_2.1)" (sparc-linux only).
- MiNT port (Guido Flohr <gufl0000@stud.uni-sb.de>).
- fix: --rebuilddb with --root dinna remove directory (Michael Andres).
- fix: false fingerprint stat cache hit -- "the tetex problem" (#2727).
- fix: bsearch needs macro table sorted after undefine. (#3713).
- fix: --checksig segfault with odd pgp output (e.g. w/o ~/.pgp) (#3720)
- avoid numeric overflow in version comparison (Thayne Harbaugh<tharbaug@liberate.com>).
- move url.c and ftp.c to rpmlib right next to query.
- 12 more dead strtoks.
- changelog stamp broken w/ big endian 64 bit time_t (Stephane Erania).
- tru64: use /bin/sh not /usr/bin/ksh in find-requires.
- 32Mb (~16x largest known) sanity check on header size.

3.0 -> 3.0.1
- fix: %verifyscript resurrected (Shing-Gene Yung).
- fix: % before non-alphabetic non-macro special now passed unscathed.
- fix: noarch header gets initialized differently.
- fix: $2 to triggerpostun scripts was wrong
- fix: --querybypkg in man page should be --filesbypkg
- fix: optflags not implicitly set to canonical arch value.
- fix: prefer pgp2.6.3 over pgp5 if both are installed.
- make sure that rpm-the-package auto-requires glibc.
- add rpmputtext/rpmgettext to rpm package.
- fix: non-apache servers need "GET ... HTTP/1.0" by the book.
- fix: %doc wrongly inherits lang from last entry in %files.
- resurrect toplevel tar target.
- spec file removal separate from source removal (Shing-Gene Yung).
- add rpm prefix to MD5 routines to avoid name conflict on solaris.
- fix: resurrect -Vp, -Vf and -Vg functionality.
- colesce query and verify modes.
- better cpio error message if package contains missing hard links.
- fix: shared file not skipped when removed.
- fix: conversion script left off leading underscores.
- another strtok bites the dust.
- fix: prevent return code wrap during packagage checking/resigning.
- permit multiple %lang(xx) markers on elements in %files.
- permit %lang(xx,yy,zz) constructs --  2 more dead strtoks.
- fix: --prefix should work properly during package installs.
- add librpmbuild.a to the file list.

2.94 -> 2.95
- fix: last update transaction set segfault bug in installer.
- improved checks for statfs (Tim Mooney).
- remove inconsistent use of __P((...)) throughout.
- non-static inline functions caused IRIX cc pain.
- CPIOERR_CHECK_ERRNO masking caused AIX cc warnings.
- solaris 2.6+ needs statvfs.
- check build prerequisites before building from specfile.
- convert per-system configuration in /etc/rpmrc to macros.

2.93 -> 2.94
- fix: segfault while parsing target string.
- fix: os was not initialized with "--target i586".
- fix: --prefix resurrected.
- non-linux, non-gcc portability fixes (Tim Mooney).
- default to static libs only (remove implied support for shared libs).

2.92 -> 2.93
- eliminate old rpmrc configuration syntax.
- pgp5 support (Carlo Wood <carlo@runaway.xs4all.nl>)
- fix: segfault from double close on ftpGetFileDesc->ftpAbort path.
- fix: don't add header if signature generation failed (Carlo Wood).
- more DU 4.0D fiddles (Shing-Gene Yung).
- fix: segfault from unknown uid/gid -- use builder's uid/gid instead.
- autoReq/autoProv now per-package.
- fix: avoid segfault using --prefix until ewt fixes.
- add --define "%foo %bar" option.
- dump macros to same fd as --showrc uses.
- add %GNUconfigure for full-blown package regeneration.
- fix: RPM_ARCH/RPM_OS had wrong values.
- fix: create ppc directories correctly.
- (re-)enable fixowner/fixgroup macros.
- fix: specfile BuildRoot was masking rpmrc macro.
- expand twiddles in macrofiles list.
- add explicit macrofiles path to rpmrc.
- add per-target macrofiles to search path.
- take globalMacroContext out of macro api.
- fix: flush all macros between builds.
- add name/version/release macros during src.rpm install.
- attempt mkdir sourcedir/specdir during src.rpm install.

2.91 -> 2.92
- update with libtool-2.4f.
- DU 4.0D fiddles (Shing-Gene Yung<shing@cz3.nus.edu.sg>)
- change support@redhat.com to rpm-list@redhat.com.
- fix: with --target=i686, pass macro %_arch=i386.
- fix: rpm --target=arch ... resurrected.
- fix: rpm -q --specfile --specedit now works even with BuildArch:.
- fix: nested strtok's is a no-no.
- added disk space checking

2.90 -> 2.91
- fix: memory leaks in rpmRunTransactions plugged.
- fix: build of packages w/o BuildRoot segfault.
- permit substitution of I18N strings from PO meta-catalogues.
- add callbacks for installer updates while doing URL xfers.
- resurrect http queries/verifies.
- create rpmbzio.c to avoid implicit dependence on libbz2 for installer.
- spec files can provide /filename now
- added rpmdbOpenForTraversal()
- proxy http (Alex deVries).
- add BuildPrereq: in spec file and src rpm.
- added rpmtransSetScriptFd()
- fixed config file problems during chroot upgrades
- fixed %attr brokenness for directories
- augment linux provides/requires for glibc 2.1 backward compatibility.
- fixed --noscript, --notriggers, --excludedocs, and a bunch
  of other install/remove flags
- fixed noreplace handling
- complain about old packages being installed

2.5.x -> 2.90
- added --excludepath
- identify missing keys by type (Toshio Kuratomi).
- package install/removal much smarter about symlinks
- redid install/remove API to allow transaction semantics
- support for GPG (Toshio Kuratomi <badger@prtr-13.ucsc.edu>)
- file lookup finally sane wrt symbolic links :-)
- fileindex format changed -- rebuilddb is necessary for rpm 2.90!!
- --rebuilddb doesn't open old index files
- permit http:// and file:// url's as well as ftp://.
- change --rcfile to permit colon separated file list.
- compile in defaults from rpmrc/macros.
- finish hiding rpmdb index record data ("matches").
- implement abstract fd type almost everywhere.
- update and rename Czech (Pavel Makovec <pavelm@terminal.cz>)
- augment --showrc with -v, only display set variables without -v.
- add macrofiles variable, permit second entry to initMacros().
- add config.h defines for paths to find-requires et. al.
- add readRPM to libbuild, headerGetLangs to librpm.
- permit rpm to be built in a sub-directory (--srcdir=DIR).
- configure using automake.
- arch/os (and platform) should be case insensitive everywhere forever.
- attempt to deal rationally with os as "Linux" or "linux".
- add generalized expression handler (Tom Dyas<tdyas@remus.rutgers.edu>)
- use /usr/lib/rpm/mkinstalldirs if mkdir -p fails.
- more portable dirent handling (Hermann Lauer).
- add Slovak translation (Stanislav Meduna <stano@trillian.eunet.sk>)
- gettextify rpmMessage/rpmError/fprintf messages.
- update po files; add cz to catalogs.
- cpio_gzip: dup the fd before doing gzdopen (Thanks Erik!)
- add --noLang to skip non-default languages.
- writeRPM can now copy cpio archive from fd.
- preliminary macro environment as side effect of rpmrc parse.
- macro handling in rpmlib -- rework include: tag with macro expansion.
- first attempt at librpmbuild API.
        - fixed lib/rpmrc.c to accept include: tags (AdV)
        - fixed the CHANGES file to reflect that this is 2.9, not 3.0 (AdV)
- aggregate system includes into system.h.
- rearrange functions to minimize exported routines in librpmbuild API.
- generalize cpio I/O to eliminate pipe to exec'd gzip on install.
- add {init,add,expand}Macro args everywhere (new macro.c compatibility)
- add new fully recursive macro.c
- there must be a { between two % in a query format (unless %% is used)

2.5.6 -> 2.5.7:
- permit 0x1b in specfile sanity check.
- increase timeout in tread from 5 to 30 secs for slow links.
- rename file before unlinking to avoid EBUSY failures.
- headerGetEntry now returns count=0 if tag not found (Chris Blizzard).
- resurrect osf1 as canonical os name (Time Mooney).
- sub-packages should inheirit Prefixes tag (Ian Mortimer).
- make '-' character illegal (again) in version/release.
- use portable #!/bin/sh (Tim Mooney).
- don't erase failing build script (Tim Mooney).
- use portable mkinstalldirs (Tim Mooney).
- irix6 autodeps were dup'd (Shing-Gene Yung <shing@cz3.nus.edu.sg>).
- getservbyname needed ntohs().
- propagate "const char *" into rpmlib prototypes.
- use "original db-1.85" if available (Raw Hide glibc 2.1).
- make sure files to sign exist before asking for the pass phrase

2.5.5 -> 2.5.6:
- ultrapenguin 1.1.9 sparc64 changes.
- attempt ftp ABOR on query/verify url's.
- cache open ftp control descriptor with password.
- verify needed same realpath semantics as query.
- plug fd leak in urlGetFile().
- translate cpio errors using cpioStrerror.
- display "..?....." rather than "..5....." for unreadable files.
- run time (rather than compile time) host endian check.
- caldera patches (ray@Caldera.DE)
- added ARM patches.
- fix incorrect directory permissions using %attr/%defattr.
- permit "rpm -q --specfile ... file.spec" queries.
- strncasecmp on spec file separators (KDE has %Description).
- remove redundant md5 computation on uninstall.
- permit --rmsource --force even if sources/patches are missing.
- don't compute md5sum on non-file %config objects. (from Jos Vos)
- check arch only on RPMBUILD_{PREP,BUILD,INSTALL,PACKAGEBINARY}.
- configure.in: set default value for RPM. (Tim Mooney)
- add new Epoch: keyword just like Serial:.
- update Russian translation w man pages.
- solaris: don't attempt static link. (Tim Mooney)
- fix: timeCheck in rpm.c should be unsigned long. (Tim Mooney)
- osf: prov searches only shared libraries. (Tim Mooney)
- solaris: set PATH in prov/req scripts. (Tim Mooney)
- fix: ignore modes on symlinks. (Tim Mooney)
- sub-packages inherit RPMTAG_EPOCH (just like RPMTAG_VERSION/RELEASE).
- fix off-by-1 alloca that prevented relocating /.
- there must be a { between two % in a query format (unless %% is
  used).

2.5.4 -> 2.5.5:
- permit rpm to be built in a sub-directory (--srcdir=DIR).
- return CPIO_BAD_HEADER instead of exiting. (Scott M. Stone)
- untranslate "(none)" for auto relocating script wrappers.
- non-linux arch/os identification (Eugene Kanter).
- portable mode_t/pid_t typedefs.
- fix check for trailing / in Prefix:
- remove 2 character language name assumption.
        - add /usr/lib/rpm/find-lang.sh (W. L. Estes <wlestes@uncg.edu>)
- miscellaneous portability cruft (Eugene Kanter).
- Makefile: don't use ln -sf.
- getOutputFrom(): fix race between last read on pipe and child death
  (exacerbated in 2.5.4).
- rpm.spec: create /usr/src/redhat/* in %install.

2.5.3 -> 2.5.4:
- expand args using popt on pre-rpmReadConfigFiles arg pass.
- skip arch checks if only packaging source rpm.
- add license field to rpmpopt -qi alias.
- provides/obsoletes requires tokens that begin with alnum or _.
- non-zero exit status for verify failures.
- hpux does setreuid differently (Hermann Lauer).
- check for setreuid portably (Eugene Kanter).
- add Serbian translation (Zoltan Csala <zcsala@iname.com>).
- arch/os tables were not being initialized  for noarch builds.
- quote users/groups/filenames in --setugids.
- add Russian translation w man pages (Serguei Koubouchine <ksi@gu.net>)
- fix virtual file attribute bug that skipped all files in binary rpm.
- eliminate infinite loop with missing tmpdir (Trent Jarvi).
- os_canon for CYGWIN32_NT/95.
- rationalize autoconf detection of gzip/bzip2.
- restore backward compatible rpmrc/rpmpopt symlinks.
- update pt_BR translations (Arnaldo Carvalho de Melo).
- permit --{buildroot,timecheck,test,sign} with -tX (Toshio Kuratomi).
- fix database rebuilds with triggers (Steve Sanberg).
- diagnostic message if unreadable/short source or patch file.
- eliminate redundant close in provide/require processing.
- solaris portability patch resurrection (Steve Sanberg).
- permit autogen.sh to work on non "prefix=/usr" hosts.
- add %license/%readme virtual file attributes.
        - align "Build Host:" with other fields.

2.5.2 -> 2.5.3:
- copy changelog tags to sub-packages just before packaging.
- added EPOCH handling to supplement serial numbers
- add RPMTAG_EPOCH and RPMTAG_CAPABILITY init to 0.
- fix infinite recursion on non-ERANGE return from getcwd() during
  install (Matt Wilson).
- rm .depend for multiple builds in same tree (Will Partain)
- addFile: fix special case of "/" in %files.
- better query semantics with symlinks (Tim Mooney)
- build.c: fix incorrect check for successful open
- allow %define with leading whitespace
- use /usr/lib/rpm for rpmpopt, rpmrc, find-requires, find-provides
- added popt 'exec' functionality
- made --rebuilddb a bit more robust by checking data types
- added --freshen via popt exec stuff
- fixed spelling of expected
- updated de.po (Karl Eichwalder)
- do a better job of checking for a spec file in tarballs
  (Pavel Roskin)
- fixed --triggers alias (Michael Andres)
- added :hex query format
- fixed --querytags to display virtual tags
????? - added --triggers and --triggered by to man page, help, and usage
????? - added support for epochs

2.5.1 -> 2.5.2:
- added -bs to build just a source package
- included irix.req and irix.prov (Tim Mooney)
- copy CHANGELOG* and URL tags to all subpackages
- follow symlinks when packaging sources
- handle %files -f with no %setup (no build directory)
- fixed ugly i18n header bug
- deal with lang paths sanely when entries are missing languages
- fix bug packing /usr/doc when last file was %dir
- added --last alias
- fix :depflags query format
- Group: i18n (like Summary:)
- make --justdb install files in normal state
- %{fssizes} segv'd for packages with empty file lists
- updated HP-UX, OSF1, Irix 6.x dependency scripts (Tim Mooney)
- added arm and MachTen arch/os info
- added --filesbypkg query format
- updated README to have proper URLs
- updated rpm.spec for proper paths and cleanliness
- dependency resolution could hang when Provides: line is used in
  rpmrc (Tim Mooney)
- updated mips rpmrc entries (Alex deVries)
- version/release conditional triggers weren't ignoring the trigger
  package name at the front of the TRIGGERVERSION
- added --notriggers for -i and -e
- made --triggers a synonym for --triggerscripts
- ftp installs were trying to use /var/tmp/tmp
- allow whitespace in source/patch lines

2.5 -> 2.5.1:
- fail if sources are not regular files
- wasn't catching readLine() errors
- fixed (hopefully) temp file creation problems
- make %doc obey --test
- unlink before writing .rpms
- librpm.c: added headerGzRead()/headerGzWrite()
- set bzip2path via lib-rpmrc/configure (Toshio Kuratomi)
- added finish translation (Raimo Koski)
- prefer db_185.h to db.h (Christopher Seawood)
- included updated hpux.req (Ralph Goers)
- added aix.req (Ralph Goers)
- updated hpux.prov, osf.req, osf.prov (Tim Mooney)
- set file states for --justdb packages to "not installed"
- handle missing file states properly in -e code
- install time wasn missing for --justdb packages
- missing parameter in an rpmError() caused segfault

2.4.109 -> 2.5:
- fixed return code bug in build code
- do macro expansion before %if processing
- dep ordering returns w/ an error as soon as a prereq loop is found
- autoreqprov flag was being ignored during builds
- add autoreq: and autoprov:
- missed a few unlink() when scripts failed
- freePrefixes wasn't initialized in runScript()
- fix typo in %triggerpostun generation
- include icons in source packages
- headerGetEntry() should return count of 1 when returning
          strings plucked from i18n strings
- do not remove comments in scripts
- save/restore existing arch when done with buildarch
- copy the I18N table to the source header so i18n stuff works
- fixed multiple memory leaks in install code
- fixed bug in part recognition
- shared files weren't being handled properly in net shared paths

2.4.108 -> 2.4.109:
        - remove icons with --rmsource
        - do dependecy generation on -bl
        - check files on all packages on -bl
- integrate Jeff Johnson's memleak patches
- added OSF1 autodep scripts

2.4.107 -> 2.4.108:
        - make --clean work with no %setup
- fixed FSSIZES problem introduced in 2.4.107
- fixed search for find-requires.sh
- improved solaris autodeps scripts
- automated (somewhat) the -static flag

2.4.106 -> 2.4.107:
- --nomd5 wasn't handled properly
- updated configure.in find-req and find-prov checks (Tim Mooney)
        - make --rmsource actually work
- run postun triggers

2.4.105 -> 2.4.106:
- build: only check for non-printables in first 128 chars
- added %triggerpostun
- linux.req generates deps for shared libs
- added a CC=@CC@ to popt/Makefile.in
- handle signed return types from poptGetNextOpt() properly

2.4.104 -> 2.4.105:
- added langpatt: to rpmrc, and mark files with matches
- added some C++ cruft to rpmlib.h
- added find-requires and find-provides for hpux (Tim Mooney)
- respect LINGUAS when install package files
- added trigger support to build code
- got rid of annoying mwftw() type warning
- fixed many command line options which got broke by changes
  for non-gcc compilers
- added trigger support in install code
- added doc/triggers
- strntoul() in lib/cpio.c was returning a pointer to freed
  memory
- headerAppend() was doing a bad memcpy()

2.4.103 -> 2.4.104:
- fixed popt/Makefile.in to use CPP from configure
- use tmppath from rpmrc to for ftp'd files (rather then /var/tmp)
- autoconf files and .depend files weren't created properly during
  make archive

2.4.102 -> 2.4.103:
- need to create popt/configure during make archive
- added comments about modifictation to base popt and rpmrc files
- allow spaces in group names
- fix bug in memory allocation of special doc stuff
- Jeff Johnson's mode/dev fixes
- clean up buildroot
- be more paranoid about making temp files
- added patches from Tim Mooney which let RPM build with non-gcc
  compilers and non-GNU versions of make

2.4.101 -> 2.4.102:
- fixed spelling of "instchangelog" in lib-rpmrc.in
- fixed memory leak in headerSprintf() extension cache
- fixed memory allocation for header formatting extension cache
- added support for INSTPREFIX virtual tag for backwards compatibility
- cpio error codes were poorly defined, causing bad error messages
- generates INSTPREFIXES tag properly, and sets RPM_INSTALL_PREFIX
  and RPM_INSTALL_PREFIXn environment variables
- fixed memory leak in install code which occured when net shared paths
  were used
- don't pass net shared path to rpmInstallPackage() -- it looks
  directly in the rpmrc entries
- don't remove files in netsharedpath, even for files whose states
  are not net shared
- changed --setugids to use separate chown and chgrp programs, for
  better portability
- popt moved to autoconf
- Makefiles changed to allow building in a different directory then
  the source code resides in
- finally fixed the Build Host spacing in rpmpopt

2.4.100 -> 2.4.101:
- handle files with spaces (put double quotes around them)
        - new rpmrc setting, buildshell, can be used to set shell
          used for build scripts (default is /bin/sh)
- fix bug where macros were being improperly set for
  Patch: and Source: lines
- may use "instchangelog" in rpmrc to limit the maxmium number of
  changelog entries that are stored in the database for each package
  (-1 means store all of them)
- default instchangelog is set to 5
- headerRemoveEntry() didn't free the item's data -- this led to
     a slight memory leak when installing packages
        - implemented generic file relocations at install time
          (use --relocate <oldpath>=<newpath>, i.e. --relocate /usr=/foo)
        - added --badreloc flag to force RPM to relocate files which packages
          haven't advertised as relocateable
- fix return code on failed uncompresses in %prep
- preliminary handling of bzip2 compressed files
- differentiates between big and little endian mips
- added support for "prefixes:" tag

2.4.99 -> 2.4.100:
- fixed handling of --rebuild and --recompile
- fixed rpmlibbuild.a typo in Makefile
- fixed handling of '\' in spec files (a specific case of a more
  general bug)
- change use of "export" to work with non-bash shells
- compress the archives.  oops.
- fixed bug when there is no %setup
- added -L$(topdir)/popt to Makefile.inc

2.4.12 -> 2.4.99:
- added many more i18n strings
        - merged in large rewrite of build code, which includes the following
  changes:
            - new option --rmsource
    - all scripts can now take -p <prog>
    - more strict about %package placement and use of main package
      preamble
    - %attr(mode, user, group [, dirmode])
    - %defattr()
    - %defverify()
    - Root: is depricated.  Use BuildRoot: instead
    - "nosrc" sources arn't deleted when sources are removed
    - New tag DocDir: <dir> to set alternate doc dir (default is
              /usr/doc)
    - %doc should work as expected with buildroot, prefix, DocDir:
    - all file processing is done before any packaging
    - should work with modern patch programs (later than 2.1)
    - %patch -z <arg> same as %patch -b <arg>
    - %define only defines a macro if it starts a line
    - script prog entries are now arrays (ie with arguments)
    - standard macros: tag names, buildarch, buildos, buildarch_lc,
              buildos_lc, PATCHn, SOURCEn, PATCHURLn, SOURCEURLn, sourcedir,
              builddir, optflags
    - deprecate require_distribution, require_icon, require_vendor
    - add RPMTAG_FILEDEVICES and RPMTAG_FILEINODES to header
    - export variables in scripts
    - fixed tag:field bug
    - %lang() in %files
    - %description -l <lang>
    - Summary(<lang>):
    - fixed read_line() termination usage
- Makefile changes to shorten compiler lines

2.4.11 -> 2.4.12:
- intialize reserved portion of lead when writing packages
- fixed error messages displayed when opening the database
  fails during package installation and removal
- query format of the form '[A%{}]' would drop the static string
- fixed fix in 2.4.9 for empty packages which broke -qip on ftp URL's
- fixed arch/os numbers in lead
- added Turkish message catalog
- -e was running scripts even w/ --test was specified

2.4.10 -> 2.4.11:
- HAVE_SYS_SOCKET_H was mistakingly MACHINE_SYS_SOCKET_H in
  config.h.in
- \%description was trying to do %d expansion in query formats
- made %% work in query formats
- fixed bug in handling characters before array
- let mips build noarch packages
- --setperms would set wrong permissions in some cases (it was
  following symlinks)

2.4.9 -> 2.4.10:
- obsolete entries could cause segv's during upgrades
- sources now installed with uid/gid of process rather then
  the ids used when the src rpm was created
- don't give an error if missingok files don't exist during remove
- touched ftp code to make it coexist w/ Red Hat install better
- use rand/srand rather then random/srandom
- don't build misc directory unless it's necessary
- empty package files should be treated the same as files
  with bad magic, not as read errors
- fix bug where Prefix directory is included in file list
- sinix readdir() work-around

2.4.8 -> 2.4.9:
- fix for verification on systems where a single group id
  maps to mulitiple group names (Benedict Lofstedt)
- added 'make tar' rule for building a distribution tarball
  (Horacio Rodriguez Montero)
- fixed serial number handling in dependencies and install
  code
- make mips compatible with noarch
- fixed bug w/ printing string arrays in conditionals
- handle modern patch programs (> 2.1)
- handle packages w/ duplicate dependency names
- --noscripts didn't get handled properly for removed packages
- fixed handling of packages where %prereq creates users/groups

2.4.7 -> 2.4.8:
- added noarch build compatibilities for ppc, m68k
- fixed some minor typos (Florian La Roche)
- added Obsoletes: tag, an upgrade removes packages which
  have been obsoleted
- updated rpmdepUpgradePackage() to deal with obsoletes tag
- convertdb needed to read rpmrc
- fixed ugly bug in package ordering
- archivesize tag was incorrect for packages with hard links
- moved popt into a separate library
- directory created with %doc is now name-version (dropped
          the release)
- added buildarch/buildos macros
- added %ghost file option
- updated linux.req to only find requirements for exectuable files

2.4.6 -> 2.4.7:
- had some wrong month lengths in changelog date parsing
- updated fine-requires (Linux version) to add lines for shell
  scripts (Donnie Barnes)
- didn't package / properly
- pre/post script processing had some erroneous free() calls
- fixed typos for HP archs in lib/rpmrc.c
- uname() results should go through *_canon tables before anything
  else happens
- set -x in debug shells, not -xs

2.4.5 -> 2.4.6:
- added os_canon entries for BSD/OS and NextStep
- replaced include of <malloc.h> with includes of <stdlib.h>
- fixed md5sum of source packages w/ a buildroot is used
- fixed bugs installing version 1 packages
- remove hyphens from uname() result (specifically for HP-UX)
- hacks to recognize architecture under parisc
- RPM_INSTALL_PREFIX wasn't being set properly (this should be
  fixed now)
- replaced temporary file creation to be race-condition safe
- prerequisites may not specify versions

2.4.4 -> 2.4.5:
- call getpwnam()/endpwent() once before a chroot(), forcing name
  service shared libs to be loaded from outside of the root path
- added vesrion stamp to lib/misc.o (and librpm.a by extension)
- fixed config.sub, config.guess to recognize i686
- ARCHIVESIZE tag didn't get filled in properly, breaking progress
  meters

2.4.3 -> 2.4.4:
- restore working directory after installing a package w/ a chroot
- dump the package stack when a dependency loop is encountered
- when a user/group lookup fails, end*ent() and retry
- fixed broken --scripts argument (it was --s2)
- only display the packager and url in -qi output if they have defined
  values
- print "(not installed)" as the install time for -p queries rather
  then "not a number"
- almost completely rewrote rcfile parsing; I'm sure this will
  break things eventually but it's much more flexible now
- added buildarch/buildos compatibility tables, listed values
  in --showrc
- added cpio archive building code; GNU cpio is no longer used!
  packages created w/ rpm 2.4.4 and later cannot be installed with
  rpm 2.4 - rpm 2.4.3 however (version of RPM before 2.4 will
  work fine, however). An "error -2 reading header" happens when
  this is attempted
- removed cpiobin from rpmrc
- added rpmrc "provides" tag to allow easy fulfillment of
  automatically generated dependencies
- look for random() in libm if it can't be found be default
- fixed problems in Solaris's autodeps stuff (Eric Mumpower)
- --setperms should work properly on directories now
- --justdb on install, upgrade, and erasure causes a database
  update w/o the filesystem being touched
- fixed version comparison of a package w/ a serial tag against
  a package w/o one
- added BuildArchitectures: tag to spec file to enable builds
  for alternate/multiple architectures
- look for random() in -lucb
- changed the licensing terms for librpm to allow redistribution
  under the LGPL
- applied man page changes from Alex deVries
- configure.in builds up LIBS by appending (Benedict Lofstedt)
- rpm2cpio reported wrong zlib error string
- removed \n from (none) generated by query format code
- queries of fssizes w/o fsnames didn't work (Till Bubeck)
- added --noorder option to skip package reordering (Elliot Lee)

2.4.2 -> 2.4.3:
- implemented install time prerequisites
- repaired %{#TAG} query format
- implemented ternary operator as query expression
- fixed --scripts to only print information on scripts which
  are present
- check symlink() return for < 0, not != 0 (Bob Tanner)
- uses chroot() for installs --root option
- archive expansion doesn't create new devices or symlinks when
  the proper files already exist
- added -p to %post (etc) to specify the program which a script
  is run through
- if -p is used w/ an empty script, the specified program is
  executed directly
- the -p argument (or /bin/sh) is automaticall added as a prereq

2.4.1 -> 2.4.2:
- completely rewrote queryformat code
- added fsnames, fssizes virtual query tags
- added rpmdbFindByHeader() and rpmdbFindByTag() public functions
- added rpmfilename tag to rpmrc to define the filename format to
  use for binary packages (note the rpmdir is prepended to it)
- used pclose() instead of fclose() in -t code
- updated man pages
- changed "struct rpmdb" to "struct rpmdb_s" for C++
- netsharedpath entries shouldn't match partial directory names
  anymore (a nersharedpath of /usr/lib shouldn't affect /usr/libexec)
- don't backup config files on netsharedpaths (take 2)
- added "day" query format which is like date, but doesn't print
  any time
- added --changelog alias to query a packages changelog entry
- added mntctl() support for AIX (I think, I can't test this)
- fflags query type displays 's' for specfiles, 'm' for missingok
  files, and 'n' for noreplace files
- implemented %config(missingok) flag in install
- added --allfiles flag for -i and -U, which forces all files (even
  missingok files) to be installed
- implemented %config(noreplace) for the install, but it hasn't
  been tested in any way
- added i18n support to headers
- added ppc/rs6000 differntiation for AIX
- all IP* from uname() is changed to just IP
- IP is considered the same as mips (not sgi)
- added IRIX64 OS, it's compatible w/ IRIX

2.4 -> 2.4.1:
- take advantage of lchown() if it's available
- fixed configure script to assume chown() doesn't follow symlinks
  if lchown() isn't available and configure is not being run as root
- more header file changes for AIX
- added :shescape query format type for strings, which prints strings
  which will survive a single level of shell expansion
- fixed --setperms and --setugids to handle empty packages and
  packages with odd filenames
- include <sys/time.h> before <sys/resource.h>
- include "miscfn.h" first in every file which needs it
- created noarch architecture which everything is compatible with
- fixed group verification (Benedict Lofstedt)
- don't backup config files on netsharedpaths
- added info on --build{arch|os} to --help and usage messages

2.3.11 -> 2.4:
- changed RPMNLSDIR directories to and @datadir@ to better
  conform with autoconf
- set RPM_INSTALL_PREFIX environment variable when running
  verify scripts
- beginnings of SCO support (though I suspect it will take one
  or two more iterations to get it right)
- switched to CVS and updated some Makefile rules
- look for gethostbyname() instead of gethostname() in -nsl
  (this could break some things)
- added check for strcasecmp() in -lucb on systems which don't
  have strcasecmp() in libc
- don't build -static on hpux10
- don't try and NLS empty strings
- changed index() call to strchr() in macro code
- include <time.h> in build/spec.c for various platforms
- added update-po rule to po/Makefile.in
- updated de.po (thanks to Karl Eichwalder)
- rpmFindByFile() removes trailing and duplicate /'s
- made many string in rpm program (though not yet in the various
  libraries) translatable
- eight character user names could break -qlv
- requirements which begin with a leading / require files (in
  the database!) instead of packages
- clean up conflictsindex during --rebuilddb
- get path to gzip from /usr/lib/rpmrc rather then just hoping it's
  in the path
- use dbpath for error messages with include database path in
  their text
- don't set owner/group if binaries installed by "make install"
- include <strings.h> on SCO
- don't use cpio when installing packages <gulp>
- fixed bug which affected dependencies on the Alpha
- made '=' work for long arguments (the switch to popt broke this)
- handle solaris systems better
- complain if critical rpmrc variables (cpiobin, gzipbin, etc) aren't
  set anywhere
- allow --dbpath for --rebuilddb
- added check for systems whose chown() follows symlinks. If configure
  is run as root, this should get it right, otherwise it assumes
  chown() does not follow symlinks. You can use --enable-broken-chown
  to force configure to think chown does indeed follow symlinks.
- if chown() follows symlinks, we don't chown() symlinks during cpio
  unpacking and we don't verify the owner or group of symlinks
- added packager and url to default -qi output
- look for <sys/select.h> and use it if it's there (for AIX)

2.3.10 -> 2.3.11:
- fixed newlines in --scripts output
- fix handling of source files with bad owners/groups

2.3.9 -> 2.3.10:
- --allmatches handling in -e broke some cases
- new predefined macros: %SOURCEn %PATCHn %SOURCEURLn %PATCHURLn
- fix anomoly with %files -f <file> and %doc
- ignore config bit when it's set on directories (which allows
  users to replace directories with symlinks)
- don't set config bit on directories
- strip trailing slashes from files (during build)
- %tags are now case sensitive (macros too)

2.3.8 -> 2.3.9:
- reworked %setup to allow multiple -a and -b options, which
  should noticeably ease the task of unapcking multiple tar files
- md5 sum's were calculated incorrectly on big endian machines
  from 2.3.2 through 2.3.8 -- this was fixed and some hacks were
  done to keep verification working
- updated README
- added --allmatches to allow erasing multiple versions/releases
  of a package
- changed ftp URL's to use \r\n, not just \n (this should let RPM
  work w/ some picky (but rfc compliant) ftp servers
- fix problem where parts at end of spec file were dropped
- added %config(noreplace missingok) (build-side)
- simple spec file macros
- should now process entire file list before failing

2.3.7 -> 2.3.8:
- added -t? options to build packages from tarballs which contain
  .spec files instead of from the .spec files directly
- fixed error in man page where ftp URLs are discussed
- don't strlen(NULL) in headerAddEntry()
- minor portability changes
- stopped building oldrpmdb.c as part of rpmlib
- added Makefile rule for building rpmconvert (which is almost
  never needed) -- this isolated gdbm dependence to this target
- fixed checking of popt stack overflow
- --requires shouldn't imply -q
- fixed error message issued when a groupname does not exist
- fixed but in changelog processing which made it hang on '*' in a
  changelog entry
- generate S_ISSOCK and S_ISLNK macros on systems w/o them
- "rpm --erase" wasn't returning proper error codes w/ package
  removal failed

2.3.6 -> 2.3.7:
- fixed nasty memory link in -Va
- configure checks for -lnsl explicitly rather then linking it
  to -lsocket (for NCR SysVR4)
- configure checks for dirent.h
- modified glob.c to include config.h and use HAVE_DIRENT_H
- cleanup of LIBS/LIBPATH mess a bit more

2.3.5 -> 2.3.6:
- -Vf uses realpath() now
- -Vp lets you use --ftpproxy, --ftpport
- changed popt format, breaking all popt alises :-(
- added ability to alias character arguments to popt
- moved --requires, --info to /usr/lib/rpmpopt
- RPM is more forgiving of blank user names (dumb)
- popt searches for aliases in the correct order now
- cleanup query code to handle missing uid lists better
- cleanup up configure.in a tad

2.3.4 -> 2.3.5:
- %{#TAG} in query format prints the array length
- cleanup up protoypes in rpmlib.h
- let -Vp work on URLs
- don't set umask(0) anymore -- that confused programs which
  link against rpmlib quite badly
- moved print out in "rpm -v -i" to occur after any warnings
  to pretty up the output a bit
- added default optflags for powerpc
- run shell for post/pre scripts in debug mode with -sx for
  some silly shells
- installing source packages with --root checked for the
  sources/specs directory to exist outside of the root -- fixed
- modified toplevel Makefile to run dependency generation only
  against referenced sources
- array size mismatches in --qf should send error to stderr
- tried to make the locale stuff a bit more portable (again)
- reworked the owner/group setting on installs to be more generic
  (in preperation for getting rid of cpio)
- made verify verify owner and groups by name rather then by id -- if
  the symbolic names aren't available use the uids
- cleaned up relocateFilelist() and related code thanks to
  new header introduced in 2.3.3 -- this could break relocateable
  packages but they seem okay
- fixed a bug which could cause relocateable packages to not get
  relocated -- I think this bit some people during hard drive
  installs of all things (Jason Salopek pestered me consistently
  enough to keep this on the front burner for me)
- removed FILEUIDS and FILEGIDS from the header in the database --
  we never used it and it jsut wasted room
- convert uid/gid lists in v1 headers to symbolic names

2.3.3 -> 2.3.4:
- %changelog processing
- fixed broken requires/conflicts parsing for spec file
- vastly improved --rebuilddb's robustness
- fixed misplaced free() (only affected inconsistent databases)
- added conflicts documentation to docs/dependencies
- using multiple query formats has them all concatenated
- removed stdin based query and verify selectors
- installs rpmpopt in libdir
- moved --provides and --scripts to rpmpopt
- added --setperms, --setugids
- incorporated newer de.po from Karsten Weiss
- --resign/--addsign was broken in 2.3.3 from popt conversion

2.3.2 -> 2.3.3:
- Ripped out header internals and redid them. Any compatibility
  problems this causes are *bugs* as it should be completley
  transparent. If this works the devil better buy some Prestone (TM).
- Use "cp -pr" instead of "cp -ar" for %doc expansion
- use <string.h> instead of (non standard) <strings.h> in some places
- look for non-POSIX (broken) chmod
- include local copies of glob/fnmatch
- removed getopt() check from configure.in
- fixed bug in ftp code which prevented proper logins to some sites
- switched to popt from getopt, which allows command line aliasing
- read initial aliases from /usr/lib/rpmpopt then /etc/popt and
  $HOME/.popt
- cleanup up rdev verification (only verifies device files, checks
  device related mode bits as well)
- fixed allocation of temporary paths (Eugene Kanter noticed this)
- made tools/dumpdb read the rpmrc so it can find the database
- added --nomd5 for -V and -K
- don't assume mkdir -p will succeed if the dir exists
- use RPMNLS* defines to avoid header file conflicts
- bunch of minor cleanups to avoid warnings on other OS's

2.3.1 -> 2.3.2:
- fixed bug in new rpmVersionCompare() which made it worse then
  useless (thanks to Norbert Kiesel)
- fixed silly message

2.3 -> 2.3.1:
- changed --help routing to have intelligent line wrapping
  to make i18n efforts easier
- NLSDIR should be used for nls catalogs, not a hardcoded path
- NLSDIR should be in share, not lib
- renamed sweedish catalog from se to sv
- added german catalog
- treat RPM_CHAR_TYPE as RPM_INT8_TYPE for queries
- made rpmEnsureOlder() internal to lib/install.c
- added rpmVersionCompare() to compare version/release/serial numbers
  for packages -- returns like strcmp()
- stdout/stderr were getting closed after running a verify script
- relocting packages didn't work w/ the packages contained the
  directory which was it's prefix

2.2.11 -> 2.3:
- replaced putenv/setenv which calls which malloc() buffer -- these
  are memory leaks, but the functions are only used between a fork()
  and exec() so it doesn't matter
- created directroies are stamped with mtime from the file list

2.2.10 -> 2.2.11:
- fixed some include file problems for FreeBSD
- fixed find-provides script for Linux (silly typo)
- -qvl didn't print out sticky bit
- linux.prov won't print provides info for symlinks which point
  to libraries w/ proper sonames

2.2.9 -> 2.2.10:
- changed how installArchive() handles running out of gzread()
  bytes while the child is still alive
- changed tag for Alpha's to "alpha" from "axp" <gulp>
- made ./configure look for --quiet support in cpio
- netsharedPath's were having mkdir()'s done on them and had
  bad interactions with rooted directories
- made -qp accept '-' to query the package on stdin
- dependency checking was broken when no database was being used
- don't *ever* let cpio make directories -- we do a better job
  (esp because we don't kill symlinks!)
- plugged memory leaks in upgrade (again thanks to mpr) -- install,
  erase, upgrade, query, and verify all seem to be leakproof
- use select() rather than busy waiting in cpio_gzip()
- use half as much temp space during package assembly
- fail if spec file check fails
- changed canonical name for 68k to m68k (sorry)
- integrated FreeBSD changes from Jared Mauch
- integrated Irix changes from Hermann Lauer
- i18n support can be disabled w/ configure by --disable-nls
  (thanks to Remy Card)
- integrated more AmigaOS patches, played with configure some
  more to allow cross compiling (Kristof Depraetere)
- cleanups to rpm2cpio (closing the gz stream) (Elliot Lee)
- made find-provides return filename for libs w/ no soname

2.2.8 -> 2.2.9:
- fixed typo in default rpmrc
- made getBooleanVar() a bit better
- added triggers to package builds
- tagged spec file in source package file list
- added %verifyscript (controlled by --noscript, -v flags)
- changed pkgReadHeader() mechanism to be more generic
- added find-provides for Solaris, made find-provides setup
  more generic (w/ configure.in picking the right one)
- fix -Q
- The Great Renaming
- use external OS specific script to generate requires lines
  (should work with ld.so 1.8.x) (find-requries)

2.2.7 -> 2.2.8:
- added --ftpproxy, --ftpport (and wrote about them in rpm.8)
- added --nodeps to man page
- added --showrc to man page
- added conflict checking (use conflicts tag, which looks
  just like the requires tag)
- fixed RPM's return code when package removal fails
- cleaned up lib/install.c a bit for readability
- plugged a bunch of memory leaks thanks to mpr -- install,
  uninstall, verify, and query all seem clean now
- added support for trees shared over a network via netsharedpath
  in rpmrc
- don't exit when there is an unknown option in an rpmrc, just
  give an error and continue
- tried once again to get things working properly with 2.1's
  write behavior
- added -E option for %patch
- added UltraSPARC support to lib-rpmrc
- moved default topdir and optflags settings to lib-rpmrc from
  /etc/rpmrc
- removed /etc/rpmrc from standard distribution
- use separate chgrp/chown commands in %setup macro
- kill(2) arguments were backwards in lib/install.c
- fileFile logging needed stdio to handle NULL args to %s
- default docdir (for %doc macro) set in lib-rpmrc rather then
  hardcoded
- removed some of the \n from args to error() [though many are
  still left]
- uninstall should fail if the preuninstall script fails
- --root works with --initdb now

2.2.6 -> 2.2.7:
- applied lots of portability patches
- builds on Solaris machines now!
- will build w/o i18n support if GNU gettext isn't installed
- added inet_aton, setenv functions for libmisc
- added Sun4c, Sun4m architectures
- use vfork() if fork() doesn't exist (for AmigaOS)
- look for GNU cpio, complain if it doesn't exist at build time
- put path for GNU cpio in /usr/lib/librpmrc
- install rpm.shared if rpm wasn't built (for Solaris)
- readHeader() in librpm.a should work on sockets (which may
  return partial reads)
- package file query (-q -p) accepts ftp:// style URL's
- if gzread returns 0 bytes (at EOF), don't call write w/ 0 byte
  argument as it's behviour isn't portable
- fixed -Vp behavior (doesn't seg fault w/ packages have dependencies)

2.2.5 -> 2.2.6:
- added --rebuilddb to rebuild database, updated man page
- fix fd leak in md5sum
- fixed group cache bug

2.2.4 -> 2.2.5:
- if rename() for moving .spec file from SOURCES to SPECS fails,
  try copying it instead
- -h and -v work for source package >= V2
- -h output is much smoother now
- new AutoReqProv: tag in spec file can disable automatic
          require/provide generation
- fixed md5sum problem on big endian machines in a way that's
  mostly backwards compatible; this hack will be removed someday
- added :fflags tag
- fixed a couple of minor memory leaks in lib/install.c
- --test for building

2.2.3 -> 2.2.4:
- only remove docdir if %doc occurs
- allow -R to %patch
- moved to use GNU autoconf, though it probably isn't perfect yet
  (thanks Kristof Depraetere)
- spec file sanity: no - chars in version or release,
  must be a regular file :-)
- version specifications for requirements can use "-<release number>"
- default lib path, tmp path, topdir, and /usr/lib/rpmrc get set
  by configure script relative to --prefix

2.2.2 -> 2.2.3:
- fixed script file md5 checking when files are in a root
- implemented proper strdup/free logic for dependency conflict
  lists
- strip leading directories from ldd output
- fix non-null-terminated readlink() result
- fixed sscanf() in ftp code to use proper types

2.2.1 -> 2.2.2:
- added functionality to rpmlib to suggest resolutions for
  dependency problems
- fix stupid allocation problem in exclude/exclusive stuff
- fix nasty bug where pointers in to the header were getting
  stale after some realloc()s in addEntry()
- ignore OS tag for v2 packages -- it was wrong anyway
- match shared libs on ".so" rather than ".so."
- skip blanks from objdump for auto-provide
- if objdump gets us _end, provide the file name
- do not ldd non-regular files
- do not pass leading "/" to ldd
- fix ExcludeOs: and ExclusiveOs:
- -V verifies dependencies, can be controlled with --nodeps
  and --nofiles
- added information on --nodeps to usage messages
- implement --timecheck and rpmrc timecheck:
- implement -bl
- catch duplicate files in file lists
- some random sanity checking on the file list

2.2 -> 2.2.1:
- made rpmRemovePackage() print message in verbose mode
- added support for ftp://user:pass@machine.org/ URL's
  during installation - the password will be prompted for
  if only the user is given, and anonymous ftp will be used
  it both user and password are omitted (as before)
- Remove Exclusive: Exclude:
  Replace with: ExclusiveArch: ExclusiveOs:
        ExcludeArch: ExcludeOs:
- fixed dependency cheking for packages that are installed
  at the same time
- fixed version number dependency checking
- fixed problem installing v1 source packages (thanks to
  Nikita Borisov)
- fixed minor spelling/spacing problems (Nikita Borisov)
- assume all v1 packages were made for Linux so OS check works
- began to implement proxyftp, though it doesn't work yet
- fixed spacing when reporting dependency conflicts
- fixed bug where a long name (uname()) was mapping to itself

2.1.2 -> 2.2:
- don't fail, and do report, if -K can't find a PGP key
- handle file names with quotes and spaces when passed to ldd
  (still can't have spaces in %files)
- do not allow Buildprefix: in sub packages
- removed require_group from rpmrc -- groups are always required
- removed arch_sensitive from rpmrc -- always on
- removed docdir from rpmrc -- always /usr/doc
- fixed nasty bug in installing packages with large filelists
- made -R work
- --provides and --requries don't print anything if no information
  is present (rather then (none) )
- -qi prints Summary now
- changed Buildprefix: -> Buildroot: (spec file, rpmrc)
  --buildprefix -> --buildroot (command line)
  RPM_BUILD_PREFIX -> RPM_BUILD_ROOT
(%prep, %build, %install, %clean)
  sorry :-)
- allow Prefix: for sub-packages
- allow packager: in rpmrc
- --arch and --os are now --buildarch and --buildos
- magic arch/os handling through arch_canon and os_canon
  see /usr/lib/rpmrc (in short: uname short_name num)
- removed build_arch: from rpmrc
  Replacing it is buildarchtranslate: and buildostranslate:
  to allow building with arch/os other than what uname() returns.
  Can still be overriden with --buildarch and --buildos
- rpmrc keywords are now case-insensitive
- check os at install time
- check return code from gzread() during installs
- implemented os_compat
- added arch_compat and os_compat information to --showrc (the
  changes needed to do this removed any lingering questions about
  the efficiency of the compat lookups for large tables or tables
  with loops -- it should all work fine)
- made -u (--uninstall) exit with an error and not do anything
- added --ignoreos
- fixed error message given when a file is missing
- fixed hashing when multiple packages are being modified
- changed man page for readability (thanks to Joseph L. Hartmann, Jr)

2.1.1 -> 2.1.2:
- fixed error message for unrelocateable packages
        - automatic shared lib provides now work with buildprefix
- fixed dependency checking during upgrades to work if the
  package wasn't previously installed
- clean up temp file after signature check
- dependencies weren't looking through packages that were
  being installed at the same time quite right

2.1 -> 2.1.1:
- fixed -qi query format

2.0.11 -> 2.1:
        - added --requires, --whatrequires, --provides and
  --whatprovides queries
- using a string array tag in a queryformat results in every
  item in the string being printed out with spaces in between
  (though this behaviour will probably go away shortly)
- all packages are ftp'd before any are installed (required to
  do proper dependency checking)
- if only source packages are being installed, the database is
  never opened
- automatic shared library require/provides tags generated
- added --nodeps flag for install and uninstall
- added dependency checking for installs and uninstalls
- misc fixes to compile with glibc
- use PGPPATH if set (and no pgp_path: in rpmrc)
- remove pgp_pubring, pgp_secring stuff
- new extensible signature
- signature section supports multiple signatures
- --addsign to add a signature to a package
- PGP key no longer limited to 1024 bits
- always do at least an MD5 "signature"
  as a result, -K will always tell you something
- signatures now include a simple "header+archive size" check
          just calling readSignature() checks this
- --nopgp (with -K) to skip PGP check, just do MD5
- allow '#' comments in preamble and %files section
- fixed -qsv to print both the states and the file information
- added --dump option to query to print all file attributes
- installs with --root use the /etc/passwd and /etc/group from
  the target directory
- added --initdb to aid in database initialization
- --queryformat can print items of type INT8
- "sourceless" packages with nosource: and nopatch:
- [] now allows interation through query formats
- '-' flag for query tags removed
- :date and :perms supported as query format specifiers
- new rpmrc entries "arch" and "os" to override
- --arch and --os on the command line to override
- arch and os are now strings in the package header
- added arch_compat handling in /etc/rpmrc
- added build_arch to /etc/rpmrc
- support arch as string
- added --ignorearch option
- Prefix: in spec file to specify default installation prefix
- rpmrc and command line may be used to override the path
  used for the rpm database
- relocatable packages get installed properly
- added support for --prefix and RPM_INSTALL_PREFIX environemtn
  variable
- added dependency checking for version numbers
- added correct dependency checking for upgrades
- added :depflags query format flag
- changes --provides, --requires, and --scripts queries to use
  queryFormats

2.0.10 -> 2.0.11:
        - fixed chmod(symlink) bug (since 2.0.9)

2.0.9 -> 2.0.10:
- fixed the fix to rpm -q <num> bug
  to query by number you now need --querybynumber
- made arch_sensitive on by default
- handle # comments in preamble
- don't barf if we can't canonicalize the hostname during builds
- fixed --verify with --root

2.0.8 -> 2.0.9:
- %files -f <file>
- prelim Require/Provide handling
- prelim strict checking of spec file
- removed some bash-isms
- fixed globbing/root bug
- fixed rpm -q <num> bug
- fixed ftw() related bug where symlinks were being
  followed in %files rather than just being noted!!
- pass "upgrade" arg to pre/post scripts when upgrading
- use PATH to find cpio when installing
- fixed rpm.magic, added sun4, mips, 68k, sgi, sunos, solaris
- added %attr(mode owner group) feature to file list
- fixed dumb %verify() parse bug

2.0.7 -> 2.0.8:
- explicitly turn off ASCII armor when running PGP
- fixed --noscripts logic, which was on by default and
  off if you specified it!
- uses a temp file to pass filenames to cpio in case when
  their are more then 500 filenames in a package
- added --rcfile
- fixed problem with $HOME/.rcfile not being read
- undocumented --search, --where, --keep-temps which
  will probably won't be implemented in RPM 2.x anyway

2.0.6 -> 2.0.7:
        - builds now set umask 022 for all scripts
- queries relative paths correctly (thanks to Johnie Stafford)
- fixed error codes for failed installs
- don't add NULL entry to group index for packages that don't
  have group information, add it to the "Unknown" group instead
- added --scripts query option
- added --noscripts for installing and uninstall without using
  the pre/post scripts
- "rpm -qd" and "rpm -qc" work properly now (they didn't imply
   -l before)

2.0.5 -> 2.0.6:
- internal changes to error messages

2.0.4 -> 2.0.5:
- added support for generic querying
- added --querytags option
- updated man page for above two
- short-circuit got added before 2.0.5, but I don't know when
- query and installs should now return 0 on success and nonzero
  otherwise (rpm -i should return the number of packages that
  failed actually)
- made rpm -qa fail if extra arguments are passed to it

2.0.3 -> 2.0.4:
- added support for PowerPC, and OSF mklinux ports
- added --resign
- added --recompile
- added verbose error messages from Tyson Sawyer
- rpmconvert won't overwrite an existing database
- won't core dump querying old format source packages
- freed minor memory leak
- more descriptive error messages during build
- added support for not installing documentation

2.0.2 -> 2.0.3:
- added support for 686, 786, 886, 986

2.0.1 -> 2.0.2:
- fixed ftp.c to return an error code when select timeouts
- added basic NLS support, along with a Sweedish message catalog
  (thanks to Michael Nyquist)

2.0 -> 2.0.1:
- hashing and percentages no longer SIGFPE on 0 byte packages
- when an ftp fails, install.c no longer tries to install the package
- uses /var/tmp rather then /usr/tmp during for ftp space
- added debugging messages to ftp.c
- fixed some mistakes in the PGP section of the man page
- added mdfile prototype to rpmlib.h - the Python module wants this
- fixed struct oldrpmlead to align properly on the alpha

2.0 - everything done :-)

2.0b -> 2.0c:
- an incredible number of changes - I won't bother trying to
  list them

2.0a -> 2.0b:
- moved build stuff to main rpm command, though --rebuild is still
  not supported
- install should work, although replaced files are not marked as
  replaced
- %doc macro fixed
- --percent, --hash work for installs
- converted databases and packages get the file list in the correct
  order now
- none of this is well tested
- rpms are output to proper dirs (which are always arch sensitive)
- basic rpmrc functions are implemented, full parsing is present
- changed error messages for missing files to include full path
- fixed detection of Alpha's

1.4.6 -> 2.0a:
- completely rewritten in C
- verification missing
- build functionality not in main rpm, in rpmbuild instead
  (this will be corrected)
- an awful lot is still missing - this is an ALPHA release

1.4.5 -> 1.4.6:
- fixed rpmq problem with packages w/o groups (old RPM's would do this)
- fixed uninstalling with --root

1.4.4 -> 1.4.5:
- added support for mips processors
- added support for osf1 and irix os's

1.4.3 -> 1.4.4:
- fixed bug in arch detection code which caused i386 failure

1.4.2 -> 1.4.3:
- added tokens for SPARC, MIPS, PowerPC, and 680x0 architectures
        - fixed sparc arch, added arch sanity check

1.4.1 -> 1.4.2:
- added --root to man page, usage, and help messages
- added a " " to the "Creating directory" debug message in install.pl
- make --rebuild fail on binary packages
- don't output prep/build/install sections if there aren't any

1.4 -> 1.4.1:
- fixed man page
- updated corruption messages to not mention --rebuild
- added RPM_PACKAGE_VERSION and RPM_PACKAGE_RELEASE variables
  at build time
- no longer allows installing binary packages across architectures
- fixed handling of symlinks marked as config files

1.3.2 -> 1.4:
- make -v the default when using -b and --rebuild
- added %postbuild as an alias for %clean
- added gendiff
- added groups file installed in /usr/lib/rhs/rpm
- made usage message different and more concise then the --help message
- added --version option
- updated man page
- changed C build tree for concurrent building on multiple architectures

1.3.1 -> 1.3.2:
- add -b option to %patch
- fixed install/chroot temp file deleting

1.3 -> 1.3.1:
- fixed bug when doing md5 of erased config file during rpm -u
- fixed spec file searching

1.2 -> 1.3:
- added --search and --where options
- multiarchitecture support
- added --rebuild option
- started C rewrite - rpmq (query options only)

1.1 -> 1.2:
- preuninstalls weren't getting handled properly
- Alpha architecture is now recognized and builds are allowed
- the database open is checked for success before continuing
- rpm -b? checks the SPEC files for package names given as args