On Tue, Mar 21, 2023 at 03:33:24PM +0000, Daniel P. Berrangé wrote:
On Tue, Mar 21, 2023 at 04:31:00PM +0100, Michal Prívozník wrote:
> On 3/21/23 16:25, Daniel P. Berrangé wrote:
> > On Tue, Mar 21, 2023 at 04:11:33PM +0100, Michal Privoznik wrote:
> >> <snip/>
> >
> > I don't like the idea of forcing -O0 for the production builds, just to
> > work around the problem of our broken tests. Can we approach it from the
> > opposite POV and disable building of tests, if we see meson optimization
> > level is > 0
> >
> > eg something roughly like this:
> >
> > with_tests = true
> > if cc.get_id() == 'clang' and
> > not supported_cc_flags.contains('-fsemantic-interposition') and
> > get_option('optimization') != 0
> > with_tests = false
> > endif
> >
> > if with_tests
> > subdir('tests')
> > endif
> >
> >
> > So people can choose to have tests work or not
>
> That could work too, yeah. My reasoning for going with -O0 was that it's
> very rare that somebody would use such old CLang, but I guess disabling
> tests is less invasive. I'll send v2 shortly.
It isn't just old Clang. Latest clang lacks -fsemantic-interposition
on non-x86_64, which means current macOS M1 platform today. For our
CI, I guess we'll want to request non-optimized builds for macOS
and FreeBSD 12, so we still run unit tests.
We can also utilize the meson 'buildtype' option [1] to figure out if we
need to disable/enable tests or modify the optimization that we use when
building.
When building from git the default value is 'debugoptimized' but when
building using RPM it changes to 'plain'. Not sure what FreeBSD and
macOS are using.
The 'buildtype' affects what value will be stored in 'debug' and
'optimization' options. That could allow us to run tests from git builds
where we could disable optimizations and disable tests when libvirt is
compiled using package manager.
Pavel
[1] <
https://mesonbuild.com/Builtin-options.html#details-for-buildtype>