Hello community,

here is the log from the commit of package soprano for openSUSE:Factory checked 
in at 2011-10-26 15:46:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/soprano (Old)
 and      /work/SRC/openSUSE:Factory/.soprano.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "soprano", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/soprano/soprano-backend-sesame.changes   
2011-09-23 12:46:38.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.soprano.new/soprano-backend-sesame.changes      
2011-10-26 15:47:09.000000000 +0200
@@ -1,0 +2,23 @@
+Tue Oct 25 20:17:24 UTC 2011 - [email protected]
+
+- Add patch from 2.7 branch to allow clients to react in case of 
+  an unexpected Virtuoso server termination
+
+-------------------------------------------------------------------
+Sat Oct 22 19:05:28 UTC 2011 - [email protected]
+
+- Update to 2.7.2:
+  * Reverted a change which was introduced in 2.7.1 to use a separate
+    QDBusConnection for the DBusExportModel. It made things worse.
+  * Fixed a crash in NRLModel caused by a non-mutex-protected hash.
+  * Fixed the Virtuoso backend's option "forcedstart". Now the backend waits
+    for the running instance to be shut down before trying to start a new one.
+  From 2.7.1:
+  * Lowered the min Raptor version to 2.0.0 since it was only a runtime
+    dependancy for KDE.
+- Spec file updates:
+  * Changes based on spec-cleaner run.
+  * Changed License: to LGPL-2.0+.
+  * Removed boost-devel and raptor from BuildRequires: (not needed).
+
+-------------------------------------------------------------------
soprano-backend-virtuoso.changes: same change
soprano.changes: same change

Old:
----
  soprano-2.7.0.tar.bz2

New:
----
  2_7_BRANCH.diff
  soprano-2.7.2.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ soprano-backend-sesame.spec ++++++
--- /var/tmp/diff_new_pack.WHb7wS/_old  2011-10-26 15:47:50.000000000 +0200
+++ /var/tmp/diff_new_pack.WHb7wS/_new  2011-10-26 15:47:50.000000000 +0200
@@ -18,18 +18,17 @@
 
 
 Name:           soprano-backend-sesame
-Url:            http://soprano.sourceforge.net/
-License:        LGPLv2+
-Group:          System/Libraries
 Summary:        Sesame backend for Soprano
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 # COMMON1-BEGIN
 # COMMON1-BEGIN
-Version:        2.7.0
+Version:        2.7.2
 Release:        1
-Source0:        
http://sourceforge.net/projects/soprano/files/Soprano/%{version}/soprano-%{version}.tar.bz2
+License:        LGPL-2.0+
+Url:            http://soprano.sourceforge.net/
+Group:          System/Libraries
+Source0:        
http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2
 Source100:      baselibs.conf
-BuildRequires:  boost-devel
+Patch0:         2_7_BRANCH.diff
 BuildRequires:  clucene-core-devel
 BuildRequires:  cmake
 BuildRequires:  doxygen
@@ -38,7 +37,6 @@
 BuildRequires:  libraptor-devel
 BuildRequires:  librasqal-devel
 BuildRequires:  libredland-devel
-BuildRequires:  raptor
 %if 0%{?suse_version}
 BuildRequires:  update-desktop-files
 %endif
@@ -46,10 +44,11 @@
 # COMMON1-END
 BuildRequires:  java-devel
 BuildRequires:  libsoprano-devel
-Requires:       libsoprano4 = %{version}
 Requires:       java
+Requires:       libsoprano4 = %{version}
 Provides:       soprano_backend = %{version}
 Provides:       backend-sesame2 = %{version}
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
 This package provides a Sesame based backend for Soprano.
@@ -58,12 +57,13 @@
 # COMMON2-BEGIN
 # COMMON2-BEGIN
 %setup -q -n soprano-%{version}
+%patch0 -p1
 # COMMON2-END
 # COMMON2-END
 
 %build
 export JAVA_HOME=%{_jvmdir}/java
-%cmake_kde4 -d build -- -DCMAKE_SKIP_RPATH=OFF -DBUILD_SESAME_BACKEND=ON
+%cmake_kde4 -d build -- -DCMAKE_SKIP_RPATH=OFF -DBUILD_SESAME2_BACKEND=ON
 %make_jobs
 
 %install
@@ -83,7 +83,7 @@
 
 %files
 %defattr(-,root,root,-)
-%{_datadir}/soprano/sesame2
+%{_datadir}/soprano/sesame2/
 %{_libdir}/soprano/libsoprano_sesame2backend.so
 %{_datadir}/soprano/plugins/sesame2backend.desktop
 

++++++ soprano-backend-virtuoso.spec ++++++
--- /var/tmp/diff_new_pack.WHb7wS/_old  2011-10-26 15:47:50.000000000 +0200
+++ /var/tmp/diff_new_pack.WHb7wS/_new  2011-10-26 15:47:50.000000000 +0200
@@ -18,18 +18,17 @@
 
 
 Name:           soprano-backend-virtuoso
-Url:            http://soprano.sourceforge.net/
-License:        LGPLv2+
-Group:          System/Libraries
 Summary:        Virtuoso backend for Soprano
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 # COMMON1-BEGIN
 # COMMON1-BEGIN
