Po téměř dvou letech vývoje vydání balíčkovacího systému . Projekt RPM4 vyvíjí společnost Red Hat a používá se v takových distribucích jako RHEL (včetně odvozených projektů CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen a mnoha dalších. Dříve byl vyvíjen nezávislým týmem vývojářů projekt , který není přímo spojen s RPM4 a v současnosti je opuštěn (nebyl aktualizován od roku 2010).
Nejvýraznější v RPM 4.15:
- Byla přidána experimentální podpora neprivilegované kompilace v chrootovém prostředí;
- podpora paralelního kompilování balíčků na vícejádrových systémech. Omezení počtu vláken se nastavuje pomocí makra „%_smp_build_ncpus“ a proměnné $RPM_BUILD_NCPUS. Pro určení počtu CPU bylo navrženo makro „%getncpus“;
- Ve spec-souborech přibyla podpora podmínkových operátorů „%elif“ (else if), jakož i varianty „%elifos“ a „%elifarch“ pro vázání na distribuci a architekturu;
- nové sekce „%patchlist“ a „%sourcelist“, které lze použít pro přidání patchů a zdrojových textů jednoduchým výčtem názvů bez uvedení čísel záznamů (například místo
„Patch0: popt-1.16-pkgconfig.patch“ v sekci %patchlist lze uvést „popt-1.16-pkgconfig.patch“); - V rpmbuild podpora dynamické kompilace závislostí s jejich zahrnutím do src.rpm. Ve spec-souboru byla přidána podpora sekce „%generate_buildrequires“, jejíž obsah se zpracovává jako seznam závislostí (BuildRequires), vyžadující kontrolu (pokud závislost chybí, bude vypsána chyba).
- operátor „^“ pro kontrolu verzí starších než zadané datum, provádějící akci, která je opačná k operátoru „~“. Například,
„1.1^20160101“ pokryje verzi 1.1 a patche přidané po 1. lednu 2016; - Byla přidána volba „—scm“ pro zahrnutí režimu „%autosetup SCM“;
- Bylo přidáno vestavěné makro „%{expr:…}“ pro vyhodnocení libovolných výrazů (před několika dny bylo také formát „%[ expr ]“);
- Bylo zajištěno výchozí použití kódování UTF-8 pro řetězcová data v hlavičkách;
- Byly přidány globální makra %build_cflags, %build_cxxflags, %build_fflags a %build_ldflags s vlajkami pro kompilátor a linker;
- Bylo přidáno makro „%dnl“ (Discard to Next Line) pro vkládání komentářů;
- V bindích pro Python 3 bylo zajištěno vracení řetězců ve formě escaped sekvencí UTF-8 místo byte dat;
- Byl přidán fiktivní backend DB pro zlepšení podpory systémů bez rpmdb (například Debian);
- Bylo vylepšeno určení architektury ARM a přidána podpora armv8;
- Byla zajištěna bezproblémová podpora Lua 5.2-5.3, nevyžadující definice compat v kódu.
Zdroj: opennet.ru
