mariadb: switch from mysql to mariadb

- kodi-patch merged upstream
- mariadb is selected as default
This commit is contained in:
Sascha Kuehndel (InuSasha) 2018-01-05 12:38:19 +01:00
parent 0ea19c3fe5
commit ff62a9ac3c
No known key found for this signature in database
GPG Key ID: 15FED89617B88D1B
5 changed files with 271 additions and 8 deletions

View File

@ -76,8 +76,8 @@
# build with UPnP support (yes / no)
KODI_UPNP_SUPPORT="yes"
# build with MySQL support (yes / no)
KODI_MYSQL_SUPPORT="yes"
# build with MySQL support (mysql / mariadb / none)
KODI_MYSQL_SUPPORT="mariadb"
# build xbmc with sshlib support (yes / no)
KODI_SSHLIB_SUPPORT="yes"

View File

@ -0,0 +1,41 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2018-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="mariadb-connector-c"
PKG_VERSION="3.0.2"
PKG_SHA256="f44f436fc35e081db3a56516de9e3bb11ae96838e75d58910be28ddd2bc56d88"
PKG_ARCH="any"
PKG_LICENSE="LGPL"
PKG_SITE="https://mariadb.org/"
PKG_URL="https://github.com/MariaDB/mariadb-connector-c/archive/v$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain zlib openssl"
PKG_SECTION="database"
PKG_SHORTDESC="mariadb-connector: library to conntect to mariadb/mysql database server"
PKG_LONGDESC="mariadb-connector: library to conntect to mariadb/mysql database server"
PKG_CMAKE_OPTS_TARGET="-DWITH_EXTERNAL_ZLIB=ON
-DAUTH_CLEARTEXT=STATIC
-DAUTH_DIALOG=STATIC
-DAUTH_OLDPASSWORD=STATIC
-DREMOTEIO=OFF
"
post_makeinstall_target() {
# drop all unneeded
rm -rf $INSTALL/usr
}

View File

