Help needed with gobject-introspection

Ken Brown kbrown@cornell.edu
Thu May 21 15:13:47 GMT 2020



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:
>>> I would like to adopt gimp and related packages.  At the moment I'm having 
>>> trouble with babl, which is needed for gegl0.4, which is needed for gimp.  
>>> The problem involves gobject-introspection.
>>>
>>> If I disable introspection, the build works fine.  This would be OK, since 
>>> babl has been built without introspection for several years. But then the 
>>> gegl0.4 build complains about the missing babl introspection files, so I 
>>> would have to disable introspection there too, which hasn't been done in the 
>>> past.
>>>
>>> So my preference is to figure out what the problem is and get the babl build 
>>> working with introspection.  I'm attaching my cygport file and patch.
>>>
>>> Here's the failing command...
>>>
>>> /usr/bin/g-ir-scanner -I/usr/include/gobject-introspection-1.0 
>>> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_REENTRANT --no-libtool 
>>> --namespace=Babl --nsversion=0.1 --warn-all --output babl/Babl-0.1.gir 
>>> --c-include=babl.h '--identifier-filter-cmd=/usr/bin/python3 
>>> /tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/babl/identfilter.py' 
>>> -DBABL_IS_BEING_COMPILED 
>>> -I/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/babl 
>>> -I/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl 
>>> -I./. -I../. -I./babl/base/. -I../babl/base/. 
>>> --filelist=/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl/4170c83@@babl-0.1@sha/Babl_0.1_gir_filelist 
>>> --cflags-begin -fno-unsafe-math-optimizations -Wdeclaration-after-statement 
>>> -Winit-self -Wmissing-declarations -Wmissing-prototypes 
>>> -Wold-style-definition -Wpointer-arith -mmmx -msse -mfpmath=sse -I./. -I../. 
>>> -I./babl/base/. -I../babl/base/. --cflags-end --library babl-0.1 
>>> -L/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl 
>>> --extra-library=m --extra-library=dl --extra-library=lcms2
>>>
>>> ...and the error message:
>>>
>>> g-ir-scanner: link: gcc -o 
>>> /tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/tmp-introspectCwCaUc/Babl-0.1.exe 
>>> -ggdb -O2 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 
>>> -fstack-protector-strong --param=ssp-buffer-size=4 
>>> -fdebug-prefix-map=/tmp/cygbabl/babl-0.1.74-1.x86_64/build=/usr/src/debug/babl-0.1.74-1 
>>> -fdebug-prefix-map=/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74=/usr/src/debug/babl-0.1.74-1 
>>> /tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/tmp-introspectCwCaUc/Babl-0.1.o 
>>> -L. -lbabl-0.1 -lm -ldl -llcms2 
>>> -L/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl 
>>> -Wl,-rpath,/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl 
>>> -lgio-2.0 -lgobject-2.0 -Wl,--export-all-symbols -lgmodule-2.0 -lglib-2.0 -lintl
>>> ERROR: can't resolve libraries to shared libraries: babl-0.1
>>>
>>> I don't understand the error message, because the command line contains
>>>
>>> -L/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl
>>>
>>> and that directory contains libbabl-0.1.dll.a and cygbabl-0.1-0.dll. I even 
>>> tried adding that directory to my PATH to make sure the right 
>>> cygbabl-0.1-0.dll would be found, but that didn't help.
> 
> This might possibly be related to the problem described in the comment for:
> 
> https://github.com/mesonbuild/meson/pull/2880/commits/8a27c08b05e4537d5061d30ddd8aad9dc52cf1c4 
> 
> 
>> By the way, in case you're wondering why I disabled the building of docs, it's 
>> because I was getting a build failure there too.  I don't know if this is 
>> related to the introspection failure.  The failing command there is
>>
>> /usr/bin/meson --internal exe --unpickle 
>> /tmp/cygbabl/babl-0.1.74-2.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/meson-private/meson_exe_env_7bf39b99114d34540b83d26a5d8f097e05882836.dat 
>>
>> cp: target 'docs/index.html.tmp' is not a directory
>>
>> I don't know why it's not showing me the actual cp command that fails. 
> 
> I believe it's is an infelicity in meson that it doesn't echo the actual failing 
> command here.
> 
> Noted here: https://github.com/mesonbuild/meson/pull/3716#issuecomment-395746838
> 
>> The corresponding information in docs/meson.build is
>>
>> Reference_html = custom_target('Reference.html',
>>    input : [
>>      'Reference-static.html',
>>      'toc',
>>      index_html_tmp,
>>    ],
>>    output: [ 'Reference.html', ],
>>    command: [
>>      env_bin,
>>      'cp', '@INPUT0@', '@OUTPUT@',
>>      '&&', xml_insert, '@OUTPUT@', 'TOC', '@INPUT1@',
>>      '&&', xml_insert, '@OUTPUT@', 'BablBase', '@INPUT2@',
>>    ],
>>    build_by_default: true,
>> )
>>
>> There are several such custom targets in the file, and for all except this 
>> one, I see the actual cp command in the log.  This is the only one for which 
>> meson generates a 'meson --unpickle' command instead of a cp command.
> 
> Yeah, I wasn't expecting it to use this method of executing the command line 
> (storing it in a pickle and then using a python wrapper to execute it) to be 
> used except on Windows, so I'll have to take a more detailed look at why that's 
> happening.

Thanks.  FWIW, the recipe for building docs/Reference.html translates to

   /usr/bin/env \
      cp ../docs/Reference-static.html docs/Reference.html \
       && ../docs/tools/xml_insert.sh docs/Reference.html TOC ../docs/toc \
       && ../docs/tools/xml_insert.sh \
	     docs/Reference.html BablBase docs/index.html.tmp

This succeeds when run manually in the build directory.  So something must have 
gone wrong in the pickling/unpickling process.

Ken


More information about the Cygwin-apps mailing list