Help needed with gobject-introspection
Jon Turney
jon.turney@dronecode.org.uk
Thu May 21 13:24:36 GMT 2020
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.
More information about the Cygwin-apps
mailing list