Help needed with gobject-introspection

Jon Turney jon.turney@dronecode.org.uk
Fri May 29 15:56:06 GMT 2020


On 25/05/2020 16:04, Ken Brown via Cygwin-apps wrote:
> On 5/24/2020 1:00 PM, Ken Brown via Cygwin-apps wrote:
>> On 5/24/2020 12:45 PM, Ken Brown via Cygwin-apps wrote:
>>> On 5/24/2020 11:56 AM, Jon Turney wrote:
>>>> On 21/05/2020 18:07, Ken Brown via Cygwin-apps wrote:
>>>>> On 5/21/2020 11:48 AM, Jon Turney wrote:
>>>>>> On 21/05/2020 16:13, Ken Brown via Cygwin-apps wrote:
>>>>>>> On 5/21/2020 9:24 AM, Jon Turney wrote:
>>>>>>>> On 20/05/2020 15:50, Ken Brown via Cygwin-apps wrote:
>>>>>>>>> On 5/19/2020 7:04 PM, Ken Brown via Cygwin-apps wrote:
[...]
>>>>> This does indeed shed some light.  If I remove all the commas but 
>>>>> leave the single quotes, the command fails with the same error 
>>>>> message as before:
>>>>>
>>>>> cp: target 'docs/index.html.tmp' is not a directory
>>>>>
>>>>> If I also remove the single quotes, the command succeeds.  I think 
>>>>> the problem is the quotes around the double ampersands, so they are 
>>>>> treated as arguments to the cp command instead of being interpreted 
>>>>> by the shell executing the command.
>>>>
>>>> So, yeah, this is a meson bug, which I will work on (if this command 
>>>> ends up in the build.ninja, it's executed by ninja with 'sh -c', but 
>>>> if it ends up in a pickle, it's executed by meson with execve())
>>>
>>> Yes, that does seem like a meson bug.  But is it also a babl bug to 
>>> some extent?   When babl puts '&&' in a command argument, it's 
>>> assuming that the command will be executed by 'sh -c'.
>>>
>>> I have very little experience with meson.  Have you ever seen this 
>>> issue in other projects that use meson?
>>
>> I just noticed this, at 
>> https://mesonbuild.com/Custom-build-targets.html :
>>
>>    Meson only permits you to specify one command to run. This is
>>    by design as writing shell pipelines into build definition
>>    files leads to code that is very hard to maintain. If your
>>    compilation requires multiple steps you need to write a wrapper
>>    script that does all the necessary work.
>>
>> We're not talking about a shell pipeline here, but it's similar.  So 
>> I'm thinking this really is a babl bug.

Yeah. Ideally meson would stop people from writing custom targets which 
use shell operators.  Unfortunately, it doesn't and there are probably 
many other existing instances of this usage.

Additionally, meson is perhaps a bit schizophrenic on this topic and (I 
think) actually has code to make sure this works as expected when the 
command ends up being put directly into build.ninja (which is what will 
usually happen on linux etc.)

> Regardless of whose bug it is, I've got a simple but ugly workaround 
> (attached), now that you've explained to me what's going on.

Good stuff.


More information about the Cygwin-apps mailing list