On Tue, 2020-10-27 at 14:05 +0100, Andrea Bolognani wrote: > I'm not convinced reverting this was the right call. > > The way RPM conditional macros work is that, if you have > > %{!?macro:value} > > that will expand to 'value' if 'macro' is *not* defined, and to > nothing otherwise. So if you have for example > > %define with_fuse 0%{!?_without_fuse:0} > > that means that, if you pass > > --define '_without_fuse 1' > > to rpmbuild the line will expand to > > %define with_fuse 0 > > and if you don't pass the extra option to rpmbuild it will instead > expand to > > %define with_fuse 00 > > The two are clearly equivalent, so there is no point in keeping the > conditional macro - it merely obfuscates the logic. > > Of course things would be different if you had > > %define with_fuse 0%{!?_without_fuse:1} > > instead: in this case, the line would expand to > > %define with_fuse 0 > > and > > %define with_fuse 01 > > respectively, which means the feature would be enabled by default but > could optionally be disabled by passing the correct argument to > rpmbuild, as expected. We have plenty similar macros in libvirt.spec, > and since they work just as intended 31d687a3218c didn't touch them. > > Note that in this case I've removed > > # fuse is used to provide virtualized /proc for LXC > %if %{with_lxc} > %define with_fuse 0%{!?_without_fuse:1} > %endif > > from the spec to make sure that the value for the 'fuse' option > passed to Meson depended solely on the value of the _without_fuse > macro, and then checked the rpmbuild output to compare. Also note that I'm aware you want to eventually push for adoption of the standard bcond macros, and I fully stand behind that desire! If this patch had been the first in a series that introduced bcond support and was clearing the path for that, I would have zero problems with it. As it is, however, you're simply reintroducing some of the obfuscation we had recently managed to get rid of, without getting anything in return. -- Andrea Bolognani / Red Hat / Virtualization