After almost two years of development release of the package manager . The RPM4 project is developed by Red Hat and is used in distributions such as RHEL (including derivative projects like CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen, and many others. Previously developed by an independent team of developers project , which is not directly related to RPM4 and is currently abandoned (not updated since 2010).
The most notable In RPM 4.15:
- Experimental support for unprivileged builds in a chroot environment has been added;
- Support for parallel package builds on multi-core systems. The number of threads can be set via the macro “%_smp_build_ncpus” and the variable $RPM_BUILD_NCPUS. The macro “%getncpus” has been proposed to determine the number of CPUs;
- Spec files now have support for the conditional operators “%elif” (else if), as well as the options “%elifos” and “%elifarch” for binding to the distribution and architecture;
- New sections “%patchlist” and “%sourcelist”, which can be used to add patches and source texts simply by listing the names without specifying record 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 Support for dynamic dependency building with their inclusion in the src.rpm. The spec file now includes support for the “%generate_buildrequires” section, the contents of which are processed as a list of dependencies (BuildRequires) that require verification (if a dependency is missing, an error will be displayed).
- The operator “^” for checking versions older than a specified date performs the opposite action of the operator “~”. For example,
“1.1^20160101” will cover version 1.1 and patches added after January 1, 2016; - An option “—scm” has been added to enable the “%autosetup SCM” mode;
- A built-in macro “%{expr:…}” for evaluating arbitrary expressions has been added (just a few days ago, there was also the format “%[ expr ]”);
- The default encoding for string data in headers is now UTF-8;
- Global macros %build_cflags, %build_cxxflags, %build_fflags, and %build_ldflags have been added with flags for the compiler and linker;
- The macro “%dnl” (Discard to Next Line) has been added for inserting comments;
- In bindings for Python 3, the return of strings as UTF-8 escaped sequences instead of byte data has been ensured;
- A dummy DB backend has been added to enhance support for systems without rpmdb (for example, Debian);
- Improved ARM architecture recognition and added support for armv8;
- Seamless support for Lua 5.2-5.3 is provided, without requiring compat definitions in the code.
Source: opennet.ru
