Skip to content

Commit

Permalink
removed libmariadb submodule
Browse files Browse the repository at this point in the history
Added support for mariadb_config (posix only)
You can build now by specify location of mariadb_config, e.g.
python3.6 setup.py build --mariadb_config=/opt/local/bin/mariadb_config
  • Loading branch information
9EOR9 committed Dec 5, 2018
1 parent 56b7a3a commit 68b31f7
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 39 deletions.
7 changes: 4 additions & 3 deletions .gitmodules
@@ -1,3 +1,4 @@
[submodule "libmariadb"]
path = libmariadb
url = https://github.com/Mariadb/mariadb-connector-c.git
[submodule "mariadb-connector-c"]
path = mariadb-connector-c
url = https://github.com/MariaDB/mariadb-connector-c.git
branch = 3.0
1 change: 0 additions & 1 deletion libmariadb
Submodule libmariadb deleted from 82ec50
86 changes: 51 additions & 35 deletions setup.py
Expand Up @@ -3,43 +3,59 @@
import os
import sys
import subprocess
import string

from distutils.core import setup, Extension
from optparse import OptionParser

def mariadb_config(config, option):
from os import popen
if config is None:
config="mariadb_config"
file= popen("%s --%s" % (config, option))
data= file.read().strip().split()
rc= file.close()
if rc:
if rc/256:
data= []
if rc/256 > 1:
raise EnvironmentError("mariadb_config not found")
return data


def dequote(s):
if s[0] in "\"'" and s[0] == s[-1]:
s = s[1:-1]
return s

parser=OptionParser()
parser.add_option("--mariadb_config", dest="mariadb_config",
help="Location of mariadb_config")
required_version="3.1.0"

optlist, args= parser.parse_args()
cc_version= mariadb_config(optlist.mariadb_config, "cc_version")
if cc_version[0] < required_version:
print("MariaDB Connector/C required MariaDB Connector/C >= %s") % (required_version)
sys.exit(2)
libs= mariadb_config(optlist.mariadb_config, "libs")
mariadb_lib_dirs = [ dequote(i[2:]) for i in libs if i.startswith("-L") ]
mariadb_libs = [ dequote(i[2:]) for i in libs if i.startswith("-l") ]
includes= mariadb_config(optlist.mariadb_config, "include")
mariadb_includes = [ dequote(i[2:]) for i in includes if i.startswith("-I") ]
mariadb_includes.extend(["./include"])
if optlist.mariadb_config is not None:
sys.argv.remove("--mariadb_config=%s" % (optlist.mariadb_config))

def build_libmariadb(build_type):
if build_type != "Debug" and build_type != "RelWithDebInfo" and build_type != "Release":
raise Exception("Invalid value for build type")

if not os.path.isfile('libmariadb/CMakeLists.txt'):
subprocess.call('git submodule update --init --recursive && mkdir libmariadb/bld', shell=True)

if sys.platform == "win32":
build_libmariadb= "cd libmariadb/bld && cmake .. && cmake --build . --config %s" % build_type
else:
build_libmariadb= "cd libmariadb/bld && cmake .. -DCMAKE_BUILD_TYPE=%s && make -j4" % build_type
subprocess.call(build_libmariadb, shell=True)

build_libmariadb("Debug")

mariadb_includes=["libmariadb/include", "libmariadb/bld/include", "./include"]
if not sys.platform == "win32":
mariadb_lib_dirs=["libmariadb/bld/libmariadb"]
mariadb_libraries=["dl","m","pthread","ssl","crypto"]
static_lib="libmariadb/bld/libmariadb/libmariadbclient.a"
else:
mariadb_lib_dirs=["libmariadb/bld/libmariadb/%s" % build_type]
mariadb_libraries=[]
static_lib = "libmariadb/bld/libmariadb/%s/mysqlclient.lib" % build_type

setup(name='mariadb',
version='0.9.1',
description='Python MariaDB extension',
author='Georg Richter',
url='http://www.mariadb.com',
ext_modules=[Extension('mariadb', ['src/mariadb.c', 'src/mariadb_connection.c', 'src/mariadb_exception.c', 'src/mariadb_cursor.c', 'src/mariadb_codecs.c', 'src/mariadb_field.c', 'src/mariadb_dbapitype.c', 'src/mariadb_indicator.c'],
include_dirs=mariadb_includes,
library_dirs= mariadb_lib_dirs,
libraries= mariadb_libraries,
extra_objects=[static_lib]
)],
)
version='0.9.1',
description='Python MariaDB extension',
author='Georg Richter',
url='http://www.mariadb.com',
ext_modules=[Extension('mariadb', ['src/mariadb.c', 'src/mariadb_connection.c', 'src/mariadb_exception.c', 'src/mariadb_cursor.c', 'src/mariadb_codecs.c', 'src/mariadb_field.c', 'src/mariadb_dbapitype.c', 'src/mariadb_indicator.c'],
include_dirs=mariadb_includes,
library_dirs= mariadb_lib_dirs,
libraries= mariadb_libs
)],
)

0 comments on commit 68b31f7

Please sign in to comment.