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

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

Hi,

On 12.09.24 02:56, Maxim Cournoyer wrote:
> Hi Dariqq,
> 
> Dariqq <[email-masked]> writes:
> 
>> Hi Maxim,
>>
>>
>> On 11.09.24 08:09, Maxim Cournoyer wrote:
>>> Hi Dariqq,
>>> Dariqq <[email-masked]> writes:
>>> That strikes me as odd; is it useful in practice?  Otherwise I'd
>>> rather
>>> we keep it undocumented, so that it can be removed without notice in a
>>> future cleanup (in a 'private API' way).
>>>
>>
>> Ludovic asked me to document the new parameter, so I added something
>> for the current behaviour.
>>
>> Because I don't think the message arrived at the original issue, i
>> copied below. I hope this is ok:
>>
>>> On 04.09.24 16:02, Ludovic Courtès wrote:
>>> AFAICS these changes are not sufficient because ‘configure’ in
>>> meson-build-system.scm does not honor #:out-of-source? (unlike
>>> ‘configure’ in gnu-build-system.scm).
>>> So if I’m not mistaken, you’ll need to change ‘configure’ as well.
>>> You can also update doc/guix.texi under “Build Systems” to mention
>>> this
>>> parameter.
>>> Last: ‘guix refresh -l meson’ shows that this is almost a
>>> world-rebuild
>>> change (23K dependents), so we’ll need to have this change in a separate
>>> branch.
>>> Could you send an updated patch?
>>> Thanks,
>>> Ludo’.
>>
>> I have sent this patch for the documentation part but am still unsure
>> what is meant by *sufficient* because meson cannot do in source
>> builds.
> 
> I'm still out of context; is there an original bug number to refer to to
> better understand what was the root problem being addressed?
> 

Sorry I should have added that. The problem I was trying to solve is 
https://issues.guix.gnu.org/70999.

TLDR is that meson-build-system was failing to find and install license 
files for many packages because it would search for licenses in the 
build directory rather than the source directory. (which might be 
against the terms of the license)

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

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?