2.4.100 -> 2.5 - 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 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.11 -> 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