[kdelibs] FindKdcraw.cmake fixes(kde#311936)

Rex Dieter rdieter at fedoraproject.org
Sat Dec 29 12:34:03 UTC 2012


commit e242148dec743395fad95081f9f8bd93c4fa6f52
Author: Rex Dieter <rdieter at math.unl.edu>
Date:   Sat Dec 29 06:34:19 2012 -0600

    FindKdcraw.cmake fixes(kde#311936)

 kdelibs-FindKdcraw.patch |  246 ++++++++++++++++++++++++++++++++++++++++++++++
 kdelibs.spec             |    8 ++-
 2 files changed, 253 insertions(+), 1 deletions(-)
---
diff --git a/kdelibs-FindKdcraw.patch b/kdelibs-FindKdcraw.patch
new file mode 100644
index 0000000..9012bb5
--- /dev/null
+++ b/kdelibs-FindKdcraw.patch
@@ -0,0 +1,246 @@
+diff --git a/cmake/modules/FindKdcraw.cmake b/cmake/modules/FindKdcraw.cmake
+index 518033d..1d1a2ac 100644
+--- a/cmake/modules/FindKdcraw.cmake
++++ b/cmake/modules/FindKdcraw.cmake
+@@ -1,124 +1,157 @@
+-# - Try to find the Kdcraw library
++# Try to find the Kdcraw library
+ #
+-# If you have put a local version of libkdcraw into your source tree,
+-# set KDCRAW_LOCAL_DIR to the relative path to the local directory.
++# Parameters:
++#  KDCRAW_LOCAL_DIR - If you have put a local version of libkdcraw into
++#                     your source tree, set KDCRAW_LOCAL_DIR to the
++#                     relative path from the root of your source tree
++#                     to the libkdcraw local directory.
+ #
+ # Once done this will define
+ #
+-#  KDCRAW_FOUND - system has libkdcraw
+-#  KDCRAW_INCLUDE_DIR - the libkdcraw include directory
++#  KDCRAW_FOUND - System has libkdcraw
++#  KDCRAW_INCLUDE_DIR - The libkdcraw include directory/directories (for #include <libkdcraw/...> style)
+ #  KDCRAW_LIBRARIES - Link these to use libkdcraw
+ #  KDCRAW_DEFINITIONS - Compiler switches required for using libkdcraw
++#  KDCRAW_VERSION - Version of libkdcraw which was found
+ #
+-
+-# Copyright (c) 2008, Gilles Caulier, <caulier.gilles at gmail.com>
++# Copyright (c) 2008-2011, Gilles Caulier, <caulier.gilles at gmail.com>
++# Copyright (c) 2011, Michael G. Hansen, <mike at mghansen.de>
+ #
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+ 
++# Kdcraw_FIND_QUIETLY and Kdcraw_FIND_REQUIRED may be defined by CMake.
+ 
+-if (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES AND KDCRAW_DEFINITIONS)
++if (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES AND KDCRAW_DEFINITIONS AND KDCRAW_VERSION)
+ 
+-  message(STATUS "Found Kdcraw library in cache: ${KDCRAW_LIBRARIES}")
++  if (NOT Kdcraw_FIND_QUIETLY)
++    message(STATUS "Found Kdcraw library in cache: ${KDCRAW_LIBRARIES}")
++  endif (NOT Kdcraw_FIND_QUIETLY)
+ 
+   # in cache already
+   set(KDCRAW_FOUND TRUE)
+ 
+-else (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES AND KDCRAW_DEFINITIONS)
+-
+-  message(STATUS "Check Kdcraw library in local sub-folder...")
++else (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES AND KDCRAW_DEFINITIONS AND KDCRAW_VERSION)
+ 
+-  # Check if library is not in local sub-folder
++  if (NOT Kdcraw_FIND_QUIETLY)
++    message(STATUS "Check for Kdcraw library in local sub-folder...")
++  endif (NOT Kdcraw_FIND_QUIETLY)
+ 
++  # Check for a local version of the library.
+   if (KDCRAW_LOCAL_DIR)
+-    set (KDCRAW_LOCAL_FOUND TRUE)
++    find_file(KDCRAW_LOCAL_FOUND libkdcraw/version.h.cmake ${CMAKE_SOURCE_DIR}/${KDCRAW_LOCAL_DIR} NO_DEFAULT_PATH)
++    if (NOT KDCRAW_LOCAL_FOUND)
++      message(WARNING "KDCRAW_LOCAL_DIR specified as \"${KDCRAW_LOCAL_DIR}\" but libkdcraw could not be found there.")
++    endif (NOT KDCRAW_LOCAL_FOUND)
+   else (KDCRAW_LOCAL_DIR)
+-    find_file(KDCRAW_LOCAL_FOUND libkdcraw/kdcraw.h ${CMAKE_SOURCE_DIR}/libkdcraw ${CMAKE_SOURCE_DIR}/libs/libkdcraw NO_DEFAULT_PATH)
+-
++    find_file(KDCRAW_LOCAL_FOUND libkdcraw/version.h.cmake ${CMAKE_SOURCE_DIR}/libkdcraw NO_DEFAULT_PATH)
+     if (KDCRAW_LOCAL_FOUND)
+-      # Was it found in libkdcraw/ or in libs/libkdcraw?
+-      find_file(KDCRAW_LOCAL_FOUND_IN_LIBS libkdcraw/kdcraw.h ${CMAKE_SOURCE_DIR}/libs/libkdcraw NO_DEFAULT_PATH)
+-      if (KDCRAW_LOCAL_FOUND_IN_LIBS)
+-        set(KDCRAW_LOCAL_DIR libs/libkdcraw)
+-      else (KDCRAW_LOCAL_FOUND_IN_LIBS)
+-        set(KDCRAW_LOCAL_DIR libkdcraw)
+-      endif (KDCRAW_LOCAL_FOUND_IN_LIBS)
++      set(KDCRAW_LOCAL_DIR libkdcraw)
++    endif (KDCRAW_LOCAL_FOUND)
++    find_file(KDCRAW_LOCAL_FOUND libkdcraw/version.h.cmake ${CMAKE_SOURCE_DIR}/libs/libkdcraw NO_DEFAULT_PATH)
++    if (KDCRAW_LOCAL_FOUND)
++      set(KDCRAW_LOCAL_DIR libs/libkdcraw)
+     endif (KDCRAW_LOCAL_FOUND)
+   endif (KDCRAW_LOCAL_DIR)
+ 
+   if (KDCRAW_LOCAL_FOUND)
+-
+-    # we need two include directories: because the version.h file is put into the build directory
++    # We need two include directories: because the version.h file is put into the build directory
+     # TODO KDCRAW_INCLUDE_DIR sounds like it should contain only one directory...
+     set(KDCRAW_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/${KDCRAW_LOCAL_DIR} ${CMAKE_BINARY_DIR}/${KDCRAW_LOCAL_DIR})
+     set(KDCRAW_DEFINITIONS "-I${CMAKE_SOURCE_DIR}/${KDCRAW_LOCAL_DIR}" "-I${CMAKE_BINARY_DIR}/${KDCRAW_LOCAL_DIR}")
+     set(KDCRAW_LIBRARIES kdcraw)
+-    message(STATUS "Found Kdcraw library in local sub-folder: ${CMAKE_SOURCE_DIR}/${KDCRAW_LOCAL_DIR}")
++    if (NOT Kdcraw_FIND_QUIETLY)
++      message(STATUS "Found Kdcraw library in local sub-folder: ${CMAKE_SOURCE_DIR}/${KDCRAW_LOCAL_DIR}")
++    endif (NOT Kdcraw_FIND_QUIETLY)
+     set(KDCRAW_FOUND TRUE)
+-    mark_as_advanced(KDCRAW_INCLUDE_DIR KDCRAW_LIBRARIES KDCRAW_DEFINITIONS)
+ 
+-  else(KDCRAW_LOCAL_FOUND)
++    set(kdcraw_version_h_filename "${CMAKE_BINARY_DIR}/${KDCRAW_LOCAL_DIR}/libkdcraw/version.h")
+ 
+-    message(STATUS "Check Kdcraw library using pkg-config...")
++  else (KDCRAW_LOCAL_FOUND)
+     if (NOT WIN32)
+-      # use pkg-config to get the directories and then use these values
+-      # in the FIND_PATH() and FIND_LIBRARY() calls
+-      include(UsePkgConfig)
+-    
+-      PKGCONFIG(libkdcraw _KDCRAWIncDir _KDCRAWLinkDir _KDCRAWLinkFlags _KDCRAWCflags)
+-    
+-      if (_KDCRAWLinkFlags)
+-        # query pkg-config asking for a libkdcraw >= 0.2.0
+-        exec_program(${PKGCONFIG_EXECUTABLE} ARGS --atleast-version=0.2.0 libkdcraw RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
+-        if (_return_VALUE STREQUAL "0")
+-            message(STATUS "Found libkdcraw release >= 0.2.0")
+-            set(KDCRAW_VERSION_GOOD_FOUND TRUE)
+-        else (_return_VALUE STREQUAL "0")
+-            message(STATUS "Found libkdcaw release < 0.2.0, too old")
+-            set(KDCRAW_VERSION_GOOD_FOUND FALSE)
+-            set(KDCRAW_FOUND FALSE)
+-        endif (_return_VALUE STREQUAL "0")
+-      else (_KDCRAWLinkFlags)
++      if (NOT Kdcraw_FIND_QUIETLY)
++        message(STATUS "Check Kdcraw library using pkg-config...")
++      endif (NOT Kdcraw_FIND_QUIETLY)
++
++      # use FindPkgConfig to get the directories and then use these values
++      # in the find_path() and find_library() calls
++      include(FindPkgConfig)
++
++      pkg_check_modules(PC_KDCRAW libkdcraw)
++
++      if (PC_KDCRAW_FOUND)
++        # make sure the version is >= 0.2.0
++        # TODO: WHY?
++        if (PC_KDCRAW_VERSION VERSION_LESS 0.2.0)
++          message(STATUS "Found libkdcraw release < 0.2.0, too old")
++          set(KDCRAW_VERSION_GOOD_FOUND FALSE)
++          set(KDCRAW_FOUND FALSE)
++        else (PC_KDCRAW_VERSION VERSION_LESS 0.2.0)
++          set(KDCRAW_VERSION "${PC_KDCRAW_VERSION}")
++          if (NOT Kdcraw_FIND_QUIETLY)
++            message(STATUS "Found libkdcraw release ${KDCRAW_VERSION}")
++          endif (NOT Kdcraw_FIND_QUIETLY)
++          set(KDCRAW_VERSION_GOOD_FOUND TRUE)
++        endif (PC_KDCRAW_VERSION VERSION_LESS 0.2.0)
++      else (PC_KDCRAW_FOUND)
+         set(KDCRAW_VERSION_GOOD_FOUND FALSE)
+-        set(KDCRAW_FOUND FALSE)
+-      endif (_KDCRAWLinkFlags)
++      endif (PC_KDCRAW_FOUND)
+     else (NOT WIN32)
++      # TODO: Why do we just assume the version is good?
+       set(KDCRAW_VERSION_GOOD_FOUND TRUE)
+     endif (NOT WIN32)
+ 
+     if (KDCRAW_VERSION_GOOD_FOUND)
+-        set(KDCRAW_DEFINITIONS "${_KDCRAWCflags}")
+-    
+-        find_path(KDCRAW_INCLUDE_DIR libkdcraw/version.h
+-        ${_KDCRAWIncDir}
+-        )
+-    
+-        find_library(KDCRAW_LIBRARIES NAMES kdcraw
+-        PATHS
+-        ${_KDCRAWLinkDir}
+-        )
+-    
+-        if (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES)
+-            set(KDCRAW_FOUND TRUE)
+-        endif (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES)
+-     endif (KDCRAW_VERSION_GOOD_FOUND) 
+-     if (KDCRAW_FOUND)
+-         if (NOT Kdcraw_FIND_QUIETLY)
+-             message(STATUS "Found libkdcraw: ${KDCRAW_LIBRARIES}")
+-         endif (NOT Kdcraw_FIND_QUIETLY)
+-     else (KDCRAW_FOUND)
+-         if (Kdcraw_FIND_REQUIRED)
+-             if (NOT KDCRAW_INCLUDE_DIR)
+-                 message(FATAL_ERROR "Could NOT find libkdcraw header files")
+-             endif (NOT KDCRAW_INCLUDE_DIR)
+-             if (NOT KDCRAW_LIBRARIES)
+-                 message(FATAL_ERROR "Could NOT find libkdcraw library")
+-             endif (NOT KDCRAW_LIBRARIES)
+-         endif (Kdcraw_FIND_REQUIRED)
+-     endif (KDCRAW_FOUND)
+-    
+-    mark_as_advanced(KDCRAW_INCLUDE_DIR KDCRAW_LIBRARIES KDCRAW_DEFINITIONS)
+-
+-  endif(KDCRAW_LOCAL_FOUND)
+-  
+-endif (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES AND KDCRAW_DEFINITIONS)
++      set(KDCRAW_DEFINITIONS "${PC_KDCRAW_CFLAGS_OTHER}")
++
++      find_path(KDCRAW_INCLUDE_DIR libkdcraw/version.h ${PC_KDCRAW_INCLUDE_DIRS})
++      set(kdcraw_version_h_filename "${KDCRAW_INCLUDE_DIR}/libkdcraw/version.h")
++
++      find_library(KDCRAW_LIBRARIES NAMES kdcraw HINTS ${PC_KDCRAW_LIBRARY_DIRS})
++
++      if (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES)
++        set(KDCRAW_FOUND TRUE)
++      else (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES)
++        set(KDCRAW_FOUND FALSE)
++      endif (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES)
++    endif (KDCRAW_VERSION_GOOD_FOUND)
++
++    if (KDCRAW_FOUND)
++      if (NOT Kdcraw_FIND_QUIETLY)
++        message(STATUS "Found libkdcraw: ${KDCRAW_LIBRARIES}")
++      endif (NOT Kdcraw_FIND_QUIETLY)
++    else (KDCRAW_FOUND)
++      if (Kdcraw_FIND_REQUIRED)
++        if (NOT KDCRAW_INCLUDE_DIR)
++          message(FATAL_ERROR "Could NOT find libkdcraw header files.")
++        else(NOT KDCRAW_INCLUDE_DIR)
++          message(FATAL_ERROR "Could NOT find libkdcraw library.")
++        endif (NOT KDCRAW_INCLUDE_DIR)
++      endif (Kdcraw_FIND_REQUIRED)
++    endif (KDCRAW_FOUND)
++
++  endif (KDCRAW_LOCAL_FOUND)
++
++  if (KDCRAW_FOUND)
++    # Find the version information, unless that was reported by pkg_search_module.
++    if (NOT KDCRAW_VERSION)
++      file(READ "${kdcraw_version_h_filename}" kdcraw_version_h_content)
++      # This is the line we are trying to find: static const char kdcraw_version[] = "1.22.4-beta_5+dfsg";
++      string(REGEX REPLACE ".*char +kdcraw_version\\[\\] += +\"([^\"]+)\".*" "\\1" KDCRAW_VERSION "${kdcraw_version_h_content}")
++      unset(kdcraw_version_h_content)
++
++    endif (NOT KDCRAW_VERSION)
++    unset(kdcraw_version_h_filename)
++  endif (KDCRAW_FOUND)
++
++  if (KDCRAW_FOUND)
++    mark_as_advanced(KDCRAW_INCLUDE_DIR KDCRAW_LIBRARIES KDCRAW_DEFINITIONS KDCRAW_VERSION KDCRAW_FOUND)
++  else (KDCRAW_FOUND)
++    # The library was not found, reset all related variables.
++    unset(KDCRAW_INCLUDE_DIR)
++    unset(KDCRAW_LIBRARIES)
++    unset(KDCRAW_DEFINITIONS)
++    unset(KDCRAW_VERSION)
++  endif (KDCRAW_FOUND)
++
++endif (KDCRAW_INCLUDE_DIR AND KDCRAW_LIBRARIES AND KDCRAW_DEFINITIONS AND KDCRAW_VERSION)
diff --git a/kdelibs.spec b/kdelibs.spec
index 4cdadd8..9fe38f8 100644
--- a/kdelibs.spec
+++ b/kdelibs.spec
@@ -23,7 +23,7 @@
 
 Summary: KDE Libraries
 Version: 4.9.95
-Release: 2%{?dist}
+Release: 3%{?dist}
 
 Name: kdelibs
 Epoch: 6
@@ -145,6 +145,8 @@ Patch56: kdelibs-4.9.1-FindKipi-libkipi2.patch
 Patch59: kdelibs-4.9.3-kcm_ssl.patch
 
 ## upstream
+# FindKdcraw.cmake fixes
+Patch100: kdelibs-FindKdcraw.patch
 
 ## security fix
 # Not Upstreamed? why not ? -- Rex
@@ -315,6 +317,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
 %patch59 -p1 -b .filter
 
 # upstream patches
+%patch100 -p1 -b .FindKdcraw
 
 # security fixes
 %patch200 -p1 -b .CVE-2009-2702
@@ -555,6 +558,9 @@ gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null || :
 
 
 %changelog
+* Sat Dec 29 2012 Rex Dieter <rdieter at fedoraproject.org> 6:4.9.95-3
+- FindKdcraw.cmake fixes(kde#311936)
+
 * Thu Dec 20 2012 Rex Dieter <rdieter at fedoraproject.org> 6:4.9.95-2
 - Conflicts: kdelibs3 < 3.5.10-42
 


More information about the scm-commits mailing list