Subject: [bug#30761] [PATCH staging 1/9] gnu: meson: Don't wrap the meson executable.

From: Marius Bakke <[email-masked]>
Date: Mon, 12 Mar 2018 15:44:24 +0100

Ludovic Courtès <[email-masked]> writes:

> Marius Bakke <[email-masked]> skribis:
>
>> Ludovic Courtès <[email-masked]> writes:
>>
>>> Hello!
>>>
>>> Marius Bakke <[email-masked]> skribis:
>>>
>>>> * gnu/packages/build-tools.scm (meson)[arguments]: Delete WRAP-PHASE.
>>>> ---
>>>>  gnu/packages/build-tools.scm | 5 +++++
>>>>  1 file changed, 5 insertions(+)
>>>>
>>>> diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
>>>> index 2abb44fdb..1ebccca43 100644
>>>> --- a/gnu/packages/build-tools.scm
>>>> +++ b/gnu/packages/build-tools.scm
>>>> @@ -81,6 +81,11 @@ makes a few sacrifices to acquire fast full and incremental build times.")
>>>>                 (base32
>>>>                  "06r8limj38mv884s5riiz6lpzw37cvhbf9jd0smzcbi7fwmv3yah"))))
>>>>      (build-system python-build-system)
>>>> +    (arguments
>>>> +     `(#:phases (modify-phases %standard-phases
>>>> +                  ;; Meson runs itself through the Python interpreter, so
>>>> +                  ;; we cannot use the shell wrapper.
>>>> +                  (delete 'wrap))))
>>>
>>> I’m not sure what this means.  The ‘wrap’ phase is precisely for things
>>> with #!/…/python, right?
>>>
>>> What problem does it solve?
>>
>> The problem is that at some point after 0.42 (the current
>> meson-for-build), Meson does the equivalent of `python $(which meson)`
>> at runtime.  Which ends up tripping over the shell wrapper.
>>
>> I don't remember exactly where I saw the problem, it could have been
>> with "mesontest" which also resides in "meson/bin".  The only downside
>> to deleting the wrapper is that you cannot call meson directly from the
>> store; it works fine as long as PYTHONPATH is set (e.g. in a profile).
>>
>> I'll try to clarify the comment.
>
> Yes, that’s a good idea.  :-)
>
> It does mean that people installing meson in their profile will get
> something missing-python-module errors, right?

Meson actually propagates Python, which will set up PYTHONPATH.  So in a
profile or environment it works just fine.  The only problem is when
trying to invoke /gnu/store/...meson-0.45/bin/meson directly.

> Should we do the wrapping differently?

ISTR a discussion about a language-aware wrapper, which would solve
this.  Then we could wrap it with PATH and PYTHONPATH and get rid of
Python propagation.  But for now I think we're good :-)