From 032b78558d03c9f15e204698bcc04e925cf713ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Tinkl?= Date: Mon, 29 Oct 2012 18:26:23 +0100 Subject: [PATCH] Resolves #868530 - cache information about solid device in 'Places' panel in open/save dialog - update solid/udisks2 backend, switch to cmake-define --- kdelibs-udisks2-backend.patch | 330 ++++++++++++++++------------------ kdelibs.spec | 12 +- 2 files changed, 165 insertions(+), 177 deletions(-) diff --git a/kdelibs-udisks2-backend.patch b/kdelibs-udisks2-backend.patch index 09c3eb5..fb87c38 100644 --- a/kdelibs-udisks2-backend.patch +++ b/kdelibs-udisks2-backend.patch @@ -1,5 +1,5 @@ diff --git a/solid/solid/CMakeLists.txt b/solid/solid/CMakeLists.txt -index 0aa7a43..0a74053 100644 +index 0aa7a43..5cd1484 100644 --- a/solid/solid/CMakeLists.txt +++ b/solid/solid/CMakeLists.txt @@ -1,6 +1,7 @@ @@ -10,55 +10,12 @@ index 0aa7a43..0a74053 100644 if(WIN32) include_directories( ${KDEWIN_INCLUDES} ) -@@ -39,7 +40,6 @@ configure_file(config-processor.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-proce - - file(MAKE_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}/backends/fakehw -- ${CMAKE_CURRENT_BINARY_DIR}/backends/hal - ${CMAKE_CURRENT_BINARY_DIR}/backends/udev - ${CMAKE_CURRENT_BINARY_DIR}/backends/wmi - ) -@@ -225,33 +225,6 @@ if(NOT WIN32 AND NOT APPLE) - endif( UDEV_FOUND ) - - -- message(STATUS "Building Solid HAL backend." ) -- set(solid_LIB_SRCS ${solid_LIB_SRCS} -- backends/hal/halacadapter.cpp -- backends/hal/halaudiointerface.cpp -- backends/hal/halbattery.cpp -- backends/hal/halblock.cpp -- backends/hal/halbutton.cpp -- backends/hal/halcamera.cpp -- backends/hal/halcdrom.cpp -- backends/hal/haldeviceinterface.cpp -- backends/hal/haldvbinterface.cpp -- backends/hal/halfstabhandling.cpp -- backends/hal/halgenericinterface.cpp -- backends/hal/haldevice.cpp -- backends/hal/halmanager.cpp -- backends/hal/halnetworkinterface.cpp -- backends/hal/halserialinterface.cpp -- backends/hal/halopticaldisc.cpp -- backends/hal/halportablemediaplayer.cpp -- backends/hal/halprocessor.cpp -- backends/hal/halstorageaccess.cpp -- backends/hal/halstorage.cpp -- backends/hal/halvideo.cpp -- backends/hal/halvolume.cpp -- backends/hal/halsmartcardreader.cpp -- ) -- - message(STATUS "Building Solid UPower backend." ) - set(solid_LIB_SRCS ${solid_LIB_SRCS} - backends/upower/upowermanager.cpp -@@ -264,18 +237,19 @@ if(NOT WIN32 AND NOT APPLE) +@@ -264,19 +265,38 @@ if(NOT WIN32 AND NOT APPLE) # FIXME: this should work on more Unix systems if (CMAKE_SYSTEM_NAME MATCHES Linux) - message(STATUS "Building Solid UDisks backend." ) -+ message(STATUS "Building Solid UDisks2 backend." ) - set(solid_LIB_SRCS ${solid_LIB_SRCS} +- set(solid_LIB_SRCS ${solid_LIB_SRCS} - backends/udisks/udisksmanager.cpp - backends/udisks/udisksdevice.cpp - backends/udisks/udisksblock.cpp @@ -69,20 +26,42 @@ index 0aa7a43..0a74053 100644 - backends/udisks/udisksstoragedrive.cpp - backends/udisks/udisksstorageaccess.cpp - backends/udisks/udisksgenericinterface.cpp -+ backends/udisks2/udisksmanager.cpp -+ backends/udisks2/udisksdevice.cpp -+ backends/udisks2/udisksblock.cpp -+ backends/udisks2/udisksstoragevolume.cpp -+ backends/udisks2/udisksdeviceinterface.cpp -+ backends/udisks2/udisksopticaldisc.cpp -+ backends/udisks2/udisksopticaldrive.cpp -+ backends/udisks2/udisksstoragedrive.cpp -+ backends/udisks2/udisksstorageaccess.cpp -+ backends/udisks2/udisksgenericinterface.cpp -+ backends/udisks2/dbus/manager.cpp - ) +- ) ++ ++ if ( WITH_SOLID_UDISKS2 ) ++ message(STATUS "Building Solid UDisks2 backend." ) ++ add_definitions(-DWITH_SOLID_UDISKS2) ++ set(solid_LIB_SRCS ${solid_LIB_SRCS} ++ backends/udisks2/udisksmanager.cpp ++ backends/udisks2/udisksdevice.cpp ++ backends/udisks2/udisksblock.cpp ++ backends/udisks2/udisksstoragevolume.cpp ++ backends/udisks2/udisksdeviceinterface.cpp ++ backends/udisks2/udisksopticaldisc.cpp ++ backends/udisks2/udisksopticaldrive.cpp ++ backends/udisks2/udisksstoragedrive.cpp ++ backends/udisks2/udisksstorageaccess.cpp ++ backends/udisks2/udisksgenericinterface.cpp ++ backends/udisks2/dbus/manager.cpp ++ ) ++ else ( WITH_SOLID_UDISKS2 ) ++ message(STATUS "Building Solid UDisks backend." ) ++ set(solid_LIB_SRCS ${solid_LIB_SRCS} ++ backends/udisks/udisksmanager.cpp ++ backends/udisks/udisksdevice.cpp ++ backends/udisks/udisksblock.cpp ++ backends/udisks/udisksstoragevolume.cpp ++ backends/udisks/udisksdeviceinterface.cpp ++ backends/udisks/udisksopticaldisc.cpp ++ backends/udisks/udisksopticaldrive.cpp ++ backends/udisks/udisksstoragedrive.cpp ++ backends/udisks/udisksstorageaccess.cpp ++ backends/udisks/udisksgenericinterface.cpp ++ ) ++ endif ( WITH_SOLID_UDISKS2 ) endif (CMAKE_SYSTEM_NAME MATCHES Linux) + message(STATUS "Building Solid fstab backend." ) diff --git a/solid/solid/backends/udisks2/dbus/manager.cpp b/solid/solid/backends/udisks2/dbus/manager.cpp new file mode 100644 index 0000000..7ea4aa8 @@ -209,10 +188,10 @@ index 0000000..8f25cb6 + diff --git a/solid/solid/backends/udisks2/udisks2.h b/solid/solid/backends/udisks2/udisks2.h new file mode 100644 -index 0000000..25a1dc0 +index 0000000..8dda86a --- /dev/null +++ b/solid/solid/backends/udisks2/udisks2.h -@@ -0,0 +1,77 @@ +@@ -0,0 +1,78 @@ +/* + Copyright 2012 Lukáš Tinkl + @@ -268,6 +247,7 @@ index 0000000..25a1dc0 +#define UD2_DBUS_INTERFACE_FILESYSTEM "org.freedesktop.UDisks2.Filesystem" +#define UD2_DBUS_INTERFACE_ENCRYPTED "org.freedesktop.UDisks2.Encrypted" +#define UD2_DBUS_INTERFACE_SWAP "org.freedesktop.UDisks2.Swapspace" ++#define UD2_DBUS_INTERFACE_LOOP "org.freedesktop.UDisks2.Loop" + +/* errors */ +#define UD2_ERROR_UNAUTHORIZED "org.freedesktop.PolicyKit.Error.NotAuthorized" @@ -292,10 +272,10 @@ index 0000000..25a1dc0 +#endif // SOLID_BACKENDS_UDISKS2_H diff --git a/solid/solid/backends/udisks2/udisksblock.cpp b/solid/solid/backends/udisks2/udisksblock.cpp new file mode 100644 -index 0000000..474f3d6 +index 0000000..f3cd1e8 --- /dev/null +++ b/solid/solid/backends/udisks2/udisksblock.cpp -@@ -0,0 +1,84 @@ +@@ -0,0 +1,88 @@ +/* + Copyright 2012 Lukáš Tinkl + @@ -321,9 +301,9 @@ index 0000000..474f3d6 +#include +#include +#include ++#include + +#include "udisksblock.h" -+#include "dbus/manager.h" + +using namespace Solid::Backends::UDisks2; + @@ -335,28 +315,32 @@ index 0000000..474f3d6 + + // we have a drive (non-block device for udisks), so let's find the corresponding (real) block device + if (m_devNum == 0 || m_devFile.isEmpty()) { -+ org::freedesktop::DBus::ObjectManager manager(UD2_DBUS_SERVICE, UD2_DBUS_PATH, QDBusConnection::systemBus()); -+ QDBusPendingReply reply = manager.GetManagedObjects(); ++ const QString path = "/org/freedesktop/UDisks2/block_devices"; ++ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, path, ++ DBUS_INTERFACE_INTROSPECT, "Introspect"); ++ QDBusPendingReply reply = QDBusConnection::systemBus().asyncCall(call); + reply.waitForFinished(); -+ if (!reply.isError()) { // enum devices -+ Q_FOREACH(const QDBusObjectPath &path, reply.value().keys()) { -+ const QString udi = path.path(); + -+ if (udi == UD2_DBUS_PATH_MANAGER || udi == UD2_UDI_DISKS_PREFIX || udi.startsWith(UD2_DBUS_PATH_JOBS)) -+ continue; ++ if (reply.isValid()) { ++ QDomDocument dom; ++ dom.setContent(reply.value()); ++ QDomNodeList nodeList = dom.documentElement().elementsByTagName("node"); ++ for (int i = 0; i < nodeList.count(); i++) { ++ QDomElement nodeElem = nodeList.item(i).toElement(); ++ if (!nodeElem.isNull() && nodeElem.hasAttribute("name")) { ++ const QString udi = path + "/" + nodeElem.attribute("name"); + -+ Device device(udi); -+ if (device.drivePath() == dev->udi()) { -+ m_devNum = device.prop("DeviceNumber").toULongLong(); -+ m_devFile = QFile::decodeName(device.prop("Device").toByteArray()); -+ break; ++ Device device(udi); ++ if (device.drivePath() == dev->udi()) { ++ m_devNum = device.prop("DeviceNumber").toULongLong(); ++ m_devFile = QFile::decodeName(device.prop("Device").toByteArray()); ++ break; ++ } + } + } + } -+ else // show error -+ { ++ else + qWarning() << "Failed enumerating UDisks2 objects:" << reply.error().name() << "\n" << reply.error().message(); -+ } + } + + //qDebug() << "devnum:" << m_devNum << "dev file:" << m_devFile; @@ -444,10 +428,10 @@ index 0000000..19cb70a +#endif // UDISKS2BLOCK_H diff --git a/solid/solid/backends/udisks2/udisksdevice.cpp b/solid/solid/backends/udisks2/udisksdevice.cpp new file mode 100644 -index 0000000..22b0c45 +index 0000000..a3f780f --- /dev/null +++ b/solid/solid/backends/udisks2/udisksdevice.cpp -@@ -0,0 +1,910 @@ +@@ -0,0 +1,927 @@ +/* + Copyright 2010 Michael Zanetti + Copyright 2010-2012 Lukáš Tinkl @@ -651,11 +635,15 @@ index 0000000..22b0c45 + +QString Device::description() const +{ -+ const QString hintName = prop("HintName").toString(); ++ const QString hintName = property("HintName").toString(); // non-cached + if (!hintName.isEmpty()) + return hintName; + -+ if (queryDeviceInterface(Solid::DeviceInterface::StorageDrive)) ++ if (isLoop()) ++ return QObject::tr("Loop Device"); ++ else if (isSwap()) ++ return QObject::tr("Swap Space"); ++ else if (queryDeviceInterface(Solid::DeviceInterface::StorageDrive)) + return storageDescription(); + else if (queryDeviceInterface(Solid::DeviceInterface::StorageVolume)) + return volumeDescription(); @@ -668,7 +656,7 @@ index 0000000..22b0c45 + QString description; + const UDisks2::StorageDrive storageDrive(const_cast(this)); + Solid::StorageDrive::DriveType drive_type = storageDrive.driveType(); -+ bool drive_is_hotpluggable = storageDrive.isHotpluggable(); ++ const bool drive_is_hotpluggable = storageDrive.isHotpluggable(); + + if (drive_type == Solid::StorageDrive::CdromDrive) + { @@ -740,7 +728,7 @@ index 0000000..22b0c45 + return description; + } + -+ bool drive_is_removable = storageDrive.isRemovable(); ++ const bool drive_is_removable = storageDrive.isRemovable(); + + if (drive_type == Solid::StorageDrive::HardDisk && !drive_is_removable) + { @@ -973,19 +961,23 @@ index 0000000..22b0c45 + +QString Device::icon() const +{ -+ QString iconName = prop( "HintIconName" ).toString(); ++ QString iconName = property( "HintIconName" ).toString(); // non-cached + + if ( !iconName.isEmpty() ) + { + return iconName; + } ++ else if (isLoop() || isSwap()) ++ { ++ return "drive-harddisk"; ++ } + else if (isDrive()) { + const bool isRemovable = prop("Removable").toBool(); + const QString conn = prop("ConnectionBus").toString(); + + if (isOpticalDrive()) + return "drive-optical"; -+ else if (isRemovable && !isOpticalDisc()) { ++ else if (isRemovable && !prop("Optical").toBool()) { + if (conn == "usb") + return "drive-removable-media-usb"; + else @@ -993,14 +985,18 @@ index 0000000..22b0c45 + } + } + else if (isBlock()) { -+ Device drive(drivePath()); ++ const QString drv = drivePath(); ++ if (drv.isEmpty() || drv == "/") ++ return "drive-harddisk"; // stuff like loop devices or swap which don't have the Drive prop set ++ ++ Device drive(drv); + + // handle media + const QString media = drive.prop("Media").toString(); + + if ( !media.isEmpty() ) + { -+ if ( isOpticalDisc() ) // optical stuff ++ if ( drive.prop("Optical").toBool() ) // optical stuff + { + bool isWritable = drive.prop("OpticalBlank").toBool(); + @@ -1107,8 +1103,7 @@ index 0000000..22b0c45 + if (reply.isValid()) { + m_cache.insert(key, reply); + } else { -+ //qDebug() << "got invalid reply for cache:" << key; -+ //m_cache.insert(key, QVariant()); ++ qWarning() << "got invalid reply for cache:" << key; + } +} + @@ -1140,11 +1135,12 @@ index 0000000..22b0c45 + +QVariantMap Device::allProperties() const +{ ++ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_udi, DBUS_INTERFACE_PROPS, "GetAll"); ++ + Q_FOREACH (const QString & iface, m_interfaces) { + if (iface.startsWith("org.freedesktop.DBus")) + continue; -+ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_udi, DBUS_INTERFACE_PROPS, "GetAll"); -+ call << iface; ++ call.setArguments(QVariantList() << iface); + QDBusPendingReply reply = QDBusConnection::systemBus().asyncCall(call); + reply.waitForFinished(); + @@ -1354,16 +1350,21 @@ index 0000000..22b0c45 + return hasInterface(UD2_DBUS_INTERFACE_SWAP); +} + ++bool Device::isLoop() const ++{ ++ return hasInterface(UD2_DBUS_INTERFACE_LOOP); ++} ++ +QString Device::drivePath() const +{ + return prop("Drive").value().path(); +} diff --git a/solid/solid/backends/udisks2/udisksdevice.h b/solid/solid/backends/udisks2/udisksdevice.h new file mode 100644 -index 0000000..cf8e2f5 +index 0000000..7e27634 --- /dev/null +++ b/solid/solid/backends/udisks2/udisksdevice.h -@@ -0,0 +1,112 @@ +@@ -0,0 +1,113 @@ +/* + Copyright 2010 Michael Zanetti + Copyright 2010-2012 Lukáš Tinkl @@ -1445,6 +1446,7 @@ index 0000000..cf8e2f5 + bool isEncryptedContainer() const; + bool isEncryptedCleartext() const; + bool isSwap() const; ++ bool isLoop() const; + + QString drivePath() const; + @@ -1793,10 +1795,10 @@ index 0000000..d225f32 +#endif // SOLID_BACKENDS_UDISKS2_GENERICINTERFACE_H diff --git a/solid/solid/backends/udisks2/udisksmanager.cpp b/solid/solid/backends/udisks2/udisksmanager.cpp new file mode 100644 -index 0000000..46d934e +index 0000000..fab5208 --- /dev/null +++ b/solid/solid/backends/udisks2/udisksmanager.cpp -@@ -0,0 +1,228 @@ +@@ -0,0 +1,269 @@ +/* + Copyright 2012 Lukáš Tinkl + @@ -1822,6 +1824,7 @@ index 0000000..46d934e +#include +#include +#include ++#include + +#include "../shared/rootdevice.h" + @@ -1927,6 +1930,7 @@ index 0000000..46d934e +{ + m_deviceCache.clear(); + ++#if 0 + QDBusPendingReply reply = m_manager.GetManagedObjects(); + reply.waitForFinished(); + if (!reply.isError()) { // enum devices @@ -1955,9 +1959,47 @@ index 0000000..46d934e + qWarning() << "Failed enumerating UDisks2 objects:" << reply.error().name() << "\n" << reply.error().message(); + } + ++#endif ++ ++ introspect("/org/freedesktop/UDisks2/block_devices", true /*checkOptical*/); ++ introspect("/org/freedesktop/UDisks2/drives"); ++ + return m_deviceCache; +} + ++void Manager::introspect(const QString & path, bool checkOptical) ++{ ++ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, path, ++ DBUS_INTERFACE_INTROSPECT, "Introspect"); ++ QDBusPendingReply reply = QDBusConnection::systemBus().asyncCall(call); ++ reply.waitForFinished(); ++ ++ if (reply.isValid()) { ++ QDomDocument dom; ++ dom.setContent(reply.value()); ++ QDomNodeList nodeList = dom.documentElement().elementsByTagName("node"); ++ for (int i = 0; i < nodeList.count(); i++) { ++ QDomElement nodeElem = nodeList.item(i).toElement(); ++ if (!nodeElem.isNull() && nodeElem.hasAttribute("name")) { ++ const QString udi = path + "/" + nodeElem.attribute("name"); ++ ++ if (checkOptical) { ++ Device device(udi); ++ if (device.mightBeOpticalDisc()) { ++ QDBusConnection::systemBus().connect(UD2_DBUS_SERVICE, udi, DBUS_INTERFACE_PROPS, "PropertiesChanged", this, ++ SLOT(slotMediaChanged(QDBusMessage))); ++ if (!device.isOpticalDisc()) // skip empty CD disc ++ continue; ++ } ++ } ++ ++ m_deviceCache.append(udi); ++ } ++ } ++ } ++ else ++ qWarning() << "Failed enumerating UDisks2 objects:" << reply.error().name() << "\n" << reply.error().message(); ++} + +QSet< Solid::DeviceInterface::Type > Manager::supportedInterfaces() const +{ @@ -2025,12 +2067,13 @@ index 0000000..46d934e + + return m_deviceCache; +} ++ diff --git a/solid/solid/backends/udisks2/udisksmanager.h b/solid/solid/backends/udisks2/udisksmanager.h new file mode 100644 -index 0000000..7cf0a72 +index 0000000..fb929ce --- /dev/null +++ b/solid/solid/backends/udisks2/udisksmanager.h -@@ -0,0 +1,69 @@ +@@ -0,0 +1,70 @@ +/* + Copyright 2010 Michael Zanetti + Copyright 2010-2012 Lukáš Tinkl @@ -2091,6 +2134,7 @@ index 0000000..7cf0a72 + +private: + const QStringList &deviceCache(); ++ void introspect(const QString & path, bool checkOptical = false); + QSet m_supportedInterfaces; + org::freedesktop::DBus::ObjectManager m_manager; + QStringList m_deviceCache; @@ -3666,94 +3710,30 @@ index 0000000..2ca04d2 + +#endif // UDISKS2STORAGEVOLUME_H diff --git a/solid/solid/managerbase.cpp b/solid/solid/managerbase.cpp -index fb5a67c..d832f31 100644 +index fb5a67c..beaeac5 100644 --- a/solid/solid/managerbase.cpp +++ b/solid/solid/managerbase.cpp -@@ -21,7 +21,7 @@ - #include "managerbase_p.h" - - #include --#if !defined (Q_WS_WIN) && !defined (Q_OS_MAC) -+#if !defined (Q_OS_WIN) && !defined (Q_OS_MAC) - #include - #endif - -@@ -30,8 +30,7 @@ - #if defined (Q_OS_MAC) +@@ -31,7 +31,11 @@ #include "backends/iokit/iokitmanager.h" #elif defined (Q_OS_UNIX) --#include "backends/hal/halmanager.h" --#include "backends/udisks/udisksmanager.h" + #include "backends/hal/halmanager.h" ++#if defined (WITH_SOLID_UDISKS2) +#include "backends/udisks2/udisksmanager.h" ++#else + #include "backends/udisks/udisksmanager.h" ++#endif #include "backends/upower/upowermanager.h" #if defined (HUPNP_FOUND) -@@ -44,7 +43,7 @@ - - #include "backends/fstab/fstabmanager.h" - --#elif defined (Q_WS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE) -+#elif defined (Q_OS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE) - #include "backends/wmi/wmimanager.h" - #endif - -@@ -68,25 +67,16 @@ void Solid::ManagerBasePrivate::loadBackends() - # if defined(Q_OS_MAC) - m_backends << new Solid::Backends::IOKit::IOKitManager(0); - --# elif defined(Q_WS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE) -+# elif defined(Q_OS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE) - m_backends << new Solid::Backends::Wmi::WmiManager(0); - --# elif defined(Q_OS_UNIX) && !defined(Q_OS_LINUX) -- m_backends << new Solid::Backends::Hal::HalManager(0); -- - # elif defined(Q_OS_LINUX) -- bool solidHalLegacyEnabled -- = QString::fromLocal8Bit(qgetenv("SOLID_HAL_LEGACY")).toInt()==1; -- if (solidHalLegacyEnabled) { -- m_backends << new Solid::Backends::Hal::HalManager(0); -- } else { +@@ -83,7 +87,11 @@ void Solid::ManagerBasePrivate::loadBackends() # if defined(UDEV_FOUND) m_backends << new Solid::Backends::UDev::UDevManager(0); # endif -- m_backends << new Solid::Backends::UDisks::UDisksManager(0) ++# if defined(WITH_SOLID_UDISKS2) + m_backends << new Solid::Backends::UDisks2::Manager(0) ++# else + m_backends << new Solid::Backends::UDisks::UDisksManager(0) ++# endif << new Solid::Backends::UPower::UPowerManager(0) << new Solid::Backends::Fstab::FstabManager(0); -- } - # endif - - # if defined (HUPNP_FOUND) -@@ -99,5 +89,3 @@ QList Solid::ManagerBasePrivate::managerBackends() const - { - return m_backends; - } -- -- -diff --git a/solid/tests/CMakeLists.txt b/solid/tests/CMakeLists.txt -index ef507d1..b9f3720 100644 ---- a/solid/tests/CMakeLists.txt -+++ b/solid/tests/CMakeLists.txt -@@ -15,21 +15,6 @@ endif(WIN32) - target_link_libraries(fakehardwaretest solid_static ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTTEST_LIBRARY} ) - add_definitions(-DTEST_DATA="\\"${CMAKE_CURRENT_SOURCE_DIR}/../solid/backends/fakehw/fakecomputer.xml\\"") - -- --########### halbasictest ############### -- --if(NOT WIN32 AND NOT APPLE) --set(halbasictest_SRCS halbasictest.cpp ) -- --kde4_add_executable(halbasictest ${halbasictest_SRCS}) -- --if(WIN32) -- set_target_properties(halbasictest PROPERTIES COMPILE_FLAGS -DSOLID_EXPORT=) --endif(WIN32) -- --target_link_libraries(halbasictest solid_static ${KDEWIN_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTTEST_LIBRARY} ) --endif(NOT WIN32 AND NOT APPLE) -- - ########### solidhwtest ############### - - set(solidhwtest_SRCS + } diff --git a/kdelibs.spec b/kdelibs.spec index 6e3e0f0..f5fd35b 100644 --- a/kdelibs.spec +++ b/kdelibs.spec @@ -25,7 +25,7 @@ Summary: KDE Libraries Version: 4.9.2 -Release: 8%{?dist} +Release: 9%{?dist} Name: kdelibs Epoch: 6 @@ -121,7 +121,7 @@ Patch42: 0003-Implement-automatic-scanning-of-source-code-for-requ.patch # make forcefully hal-free build Patch45: kdelibs-4.7.3-halectomy.patch -# udisks2 Solid backend, halectomy +# udisks2 Solid backend Patch47: kdelibs-udisks2-backend.patch ## upstreamable @@ -350,6 +350,9 @@ mkdir -p %{_target_platform} pushd %{_target_platform} %{cmake_kde4} \ -DKDE_DISTRIBUTION_TEXT="%{version}-%{release} Fedora" \ + %if 0%{?rhel} > 6 || 0%{?fedora} > 17 + -DWITH_SOLID_UDISKS2:BOOL=ON \ + %endif .. popd @@ -590,6 +593,11 @@ rm -rf %{buildroot} %changelog +* Mon Oct 29 2012 Lukáš Tinkl 6:4.9.2-9 +- Resolves #868530 - cache information about solid device in 'Places' + panel in open/save dialog +- update solid/udisks2 backend, switch to cmake-define + * Thu Oct 25 2012 Dan Vrátil 6:4.9.2-8 - Resolves #868530 - cache information about solid device in 'Places' panel in open/save dialog