RPM 4.11.0 Release Notes
- Download information
-
Summary of changes from RPM 4.10.x
- General bugfixes and enhancements
-
Package building
-
API changes
- New interfaces
-
Other interface changes
- Internal improvements and cleanups
-
Build process
- Compatibility notes
- The original 4.11.0 release contained such a dangerous regression that it
has been pulled out of distribution permanently. Use RPM 4.11.0.1
instead.
Summary of changes from RPM 4.10.x
General bugfixes and enhancements
- Fix missing error on --import attempt on a non-key file (RhBug:869667)
- Fix missing error code on unparseable signature in packages, regression introduced in rpm 4.10.0
- Fix --setperms regression introduced in rpm 4.10.0 (RhBug:881835)
- Fix several cases of redundant backups on %config files/symlinks
(RhBug:597689, RhBug:662706, ...)
- Fix several cases of missing backup when %config file/symlink is replaced
by a file of different type or a directory (RhBug:445202)
- Fix redundant %config backups when on-disk file/symlink content is
the same as in replacing (ie new) package, even when digest algorithm
changes (RhBug:597689 and others)
- Fix several cases of missing backups on %config symlinks
- Fix backup of shared %config files causing overwriting the backed up
content with new package contents (ie destroying the backed up data)
- Fix locale dependent behavior in rpm2cpio.sh (RhBug:878363)
- Fix disk-space accounting wrt intermediate space requirement during transaction (ticket #175, RhBug:872314)
- Fix disk-space accounting wrt inodes
- New --undefine cli switch for undefining macros (related to RhBug:876308)
- New --licensefiles cli switch for querying license files
- Add $RPM_CONFIGDIR/macros.d/ directory to default macro path (RhBug:846679)
- Only create the first instance of a file shared between multiple packages:
faster installs, improved timestamp verification behavior, and avoids
pathologies when disk-space is low
- Detect and report attempts to replace directories with a non-directory
as file conflicts (related: RhBug:447156)
- Detect and report attempts to replace directory symlink with a directory
as file conflicts
- Detect and report some cases of conflicting files accessed through
different symlinks
Package building
- New --noclean and --nocheck cli-switches to skip %clean and %check
stages of build
- New %autosetup (and %autopatch) macros for fully automating
unpackaging of sources and application of patches, either with plain
'patch' or a number of DVCS systems (git, hg, bzr, quilt...) (ticket #54)
- New built-in %dirname macro
- Fix rpmspec --parse to not require sources and patches to be present
- Dont silence patch by default (RhBug:678000, RhBug:773503)
- Permit non-existent %ghost directories to be packaged (RhBug:839656)
- Report the actual reason on archive creation failure again
- Avoid unnecessary error on rpmbuild --addsign when no packages were created
- Track payload file size limit for src.rpm's too (RhBug:833427)
- Warn on apparent content-type mismatches in packages (eg 32bit binaries
included in a package for 64bit architecture)
- Debug information sub-packages renamed to -debuginfo to match common
distro practises
- Fix bogus "unclosed %if" error when %include is used in spec conditionals
- Fix %license as a %files list virtual attribute
- New "special" %license with non-absolute path (similar to %doc) to
allow easily separating licenses from normal documentation (ticket #116)
- Make double-quoting work for special %doc and %license for consistency
with rest of %files section (ticket #858)
- Accept "owner" as an alias to "user" %verify attribute (RhBug:838657)
- Warn about invalid %changelog dates (eg wrong day name) (RhBug:843525)
- PrePreq tag no longer accepts extra qualifiers (such as "post")
- Requires tag no longer accepts "prereq" as an extra qualifier
- Detect missing argument to %include
- Report file name and spec line number on %include errors
- Report starting line for unclosed %if constructs
- Report the actual unknown option instead of ? in parametrized macros
- Line continuations can now be arbitrarily long
- New ELF dependency generator option --no-fake-soname to prevent
emitting soname provide when DSO does not set one
API changes
New interfaces
- New rpmstrPool object + associated functions for efficient string storage &
lookup:
- Pool lifetime: rpmstrPoolCreate(), rpmstrPoolFree() and rpmstrPoolLink()
- String insertion: rpmstrPoolId(), rpmstrPoolIdn()
- Accessors: rpmstrPoolStr(), rpmstrPoolStrlen(), rpmstrPoolStreq(), rpmstrPoolNumStr()
- Disable/enable insertion: rpmstrPoolFreeze(), rpmstrPoolUnfreeze()
- New rpmIsGlob() function to fix glob_pattern_p() portability issues
- New rpmtdToPool() function for optimized header string array to string pool
insertion
- New rpmGetArchColor() function for retrieving the canonical "color"
of an architecture
Other interface changes
- Database iterators on the RPMDBI_LABEL pseudo-index are now realiable
wrt match count and architecture matching
Internal improvements and cleanups
- Fix legacy retrofits getting performed on new packages with no files
- Fix incomplete data killing rpmdsMerge() with assert()
- Fix partial reads and errors in package IO (RhBug:802839, RhBug:580974)
- Fix a thinko in file triplet validation that allowed some invalid
cases to pass
- Fix dependency lookups modifying transaction element dependency set
iterators
- Fix librpmio exporting a clashing glob() implementation (RhBug:819680)
- Fix NSS-usage clash by using private context when possible (RhBug:871485)
- Fix NSS crypto using deprecated functions and symbols
- Fix Fread() and Fwrite() behavior on EINTR (RhBug:580974)
- Optimize adding packages to transaction
- Optimize transaction dependency checking
- Optimize dependency set manipulation and comparison
- Optimize to fingerprinting and file disposition calculations
- Optimize to rpm cli erasure (-e) target package lookups
- Optimize internal dependency generator data structures
- Optimize overall memory consumption and performance by utilizing
string pool and id-based operations where most beneficial and possible
- File state machine divided and conquered for relative sanity
- Preliminary work towards abstract package payload API
- Unify ad-hoc string caches to utilize string pools instead
- Avoid revalidation attempts on known bad headers from rpmdb
- Issue warnings on unexpectedly failed file/directory removal
- Clean up fingerprinting code and data structures
- Clean up spec parsing, especially wrt %files list
Build process
- Fix spurious compile warnings on architectures where -fstack-protector is
not supported
- Fix compile warnings on gcc >= 4.7
- Fix compile warnings αΊƒith NSS >= 3.14
- Use secure_getenv() instead of private __secure_getenv() when available
- Fix sepolicy plugin getting built when SELinux support is disabled
- Fix support for platforms where fdatasync() is not available
- Dozens of new cases added to the selftest-suite, including systematic
testing for %config behavior and file replacement
- Added support for Lua 5.2
- Added support for using beecrypt as an alternative crypto implementation
(--with-beecrypt)
- For NSS crypto implementation, NSS version >= 3.12 is now required
Compatibility notes
- This release is API- and ABI-compatible with rpm 4.10.x (soname does not change)
- However, two previously public enum values have been removed from rpmfi.h header
which can cause compile failures for eg language bindings if they try to further
export these symbols:
- RPMFILE_EXCLUDE which has only ever been useful to librpmbuild
- RPMFILE_UNPATCHED which is a long-since obsolete and unused placeholder value
- No new package-level incompatibilities introduced
- Spec file incompatibilities:
- Many previously silently accepted spec files will now emit warnings on
bogus %changelog dates: day name not matching date is very common in
specs as this has not been previously validated.
- Some previously accepted spec files can now fail to parse due to stricter
validation
- Spec files utilizing the new %license behavior are not compatible with
older rpm versions
- Older rpm versions do not understand double-quoting of special %doc
entries. Globs can be used as a backwards-compatible workaround for escaping
special characters in file names.
Download in other formats: