78 lines
2.8 KiB
Diff
78 lines
2.8 KiB
Diff
|
From: Yury G. Kudryashov <urkud.urkud@gmail.com>
|
||
|
Subject: [PATCH] Find virtuoso if virtuoso-t is in PATH
|
||
|
|
||
|
---
|
||
|
backends/virtuoso/virtuosobackend.cpp | 29 ++++++++++++++++++++---------
|
||
|
backends/virtuoso/virtuosobackend.h | 2 +-
|
||
|
2 files changed, 21 insertions(+), 10 deletions(-)
|
||
|
|
||
|
diff --git a/backends/virtuoso/virtuosobackend.cpp b/backends/virtuoso/virtuosobackend.cpp
|
||
|
index c83605d..c24854e 100644
|
||
|
--- a/backends/virtuoso/virtuosobackend.cpp
|
||
|
+++ b/backends/virtuoso/virtuosobackend.cpp
|
||
|
@@ -188,19 +188,19 @@ namespace {
|
||
|
|
||
|
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 = VirtuosoController::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;
|
||
|
@@ -217,9 +217,20 @@ bool Soprano::Virtuoso::BackendPlugin::isAvailable() const
|
||
|
|
||
|
|
||
|
#ifndef Q_OS_WIN
|
||
|
-QString Soprano::Virtuoso::BackendPlugin::findVirtuosoDriver() const
|
||
|
+QString Soprano::Virtuoso::BackendPlugin::findVirtuosoDriver( const QString &virtuosoBinHint ) const
|
||
|
{
|
||
|
- return Soprano::findLibraryPath( "virtodbc_r", QStringList(), QStringList() << QLatin1String( "virtuoso/plugins/" ) << QLatin1String( "odbc/" ) );
|
||
|
+ QString virtuosoBin;
|
||
|
+ if (virtuosoBinHint.isEmpty())
|
||
|
+ virtuosoBin = VirtuosoController::locateVirtuosoBinary();
|
||
|
+ else
|
||
|
+ virtuosoBin = virtuosoBinHint;
|
||
|
+
|
||
|
+ QDir virtuosoBinDir = QFileInfo(virtuosoBin).absoluteDir();
|
||
|
+ return Soprano::findLibraryPath( "virtodbc_r",
|
||
|
+ QStringList() << virtuosoBinDir.absolutePath()
|
||
|
+ << virtuosoBinDir.absoluteFilePath("../lib"),
|
||
|
+ QStringList() << QLatin1String( "virtuoso/plugins/" ) <<
|
||
|
+ QLatin1String( "odbc/" ) );
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
diff --git a/backends/virtuoso/virtuosobackend.h b/backends/virtuoso/virtuosobackend.h
|
||
|
index 3971b83..0807e5d 100644
|
||
|
--- a/backends/virtuoso/virtuosobackend.h
|
||
|
+++ b/backends/virtuoso/virtuosobackend.h
|
||
|
@@ -50,7 +50,7 @@ namespace Soprano {
|
||
|
|
||
|
#ifndef Q_OS_WIN
|
||
|
private:
|
||
|
- QString findVirtuosoDriver() const;
|
||
|
+ QString findVirtuosoDriver(const QString &virtuosoBinHint = QString()) const;
|
||
|
#endif
|
||
|
};
|
||
|
}
|
||
|
--
|
||
|
tg: (432b73f..) t/find-virtuoso (depends on: master)
|