RPM 4.15 release

After nearly two years of development took place package manager release RPM 4.15.0. The RPM4 project is developed by Red Hat and is used in distributions such as RHEL (including derivative projects of CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen, and many others. Formerly an independent development team developed project RPM5, which is not directly related to RPM4 and is currently abandoned (hasn't been updated since 2010).

Most notable improvements in RPM 4.15:

  • Added experimental support for unprivileged assembly in a chroot environment;
  • Implemented support for parallelizing the assembly of packages on multi-core systems. The limit on the number of threads is set via the "%_smp_build_ncpus" macro and the $RPM_BUILD_NCPUS variable. To determine the number of CPUs, the "% getncpus" macro is proposed;
  • Spec files now support the "%elif" (else if) conditional statement, as well as the "%elifos" and "%elifarch" options for binding to the distribution and architecture;
  • Added new "%patchlist" and "%sourcelist" sections that can be used to add patches and sources by simply listing names without specifying entry numbers (for example, instead of
    "Patch0: popt-1.16-pkgconfig.patch" in the %patchlist section, you can specify "popt-1.16-pkgconfig.patch");

  • In rpmbuild added support for dynamic assembly of dependencies with their inclusion in src.rpm. Support for the "%generate_buildrequires" section has been added to the spec file, the contents of which are processed as a list of dependencies (BuildRequires), requiring verification (if the dependency is missing, an error will be displayed).
  • Implemented the "^" operator to check for versions older than a given date, which does the opposite of the "~" operator. For example,
    "1.1^20160101" will cover version 1.1 and patches added after January 1, 2016;

  • Added "--scm" option to enable "%autosetup SCM" mode;
  • Added built-in macro "%{expr:...}" for evaluating arbitrary expressions (a few days ago there was also proposed format "%[ expr ]" );
  • Provided default UTF-8 encoding for string data in headers;
  • Added global macros %build_cflags, %build_cxxflags, %build_fflags and %build_ldflags with compiler and linker flags;
  • Added macro "%dnl" (Discard to Next Line) for inserting comments;
  • Bindings for Python 3 ensure that strings are returned as UTF-8 escaped sequences instead of byte data;
  • Added dummy DB backend to improve support for systems without rpmdb (e.g. Debian);
  • Improved ARM architecture definition and added support for armv8;
  • Provided seamless support for Lua 5.2-5.3, which does not require compat definitions in the code.

Source: opennet.ru

Add a comment