4.0.2 -> 4.0.3 - cpio mappings carry dirname/basename, not absolute path. - fix: check waitpid return code. - remove support for v1 src rpm's. - reposition callbacks with ts/fi in cpio payload layer. 4.0 -> 4.0.[12] - add doxygen and lclint annotations most everywhere. - rip out rpm{get,put}text, use getpo.sh and specspo instead. - 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). - order packages using tsort, clipping PreReq:'s in dependency loops. - fix: avoid calling getpass twice as side effect of xstrdup macro (katzj@linuxpower.org) (#17672). - handle possible db3 dependency on -lpthread more gracefully. - fix: more (possible) xstrdup side effects. - 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. - verify MD5 sums of payload files when unpacking archive. - fix: runTriggers was not adding countCorrection. - add cscope/ctags (Rodrigo Barbosa). - remove getMacroBody() from rpmio API. - hide libio lossage in prototype, not API. - add brp-strip-shared script . - better item/task progress bars . - add support for SHA1 as well as MD5 message digests. - add rpmGetRpmlibProvides() to retrieve rpmlib(...) provides (Pawel A. Gajda). - add support for unzip - 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. - fine-grained Requires, remove install PreReq's from Requires db. - fix: duplicate headerFree() on installBinaryPackage() error return. - fix: segfault on exit of "rpm -qp --qf '%{#fsnames}' pkg" (#20595). - hpux w/o -D_OPEN_SOURCE has not h_errno. - syntax to specify source of Requires: (PreReq: now legacy). - md5 sums are little endian (no swap) so big endian needs the swap. - 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 - 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: segfault on build path, ignore deleted drips. - gendiff: generate ChangeLog patches more intelligently (#22356). - 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. - 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 (#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. 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 ) - 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). 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. - translate rpm.8 man page (Peter Ivanyi ). - 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 ). - internalize --freshen (Gordon Messmer ). - 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 . - updated sv.po from . - 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 ). - 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). - 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 ) - 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) - 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 ) - 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 ) - 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) - use /usr/lib/rpm/mkinstalldirs if mkdir -p fails. - more portable dirent handling (Hermann Lauer). - add Slovak translation (Stanislav Meduna ) - 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 ). - 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 ) - 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 ). - arch/os tables were not being initialized for noarch builds. - quote users/groups/filenames in --setugids. - add Russian translation w man pages (Serguei Koubouchine ) - 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 =, 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 - 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: 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 same as %patch -b - %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 - Summary(): - 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 with includes of - 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 before - 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 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 on SCO - don't use cpio when installing packages - 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 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 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 instead of (non standard) 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" - 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 "-" - 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 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 - prelim Require/Provide handling - prelim strict checking of spec file - removed some bash-isms - fixed globbing/root bug - fixed rpm -q 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