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