NEWS ==== This is a list of the major changes between RPM 4 and RPM 5. For more details please see the CHANGES file. New in RPM 5.1 -------------- o Major Bufixes: - .spec: fix PGP clearsign signature() verification by correctly skipping RFC2440 "dash-escapes" - macro: permit %{lua:...} to recurse. - macro: fix line-continuation handling in macro definition parsing - macro: fix macro option/argument parsing (again), this time by using POPT_CONTEXT_POSIXMEHARDER o New Features: - "rpmrepo" - "rpmdigest" - "rpmgrep" - "rpmmtree" - ":sqlescape" for use in SQL statements generated by --qf. - ":utf8" for use with ":cdata" format - ":cdata" to permit strings to be included in XML CDATA. - .spec: verify(N) = E:V-R, verify(*) and verify(/path) runtime dependency probes - CLI new RPM CLI options --noautoreq/--noautoprov - CLI: "+N-V-R.A" path-to-repository expansions with -i/-U - CLI: "-N-V-R.A" erasure args within install/upgrade transactions - CLI: proof-of-concept "rpmbuild --lsb" implementation - build: new Autoconf option --with-path-rpmlua and RPM CLI option --rpmlua for configuring RPM Lua init script path - macro: OSSP uuid support via RPM Lua functions uuid.generate() and uuid.describe() - macro: new "%{uuid:[<version>[, <ns>, <data>]]}" for generating UUIDs of version 1, 3, 4 or 5 - macro: new %{getenv:<name>} to lookup environment variables - macro: new %{shrink:<body>} macro for removing leading+trailing and removing intermediate whitespaces - macro: new RPM Lua function posix.glob(<pattern>) - macro: new RPM Lua function rpm.realpath(<path>) to complement RPM macro %{realpath:<path>} - macro: new RPM Lua function rpm.sleep() - macro: new RPM Lua function rpm.slurp() for slurping in the whole content of a file or an URL - macro: new RPM Lua function util.textwrap() for auto-wrapping junks of larger text messages - macro: unconditionally provide RPM Lua functions posix.{setenv,unsetenv} - rpmdb: new tags ORIGIN{TID,TIME} which record the first INSTALL{TID,TIME} of a package - rpmlib: function rpmuuidMake() for generating UUIDs of version 1, 3, 4 or 5 - rpmlib: permit opt-in network access using %_rpmgio macro. - rpmlib: support for CPIO, TAR and AR payloads - API: RPM 4 compatibility layer <rpm/rpm4compat.h> - macro: permit %{___NVRA} to parameterize the displayed NVRA while installing. o Upgrades: - macro: upgraded from Lua 5.1.2 to 5.1.3 - macro: upgraded RPM Lua extension lrexlib from ancient version 1.1x to version 2.2 - build: upgraded build environment to use GNU libtool 2.2.2 o Incompatibilities: - rpmdb: use "struct timeval" timestamp for INSTALL{TID,TIME} and ORIGIN{TID,TIME} o Portability: - build: QNX platform support New in RPM 5.0 -------------- o Project Environment: The official RPM code base was relocated from rpm.org to rpm5.org and a completely new project environment was established around it, including anonymous repository browsing access, new mailing lists, etc. o Source Tree: The RPM source tree was cleaned up by pruning many old and obsolete files, removing dangling symbolic links, relocating sub-directories and fixing timestamps and other versioning meta-data which got broken over 10 years of RPM development. o Build Environment: The Automake/Autoconf/Libtool-based build environment of RPM was completely revamped. Especially the Autoconf parts were finally cleaned up from the ground up, including basing the use of all third-party libraries on a new sophisticated Autoconf macro "RPM_CHECK_LIB". As a result most third-party libraries now can be linked externally, too. o Development Environment: For being able to build RPM under arbitrary Unix platforms despite the fact that RPM needs a larger number of third-party libraries, the "devtool" environment and its "standalone" script is provided. This allows RPM developers to build RPM from scratch under arbitrary Unix platforms in a rather self-contained environment. o Greatly Improved Portability: RPM 5 was ported to all major Unix platforms as of 2007, including BSD, Linux and Solaris flavors. It was successfully built (with the above "devtool" "standalone") on at least the following particular Unix platforms (including Mac OS X "Darwin" and Windows "Cygwin"): ix86-freebsd6.2-gcc4.2.0 ix86-freebsd6.2-gcc4.3.0s20070713 ix86-freebsd6.2-gcc3.4 amd64-freebsd6.2-gcc4.1.2 ix86-freebsd7.0-gcc4.1.2 ia64-freebsd6.2-gcc4.1.2 ix86-fedora7-gcc4.2.0 ix86-fedora7-sunstudio12 ix86-fedora7-icc10.0 ix86-debian3.1-gcc4.1.2 ix86-debian4.0-gcc4.2.0 ix86-rhel4-gcc4.1.2 ix86-solaris9-gcc4.1.2 sparc64-solaris8-gcc4.1.2 sparc64-solaris9-gcc4.1.2 sparc64-solaris10-gcc4.1.2 amd64-solaris10-gcc4.1.2 ppc-macosx10.4-gcc4.0.1 ix86-macosx10.4-gcc4.0.1 ppc-aix5.3-gcc3.3.2 ix86-cygwin_nt5.1-gcc3.4.4 o Mac OS X Cross Development: RPM 5 can now be built for all recent versions of Mac OS X, with detection of Python.framework and with Universal Binary support (both PowerPC and Intel architectures in a single binary file). The Mac OS X version will install in /usr/local and /var/local. It will work with the following versions of the OS and/or SDK, using the above devtool and with the target name quoted below: Mac OS X 10.x "macosx" - build native version Mac OS X 10.3 "panther" - PowerPC (MacOSX10.3.9.sdk) Mac OS X 10.4 "tiger" - PowerPC and Intel (MacOSX10.4u.sdk) Mac OS X 10.5 "leopard" - PowerPC and Intel (MacOSX10.5.sdk) o Source Code Cleanups: The RPM source base was completely cleaned up. As a result RPM now builds fully warnings-free under all major Unix platforms with GCC. Additionally, RPM now can be built without problems with the Sun Studio and Intel C/C++ compilers, too. o Third-Party Library Upgrades: RPM now is able to build against the latest versions of all third-party libraries. Additionally, the internal copies of third-party libraries were also upgraded to the latest versions, including Berkeley-DB 4.6.21, Lua 5.1.2, XAR 1.5.2, etc. o RPM Database: The RPM database (RPMDB) now out-of-the-box supports both Berkeley-DB and SQLite. The SQLite support was greatly improved, but nevertheless inherently still lacks some features of the Berkeley-DB RPMDB. Nevertheless, one can build RPM with an SQLite-only RPMDB, too. But this is not officially supported. It is just an experimental developer feature. o Compression: The RPM packages support both Bzip2 and LZMA payloads, in addition to the default Gzip compression format. Support for LZMA_Alone with rpmio was added, with the lzma syntax upgraded to newer LZMA Utils. o "rpmrc" and Platform Detections: Support for the old "rpmrc" (which was used mainly for architecture mappings, etc) was completely removed. Everything is now configured through RPM "macros" only. Additionally, the internal C-based platform detections were completely removed, too. o XAR Format Support: Initial support for the XML Archive (XAR) file format was added to RPM. The initial implementation establishes a wrapper archive format for mapping the 4 sections used in *.rpm package file (Lead, Signature, Header and Payload) to files with the same name in a XAR archive wrapper. A wrapper archive to carry package sections is already used by Apple Leopard *.pkg (using XAR) and Debian *.deb packages (using AR), rpm-5.0 now has a well defined representation of *.rpm packages in a wrapper archive format. Establishing a direct mapping between rpm tags and XAR attributes/properties in XML in order to fully use the extensibility of an XAR archive will be attempted for RPM 5.1. o Removed RPMv3 Package Format Support: The support for the old RPMv3 (LSB) package format was removed to cleanup and simplify the code base. RPM 5 now supports RPMv4 package format only. o Additional Specification Features: A larger set of additional features or provided for use in package specifications (.spec): new tag "Class" for quality assurance based classification, new section "%track" for vcheck(1) based upstream vendor source version tracking, new section "%sanitycheck" for sanity checking the run-time of a package by performing run-time tests, etc. Additionally, RPM can be configured via macro %{_arbitrary_tags_arbitrary_tags} to support so-called "arbitrary tags" -- this allows one to attach custom information with an RPM package. Finally, the macro processor now supports the "%{@<name>:<separator>}" syntax for expanding all values from the macro stack of a macro <name> by concatenating the values with <separator>. o Additional Command Line Interface (CLI) Features: The CLI supports additional options, including "-bt" for executing the new "%track" section (the step logically coming before "-bp"), "--undefine '<macroname>'" for reversing the effect of "--define '<macroname> <macrovalue>'", etc. o Application Programming Interface (API) Changes: There were various RPM C API changes. See CHANGES file for more details. |