Meson build

Jim Fehlig jfehlig at suse.com
Tue Sep 1 17:38:59 UTC 2020


On 9/1/20 7:55 AM, Daniel P. Berrangé wrote:
> On Tue, Sep 01, 2020 at 03:50:36PM +0200, Ján Tomko wrote:
>> On a Tuesday in 2020, Pavel Hrdina wrote:
>>> On Tue, Sep 01, 2020 at 03:13:39PM +0200, Ján Tomko wrote:
>>>> On a Tuesday in 2020, Pavel Hrdina wrote:
>>>>> On Sun, Aug 30, 2020 at 02:34:56AM +0200, Toolybird wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Just a heads up on my experiences with the new build system.
>>>>>>
>>>>>> Arch Linux
>>>>>> meson-0.55.1
>>>>>>
>>>>>> Overall, it looks good, so well done!
>>>>>>
>>>>>> Just a couple of minor things I noted:
>>>>>>
>>>>>> 1. Arch uses a meson wrapper script (arch-meson) that sets:
>>>>>>
>>>>>>    --buildtype plain
>>>>>>
>>>>>> This seems to trigger a bug in meson that results in copious bogus compiler warnings:
>>>>>>
>>>>>> cc1: warning: ‘-Wformat-y2k’ ignored without ‘-Wformat’ [-Wformat-y2k]
>>>>>> cc1: warning: ‘-Wformat-extra-args’ ignored without ‘-Wformat’ [-Wformat-extra-args]
>>>>>> cc1: warning: ‘-Wformat-zero-length’ ignored without ‘-Wformat’ [-Wformat-zero-length]
>>>>>> cc1: warning: ‘-Wformat-contains-nul’ ignored without ‘-Wformat’ [-Wformat-contains-nul]
>>>>>> cc1: warning: ‘-Wformat-security’ ignored without ‘-Wformat’ [-Wformat-security]
>>>>>>
>>>>>> which of course breaks -Werror builds.
>>>>>>
>>>>>> I can easily work around it by setting `-D git_werror=disabled' or even better still:
>>>>>>
>>>>>> CFLAGS+=" -Wall" arch-meson...
>>>>>
>>>>> This should be easily fixable by adding -Wformat in our list of flags
>>>>> that we pass to compiler. We were incorrectly relying on meson to add
>>>>> -Wformat automatically and since we add the other -Wformat* flags
>>>>> manually we should add -Wformat as well. I'll post a patch to fix this.
>>>>>
>>>>
>>>> What would that fix?
>>>>
>>>> It would neither be a plain build, nor a full -Werror build (since we're
>>>> missing -Wall).
>>>
>>> It would fix building libvirt from git in case user uses
>>> buildtype=plain.
>>>
>>
>> For a build from git, we expect people to build with all the warnings
>> and -Werror.
>>
>> Per your comment in the below issue:
>> https://github.com/mesonbuild/meson/issues/7399#issuecomment-684856012
>> meson does not add the warnings there on purpose.
>>
>> The combination of disabling the most important warnings and enabling
>> just the extras doesn't make much sense. Especially if we still pretend
>> it's a -Werror build.
> 
> Yeah, I'd recommend distros to NOT use  buildtype=plain.

AFAICT, rpm builds that use the %meson macro will also have buildtype=plain. 
 From /usr/lib/rpm/macros.d/macros.meson of the meson-0.54 package

%meson \
     %set_build_flags
     %{shrink:%{__meson} \
         --buildtype=plain \
         --prefix=%{_prefix} \
     ...

> Having the full set of warnings including -Werror enabled is a good thing
> in general, even for distros. There have certainly been cases where
> distros backported a patch incorrectly and warning flags would have
> identified it, especially combined with -Werror.

Nod. Should we adjust the upstream spec file to enable the full set of warnings? 
And if so what would be the best way to do that? Add --buildtype=debug to the 
meson options? E.g.

%meson \
            --buildtype=debug \
            -Drunstatedir=%{_rundir} \
            %{?arg_qemu} \
            ...

Regards,
Jim





More information about the libvirt-users mailing list