@ -0,0 +1,22 @@
From 642320e2cf5d8283b36cd92a0e4d2c93cf410775 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sascha=20K=C3=BChndel?= <dev@inusasha.de>
Date: Thu, 4 Jan 2018 22:00:40 +0100
Subject: [PATCH] fix typo in plugins.cmake
---
cmake/plugins.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmake/plugins.cmake b/cmake/plugins.cmake
index cca6836c..5066a300 100644
--- a/cmake/plugins.cmake
+++ b/cmake/plugins.cmake
@@ -46,7 +46,7 @@ REGISTER_PLUGIN("AUTH_NATIVE" "${CC_SOURCE_DIR}/plugins/auth/my_auth.c" "native_
REGISTER_PLUGIN("AUTH_OLDPASSWORD" "${CC_SOURCE_DIR}/plugins/auth/old_password.c" "old_password_client_plugin" "STATIC" "" 1)
SET(DIALOG_SOURCES ${CC_SOURCE_DIR}/plugins/auth/dialog.c ${CC_SOURCE_DIR}/libmariadb/get_password.c)
REGISTER_PLUGIN("AUTH_DIALOG" "${DIALOG_SOURCES}" "auth_dialog_plugin" "DYNAMIC" dialog 1)
-REGISTER_PLUGIN("AUTH_CLEARTEXT" "${CC_SOURCE_DIR}/plugins/auth/mariadb_clear_text.c" "auth_cleartext_plugin" "DYNAMIC" "mysql_clear_password" 1)
+REGISTER_PLUGIN("AUTH_CLEARTEXT" "${CC_SOURCE_DIR}/plugins/auth/mariadb_cleartext.c" "auth_cleartext_plugin" "DYNAMIC" "mysql_clear_password" 1)
IF(WIN32)
SET(GSSAPI_SOURCES ${CC_SOURCE_DIR}/plugins/auth/auth_gssapi_client.c ${CC_SOURCE_DIR}/plugins/auth/sspi_client.c ${CC_SOURCE_DIR}/plugins/auth/sspi_errmsg.c)
REGISTER_PLUGIN("AUTH_GSSAPI" "${GSSAPI_SOURCES}" "auth_gssapi_plugin" "DYNAMIC" "auth_gssapi_client" 1)

View File

@ -103,12 +103,15 @@ else
KODI_AVAHI="-DENABLE_AVAHI=OFF"
fi
if [ "$KODI_MYSQL_SUPPORT" = yes ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mysql"
KODI_MYSQL="-DENABLE_MYSQLCLIENT=ON"
else
KODI_MYSQL="-DENABLE_MYSQLCLIENT=OFF"
fi
case "$KODI_MYSQL_SUPPORT" in
mysql) PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mysql"
KODI_MYSQL="-DENABLE_MYSQLCLIENT=ON -DENABLE_MARIADBCLIENT=OFF"
;;
mariadb) PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mariadb-connector-c"
KODI_MYSQL="-DENABLE_MARIADBCLIENT=ON -DENABLE_MYSQLCLIENT=OFF"
;;
*) KODI_MYSQL="-DENABLE_MYSQLCLIENT=OFF -DENABLE_MARIADBCLIENT=OFF"
esac
if [ "$KODI_AIRPLAY_SUPPORT" = yes ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libplist"

View File

@ -0,0 +1,197 @@
From 35c299575feaf12dd09e9571e981347436063806 Mon Sep 17 00:00:00 2001
From: "Sascha Kuehndel (InuSasha)" <dev@inusasha.de>
Date: Fri, 5 Jan 2018 18:14:12 +0100
Subject: [PATCH] sql-client: add support for mariadb-client mariadb is a
place-in for mysql. only, the search pathes and the include path are changed.
---
CMakeLists.txt | 12 +++++-
cmake/modules/FindMariaDBClient.cmake | 69 +++++++++++++++++++++++++++++++++++
xbmc/dbwrappers/CMakeLists.txt | 2 +-
xbmc/dbwrappers/Database.cpp | 6 +--
xbmc/dbwrappers/mysqldataset.cpp | 4 ++
xbmc/dbwrappers/mysqldataset.h | 4 ++
6 files changed, 92 insertions(+), 5 deletions(-)
create mode 100644 cmake/modules/FindMariaDBClient.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 08bebea13a59..150fe9744ce9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -151,7 +151,6 @@ set(optional_deps Alsa
LCMS2
MDNS
MicroHttpd
- MySqlClient
PulseAudio
Python
SmbClient
@@ -179,6 +178,17 @@ core_optional_dep(${optional_deps})
core_require_dyload_dep(${required_dyload})
core_optional_dyload_dep(${dyload_optional})
+if(ENABLE_MARIADBCLIENT AND NOT ENABLE_MARIADBCLIENT STREQUAL AUTO AND ENABLE_MYSQLCLIENT AND NOT ENABLE_MYSQLCLIENT STREQUAL AUTO)
+ MESSAGE(FATAL_ERROR "You can not use MySql and MariaDB at the same time. Disable one by adding -DENABLE_MYSQLCLIENT=OFF or -DENABLE_MARIADBCLIENT=OFF.")
+elseif(ENABLE_MYSQLCLIENT AND NOT ENABLE_MYSQLCLIENT STREQUAL AUTO)
+ set(ENABLE_MARIADBCLIENT OFF CACHE BOOL "")
+endif()
+
+core_optional_dep(MariaDBClient)
+if(NOT MARIADBCLIENT_FOUND)
+ core_optional_dep(MySqlClient)
+endif()
+
if(NOT UDEV_FOUND)
core_optional_dep(LibUSB)
endif()
diff --git a/cmake/modules/FindMariaDBClient.cmake b/cmake/modules/FindMariaDBClient.cmake
new file mode 100644
index 000000000000..1e5e736f46b0
--- /dev/null
+++ b/cmake/modules/FindMariaDBClient.cmake
@@ -0,0 +1,69 @@
+#.rst:
+# FindMariaDBClient
+# ---------------
+# Finds the MariaDBClient library
+#
+# This will will define the following variables::
+#
+# MARIADBCLIENT_FOUND - system has MariaDBClient
+# MARIADBCLIENT_INCLUDE_DIRS - the MariaDBClient include directory
+# MARIADBCLIENT_LIBRARIES - the MariaDBClient libraries
+# MARIADBCLIENT_DEFINITIONS - the MariaDBClient compile definitions
+#
+# and the following imported targets::
+#
+# MariaDBClient::MariaDBClient - The MariaDBClient library
+
+# Don't find system wide installed version on Windows
+if(WIN32)
+ set(EXTRA_FIND_ARGS NO_SYSTEM_ENVIRONMENT_PATH)
+else()
+ set(EXTRA_FIND_ARGS)
+endif()
+
+find_path(MARIADBCLIENT_INCLUDE_DIR NAMES mariadb/mysql.h mariadb/server/mysql.h)
+find_library(MARIADBCLIENT_LIBRARY_RELEASE NAMES mariadbclient libmariadb
+ PATH_SUFFIXES mariadb
+ ${EXTRA_FIND_ARGS})
+find_library(MARIADBCLIENT_LIBRARY_DEBUG NAMES mariadbclient libmariadb
+ PATH_SUFFIXES mariadb
+ ${EXTRA_FIND_ARGS})
+
+if(MARIADBCLIENT_INCLUDE_DIR AND EXISTS "${MARIADBCLIENT_INCLUDE_DIR}/mariadb/mariadb_version.h")
+ file(STRINGS "${MARIADBCLIENT_INCLUDE_DIR}/mariadb/mariadb_version.h" mariadb_version_str REGEX "^#define[\t ]+MARIADB_CLIENT_VERSION_STR[\t ]+\".*\".*")
+ string(REGEX REPLACE "^#define[\t ]+MARIADB_CLIENT_VERSION_STR[\t ]+\"([^\"]+)\".*" "\\1" MARIADBCLIENT_VERSION_STRING "${mariadb_version_str}")
+ unset(mariadb_version_str)
+endif()
+
+include(SelectLibraryConfigurations)
+select_library_configurations(MARIADBCLIENT)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MariaDBClient
+ REQUIRED_VARS MARIADBCLIENT_LIBRARY MARIADBCLIENT_INCLUDE_DIR
+ VERSION_VAR MARIADBCLIENT_VERSION_STRING)
+
+if(MARIADBCLIENT_FOUND)
+ set(MARIADBCLIENT_LIBRARIES ${MARIADBCLIENT_LIBRARY})
+ set(MARIADBCLIENT_INCLUDE_DIRS ${MARIADBCLIENT_INCLUDE_DIR})
+ set(MARIADBCLIENT_DEFINITIONS -DHAS_MARIADB=1)
+
+ if(NOT TARGET MariaDBClient::MariaDBClient)
+ add_library(MariaDBClient::MariaDBClient UNKNOWN IMPORTED)
+ if(MARIADBCLIENT_LIBRARY_RELEASE)
+ set_target_properties(MariaDBClient::MariaDBClient PROPERTIES
+ IMPORTED_CONFIGURATIONS RELEASE
+ IMPORTED_LOCATION "${MARIADBCLIENT_LIBRARY_RELEASE}")
+ endif()
+ if(MARIADBCLIENT_LIBRARY_DEBUG)
+ set_target_properties(MariaDBClient::MariaDBClient PROPERTIES
+ IMPORTED_CONFIGURATIONS DEBUG
+ IMPORTED_LOCATION "${MARIADBCLIENT_LIBRARY_DEBUG}")
+ endif()
+ set_target_properties(MariaDBClient::MariaDBClient PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${MARIADBCLIENT_INCLUDE_DIR}"
+ INTERFACE_COMPILE_DEFINITIONS HAS_MARIADB=1)
+ endif()
+endif()
+
+mark_as_advanced(MARIADBCLIENT_INCLUDE_DIR MARIADBCLIENT_LIBRARY)
diff --git a/xbmc/dbwrappers/CMakeLists.txt b/xbmc/dbwrappers/CMakeLists.txt
index 5ca090f0e4dd..16a03f291a6c 100644
--- a/xbmc/dbwrappers/CMakeLists.txt
+++ b/xbmc/dbwrappers/CMakeLists.txt
@@ -10,7 +10,7 @@ set(HEADERS Database.h
qry_dat.h
sqlitedataset.h)
-if(MYSQLCLIENT_FOUND)
+if(MYSQLCLIENT_FOUND OR MARIADBCLIENT_FOUND)
list(APPEND SOURCES mysqldataset.cpp)
list(APPEND HEADERS mysqldataset.h)
endif()
diff --git a/xbmc/dbwrappers/Database.cpp b/xbmc/dbwrappers/Database.cpp
index b90b28508e6d..c3ae6480bb74 100644
--- a/xbmc/dbwrappers/Database.cpp
+++ b/xbmc/dbwrappers/Database.cpp
@@ -30,7 +30,7 @@
#include "DatabaseManager.h"
#include "DbUrl.h"
-#ifdef HAS_MYSQL
+#if defined(HAS_MYSQL) || defined(HAS_MARIADB)
#include "mysqldataset.h"
#endif
@@ -378,7 +378,7 @@ void CDatabase::InitSettings(DatabaseSettings &dbSettings)
{
m_sqlite = true;
-#ifdef HAS_MYSQL
+#if defined(HAS_MYSQL) || defined(HAS_MARIADB)
if (dbSettings.type == "mysql")
{
// check we have all information before we cancel the fallback
@@ -421,7 +421,7 @@ bool CDatabase::Connect(const std::string &dbName, const DatabaseSettings &dbSet
{
m_pDB.reset( new SqliteDatabase() ) ;
}
-#ifdef HAS_MYSQL
+#if defined(HAS_MYSQL) || defined(HAS_MARIADB)
else if (dbSettings.type == "mysql")
{
m_pDB.reset( new MysqlDatabase() ) ;
diff --git a/xbmc/dbwrappers/mysqldataset.cpp b/xbmc/dbwrappers/mysqldataset.cpp
index 4e561296a630..69d48201483e 100644
--- a/xbmc/dbwrappers/mysqldataset.cpp
+++ b/xbmc/dbwrappers/mysqldataset.cpp
@@ -30,7 +30,11 @@
#include "utils/StringUtils.h"
#include "mysqldataset.h"
+#ifdef HAS_MYSQL
#include "mysql/errmsg.h"
+#elif defined(HAS_MARIADB)
+#include <mariadb/errmsg.h>
+#endif
#ifdef TARGET_POSIX
#include "platform/linux/ConvUtils.h"
diff --git a/xbmc/dbwrappers/mysqldataset.h b/xbmc/dbwrappers/mysqldataset.h
index c3072acb1f8a..65949b013787 100644
--- a/xbmc/dbwrappers/mysqldataset.h
+++ b/xbmc/dbwrappers/mysqldataset.h
@@ -22,7 +22,11 @@
#include <stdio.h>
#include "dataset.h"
+#ifdef HAS_MYSQL
#include "mysql/mysql.h"
+#elif defined(HAS_MARIADB)
+#include <mariadb/mysql.h>
+#endif
namespace dbiplus {
/***************** Class MysqlDatabase definition ******************