about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/soprano/find-virtuoso.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/soprano/find-virtuoso.patch')
-rw-r--r--nixpkgs/pkgs/development/libraries/soprano/find-virtuoso.patch86
1 files changed, 86 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/soprano/find-virtuoso.patch b/nixpkgs/pkgs/development/libraries/soprano/find-virtuoso.patch
new file mode 100644
index 000000000000..95a2c7e96565
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/soprano/find-virtuoso.patch
@@ -0,0 +1,86 @@
+From: Yury G. Kudryashov <urkud.urkud@gmail.com>
+Subject: [PATCH] Find virtuoso if virtuoso-t is in PATH
+
+---
+ backends/virtuoso/virtuosobackend.cpp |   31 ++++++++++++++++++++++---------
+ backends/virtuoso/virtuosobackend.h   |    2 +-
+ 2 files changed, 23 insertions(+), 10 deletions(-)
+
+diff --git a/backends/virtuoso/virtuosobackend.cpp b/backends/virtuoso/virtuosobackend.cpp
+index c245101..249958a 100644
+--- a/backends/virtuoso/virtuosobackend.cpp
++++ b/backends/virtuoso/virtuosobackend.cpp
+@@ -28,6 +28,7 @@
+ #include "odbcconnectionpool.h"
+ 
+ #include "sopranodirs.h"
++#include "soprano-config.h"
+ 
+ #include <QtCore/QDebug>
+ #include <QtCore/QtPlugin>
+@@ -210,19 +211,19 @@ Soprano::BackendFeatures Soprano::Virtuoso::BackendPlugin::supportedFeatures() c
+ 
+ bool Soprano::Virtuoso::BackendPlugin::isAvailable() const
+ {
+-#ifndef Q_OS_WIN
+-    if ( findVirtuosoDriver().isEmpty() ) {
+-        qDebug() << Q_FUNC_INFO << "could not find Virtuoso ODBC driver";
+-        return false;
+-    }
+-#endif
+-
+     QString virtuosoBin = locateVirtuosoBinary();
+     if ( virtuosoBin.isEmpty() ) {
+         qDebug() << Q_FUNC_INFO << "could not find virtuoso-t binary";
+         return false;
+     }
+ 
++#ifndef Q_OS_WIN
++    if ( findVirtuosoDriver( virtuosoBin ).isEmpty() ) {
++        qDebug() << Q_FUNC_INFO << "could not find Virtuoso ODBC driver";
++        return false;
++    }
++#endif
++
+     QString vs = determineVirtuosoVersion( virtuosoBin );
+     if ( vs.isEmpty() ) {
+         qDebug() << Q_FUNC_INFO << "Failed to determine version of the Virtuoso server at" << virtuosoBin;
+@@ -267,9 +268,21 @@ QString Soprano::Virtuoso::BackendPlugin::locateVirtuosoBinary()
+ 
+ #ifndef Q_OS_WIN
+ // static
+-QString Soprano::Virtuoso::BackendPlugin::findVirtuosoDriver()
++QString Soprano::Virtuoso::BackendPlugin::findVirtuosoDriver( const QString &virtuosoBinHint )
+ {
+-    return Soprano::findLibraryPath( "virtodbc_r", QStringList(), QStringList() << QLatin1String( "virtuoso/plugins/" ) << QLatin1String( "odbc/" ) );
++    QString virtuosoBin;
++    if (virtuosoBinHint.isEmpty())
++        virtuosoBin = locateVirtuosoBinary();
++    else
++        virtuosoBin = virtuosoBinHint;
++
++    QDir virtuosoBinDir = QFileInfo(virtuosoBin).absoluteDir();
++    return Soprano::findLibraryPath( "virtodbc_r",
++            QStringList()
++			<< virtuosoBinDir.absoluteFilePath("../lib"SOPRANO_LIB_SUFFIX)
++			<< virtuosoBinDir.absoluteFilePath("../lib"),
++            QStringList() << QLatin1String( "virtuoso/plugins/" ) <<
++            QLatin1String( "odbc/" ) );
+ }
+ #endif
+ 
+diff --git a/backends/virtuoso/virtuosobackend.h b/backends/virtuoso/virtuosobackend.h
+index 646b9f8..535fbb9 100644
+--- a/backends/virtuoso/virtuosobackend.h
++++ b/backends/virtuoso/virtuosobackend.h
+@@ -52,7 +52,7 @@ namespace Soprano {
+ 
+ #ifndef Q_OS_WIN
+         private:
+-            static QString findVirtuosoDriver();
++            static QString findVirtuosoDriver(const QString &virtuosoBinHint = QString());
+ #endif
+         };
+     }
+-- 
+tg: (2321148..) t/find-virtuoso (depends on: master)