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

From: Dariqq <[email-masked]>
Date: Thu, 12 Sep 2024 19:19:02 +0000

On 12.09.24 14:02, Maxim Cournoyer wrote:
> 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.
> 

This does not work. I tried adding that to the arguments in the bag (and 
reverting the previous patch) but get an error:

Unrecognized keyword: #:out-of-source?

I guess this is because meson-(cross-)build now get a keyword they don't 
know.

Maybe we could replace the install-license-files function with a version 
that has #:out-of-source? set to #t?. Not sure if there is an elegant 
way to do this?

>>
>> 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.
> 

Previously i have been using the tio package for testing because it had 
no other dependencies depending on meson. However since it got upgraded 
it now depends on glib ...