From: Tom S. <tom...@me...> - 2019-01-04 06:18:42
|
Hi all, I ran into the same problem a couple of weeks ago. It is in fact a bug in pango 1.43.0 which uses meson as buildsystem instead of autotools, and the pkg-config issue was introduced in the transition. I reported this as a bug <https://gitlab.gnome.org/GNOME/pango/merge_requests/22#note_390137> and submitted a patch <https://gitlab.gnome.org/GNOME/pango/merge_requests/38>, which is now in master and should end up in 1.44 (or possibly in 1.43.1 if this ever gets released). In the meantime, the problem can be fixed by executing: echo "Requires: gobject-2.0" >> /mingw64/lib/pkgconfig/pango.pc followed by building plplot… The cairo backend should build fine then. Best regards, Tom > On 4 Jan 2019, at 06:30, Alan W. Irwin <Ala...@gm...> wrote: > > Hi Günter: > > I have put my reply to your message on the plplot-general mailing list > since your remarks and mine will be of interest to subscribers there. > Therefore, if you have not already subscribed to that list you should do so > now since that is where such support requests are normally addressed. > > More below in context. > > On 2019-01-03 19:29+0100 Günter Kanisch wrote: > >> Dear Alan, >> >> After a longer time having worked with the 32-bit version of plplot under Windows, I want to migrate now to the 64-bit executable of my Fortran/GTK/plplot program. The fortran mathematics and the GTK gui are already running as an 64-bit executable. However, building now plplot-5.14.0 fails with linking the cairo.dll (in the path .. drivers/CMakeFiles/cairo.dir) resulting in two error messages: unknown reference to 'g_object_unref' . >> >> I am working with MSYS2 (installed under d:\msys64\mingw64 under Windows 10); it contains the 64-bitcompilers and GTK and so on, but also mingw32-make.exe. >> >> I tried it for some days now - and could not solve the problem. At least, its seems that cmake finds all the correct 64-bit versions of exe and dll files. >> >> I attach a text file containing the console output of the cmake and thereafter of the mingw32-make command(s), executed by a small bacth file. The cairo-related errors appears at the end of the file. I cannot exclude that the two commands (cmake and then mingw32-make) which I used are not sufficient for a complete build. >> >> Can you recommend some changes in my build steps which I could try then here? > > I have no direct knowledge of the MinGW-w64/MSYS2 platform, but I keep > in close touch with the PLplot developer Arjen Markus (who will be > reading this on the plplot-general mailing list) who has had great > recent success with the 64-bit MinGW-w64/MSYS2 platform. That is, you > will see at <https://sourceforge.net/p/plplot/wiki/Testing_Reports/> > that Arjen has achieved almost perfect comprehensive test results with > this platform in October. So there is excellent hope you will be able > to achieve that near-perfection as well with PLplot on this platform. > :-) > > I have just looked at the report from that test (which he shared with > me), and it appears his pango, and cairo CMake find results were > similar to the ones you have attached, i.e., > > irwin@merlin> grep -Ei 'cairo|pango' Arjen.Markus/20181026/MSYS2/shared/noninteractive/output_tree/cmake.out > -- Checking for module 'pango' > -- Found pango, version 1.42.1 > -- Checking for module 'pangoft2' > -- Found pangoft2, version 1.42.1 > -- Checking for module 'pangocairo' > -- Found pangocairo, version 1.42.1 > -- WARNING: X windows not found. Setting xcairo driver to OFF. > -- Checking for modules 'lasi;pango;pangoft2' > -- WARNING: pango, pangoft2, or lasi not found with pkg-config. > -- WARNING: ENABLE_ocaml is OFF so disabling Plcairo module and lablgtk2 support > -- Determine compile and link flags for ext-cairo-test > -- Checking for module 'cairo' > -- Found cairo, version 1.15.12 > DRIVERS_LIST: cairo;qt;mem;ntk;null;pdf;ps;svg;wingcc;xfig > DEVICES_LIST: memcairo;extcairo;pdfcairo;pngcairo;pscairo;epscairo;svgcairo;wincairo;pdfqt;qtwidget;bmpqt;jpgqt;pngqt;ppmqt;tiffqt;extqt;memqt;svgqt;mem;ntk;null;pdf;ps;psc;svg;wingcc;xfig > > irwin@merlin> grep -Ei 'cairo|pango' Günter.Kanisch/20190103/MSYS2/text9.txt -- Checking for module 'pango' > -- Found pango, version 1.43.0 > -- Checking for module 'pangoft2' > -- Found pangoft2, version 1.43.0 > -- Checking for module 'pangocairo' > -- Found pangocairo, version 1.43.0 > -- WARNING: X windows not found. Setting xcairo driver to OFF. > -- Checking for modules 'lasi;pango;pangoft2' > -- WARNING: pango, pangoft2, or lasi not found with pkg-config. > -- WARNING: ENABLE_ocaml is OFF so disabling Plcairo module and lablgtk2 support > -- Determine compile and link flags for ext-cairo-test > -- Checking for module 'cairo' > -- Found cairo, version 1.16.0 > DRIVERS_LIST: cairo;mem;ntk;null;pdf;ps;svg;wingcc;xfig > DEVICES_LIST: memcairo;extcairo;pdfcairo;pngcairo;pscairo;epscairo;svgcairo;wincairo;mem;ntk;null;pdf;ps;psc;svg;wingcc;xfig > [...] (I have excluded build results to make yours comparable with Arjen's cmake results.) > > So it appears you have found slightly newever versions of the same > pango and cairo libraries found by Arjen so I don't see any issues with your > configuration. > > @Arjen: will you double check that please? > > @Günter > > However, a possible issue is you have used the "MinGW-Makefiles" > generator. In theory, that is supposed to work correctly on the > MinGW-w64/MSYS2 platform with mingw32-make, but Arjen has not yet > tried testing that variant, and it is possible there is some cairo > configuration issue or even "MinGW-Makefiles" cmake generator issue > for that case which is not an issue if you use the "Unix Makefiles" > generator with make (that Arjen used for his test as you can see from > the wiki test report). > > Furthermore, here are the differences in the actual cairo build between Arjen > and you. > > Arjen's build result: > > [ 13%] Building C object drivers/CMakeFiles/cairo.dir/cairo.c.obj > cd D:/plplot-svn/comprehensive_test_disposeable/shared/noninteractive/build_tree/drivers && D:/msys64-new/mingw64/bin/cc.exe -DPLPLOT_HAVE_CONFIG_H -DUSINGDLL -Dcairo_EXPORTS @CMakeFiles/cairo.dir/includes_C.rsp -mms-bitfields -ID:/msys64-new/mingw64/include/pango-1.0 -ID:/msys64-new/mingw64/include/fribidi -ID:/msys64-new/mingw64/include/cairo -ID:/msys64-new/mingw64/include/pixman-1 -ID:/msys64-new/mingw64/include -ID:/msys64-new/mingw64/include/freetype2 -ID:/msys64-new/mingw64/include -ID:/msys64-new/mingw64/include/harfbuzz -ID:/msys64-new/mingw64/include/glib-2.0 -ID:/msys64-new/mingw64/lib/glib-2.0/include -ID:/msys64-new/mingw64/include -ID:/msys64-new/mingw64/include/libpng16 -ID:/msys64-new/mingw64/include -o CMakeFiles/cairo.dir/cairo.c.obj -c D:/plplot-svn/plplot-git/drivers/cairo.c > [ 13%] Linking C shared module ../dll/cairo.dll > cd D:/plplot-svn/comprehensive_test_disposeable/shared/noninteractive/build_tree/drivers && D:/msys64-new/mingw64/bin/cmake.exe -E remove -f CMakeFiles/cairo.dir/objects.a > cd D:/plplot-svn/comprehensive_test_disposeable/shared/noninteractive/build_tree/drivers && D:/msys64-new/mingw64/bin/ar.exe cr CMakeFiles/cairo.dir/objects.a @CMakeFiles/cairo.dir/objects1.rsp > cd D:/plplot-svn/comprehensive_test_disposeable/shared/noninteractive/build_tree/drivers && D:/msys64-new/mingw64/bin/cc.exe -shared -o ../dll/cairo.dll -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles/cairo.dir/objects.a -Wl,--no-whole-archive @CMakeFiles/cairo.dir/linklibs.rsp > make[3]: Leaving directory '/d/plplot-svn/comprehensive_test_disposeable/shared/noninteractive/build_tree' > [ 13%] Built target cairo > > > Your result (from the attached file): > > [ 42%] Building C object drivers/CMakeFiles/cairo.dir/cairo.c.obj > cd /d D:\plplot-5.14.0\buildmingw64\drivers && D:\msys64\mingw64\bin\gcc.exe -DPLPLOT_HAVE_CONFIG_H -DUSINGDLL -Dcairo_EXPORTS @CMakeFiles/cairo.dir/includes_C.rsp -mms-bitfields -Id:/msys64/mingw64/include/pango-1.0 -Id:/msys64/mingw64/include/fribidi -Id:/msys64/mingw64/include -Id:/msys64/mingw64/include/cairo -Id:/msys64/mingw64/include -Id:/msys64/mingw64/lib/libffi-3.2.1/include -Id:/msys64/mingw64/include/pixman-1 -Id:/msys64/mingw64/include -Id:/msys64/mingw64/include/freetype2 -Id:/msys64/mingw64/include -Id:/msys64/mingw64/include/harfbuzz -Id:/msys64/mingw64/include/glib-2.0 -Id:/msys64/mingw64/lib/glib-2.0/include -Id:/msys64/mingw64/include -Id:/msys64/mingw64/include/libpng16 -Id:/msys64/mingw64/include -o CMakeFiles\cairo.dir\cairo.c.obj -c D:\plplot-5.14.0\drivers\cairo.c > [ 42%] Linking C shared module ..\dll\cairo.dll > cd /d D:\plplot-5.14.0\buildmingw64\drivers && D:\msys64\mingw64\bin\cmake.exe -E cmake_link_script CMakeFiles\cairo.dir\link.txt --verbose=1 > D:\msys64\mingw64\bin\cmake.exe -E remove -f CMakeFiles\cairo.dir/objects.a > D:\msys64\mingw64\bin\ar.exe cr CMakeFiles\cairo.dir/objects.a @CMakeFiles\cairo.dir\objects1.rsp > D:\msys64\mingw64\bin\gcc.exe -shared -o ..\dll\cairo.dll -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles\cairo.dir/objects.a -Wl,--no-whole-archive @CMakeFiles\cairo.dir\linklibs.rsp > CMakeFiles\cairo.dir/objects.a(cairo.c.obj):cairo.c:(.text+0x1279): undefined reference to `g_object_unref' > CMakeFiles\cairo.dir/objects.a(cairo.c.obj):cairo.c:(.text+0x16f4): undefined reference to `g_object_unref' > collect2.exe: error: ld returned 1 exit status > mingw32-make[2]: *** [drivers\CMakeFiles\cairo.dir\build.make:97: dll/cairo.dll] Error 1 > mingw32-make[2]: Leaving directory 'D:/plplot-5.14.0/buildmingw64' > mingw32-make[1]: *** [CMakeFiles\Makefile2:1733: drivers/CMakeFiles/cairo.dir/all] Error 2 > mingw32-make[1]: Leaving directory 'D:/plplot-5.14.0/buildmingw64' > mingw32-make: *** [Makefile:154: all] Error 2 > > So it appears your link step for our cairo device driver is quite > different from Arjen's. It's possible these differences are due to > Arjen still using Windows 7 for his last comprehensive test while you > are using Windows 10. But ideally CMake should be able to adjust for > those differences. > > Anyhow, to get closer to the combination that works well for Arjen, > I suggest you install the msys/bash and msys/make packages > (which includes the Unix-style "make" command) from the msys archive > and try the "Unix Makefiles" generator instead with make (run from a > bash command line). > > Note, if you want to go back to the "MinGW Makefiles" approach after > trying "Unix Makefiles" (or the very similar "MSYS Makefiles") then > you will have to remove the msys/bash package which is incompatible > with the "MinGW Makefiles" generator without a hack I know (remove the > sh.exe copy of bash.exe) to work around that issue. > > By the way, if you still continue to have cairo linking problems when > you switch to "Unix Makefiles" generator + msys make, I hope you will > be willing to send this list a report tarball containing everything we > need to know. This is only possible on platforms with bash > which is another reason for you to install msys/make and msys/bash. > > On such platforms the way you create that tarball > is simply to run > > scripts/comprehensive_testing.sh > > For a lot of important details about that script please look at > <https://sourceforge.net/p/plplot/wiki/Testing_PLplot/> > >> By the way: I observed that I do not know the libplplotfortran.dll. Does it replace one/some other dlls I have used previously? > > libplplotfortran contains our modern Fortran binding for PLplot so it > is essential for you with PLplot-5.14.0 (and also at least one > previous version). So I infer you are trying to upgrade from a fairly > old version of PLplot. I highly encourage that step because of all > the bug fixing and new features available with modern PLplot, but it > does involve some "upgrade pain" for you. But I hope such discussions > as these will ease that pain for you. > >> Thank you very much in advance - and all the best for a successful new year! > > Thanks, and you too. > > Alan > __________________________ > Alan W. Irwin > > Programming affiliations with the FreeEOS equation-of-state > implementation for stellar interiors (freeeos.sf.net); the Time > Ephemerides project (timeephem.sf.net); PLplot scientific plotting > software package (plplot.sf.net); the libLASi project > (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); > and the Linux Brochure Project (lbproject.sf.net). > __________________________ > > Linux-powered Science > __________________________<text9.txt>_______________________________________________ > Plplot-general mailing list > Plp...@li... > https://lists.sourceforge.net/lists/listinfo/plplot-general |