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:
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.
patching
/usr/lib/python3.6/site-packages/mesonbuild/scripts/meson_exe.py
something like this might shed some light:
--- meson_exe.py.bak 2020-05-21 15:01:19.187046500 +0100
+++ meson_exe.py 2020-05-21 15:09:29.485915300 +0100
@@ -57,6 +57,8 @@
['Z:' + p for p in exe.extra_paths] +
child_env.get('WINEPATH', '').split(';')
)
+ print(cmd_args)
+
p = subprocess.Popen(cmd_args, env=child_env, cwd=exe.workdir,
close_fds=False,
stdout=subprocess.PIPE,