-Version:        2.7.0
+Version:        2.7.2
 Release:        1
-Source0:        
http://sourceforge.net/projects/soprano/files/Soprano/%{version}/soprano-%{version}.tar.bz2
+License:        LGPL-2.0+
+Url:            http://soprano.sourceforge.net/
+Group:          System/Libraries
+Source0:        
http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2
 Source100:      baselibs.conf
-BuildRequires:  boost-devel
+Patch0:         2_7_BRANCH.diff
 BuildRequires:  clucene-core-devel
 BuildRequires:  cmake
 BuildRequires:  doxygen
@@ -38,7 +37,6 @@
 BuildRequires:  libraptor-devel
 BuildRequires:  librasqal-devel
 BuildRequires:  libredland-devel
-BuildRequires:  raptor
 %if 0%{?suse_version}
 BuildRequires:  update-desktop-files
 %endif
@@ -50,6 +48,7 @@
 Requires:       virtuoso-server
 Provides:       soprano_backend = %{version}
 Provides:       backend-virtuso = %{version}
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
 This package provides a Virtuoso based backend for Soprano.
@@ -58,6 +57,7 @@
 # COMMON2-BEGIN
 # COMMON2-BEGIN
 %setup -q -n soprano-%{version}
+%patch0 -p1
 # COMMON2-END
 # COMMON2-END
 

++++++ soprano.spec ++++++
--- /var/tmp/diff_new_pack.WHb7wS/_old  2011-10-26 15:47:50.000000000 +0200
+++ /var/tmp/diff_new_pack.WHb7wS/_new  2011-10-26 15:47:50.000000000 +0200
@@ -18,17 +18,16 @@
 
 
 Name:           soprano
-Url:            http://soprano.sourceforge.net/
-License:        LGPLv2+
-Group:          System/Libraries
 Summary:        C++/Qt based interface library for RDF
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 # COMMON1-BEGIN
-Version:        2.7.0
+Version:        2.7.2
 Release:        1
-Source0:        
http://sourceforge.net/projects/soprano/files/Soprano/%{version}/soprano-%{version}.tar.bz2
+License:        LGPL-2.0+
+Url:            http://soprano.sourceforge.net/
+Group:          System/Libraries
+Source0:        
http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2
 Source100:      baselibs.conf
-BuildRequires:  boost-devel
+Patch0:         2_7_BRANCH.diff
 BuildRequires:  clucene-core-devel
 BuildRequires:  cmake
 BuildRequires:  doxygen
@@ -37,15 +36,15 @@
 BuildRequires:  libraptor-devel
 BuildRequires:  librasqal-devel
 BuildRequires:  libredland-devel
-BuildRequires:  raptor
 %if 0%{?suse_version}
 BuildRequires:  update-desktop-files
 %endif
 # COMMON1-END
 BuildRequires:  fdupes
 Requires:       libsoprano4 = %{version}
-Recommends:     soprano_backend = %{version}
 Recommends:     soprano-backend-virtuoso
+Recommends:     soprano_backend = %{version}
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
 Soprano is an open and pluggable RDF resource framework which is build
@@ -57,25 +56,21 @@
 %prep
 # COMMON2-BEGIN
 %setup -q -n soprano-%{version}
+%patch0 -p1
 # COMMON2-END
 
-%package -n libsoprano-devel
-License:        LGPLv2+
-Summary:        Developer files for Soprano
-Group:          Development/Libraries/C and C++
-Requires:       %{name} = %{version}
-%requires_ge    clucene-core-devel
-%requires_ge    libqt4-devel
-Requires:       libraptor-devel
-Requires:       libredland-devel
+%package backend-redland
+License:        LGPL-2.0+
+Summary:        Redland backend for Soprano
+Group:          System/Libraries
 Requires:       libsoprano4 = %{version}
-Requires:       soprano-backend-redland
+Provides:       soprano_backend = %{version}
 
-%description -n libsoprano-devel
-This package contains developer files for Soprano.
+%description backend-redland
+This package provides a Redland based backend for Soprano.
 
 %package -n libsoprano4
-License:        LGPLv2+
+License:        LGPL-2.0+
 Summary:        C++/Qt based interface library for RDF
 Group:          System/Libraries
 %requires_ge    libqt4
@@ -87,15 +82,20 @@
 Soprano are desktop applications as it is being developed as a
 subroject of Nepomuk, the semantic desktop initiative.
 
-%package backend-redland
-License:        LGPLv2+
-Summary:        Redland backend for Soprano
-Group:          System/Libraries
+%package -n libsoprano-devel
+License:        LGPL-2.0+
+Summary:        Developer files for Soprano
+Group:          Development/Libraries/C and C++
+Requires:       %{name} = %{version}
+Requires:       libraptor-devel
+Requires:       libredland-devel
 Requires:       libsoprano4 = %{version}
-Provides:       soprano_backend = %{version}
+Requires:       soprano-backend-redland
+%requires_ge    clucene-core-devel
+%requires_ge    libqt4-devel
 
-%description backend-redland
-This package provides a Redland based backend for Soprano.
+%description -n libsoprano-devel
+This package contains developer files for Soprano.
 
 %build
 %cmake_kde4 -d build -- -DCMAKE_SKIP_RPATH=OFF
