Tim, Serghei:
The tdelibs build failure was due to incorrect pkgconfig information supplied by libcaldav and libcarddav for their include file locations. When the ConfigureChecks.cmake tries to set the include location is gets it wrong.
Both packages include an extraneous amount of version information when installing include files. Eg:
/usr/include/libcaldav-0.6.5/caldav.h /usr/include/libcarddav-0.6.1/carddav.h
However, the pkgconfig files for both return incorrect include directory location:
21:58 nirvana:/mnt/nv1/home/chroot> cat david/usr/lib/pkgconfig/libcaldav.pc prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include
pkglibdir=${libdir}/libcaldav pkgincludedir=${includedir}/libcaldav
Name: libcaldav Description: libcaldav is a client library for CalDAV Version: 0.6.5
Cflags: -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include Libs: -pthread -lgthread-2.0 -lrt -lglib-2.0 -lcurl 21:58 nirvana:/mnt/nv1/home/chroot> cat david/usr/lib/pkgconfig/libcarddav.pc prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include
pkglibdir=${libdir}/libcarddav pkgincludedir=${includedir}/libcarddav
Name: libcarddav Description: libcarddav is a client library for CardDAV Version: 0.6.1
Cflags: -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include Libs: -pthread -lgthread-2.0 -lrt -lglib-2.0 -lcurl
Thus when the ConfigureChecks.cmake files include the location of the header files, it gets the wrong information. Eg:
# libcaldav pkg_search_module( CALDAV libcaldav ) if( CALDAV_FOUND ) execute_process( COMMAND pkg-config libcaldav --variable=pkgincludedir OUTPUT_VARIABLE _incdir RESULT_VARIABLE _result OUTPUT_STRIP_TRAILING_WHITESPACE ) execute_process( COMMAND pkg-config libcaldav --variable=pkglibdir OUTPUT_VARIABLE _libdir RESULT_VARIABLE _result OUTPUT_STRIP_TRAILING_WHITESPACE ) list( APPEND CALDAV_INCLUDE_DIRS ${_incdir} ) list( APPEND CALDAV_LIBRARY_DIRS ${_libdir} ) list( APPEND CALDAV_LIBRARIES caldav ) else( ) tde_message_fatal( "libcaldav is requested, but was not found on your system" ) endif( )
What this means is that CALDAV_INCLUDE_DIRS gets '/usr/include/libcaldav' instead of '/usr/include/libcaldav-0.6.5' where the file is actually located.
Where/How should this be corrected properly??
On 03/11/2012 10:04 PM, David C. Rankin wrote:
build failure was due to incorrect pkgconfig information supplied by libcaldav and libcarddav for their include file locations. When the ConfigureChecks.cmake tries to set the include location is gets it wrong.
Both packages include an extraneous amount of version information when installing include files. Eg:
/usr/include/libcaldav-0.6.5/caldav.h /usr/include/libcarddav-0.6.1/carddav.h
However, the pkgconfig files for both return incorrect include directory location:
Darrell,
I've looked at the patch files with bug 701 -- and I think they are incorrect... Double check me. But it looks like we don't need to patch both the libcaldav.pc.in files AND the src/Makefile.in and src/Makefile.am files. We only need to do the Makefiles. (If we did both, then .pc would point to $prefix/include while Makefiles put the header in $prefix/include/libcaldav) (that maybe OK, but that's just what I saw)
Note: in libcaldav the libcaldav.pc file just needs to be deleted altogether (it looks like a leftover from somebody's build) I have created two additional patches that just patch the Makefiles. Take a look and let me know.
I'll think up some better names before I upload to the bug.