ports/177509: [Patch] graphics/libkdcraw-kde4 doesn't export classes
Heath Nielson
heathn at gmail.com
Sat Mar 30 17:10:00 UTC 2013
>Number: 177509
>Category: ports
>Synopsis: [Patch] graphics/libkdcraw-kde4 doesn't export classes
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Mar 30 17:10:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Heath Nielson
>Release: 9.1-STABLE
>Organization:
>Environment:
FreeBSD hershey.bar.net 9.1-STABLE FreeBSD 9.1-STABLE #26: Wed Feb 13 13:44:17 MST 2013 heath at hershey.bar.net:/usr/obj/usr/src/sys/HERSHEY amd64
>Description:
The port is configured to build with GCC. As part of the configuration cmake calls FindKDE4Internal.cmake which checks to see if gcc supports the -fvisible=hidden flag, which it does. The project is then built with that flag. However, for some reason, cmake is not defining the value __KDE_HAVE_GCC_VISIBILITY which is used in /usr/local/kde4/include/kdemacros.h to define KDE_EXPORT to export the symbols. Instead KDE_EXPORT is is not defined and those symbols are not exported. Downstream ports, such as graphics/kipi-plugins-kde4, fail because of those hidden symbols.
>How-To-Repeat:
cd /usr/ports/graphics/libkdcraw-kde4; make install
nm -CD /usr/local/kde4/lib/libkdcraw.so | grep KDcraw # will not list any symbols
>Fix:
I am not very familiar with the KDE build infrastructure (nor with cmake). I can see in /usr/ports/x11/kdelibs4/files/patch-cmake_modules_FindKDE4Internal.cmake where testing is done for the -fvisibility compiler flag and see the __KDE_HAVE_GCC_VISIBILITY property set, but can't see how that property translates into setting __KDE_HAVE_GCC_VISIBILITY for kdemacros.h.
I created a workaround which I've attached, but I'm sure that this isn't the proper way to fix this issue.
Patch attached with submission follows:
--- libkdcraw/CMakeLists.txt.orig 2013-03-30 10:40:23.000000000 -0600
+++ libkdcraw/CMakeLists.txt 2013-03-30 10:40:27.000000000 -0600
@@ -52,6 +52,10 @@
SET_TARGET_PROPERTIES(kdcraw PROPERTIES VERSION ${DCRAW_LIB_SO_VERSION_STRING} SOVERSION ${DCRAW_LIB_SO_CUR_VERSION}
DEFINE_SYMBOL LIBRAW_BUILDLIB)
+if (__KDE_HAVE_GCC_VISIBILITY)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__KDE_HAVE_GCC_VISIBILITY")
+endif()
+
INSTALL(TARGETS kdcraw ${INSTALL_TARGETS_DEFAULT_ARGS})
# Check if compilation is done through digiKam SC or not. If yes, do not install header files.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list