@@ -129,11 +129,7 @@
 %{_bindir}/onto2vocabularyclass
 %{_bindir}/sopranocmd
 %{_bindir}/sopranod
-%{_datadir}/dbus-1/interfaces/org.soprano.Model.xml
-%{_datadir}/dbus-1/interfaces/org.soprano.NodeIterator.xml
-%{_datadir}/dbus-1/interfaces/org.soprano.QueryResultIterator.xml
-%{_datadir}/dbus-1/interfaces/org.soprano.Server.xml
-%{_datadir}/dbus-1/interfaces/org.soprano.StatementIterator.xml
+%{_datadir}/dbus-1/interfaces/org.soprano.*.xml
 %dir %{_datadir}/soprano
 %dir %{_datadir}/soprano/rules
 %dir %{_datadir}/soprano/plugins
@@ -148,21 +144,22 @@
 %{_libdir}/soprano/libsoprano_raptorparser.so
 %{_libdir}/soprano/libsoprano_raptorserializer.so
 
+%files backend-redland
+%defattr(-,root,root,-)
+%{_libdir}/soprano/libsoprano_redlandbackend.so
+%{_datadir}/soprano/plugins/redlandbackend.desktop
+
 %files -n libsoprano4
 %defattr(-,root,root,-)
-%{_libdir}/libsopranoclient.so.1
-%{_libdir}/libsopranoclient.so.1.2.0
-%{_libdir}/libsopranoserver.so.1
-%{_libdir}/libsopranoserver.so.1.2.0
-%{_libdir}/libsoprano.so.4
-%{_libdir}/libsoprano.so.4.3.0
-%{_libdir}/libsopranoindex.so.1
-%{_libdir}/libsopranoindex.so.1.1.0
+%{_libdir}/libsopranoclient.so.1*
+%{_libdir}/libsopranoserver.so.1*
+%{_libdir}/libsoprano.so.4*
+%{_libdir}/libsopranoindex.so.1*
 
 %files -n libsoprano-devel
 %defattr(-,root,root,-)
-%{_includedir}/soprano
-%{_includedir}/Soprano
+%{_includedir}/soprano/
+%{_includedir}/Soprano/
 %{_libdir}/libsoprano.so
 %{_libdir}/libsopranoindex.so
 %{_libdir}/libsopranoclient.so
@@ -171,12 +168,6 @@
 %{_libdir}/pkgconfig/sopranoclient.pc
 %{_libdir}/pkgconfig/sopranoindex.pc
 %{_libdir}/pkgconfig/sopranoserver.pc
-%dir %{_datadir}/soprano/cmake
-%{_datadir}/soprano/cmake/SopranoAddOntology.cmake
-
-%files backend-redland
-%defattr(-,root,root,-)
-%{_libdir}/soprano/libsoprano_redlandbackend.so
-%{_datadir}/soprano/plugins/redlandbackend.desktop
+%{_datadir}/soprano/cmake/
 
 %changelog

