Setup for Posix systems:

specify the environment variable MARIADB_CONFIG which points to the location
of mariadb_config program.
This commit is contained in:
Georg Richter
2018-12-05 18:21:49 +01:00
parent 68b31f78ee
commit 9aca6adcaa
2 changed files with 62 additions and 42 deletions

55
mariadb_posix.py Normal file
View File

@ -0,0 +1,55 @@
#!/usr/bin/env python
import sys
import os
import string
class MariaDBConfiguration():
lib_dirs= ""
libs= ""
version= ""
includes= ""
def mariadb_config(config, option):
from os import popen
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. Hint: you can specify environment variable MARIADB_CONFIG which points to the location of mariadb_config")
return data
def dequote(s):
if s[0] in "\"'" and s[0] == s[-1]:
s = s[1:-1]
return s
def get_config():
required_version="3.1.0"
try:
config_prg= os.environ["MARIADB_CONFIG"]
except KeyError:
print("Please set the environment variable MARIADB_CONFIG which points to the location of the mariadb_config program")
sys.exit(1)
cc_version= mariadb_config(config_prg, "cc_version")
if cc_version[0] < required_version:
print("MariaDB Connector/C required MariaDB Connector/C >= %s") % (required_version)
sys.exit(2)
cfg= MariaDBConfiguration()
cfg.version= cc_version[0]
libs= mariadb_config(config_prg, "libs")
cfg.lib_dirs = [ dequote(i[2:]) for i in libs if i.startswith("-L") ]
cfg.libs = [ dequote(i[2:]) for i in libs if i.startswith("-l") ]
includes= mariadb_config(config_prg, "include")
mariadb_includes = [ dequote(i[2:]) for i in includes if i.startswith("-I") ]
mariadb_includes.extend(["./include"])
cfg.includes= mariadb_includes
return cfg

View File

@ -6,56 +6,21 @@ 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))
if os.name == "posix":
from mariadb_posix import get_config
cfg= get_config()
setup(name='mariadb',
version='0.9.1',
description='Python MariaDB extension',
author='Georg Richter',
license='LGPL 2.1',
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
include_dirs=cfg.includes,
library_dirs= cfg.lib_dirs,
libraries= cfg.libs
)],
)