
On Tue, Mar 20, 2018 at 01:54:49PM -0400, Laine Stump wrote:
On 03/20/2018 01:00 PM, Daniel P. Berrangé wrote:
Macros in RPMs are expanded before line continuations, so when we write
%systemd_preun foo \ bar
What happens is that it expands to
if [ $1 -eq 0 ] ; then # Package removal, not upgrade systemctl --no-reload disable --now foo \ > /dev/null 2>&1 || : fi bar
which is obviously complete garbage and not what we expected. It is simply not safe to ever use line continuations in combination with macros.
Introduced in commit bffdd6c3034164127b1543ffd2e9ed599baf4838, present in released libvirt-4.1.0.
This is going to be problematic for any rpm-based distro that has a 4.1.0 rpm, e.g. Fedora rawhide and F28 - if someone has updated to the broken rpm, they won't be able to get rid of it with a plain update, and dnf has no command that passes through the necessary --nopreun command to rpm. Instead, they'll need to run rpm manually - "rpm --nopreun blah blah".
It is not quite as bad as I feared. When I upgraded using dnf i get this Running scriptlet: libvirt-daemon-4.1.0-1.fc27.x86_64 144/146 /var/tmp/rpm-tmp.wB7JPz: line 6: virtlogd.socket: command not found error: %preun(libvirt-daemon-4.1.0-1.fc27.x86_64) scriptlet failed, exit status 127 Error in PREUN scriptlet in rpm package libvirt-daemon Error in PREUN scriptlet in rpm package libvirt-daemon And as a result have this: # rpm -q libvirt-daemon libvirt-daemon-4.1.0-1.fc27.x86_64 libvirt-daemon-4.1.0-2.fc27.x86_64 This is merely a cosmetic problem though - all the files from the outdated version are gone. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|