++++++ 2_7_BRANCH.diff ++++++
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c3c440f..eb80bba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} 
${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod
 ##################  Soprano version  ################################
 set(CMAKE_SOPRANO_VERSION_MAJOR 2)
 set(CMAKE_SOPRANO_VERSION_MINOR 7)
-set(CMAKE_SOPRANO_VERSION_RELEASE 1)
+set(CMAKE_SOPRANO_VERSION_RELEASE 3)
 set(CMAKE_SOPRANO_VERSION_STRING 
"${CMAKE_SOPRANO_VERSION_MAJOR}.${CMAKE_SOPRANO_VERSION_MINOR}.${CMAKE_SOPRANO_VERSION_RELEASE}")
 
 
diff --git a/ChangeLog b/ChangeLog
index 383fbea..00eec79 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2.7.3
+       * Added new signal in the Virtuoso backend which signals when the 
server goes down.
+
 2.7.2
        * Reverted a change which was introduced in 2.7.1 to use a separate 
QDBusConnection for the 
           DBusExportModel. It made things worse.
diff --git a/backends/virtuoso/Virtuoso.dox b/backends/virtuoso/Virtuoso.dox
index c62d6f9..7bd0e73 100644
--- a/backends/virtuoso/Virtuoso.dox
+++ b/backends/virtuoso/Virtuoso.dox
@@ -60,6 +60,19 @@
  * \li Soprano::BackendOptionPassword - Set the password to connect to the 
Virtuoso server.
  *
  *
+ * \section soprano_backend_vituoso_additions Additional Features
+ *
+ * Models created by the Virtuoso backend emit a non-standard signal which 
informs the client that the Virtuoso server went down.
+ * This signal is only emitted for Virtuoso instances that were started by the 
backend and has the following signature:
+ *
+ * \code
+ * void virtuosoStopped(bool normalExit);
+ * \endcode
+ *
+ * The parameter \p normalExit is \p true if the instance went down as 
scheduled (deletion of the model) and \p false if the
+ * Virtuoso instance crashed or was killed by a third party. Typically a 
client would connect to the signal to properly re-create the model.
+ *
+ *
  * \section soprano_backend_vituoso_specialities Virtuoso Specialities
  *
  * Since Virtuoso is an SQL server and, thus, does store all RDF data in SQL 
tables it
diff --git a/backends/virtuoso/virtuosobackend.cpp 
b/backends/virtuoso/virtuosobackend.cpp
index c83605d..aab1881 100644
--- a/backends/virtuoso/virtuosobackend.cpp
+++ b/backends/virtuoso/virtuosobackend.cpp
@@ -1,7 +1,7 @@
 /*
  * This file is part of Soprano Project
  *
- * Copyright (C) 2008-2010 Sebastian Trueg <[email protected]>
+ * Copyright (C) 2008-2011 Sebastian Trueg <[email protected]>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -115,8 +115,10 @@ Soprano::StorageModel* 
Soprano::Virtuoso::BackendPlugin::createModel( const Back
     VirtuosoModel* model = new VirtuosoModel( connectionPool, this );
     // mem mangement the ugly way
     // FIXME: improve
-    if ( controller )
+    if ( controller ) {
         controller->setParent( model );
+        connect(controller, 
SIGNAL(stopped(Soprano::VirtuosoController::ExitStatus)), model, 
SLOT(slotVirtuosoStopped(Soprano::VirtuosoController::ExitStatus)));
+    }
     return model;
 }
 
diff --git a/backends/virtuoso/virtuosocontroller.h 
b/backends/virtuoso/virtuosocontroller.h
index 713d5cc..0f772d4 100644
--- a/backends/virtuoso/virtuosocontroller.h
+++ b/backends/virtuoso/virtuosocontroller.h
@@ -74,7 +74,7 @@ namespace Soprano {
 
     Q_SIGNALS:
         void started();
-        void stopped( ExitStatus status );
+        void stopped( Soprano::VirtuosoController::ExitStatus status );
 
     private Q_SLOTS:
         void slotProcessFinished( int exitCode, QProcess::ExitStatus 
exitStatus );
diff --git a/backends/virtuoso/virtuosomodel.cpp 
b/backends/virtuoso/virtuosomodel.cpp
index 9b9aa5d..5b04c4e 100644
--- a/backends/virtuoso/virtuosomodel.cpp
+++ b/backends/virtuoso/virtuosomodel.cpp
@@ -1,7 +1,7 @@
 /*
  * This file is part of Soprano Project
  *
- * Copyright (C) 2008-2010 Sebastian Trueg <[email protected]>
+ * Copyright (C) 2008-2011 Sebastian Trueg <[email protected]>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -449,4 +449,17 @@ Soprano::QueryResultIterator 
Soprano::VirtuosoModel::executeQuery( const QString
     return d->sparqlQuery( d->replaceFakeTypesInQuery( query ) );
 }
 
+
+void 
Soprano::VirtuosoModel::slotVirtuosoStopped(VirtuosoController::ExitStatus 
status)
+{
+    // inform clients about a non-scheduled exit of the server so they can act 
accordingly
+    // typically this would mean to re-create the model from the backend
+    // We do this async in case clients react by directly deleting us
+    QMetaObject::invokeMethod(this,
+                              "virtuosoStopped",
+                              Qt::QueuedConnection,
+                              Q_ARG(bool, (!(status == 
VirtuosoController::CrashExit ||
+                                             status == 
VirtuosoController::ThirdPartyExit))));
+}
+
 #include "virtuosomodel.moc"
diff --git a/backends/virtuoso/virtuosomodel.h 
b/backends/virtuoso/virtuosomodel.h
index ba1a344..7ad70a3 100644
--- a/backends/virtuoso/virtuosomodel.h
+++ b/backends/virtuoso/virtuosomodel.h
@@ -1,7 +1,7 @@
 /*
  * This file is part of Soprano Project
  *
- * Copyright (C) 2008-2010 Sebastian Trueg <[email protected]>
+ * Copyright (C) 2008-2011 Sebastian Trueg <[email protected]>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -19,10 +19,11 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef _SOPRANO_IODBC_MODEL_H_
-#define _SOPRANO_IODBC_MODEL_H_
+#ifndef _SOPRANO_VIRTUOSO_MODEL_H_
+#define _SOPRANO_VIRTUOSO_MODEL_H_
 
 #include "storagemodel.h"
+#include "virtuosocontroller.h"
 
 namespace Soprano {
     namespace ODBC {
@@ -55,6 +56,14 @@ namespace Soprano {
                                                    Query::QueryLanguage 
language = Query::QueryLanguageSparql,
                                                    const QString& 
userQueryLanguage = QString() ) const;
 
+    public Q_SLOTS:
+        /// a public slot since it is connected from the backend on creation 
time
+        void slotVirtuosoStopped(Soprano::VirtuosoController::ExitStatus 
status);
+
+    Q_SIGNALS:
+        /// \param normalExit \p true if the shutdown of Virtuoso was 
initialized by deleting the model
+        void virtuosoStopped(bool normalExit);
+
     private:
         VirtuosoModelPrivate* const d;
 
++++++ soprano-2.7.0.tar.bz2 -> soprano-2.7.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/soprano-2.7.0/CMakeLists.txt 
new/soprano-2.7.2/CMakeLists.txt
--- old/soprano-2.7.0/CMakeLists.txt    2011-08-04 14:16:26.000000000 +0200
+++ new/soprano-2.7.2/CMakeLists.txt    2011-10-21 10:22:44.000000000 +0200
@@ -7,7 +7,7 @@
 ##################  Soprano version  ################################
 set(CMAKE_SOPRANO_VERSION_MAJOR 2)
 set(CMAKE_SOPRANO_VERSION_MINOR 7)
-set(CMAKE_SOPRANO_VERSION_RELEASE 0)
+set(CMAKE_SOPRANO_VERSION_RELEASE 1)
 set(CMAKE_SOPRANO_VERSION_STRING 
"${CMAKE_SOPRANO_VERSION_MAJOR}.${CMAKE_SOPRANO_VERSION_MINOR}.${CMAKE_SOPRANO_VERSION_RELEASE}")
 
 
@@ -42,10 +42,7 @@
 
 if(NOT SOPRANO_DISABLE_RAPTOR_PARSER OR NOT SOPRANO_DISABLE_RAPTOR_SERIALIZER 
OR NOT SOPRANO_DISABLE_REDLAND_BACKEND)
   find_package(Rasqal)
-  ## Dear packagers! There were serious bug that was fixed in 2.0.4. comparing 
to 2.0.3
-  ## But, if for some reasons you can' ship 2.0.4, there is|are backport(s) of 
this fix to 2.0.3
-  ## One of such backports was created by ArchLinux team. You may wish to 
contact them for it.
-  find_package(Raptor 2.0.4)
+  find_package(Raptor 2.0.0)
   find_package(Redland)
 
   if(WIN32)
@@ -198,15 +195,19 @@
   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/soprano.pc.cmake 
${CMAKE_CURRENT_BINARY_DIR}/soprano.pc @ONLY)
   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sopranoclient.pc.cmake 
${CMAKE_CURRENT_BINARY_DIR}/sopranoclient.pc @ONLY)
   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sopranoserver.pc.cmake 
${CMAKE_CURRENT_BINARY_DIR}/sopranoserver.pc @ONLY)
-  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sopranoindex.pc.cmake 
${CMAKE_CURRENT_BINARY_DIR}/sopranoindex.pc @ONLY)
+
   install(
     FILES
     ${CMAKE_CURRENT_BINARY_DIR}/soprano.pc
     ${CMAKE_CURRENT_BINARY_DIR}/sopranoclient.pc
     ${CMAKE_CURRENT_BINARY_DIR}/sopranoserver.pc
-    ${CMAKE_CURRENT_BINARY_DIR}/sopranoindex.pc
     DESTINATION
     ${PKGCONFIG_INSTALL_PREFIX})
+
+  if(BUILD_CLUCENE_INDEX)
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sopranoindex.pc.cmake 
${CMAKE_CURRENT_BINARY_DIR}/sopranoindex.pc @ONLY)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sopranoindex.pc DESTINATION 
${PKGCONFIG_INSTALL_PREFIX})
+  endif(BUILD_CLUCENE_INDEX)
 endif(NOT WIN32)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/soprano-2.7.0/ChangeLog new/soprano-2.7.2/ChangeLog
--- old/soprano-2.7.0/ChangeLog 2011-08-04 14:16:26.000000000 +0200
+++ new/soprano-2.7.2/ChangeLog 2011-10-21 10:22:44.000000000 +0200
@@ -1,3 +1,13 @@
+2.7.2
+       * Reverted a change which was introduced in 2.7.1 to use a separate 
QDBusConnection for the 
+          DBusExportModel. It made things worse.
+        * Fixed a crash in NRLModel caused by a non-mutex-protected hash.
+       * Fixed the Virtuoso backend's option "forcedstart". Now the backend 
waits for the running instance
+         to be shut down before trying to start a new one.
+
+2.7.1
+       * Lowered the min Raptor version to 2.0.0 since it was only a runtime 
dependancy for KDE.
+
 2.7.0
        * Use the new Virtuoso parameter XAnyNormalization to use normalized 
accents for full-text searching by default.
        * Updated NAO Vocabulary namespace to include changes from SDO 0.7.
@@ -9,6 +19,7 @@
        * Let onto2vocabularyclass convert dots in entity names to underscores 
to create valid C++ names.
        * Register DBus types in Client::DBusModel to make sure it can be used 
without Client::DBusClient.
        * Fixed error propagation in Utils::AsyncQuery.
+       * Use a separate QDBusConnection for the DBusExportModel to avoid 
crashes.
 
 2.6.0
        * Fixed handling of xsd:boolean in SPARQL queries in the Virtuoso 
backend
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/soprano-2.7.0/backends/virtuoso/virtuosocontroller.cpp 
new/soprano-2.7.2/backends/virtuoso/virtuosocontroller.cpp
--- old/soprano-2.7.0/backends/virtuoso/virtuosocontroller.cpp  2011-08-04 
14:16:26.000000000 +0200
+++ new/soprano-2.7.2/backends/virtuoso/virtuosocontroller.cpp  2011-10-21 
10:22:44.000000000 +0200
@@ -87,86 +87,101 @@
 
 Soprano::VirtuosoController::~VirtuosoController()
 {
-    if ( isRunning() )
+    if ( m_virtuosoProcess.state() == QProcess::Running )
         shutdown();
 }
 
 
 bool Soprano::VirtuosoController::start( const BackendSettings& settings, 
RunFlags flags )
 {
-    if ( !isRunning() ) {
-        QTemporaryFile tmpFile( QDir::tempPath() + "/virtuoso_XXXXXX.ini" );
-        tmpFile.setAutoRemove( false );
-        tmpFile.open();
-        m_configFilePath = tmpFile.fileName();
-        tmpFile.close();
-        writeConfigFile( m_configFilePath, settings );
-        m_runFlags = flags;
-
-        m_status = StartingUp;
-
-        QString virtuosoExe = locateVirtuosoBinary();
-        if ( virtuosoExe.isEmpty() ) {
-            setError( "Unable to find the Virtuoso binary." );
+    switch( m_status ) {
+        case NotRunning:
+            break; // Try to start server
+        case StartingUp:
+            setError( "Virtuoso is already starting up.");
             return false;
-        }
+        case Running:
+            setError( "Virtuoso is already running." );
+            return false;
+        case ShuttingDown:
+        case Killing:
+            setError( "Virtuoso is not stopped yet." );
+            return false;
+    }
 
-        const QString storageDir = valueInSettings( settings, 
BackendOptionStorageDir ).toString();
+    QTemporaryFile tmpFile( QDir::tempPath() + "/virtuoso_XXXXXX.ini" );
+    tmpFile.setAutoRemove( false );
+    tmpFile.open();
+    m_configFilePath = tmpFile.fileName();
+    tmpFile.close();
+    writeConfigFile( m_configFilePath, settings );
+    m_runFlags = flags;
+
+    m_status = StartingUp;
+
+    QString virtuosoExe = locateVirtuosoBinary();
+    if ( virtuosoExe.isEmpty() ) {
+        setError( "Unable to find the Virtuoso binary." );
+        return false;
+    }
 
-        // aquire a lock for ourselves
-        m_virtuosoLock.setFileName( storageDir + 
QLatin1String("/soprano-virtuoso.lock") );
-        int pid = 0;
-        if( !m_virtuosoLock.aquireLock( &pid ) ) {
-            setError( QString::fromLatin1("Another instance of Soprano (%1) is 
already running on the data in '%2'.")
-                     .arg(pid).arg(storageDir));
-            return false;
-        }
+    const QString storageDir = valueInSettings( settings, 
BackendOptionStorageDir ).toString();
 
-        // check if another instance of Virtuoso is running
-        pid = pidOfRunningVirtuosoInstance( storageDir );
-        if ( pid > 0 && valueInSettings( settings, "forcedstart", false 
).toBool() ) {
+    // aquire a lock for ourselves
+    m_virtuosoLock.setFileName( storageDir + 
QLatin1String("/soprano-virtuoso.lock") );
+    int pid = 0;
+    if( !m_virtuosoLock.aquireLock( &pid ) ) {
+        setError( QString::fromLatin1("Another instance of Soprano (%1) is 
already running on the data in '%2'.")
+                    .arg(pid).arg(storageDir));
+        return false;
+    }
+
+    // check if another instance of Virtuoso is running
+    pid = pidOfRunningVirtuosoInstance( storageDir );
+    if ( pid > 0 && valueInSettings( settings, "forcedstart", false ).toBool() 
) {
 #ifndef Q_OS_WIN
-            qDebug( "Shutting down Virtuoso instance (%d) which is in our 
way.", pid );
-            ::kill( pid_t( pid ), SIGINT );
-            ::waitpid( pid_t( pid ), 0, 0 );
-#endif
-            pid = 0;
-        }
+        qDebug( "Shutting down Virtuoso instance (%d) which is in our way.", 
pid );
+        ::kill( pid_t( pid ), SIGINT );
 
-        // remove old lock files in case Virtuoso crashed
-        if ( !pid ) {
-            QString lockFilePath = storageDir + QLatin1String( 
"/soprano-virtuoso.lck" );
-            if ( QFile::exists( lockFilePath ) )
-                QFile::remove( lockFilePath );
+        // wait for at max 30 seconds for the old instance to go down
+        int maxWaitSecs = 30;
+        while(pidOfRunningVirtuosoInstance( storageDir ) > 0 &&
+              --maxWaitSecs > 0) {
+            ::sleep(1);
         }
+#endif
+        pid = 0;
+    }
 
-        QStringList args;
-        args << "+foreground"
-             << "+configfile" << QDir::toNativeSeparators(m_configFilePath);
+    // remove old lock files in case Virtuoso crashed
+    if ( !pid ) {
+        QString lockFilePath = storageDir + QLatin1String( 
"/soprano-virtuoso.lck" );
+        if ( QFile::exists( lockFilePath ) )
+            QFile::remove( lockFilePath );
+    }
+
+    QStringList args;
+    args << "+foreground"
+            << "+configfile" << QDir::toNativeSeparators(m_configFilePath);
 #ifndef Q_OS_WIN
-        args << "+wait";
+    args << "+wait";
 #endif
-        qDebug() << "Starting Virtuoso server:" << virtuosoExe << args;
+    qDebug() << "Starting Virtuoso server:" << virtuosoExe << args;
 
-        // We need to set the working directory cause virtuoso creates a temp 
checkpoint_in_progress file
-        // in the directory it was started.
-        m_virtuosoProcess.setWorkingDirectory( storageDir );
-        m_virtuosoProcess.start( virtuosoExe, args, QIODevice::ReadOnly );
-        m_virtuosoProcess.setReadChannel( QProcess::StandardError );
-        m_virtuosoProcess.closeReadChannel( QProcess::StandardOutput );
-        if ( waitForVirtuosoToInitialize() ) {
-            clearError();
-            m_status = Running;
-            qDebug() << "Virtuoso started:" << m_virtuosoProcess.pid();
-            return true;
-        }
-        else {
-            setError( "Failed to start Virtuoso" );
-            return false;
-        }
+    // We need to set the working directory cause virtuoso creates a temp 
checkpoint_in_progress file
+    // in the directory it was started.
+    m_virtuosoProcess.setWorkingDirectory( storageDir );
+    m_virtuosoProcess.start( virtuosoExe, args, QIODevice::ReadOnly );
+    m_virtuosoProcess.setReadChannel( QProcess::StandardError );
+    m_virtuosoProcess.closeReadChannel( QProcess::StandardOutput );
+    if ( waitForVirtuosoToInitialize() ) {
+        clearError();
+        m_status = Running;
+        qDebug() << "Virtuoso started:" << m_virtuosoProcess.pid();
+        return true;
     }
     else {
-        setError( "Virtuoso is already running." );
+        setError( "Failed to start Virtuoso" );
         return false;
     }
 }
@@ -248,12 +263,6 @@
 }
 
 
-bool Soprano::VirtuosoController::isRunning() const
-{
-    return m_status == Running;
-}
-
-
 void Soprano::VirtuosoController::slotProcessFinished( int, 
QProcess::ExitStatus exitStatus )
 {
     // clean up config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/soprano-2.7.0/backends/virtuoso/virtuosocontroller.h 
new/soprano-2.7.2/backends/virtuoso/virtuosocontroller.h
--- old/soprano-2.7.0/backends/virtuoso/virtuosocontroller.h    2011-08-04 
14:16:26.000000000 +0200
+++ new/soprano-2.7.2/backends/virtuoso/virtuosocontroller.h    2011-10-21 
10:22:44.000000000 +0200
@@ -66,7 +66,6 @@
 
         int usedPort() const;
 
-        bool isRunning() const;
         Status status() const { return m_status; }
         ExitStatus lastExitStatus() const { return m_lastExitStatus; }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/soprano-2.7.0/soprano/inference/inferenceruleset.cpp 
new/soprano-2.7.2/soprano/inference/inferenceruleset.cpp
--- old/soprano-2.7.0/soprano/inference/inferenceruleset.cpp    2011-08-04 
14:16:26.000000000 +0200
+++ new/soprano-2.7.2/soprano/inference/inferenceruleset.cpp    2011-10-21 
10:22:44.000000000 +0200
@@ -21,16 +21,14 @@
 
 #include "soprano-config.h"
 
+#include "sopranodirs.h"
 #include "inferenceruleset.h"
 #include "inferencerule.h"
 #include "inferenceruleparser.h"
 
 #include <QtCore/QHash>
 #include <QtCore/QList>
-#ifdef Q_OS_WIN
-#include <QtCore/QCoreApplication>
-#include <QtCore/QDir>
-#endif
+#include <QtCore/QFile>
 
 class Soprano::Inference::RuleSet::Private : public QSharedData
 {
@@ -127,36 +125,23 @@
 
 Soprano::Inference::RuleSet Soprano::Inference::RuleSet::standardRuleSet( 
StandardRuleSet set )
 {
-    QString path( SOPRANO_PREFIX );
-    path += "/share/soprano/rules/";
-
-    switch( set ) {
-    case RDFS:
-        path += "rdfs.rules";
-        break;
-    case NRL:
-        path += "nrl.rules";
-        break;
-    }
-
-    RuleParser parser;
-    parser.parseFile( path );
-#ifdef Q_OS_WIN
-    // Additionally try to look up the rules based on the runtime Path if
-    // they can not be found at the install prefix
-    if (!parser.rules().count()) {
-        path = QDir( QCoreApplication::applicationDirPath() 
).absoluteFilePath( ".." );
-        path += "/share/soprano/rules/";
+    QString path;
 
+    foreach( const QString &p, Soprano::dataDirs() ) {
         switch( set ) {
         case RDFS:
-            path += "rdfs.rules";
+            path = p + QLatin1String( "/soprano/rules/rdfs.rules" );
             break;
         case NRL:
-            path += "nrl.rules";
+            path = p + QLatin1String( "/soprano/rules/nrl.rules" );
             break;
         }
+        if (QFile::exists(path)) {
+            RuleParser parser;
+            if( parser.parseFile( path ) )
+                return parser.rules();
+        }
     }
-#endif
-    return parser.rules();
+
+    return Soprano::Inference::RuleSet();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/soprano-2.7.0/soprano/nrlmodel.cpp 
new/soprano-2.7.2/soprano/nrlmodel.cpp
--- old/soprano-2.7.0/soprano/nrlmodel.cpp      2011-08-04 14:16:26.000000000 
+0200
+++ new/soprano-2.7.2/soprano/nrlmodel.cpp      2011-10-21 10:22:44.000000000 
+0200
@@ -1,7 +1,7 @@
 /*
  * This file is part of Soprano Project.
  *
- * Copyright (C) 2007-2009 Sebastian Trueg <[email protected]>
+ * Copyright (C) 2007-2011 Sebastian Trueg <[email protected]>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -54,7 +54,8 @@
 public:
     Private()
         : ignoreContext( true ),
-          m_expandQueryPrefixes( false ) {
+          m_expandQueryPrefixes( false ),
+          m_prefixMapMutex( QMutex::Recursive ) {
     }
 
     /**
@@ -62,7 +63,7 @@
      */
     void buildPrefixMap()
     {
-        QMutexLocker lock( &m_mutex );
+        QMutexLocker lock( &m_prefixMapMutex );
 
         m_prefixes.clear();
 
@@ -98,8 +99,7 @@
 
     NRLModel* q;
 
-private:
-    QMutex m_mutex;
+    QMutex m_prefixMapMutex;
 };
 
 Soprano::NRLModel::NRLModel()
@@ -299,8 +299,11 @@
 
     if ( language == Query::QueryLanguageSparql &&
          d->m_expandQueryPrefixes ) {
-        for ( QHash<QString, QUrl>::const_iterator it = 
d->m_prefixes.constBegin();
-              it != d->m_prefixes.constEnd(); ++it ) {
+        d->m_prefixMapMutex.lock();
+        QHash<QString, QUrl> prefixes = d->m_prefixes;
+        d->m_prefixMapMutex.unlock();
+        for ( QHash<QString, QUrl>::const_iterator it = prefixes.constBegin();
+              it != prefixes.constEnd(); ++it ) {
             QString prefix = it.key();
             QUrl ns = it.value();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/soprano-2.7.0/soprano/nrlmodel.h 
new/soprano-2.7.2/soprano/nrlmodel.h
--- old/soprano-2.7.0/soprano/nrlmodel.h        2011-08-04 14:16:26.000000000 
+0200
+++ new/soprano-2.7.2/soprano/nrlmodel.h        2011-10-21 10:22:44.000000000 
+0200
@@ -1,7 +1,7 @@
 /*
  * This file is part of Soprano Project.
  *
- * Copyright (C) 2007-2009 Sebastian Trueg <[email protected]>
+ * Copyright (C) 2007-2011 Sebastian Trueg <[email protected]>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public

++++++ soprano-backend-sesame.spec.in ++++++
--- /var/tmp/diff_new_pack.WHb7wS/_old  2011-10-26 15:47:50.000000000 +0200
+++ /var/tmp/diff_new_pack.WHb7wS/_new  2011-10-26 15:47:50.000000000 +0200
@@ -18,19 +18,16 @@
 
 
 Name:           soprano-backend-sesame
-Url:            http://soprano.sourceforge.net/
-License:        LGPLv2+
-Group:          System/Libraries
 Summary:        Sesame backend for Soprano
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 # COMMON1-BEGIN
 # COMMON1-END
 BuildRequires:  java-devel
 BuildRequires:  libsoprano-devel
-Requires:       libsoprano4 = %{version}
 Requires:       java
+Requires:       libsoprano4 = %{version}
 Provides:       soprano_backend = %{version}
 Provides:       backend-sesame2 = %{version}
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
 This package provides a Sesame based backend for Soprano.
@@ -41,7 +38,7 @@
 
 %build
 export JAVA_HOME=%{_jvmdir}/java
-%cmake_kde4 -d build -- -DCMAKE_SKIP_RPATH=OFF -DBUILD_SESAME_BACKEND=ON
+%cmake_kde4 -d build -- -DCMAKE_SKIP_RPATH=OFF -DBUILD_SESAME2_BACKEND=ON
 %make_jobs
 
 %install
@@ -61,7 +58,7 @@
 
 %files
 %defattr(-,root,root,-)
-%{_datadir}/soprano/sesame2
+%{_datadir}/soprano/sesame2/
 %{_libdir}/soprano/libsoprano_sesame2backend.so
 %{_datadir}/soprano/plugins/sesame2backend.desktop
 

++++++ soprano-backend-virtuoso.spec.in ++++++
--- /var/tmp/diff_new_pack.WHb7wS/_old  2011-10-26 15:47:50.000000000 +0200
+++ /var/tmp/diff_new_pack.WHb7wS/_new  2011-10-26 15:47:50.000000000 +0200
@@ -18,11 +18,7 @@
 
 
 Name:           soprano-backend-virtuoso
-Url:            http://soprano.sourceforge.net/
-License:        LGPLv2+
-Group:          System/Libraries
 Summary:        Virtuoso backend for Soprano
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 # COMMON1-BEGIN
 # COMMON1-END
 BuildRequires:  libiodbc-devel
@@ -31,6 +27,7 @@
 Requires:       virtuoso-server
 Provides:       soprano_backend = %{version}
 Provides:       backend-virtuso = %{version}
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
 This package provides a Virtuoso based backend for Soprano.

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to