GNOME Bugzilla – Bug 362489
libgnome.pc doesn't specify -I and -L flags for popt
Last modified: 2019-02-23 02:41:06 UTC
Steps to reproduce: 1. I'll upload the tool if necessary and post instructions. 2. 3. Stack trace: Other information: To make longh story short - apparently 'perl Makefile.PL' mechanism refuses to accept non-standard locations of 'popt' library, even though an effort is made on command line to override search paths. Please wait until I upload the files.
Created attachment 74766 [details] pverall build log file Please pay attention to (very long) line numbers 2409, 2413. The first of them is the real 'perl Makefile.pl' and the second is the real 'make' invokations. Please note that CPPFLAGS, CCFLAGS (probably unnecessary), LD_LIBRARY, LDFLAGS environment variables are set and the variables contain /home/sergei/AppsFromScratchWD/install/popt-1.6.4/include /home/sergei/AppsFromScratchWD/install/popt-1.6.4/lib paths tp point to .h and .so files.
Created attachment 74767 [details] failing 'make' log file Please note that 'popt' substring appears only in the error messages: " [36] 1:52 sergei@comp.home.net:/ibm/home/sergei/Bug-362489> grep popt make.log /home/sergei/AppsFromScratchWD/install/libgnome-2.14.1/include/libgnome-2.0/libgnome/gnome-program.h:40:18: error: popt.h: No such file or directory /home/sergei/AppsFromScratchWD/install/libgnomeui-2.14.1/include/libgnomeui-2.0/libgnomeui/gnome-ui-init.h:50: error: syntax error before 'poptContext' [37] 1:53 sergei@comp.home.net:/ibm/home/sergei/Bug-362489> ".
Created attachment 74768 [details] created by 'perl Makefile.PL' Makefile Please note that /home/sergei/AppsFromScratchWD/install/popt-1.6.4/include /home/sergei/AppsFromScratchWD/install/popt-1.6.4/lib paths do not appear in the Makefile: " [41] 1:56 sergei@comp.home.net:/ibm/home/sergei/Bug-362489> echo $status 1 [42] 1:56 sergei@comp.home.net:/ibm/home/sergei/Bug-362489> grep /home/sergei/AppsFromScratchWD/install/popt-1.6.4/lib Makefile.original [43] 1:57 sergei@comp.home.net:/ibm/home/sergei/Bug-362489> echo $status 1 [44] 1:57 sergei@comp.home.net:/ibm/home/sergei/Bug-362489> ". The above means that fixing the include issue alone won't be sufficient - linking fail unless /home/sergei/AppsFromScratchWD/install/popt-1.6.4/lib is also inserted.
Anybody ?
Well, nothing in Gnome2 explicitly depends on popt; it doesn't occur anywhere in the source. Usually, popt gets pulled in via libgnome. So it's libgnome's reponsibility to make the relevant paths known to the compiler and the linker. As far as I can tell, this should happen via the libgnome-2.0.pc file (in <prefix>/lib/pkgconfig). If that doesn't happen for you, then it seems to be a bug in libgnome itself. But I'm not sure if the libgnome maintainers would be happy about a build-related bug report involving a completely unusual build environment such as yours. Please close this bug unless you still think the bug is in Gnome2 itself.
I believe that before release targets should be tested with 'make test' or 'make check' - whatever Makefile has for built-in tests. Even though my build environment is not traditional, I consider it to be legal - that ist, it uses documented features of install prefix, include and library files locations, etc. There is a whole Linux distro called GoboLinux (http://gobolinux.org/) which uses directory per library approach - the same way as I do. To me it still looks like a bug Gnome2-1.040, in its prerelease verification procedure first of all. About libgnome - I do not think you correctly blame it. Here are contents of /home/sergei/AFSWD/install/libgnome-2.14.1/lib/pkgconfig/libgnome-2.0.pc file: " prefix=/home/sergei/AFSWD/install/libgnome-2.14.1 exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include libgnome_serverdir=${exec_prefix}/libexec Name: libgnome Description: libgnome Requires: glib-2.0 ORBit-2.0 libbonobo-2.0 gconf-2.0 gnome-vfs-2.0 Version: 2.14.1 Libs: -L${libdir} -lgnome-2 -lpopt Cflags: -I${includedir}/libgnome-2.0 ". Both 'libdir' and 'includedir' point to the correct directories, aren't they ? If you think something is wrong with the above libgnome-2.0.pc file, could you please point me to the wrong line(s) ? As I said in the very beginning, even though CPPFLAGS, CCFLAGS (probably unnecessary), LD_LIBRARY, LDFLAGS environment variables are set and the variables contain /home/sergei/AppsFromScratchWD/install/popt-1.6.4/include /home/sergei/AppsFromScratchWD/install/popt-1.6.4/lib paths tp point to .h and .so files, these paths do not appear in the generated from Makefile.PL Makefile. Why 'popt' path is absent in, say, INC Makefile variable while paths to other libraries are present: INC = -DORBIT2=1 -pthread -I/home/sergei/AFSWD/install/GConf-2.14.0/include/gconf/2 -I/home/sergei/AFSWD/install/ORBit2-2.14.2/include/orbit-2.0 -I/home/sergei/AFSWD/install/atk-1.12.1/include/atk-1.0 -I/home/sergei/AFSWD/install/cairo-1.2.4/include/cairo -I/home/sergei/AFSWD/install/glib-2.12.4/include/glib-2.0 -I/home/sergei/AFSWD/install/glib-2.12.4/lib/glib-2.0/include -I/home/sergei/AFSWD/install/gnome-keyring-0.4.9/include/gnome-keyring-1 -I/home/sergei/AFSWD/install/gnome-vfs-2.14.2/include/gnome-vfs-2.0 -I/home/sergei/AFSWD/install/gnome-vfs-2.14.2/lib/gnome-vfs-2.0/include -I/home/sergei/AFSWD/install/gtk+-2.8.20/include/gtk-2.0 -I/home/sergei/AFSWD/install/gtk+-2.8.20/lib/gtk-2.0/include -I/home/sergei/AFSWD/install/libart_lgpl-2.3.17/include/libart-2.0 -I/home/sergei/AFSWD/install/libbonobo-2.14.0/include/libbonobo-2.0 -I/home/sergei/AFSWD/install/libbonobo-2.14.0/include/bonobo-activation-2.0 -I/home/sergei/AFSWD/install/libbonoboui-2.14.0/include/libbonoboui-2.0 -I/home/sergei/AFSWD/install/libgnome-2.14.1/include/libgnome-2.0 -I/home/sergei/AFSWD/install/libgnomecanvas-2.14.0/include/libgnomecanvas-2.0 -I/home/sergei/AFSWD/install/libgnomeui-2.14.1/include/libgnomeui-2.0 -I/home/sergei/AFSWD/install/libxml2-2.6.26/include/libxml2 -I/home/sergei/AFSWD/install/pango-1.14.7/include/pango-1.0 -I/home/sergei/AFSWD/install/fontconfig-2.4.1/include -I/home/sergei/AFSWD/install/freetype-2.2.1/include/freetype2 -I/home/sergei/AFSWD/install/freetype-2.2.1/include -I/home/sergei/AFSWD/install/Gnome2-Canvas-1.002/lib/perl/5.8.7/Gnome2/Canvas/Install -I/home/sergei/AFSWD/install/Glib-1.140/lib/perl/5.8.7/Glib/Install -I. -I/home/sergei/AFSWD/install/Gnome2-VFS-1.060/lib/perl/5.8.7/Gnome2/VFS/Install -I build -I/home/sergei/AFSWD/install/Gtk2-1.140/lib/perl/5.8.7/Gtk2/Install -I./build -I/home/sergei/AFSWD/install/Cairo-1.01/lib/perl/5.8.7/Cairo/Install -Ibuild ?
(In reply to comment #6) > I believe that before release targets should be tested with > 'make test' or 'make check' - whatever Makefile has for built-in tests. We've already told you that we do this. Obviously, we don't experience the problems you see. > " > prefix=/home/sergei/AFSWD/install/libgnome-2.14.1 > exec_prefix=${prefix} > libdir=${exec_prefix}/lib > includedir=${prefix}/include > libgnome_serverdir=${exec_prefix}/libexec > > Name: libgnome > Description: libgnome > Requires: glib-2.0 ORBit-2.0 libbonobo-2.0 gconf-2.0 gnome-vfs-2.0 > Version: 2.14.1 > Libs: -L${libdir} -lgnome-2 -lpopt > Cflags: -I${includedir}/libgnome-2.0 > ". In "Libs:" we have -lpopt. So libgnome is the package that needs popt and linkts to it. It lacks the -L argument for /home/sergei/AppsFromScratchWD/install/popt-1.6.4/lib though. Similarly, it lacks a -I argument for /home/sergei/AppsFromScratchWD/install/popt-1.6.4/include in "Cflags:". Without these, no external package that relies on the information in libgnome-2.0.pc will be able to find popt with your installation scheme. Note that all the other lib and include paths (like /home/sergei/AFSWD/install/GConf-2.14.0/include/gconf/2, etc.) get pulled in via their respective package's occurence on the Requires: line. That tells pkg-config to look into those .pc files. So if the libgnome maintainer are willing to support your installation scheme, they should add the necessary -I and -L flags to the .pc file at configure time.
libgnome maintainers: here's a bug report about failed compilation of the libgnome Perl bindings. I think the issue is due to the lack of proper -I and -L flags for popt in libgnome's pkg-config file.
libgnome and libgnomeui were only used in GNOME 2 and are not under active development anymore. Their codebases have been archived: https://gitlab.gnome.org/Archive/libgnome/commits/master https://gitlab.gnome.org/Archive/libgnomeui/commits/master Closing this report as WONTFIX as part of Bugzilla Housekeeping to reflect reality.