From f3efe1f53cecfd9fb21e3c58d4d770930992d2fa Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Wed, 23 Oct 2013 09:21:16 -0500 Subject: [PATCH] allow udev backend on el6 afiestas recommended simply ommitting the new solid api for systems with older udev, so here we are. --- ...ibs-UDEV_HAVE_GET_SYSATTR_LIST_ENTRY.patch | 95 +++++++++++++++++++ kdelibs.spec | 11 ++- 2 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 kdelibs-UDEV_HAVE_GET_SYSATTR_LIST_ENTRY.patch diff --git a/kdelibs-UDEV_HAVE_GET_SYSATTR_LIST_ENTRY.patch b/kdelibs-UDEV_HAVE_GET_SYSATTR_LIST_ENTRY.patch new file mode 100644 index 0000000..586e1b4 --- /dev/null +++ b/kdelibs-UDEV_HAVE_GET_SYSATTR_LIST_ENTRY.patch @@ -0,0 +1,95 @@ +diff --git a/cmake/modules/FindUDev.cmake b/cmake/modules/FindUDev.cmake +index 4c8390d..1c05dd0 100644 +--- a/cmake/modules/FindUDev.cmake ++++ b/cmake/modules/FindUDev.cmake +@@ -4,14 +4,32 @@ + # UDEV_FOUND - system has UDev + # UDEV_INCLUDE_DIR - the libudev include directory + # UDEV_LIBS - The libudev libraries ++# UDEV_HAVE_GET_SYSATTR_LIST_ENTRY - TRUE if the udev library has the function ++# udev_device_get_sysattr_list_entry(), added in version 167 of libudev + + # Copyright (c) 2010, Rafael Fernández López, + # + # Redistribution and use is allowed according to the terms of the BSD license. + # For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +-find_path(UDEV_INCLUDE_DIR libudev.h) +-find_library(UDEV_LIBS udev) ++find_package(PkgConfig) ++if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_LIBUDEV libudev) ++endif() ++ ++find_path(UDEV_INCLUDE_DIR libudev.h ++ HINTS ${PC_LIBUDEV_INCLUDEDIR} ${PC_LIBUDEV_INCLUDE_DIRS}) ++find_library(UDEV_LIBS udev ++ HINTS ${PC_LIBUDEV_LIBDIR} ${PC_LIBUDEV_LIBRARY_DIRS}) ++ ++if(UDEV_INCLUDE_DIR AND UDEV_LIBS) ++ include(CheckFunctionExists) ++ include(CMakePushCheckState) ++ cmake_push_check_state() ++ set(CMAKE_REQUIRED_LIBRARIES ${UDEV_LIBS} ) ++ check_function_exists(udev_device_get_sysattr_list_entry UDEV_HAVE_GET_SYSATTR_LIST_ENTRY ) ++ cmake_pop_check_state() ++endif() + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(UDev DEFAULT_MSG UDEV_INCLUDE_DIR UDEV_LIBS) +diff --git a/solid/solid/CMakeLists.txt b/solid/solid/CMakeLists.txt +index a7f1f07..97ca6c4 100644 +--- a/solid/solid/CMakeLists.txt ++++ b/solid/solid/CMakeLists.txt +@@ -200,6 +200,7 @@ if(NOT WIN32 AND NOT APPLE) + + if ( UDEV_FOUND ) + message(STATUS "Building Solid UDev backend." ) ++ macro_bool_to_01(UDEV_HAVE_GET_SYSATTR_LIST_ENTRY) + set(solid_LIB_SRCS ${solid_LIB_SRCS} + backends/udev/utils.cpp + backends/udev/udevdevice.cpp +diff --git a/solid/solid/backends/shared/udevqt.h b/solid/solid/backends/shared/udevqt.h +index 228687e..9611658 100644 +--- a/solid/solid/backends/shared/udevqt.h ++++ b/solid/solid/backends/shared/udevqt.h +@@ -49,7 +49,9 @@ class Device + QString primaryDeviceFile() const; + QStringList alternateDeviceSymlinks() const; + QStringList deviceProperties() const; ++#ifdef UDEV_HAVE_GET_SYSATTR_LIST_ENTRY + QStringList sysfsProperties() const; ++#endif + Device parent() const; + + // ### should this really be a QVariant? as far as udev knows, everything is a string... +diff --git a/solid/solid/backends/shared/udevqtdevice.cpp b/solid/solid/backends/shared/udevqtdevice.cpp +index d18b616..4721b7a 100644 +--- a/solid/solid/backends/shared/udevqtdevice.cpp ++++ b/solid/solid/backends/shared/udevqtdevice.cpp +@@ -197,6 +197,7 @@ QStringList Device::deviceProperties() const + return listFromListEntry(udev_device_get_properties_list_entry(d->udev)); + } + ++#ifdef UDEV_HAVE_GET_SYSATTR_LIST_ENTRY + QStringList Device::sysfsProperties() const + { + if (!d) +@@ -204,6 +205,7 @@ QStringList Device::sysfsProperties() const + + return listFromListEntry(udev_device_get_sysattr_list_entry(d->udev)); + } ++#endif + + Device Device::parent() const + { +diff --git a/solid/solid/config-solid.h.cmake b/solid/solid/config-solid.h.cmake +index 84c3b5c..bb71645 100644 +--- a/solid/solid/config-solid.h.cmake ++++ b/solid/solid/config-solid.h.cmake +@@ -19,4 +19,5 @@ + */ + + #cmakedefine UDEV_FOUND ++#cmakedefine UDEV_HAVE_GET_SYSATTR_LIST_ENTRY + #cmakedefine HUPNP_FOUND diff --git a/kdelibs.spec b/kdelibs.spec index b9d4e5d..8834d49 100644 --- a/kdelibs.spec +++ b/kdelibs.spec @@ -23,7 +23,6 @@ %define cmake_pkg cmake28 %else %define cmake_pkg cmake -%define udev 1 %define upower 1 %endif @@ -138,6 +137,11 @@ Patch49: kdelibs-solid_qt_no_debug_output.patch # https://git.reviewboard.kde.org/r/102439/ Patch50: kdelibs-4.7.0-knewstuff2_gpg2.patch +# an improvement on +# https://projects.kde.org/projects/kde/kdelibs/repository/revisions/a8d3d3321522d35c2852abb02a475c6b43be5cfe +# strictly, only required for old pre-systemd systems (like el6) +Patch51: kdelibs-UDEV_HAVE_GET_SYSATTR_LIST_ENTRY.patch + # Toggle solid upnp support at runtime via env var SOLID_UPNP=1 (disabled by default) Patch52: kdelibs-4.10.0-SOLID_UPNP.patch @@ -222,9 +226,7 @@ BuildRequires: pkgconfig(libattica) >= %{attica_ver} BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(libpcre) BuildRequires: pkgconfig(libstreams) >= %{strigi_ver} -%if 0%{?udev} -BuildRequires: pkgconfig(libudev) >= 167 -%endif +BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libxslt) pkgconfig(libxml-2.0) BuildRequires: pkgconfig(OpenEXR) BuildRequires: pkgconfig(openssl) @@ -353,6 +355,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage # upstreamable patches %patch50 -p1 -b .knewstuff2_gpg2 +%patch51 -p1 -b .UDEV_HAVE_GET_SYSATTR_LIST_ENTRY %patch52 -p1 -b .SOLID_UPNP %patch53 -p1 -b .kjs-s390 %patch54 -p1 -b .kjs-locale