mirror of
https://github.com/mariadb-corporation/mariadb-connector-python.git
synced 2025-07-27 13:01:19 +00:00
70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
#!/usr/bin/env python
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
|
|
from distutils.core import setup, Extension
|
|
|
|
def dequote(s):
|
|
if not s:
|
|
raise Exception("Wrong value from mariadb_config")
|
|
if s[0] in "\"'" and s[0] == s[-1]:
|
|
s = s[1:-1]
|
|
return s
|
|
|
|
def mariadb_config(what):
|
|
from os import popen
|
|
|
|
f = popen("%s --%s" % (mariadb_config.path, what))
|
|
data = f.read().strip().split()
|
|
ret = f.close()
|
|
if ret:
|
|
if ret/256:
|
|
data = []
|
|
if ret/256 > 1:
|
|
raise EnvironmentError("%s not found" % (mariadb_config.path,))
|
|
return data
|
|
|
|
def assure_path_exists(path):
|
|
dir = os.path.dirname(path)
|
|
if not os.path.exists(dir):
|
|
os.makedirs(dir)
|
|
|
|
if sys.version_info[0] < 3:
|
|
print("Connector MariaDB/Python requires Python 3.x")
|
|
sys.exit(1)
|
|
|
|
assure_path_exists('libmariadb/bld')
|
|
subprocess.call('cd libmariadb/bld && cmake .. -DCMAKE_BUILD_TYPE=Release && make -j4', shell=True)
|
|
|
|
if sys.platform != "win32":
|
|
|
|
mariadb_config.path = "./libmariadb/bld/mariadb_config/mariadb_config"
|
|
libs = mariadb_config("libs_sys")
|
|
mariadb_version= mariadb_config("cc_version")
|
|
if mariadb_version[0] < "3.0.6":
|
|
print("Connector MariaDB/Pythin requires MariaDB Connector/C 3.0.6 or newer")
|
|
sys.exit(1)
|
|
mariadb_libraries= [dequote(c[2:])
|
|
for c in libs
|
|
if c.startswith("-l")]
|
|
mariadb_lib_dirs= ['./libmariadb/bld/libmariadb']
|
|
mariadb_includes= ['./libmariadb/include', './libmariadb/bld/include', './libmariadb/bld/include/mysql']
|
|
mariadb_includes.append("./include")
|
|
|
|
print(mariadb_includes)
|
|
|
|
print(mariadb_lib_dirs)
|
|
setup(name='mariadb',
|
|
version='0.1',
|
|
description='Python MariaDB extension',
|
|
author='Georg Richter',
|
|
ext_modules=[Extension('mariadb', ['src/mariadb.c', 'src/mariadb_connection.c', 'src/mariadb_methods.c', 'src/mariadb_exception.c', 'src/mariadb_cursor.c', 'src/mariadb_codecs.c'],
|
|
include_dirs=mariadb_includes,
|
|
library_dirs= mariadb_lib_dirs,
|
|
libraries= mariadb_libraries,
|
|
extra_objects=['./libmariadb/bld/libmariadb/libmariadbclient.a']
|
|
)],
|
|
)
|