GNOME Bugzilla – Bug 508262
Fails build
Last modified: 2018-07-02 10:33:14 UTC
From a clean checkout: gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../gpilotd -I../libgpilotdCM -DG_LOG_DOMAIN=\"libgpilotdcm\" -DORBIT2=1 -pthread -I/usr/include/libxml2 -I/usr/include/libgnome-2.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/orbit-2.0 -I/usr/include/bonobo-activation-2.0 -I/usr/include/libgnomeui-2.0 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/gnome-vfs-2.0 -I/usr/lib64/gnome-vfs-2.0/include -I/usr/include/libart-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gconf/2 -I/usr/include/libglade-2.0 -DDBUS_API_SUBJECT_TO_CHANGE -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/hal -DCONDUITDIR=\"/usr//share\" -g -O2 -Wall -Wmissing-prototypes -MT gnome-pilot-conduit-management.lo -MD -MP -MF .deps/gnome-pilot-conduit-management.Tpo -c gnome-pilot-conduit-management.c -fPIC -DPIC -o .libs/gnome-pilot-conduit-management.o In file included from gnome-pilot-conduit-management.c:13: gnome-pilot-conduit-management.h:16:41: error: gpilotd/gnome-pilot-conduit.h: No such file or directory In file included from gnome-pilot-conduit-management.c:13: gnome-pilot-conduit-management.h:108: error: expected declaration specifiers or '...' before 'GPilotPilot' gnome-pilot-conduit-management.h:109: error: expected declaration specifiers or '...' before 'GnomePilotConduit' gnome-pilot-conduit-management.h:111: error: expected declaration specifiers or '...' before 'GnomePilotConduit' In file included from gnome-pilot-conduit-management.c:15: It seems that gpilotd/gnome-pilot-conduit.h isn't created before going into libgpilotCM/, and moving gpilotd first in the SUBDIRS means that ../libgpilotdCM/libgpilotdcm.la is missing.
This is an old old bug, unfortunately. I must have come across this once upon a time, but had forgotten about it because these header files only get deleted by a 'make maintainer-clean' run. The solution, as 'documented' by the original author is in the README file: * NOTE: Currently theres a buildorder bug betweet libgpilotdCM and * gpilotd. If you get a compiletime error in libgpilotdCM that file * "gpilotd/gnome-pilot-conduit.h" is missing, do a make -k and then * make again. This is grim, and points to circular dependencies between gpilotd and libgpilotdCM directories that I've never felt the urge to touch. Suggestions? I'm tempted to leave this as 'WONTFIX' as it affects users building from svn rather than tar.gz, unless we can find some relatively low impact solution.
Stopping using gob would fix it...
Or all the files in the same directory, even if you create 2 libraries from them. SVN makes this quite easy. Marking as WONTFIX isn't really useful, it means that it will fail building for everyone following the "usual" building instructions, and means special-casing in build scripts.
agreed. getting rid of the libgpilotdCM directory would probably be the way to go here. When you say "SVN makes this quite easy", do you mean "easy to migrate files from one location to another while keeping history", or something else?
(In reply to comment #4) > agreed. getting rid of the libgpilotdCM directory would probably be the way to > go here. > > When you say "SVN makes this quite easy", do you mean "easy to migrate files > from one location to another while keeping history", or something else? Yeah, "svn move" makes it a snap. I can break it if you want me to :)
I've finally got around to fixing this (revision 1553). Please check it out if you get a moment. Shouldn't take much more than: svn co http://svn.gnome.org/svn/gnome-pilot/trunk gnome-pilot cd gnome-pilot/ ./autogen.sh && make and then a quick sync test. A gnome-pilot-2.0.17 release is due, so a quick confirmation this works for you would be great.
Bastien, There is a problem with this approach: the generated headers are now in the gpilotd/ directory, and get installed in $prefix/include/gpilotd rather than $prefix/include/libgpilotdCM. This will break existing code such as evolution conduits. Rather than introduce an incompatibility between gnome-pilot 2.0.17 and existing conduit code, I think I'll look into putting the generated headers into a libgpilotdCM/ directory. Thoughts?
Hope to have this fixed within the next day or two. I'm going to take the approach of keeping the conduit-manager gob generated files in libgpilotdCM/ (where they were before) but doing the build of libgpilotdcm from the gpilotd/ directory so we avoid build order problems.
Wouldn't something as easy as that fix it? Index: Makefile.am =================================================================== --- Makefile.am (revision 1555) +++ Makefile.am (working copy) @@ -121,7 +121,7 @@ libgpilotdcm_la_SOURCES = \ $(GOB_LIBGPILOTDCM_BUILT_SRCS) -libgpilotdcmincludedir = $(includedir)/gpilotd +libgpilotdcmincludedir = $(includedir)/libgpilotdCM libgpilotdcminclude_HEADERS = \ gnome-pilot-conduit-management.h \
There's a little more to it, because you can't have the headers generated in source/gpilotd/ and installed in prefix/include/libgpilotdCM because that breaks build-time for code that is using "#include<libgpilotdCM/blah.h>".
$ grep -r libgpilotdCM/ `find -name "*.[ch]"` $ There aren't any such problematic files left in gnome-pilot. The only thing we'd be breaking would be programs that try to compile against the uninstalled version of gnome-pilot. I'm not sure that was ever supposed to work though.
Created attachment 125926 [details] [review] return gnome-pilot-conduit-{config,management}.h to libgpilotdCM/ Take a look at, for example, gnome-pilot-conduit-config.h. This is one of the headers installed by gnome-pilot, and in current SVN it includes "#include<gpilotd/gnome-pilot-conduit-management.h>". However, this needs to change back to "<libgpilotdCM/gnome-pilot-conduit-management.h>", because existing third party code expects it to live there. Once we change it back to "<libgpilotdCM/gnome-pilot-conduit-management.h>" then it needs to be present in that directory name in the uninstalled tree, too, for the build to work. I'm attaching the proposed patch that seems to fix Evolution building for me. With this patch, I'm ready to release 2.0.17, so any quick feedback would be great.
Oh well... I'd rather somebody just broke source compilation once and for all, and we avoid dragging that like a ball and chain.
Well, it should prove a pretty light ball and chain, and I'd rather that than force Evolution to require a specific gnome-pilot version.
gnome-pilot is not under active development anymore and has not seen code changes for seven years. Its codebase has been archived: https://gitlab.gnome.org/Archive/gnome-pilot/commits/master Closing this report as WONTFIX as part of Bugzilla Housekeeping to reflect reality. Please feel free to reopen this ticket (or rather transfer the project to GNOME Gitlab, as GNOME Bugzilla is deprecated) if anyone takes the responsibility for active development again.