RPM 4.19.0 ALPHA Release Notes (DRAFT)
- Source: rpm-4.18.90.tar.bz2
- SHA256SUM: fa7e39f27855382c78d70374b2e8777c7c75e62db76b1257fd40b106bc67415d
Summary of changes from RPM 4.18.x
General bugfixes and enhancements
Command line
- Allow piping from
rpm2archive(8)
(#2208)
- Add
rpmsort(8)
utility for sorting RPM versions
- Add
--nopreuntrans
and --nopostuntrans
scriptlet disablers (#2119)
- Add
--nosysusers
to disable automatic user/group creation at install time (#1032)
- Conditionally display VCS tag in
--info
query
Package building
Spec
- Add support for
.specpart
files for dynamic spec generation
- Add
--generate-subpackages
to find_lang.sh
(utilizes .specpart
)
- Add
sysusers.d(5)
integration for automated user and group handling (#1032)
- Generate user/group requires from
%files
(#1032)
- Improve shell-like globbing and escaping in
%files
(#1749)
- Expand
%doc
and %license
globs only once (#1294)
- Add support for
%preuntrans
and %postuntrans
scriptlets (#2119)
- Turn
%patch
lines without arguments and options into an error
Macros
- Add optional
total
/proc
/thread
arguments to %{getncpus}
macro (#804)
- Add shorthand
macros
for some conventient Lua string operations:
%{gsub:...}
, %{len:...}
,
%{lower:...}
, %{rep:...}
, %{reverse:...}
, %{sub:...}
and
%{upper:...}
- Calculate number of threads to use during build, not spec parse
Buildroot policies
- Fix a race condition in
brp-strip
(RhBug:1959049)
- Hardening fixes in
check-buildroot
Generators
- Generate user/group provides from packaged
/etc/passwd
, /etc/group
and sysusers.d(5)
files (#1032)
- Populate user and group data in cpio payload again (ancient regression)
Signatures and keys
Plugins
Python bindings
Lua interface
API changes
Added APIs
rpmGlobPath()
, like rpmGlob()
but also takes flags
rpmEscape()
and rpmUnescape()
for prepending and removing backslashes to
and from special chars in a string, respectively
Changed APIs
rpmGlob()
now only accepts one pattern in the input string, not a space
separated list
Removed APIs
- Directory index related empty stubs
rpmfiSetDX()
, rpmfiNextD()
and
rpmfiInitD()
- File iterator related deprecated function
rpmteFI()
and Python’s te.FI()
- Epoch promote empty stubs
rpmdsNoPromote()
, rpmdsSetNoPromote()
, global
variable _rpmds_nopromote
and Python’s ds.SetNoPromote()
- Keyring related deprecated functions
rpmKeyringLookup()
and
rpmPubkeyDig()
- PGP related deprecated struct
pgpDig
and functions pgpPrtPkts()
,
pgpNewDig()
, pgpCleanDig()
, pgpFreeDig()
, pgpDigGetParams()
,
pgpVerifySig()
, pgpHexStr()
and Python’s ts.pgpPrtPkts()
- Header related deprecated functions
headerUnload()
, headerLoad()
and
headerCopyLoad()
- File classifier related deprecated function
rpmfcNew()
- Signal related type
rpmsqAction_t
, defines RPMSQ_DFL
, RPMSQ_IGN
,
RPMSQ_ERR
and functions rpmsqIsCaught()
, rpmsqActivate()
,
rpmsqSetAction()
, rpmsqPoll()
, rpmsqSetInterruptSafety()
and Python’s
signalCaught()
, checkSignals()
, setInterruptSafety()
- File util function
rpmIsGlob()
Internal improvements and cleanups
- Make build parallelism memory and address-space aware (#804)
- Make rpmscript machinery chroot-aware
- Add x86-64 architecture levels (v2-v4) as architectures
- Fix ignoring exit code of child scripts in case of
EINTR
- Axe our internal and buggy
glob()
and fnmatch()
copies
- Drop now redundant bundled copies of
stpcpy()
and stpncpy()
- Rely on POSIX.1-2008
realpath()
semantics
- Simplify and clean up
rpmio
thread enablement code
- Header internals type cleanup
rpmds
related cleanups and sanity fixes
- Eliminate signedness mismatch from
RPMTAG_NOT_FOUND
- Fix a segfault on a non-stringable argument to macro call from Lua
- Remove some unused logging defines
Build process
- New CMake build system, replaces Autotools
- Default to Sequoia crypto as per roadmap
- Drop support for buggy and problematic alternative Python build method (#130, #2230)
- Drop support for openssl < 1.1
- Drop some other redundant and ancient configure-time checks
- Split off translations to a separate project
Documentation
Compatibility notes
- Any non-root ownership in the
%files
section (through %attr()
or
%defattr()
) now generates an automatic dependency on the named user and/or
group. This dependency can be satisfied by another package shipping a
sysusers.d(5)
file or the /etc/passwd
and /etc/group
files themselves.
Existing packages shipping any of these files will have to be rebuilt with
RPM 4.19 in order for them to carry the respective user and/or group
provides. This may require distro-level coordination to ensure proper
installation of all the affected packages. For more information, please
consult the
manual.
%patch
without arguments (previously an alias to %patch 0
) is now a build error (use %patch N
instead)