Subject: [bug#73028] [PATCH] doc: Document usage of #:out-of-source? for meson-build-system.

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 12 Sep 2024 21:02:19 +0900

Hi Dariqq,

Dariqq <[email-masked]> writes:

[...]

>>> Maybe it should not be an option at all and instead be #t
>>> unconditionally in 'install-license-files phase in meson-build-system?
>> Given most build phases of the gnu-build-system, which support
>> #:out-of-source? are reused in the meson-build-system, this argument
>> needs to be set to #t (which it currently is).  But perhaps there's a
>> way to hide it from the users, perhaps via the 'private-keywords'
>> variable defined in the 'lower' procedure of the (guix build-system
>> meson) module (I haven't tested).
>> 
>
> Something like that might be a better solution. I am not sure how
> these 'private-keywords' work: It looks like #:meson is one but you
> can definitly override the default meson being used. Also the
> private-arguments seem to get stripped from the arguments in the bag
> (not sure what that is exactly) so they might not be passed to the
> build phases

I think your understanding is correct. The private options are accepted
on the build system, but not propagated to the lower build strata
(applied to phases).  So what we'd like here is to *not* expose an
#:out-of-source argument at the build system level, and enforce
#:out-of-source #t for the lower build code.  I guess the static #t
argument could be added to the bag arguments.

>
> Would such a change require rebuilding (basically) everything given
> that currently all packages are already built with #:out-of-source?
> set to the default value #t?

Yes.  To test this kind of change without having to wait for the world
to rebuild first, I sometimes make a copy of the build system files and
suffix them with -v2 or something. It's a bit of a pain, but faster than
waiting for 20k packages to be built.

-- 
Thanks,
Maxim