mirror of
https://github.com/mariadb-corporation/mariadb-connector-python.git
synced 2025-07-22 18:26:37 +00:00
85 lines
3.2 KiB
Python
Executable File
85 lines
3.2 KiB
Python
Executable File
#
|
|
# Windows configuration
|
|
#
|
|
|
|
import os
|
|
import platform
|
|
import sys
|
|
from packaging import version
|
|
|
|
from winreg import ConnectRegistry, OpenKey, QueryValueEx,\
|
|
HKEY_LOCAL_MACHINE, KEY_READ, KEY_WOW64_64KEY
|
|
|
|
|
|
class MariaDBConfiguration():
|
|
lib_dirs = []
|
|
libs = []
|
|
version = []
|
|
includes = []
|
|
extra_objects = []
|
|
extra_compile_args = []
|
|
extra_link_args = []
|
|
|
|
|
|
def get_config(options):
|
|
static = options["link_static"]
|
|
mariadb_dir = options["install_dir"]
|
|
required_version = "3.2.4"
|
|
|
|
if not os.path.exists(mariadb_dir):
|
|
try:
|
|
mariadb_dir = os.environ["MARIADB_CC_INSTALL_DIR"]
|
|
cc_version = ["", ""]
|
|
print("using environment configuration " + mariadb_dir)
|
|
except KeyError:
|
|
|
|
try:
|
|
local_reg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
|
|
if platform.architecture()[0] == '32bit':
|
|
connector_key = OpenKey(local_reg,
|
|
'SOFTWARE\\MariaDB Corporation\\'
|
|
'MariaDB Connector C')
|
|
else:
|
|
connector_key = OpenKey(local_reg,
|
|
'SOFTWARE\\MariaDB Corporation\\'
|
|
'MariaDB Connector C 64-bit',
|
|
access=KEY_READ | KEY_WOW64_64KEY)
|
|
cc_version = QueryValueEx(connector_key, "Version")
|
|
if (version.Version(cc_version[0]) <
|
|
version.Version(required_version)):
|
|
print("MariaDB Connector/Python requires "
|
|
"MariaDB Connector/C "
|
|
">= %s (found version: %s") \
|
|
% (required_version, cc_version[0])
|
|
sys.exit(2)
|
|
mariadb_dir = QueryValueEx(connector_key, "InstallDir")[0]
|
|
|
|
except Exception:
|
|
print("Could not find InstallationDir of MariaDB Connector/C. "
|
|
"Please make sure MariaDB Connector/C is installed or "
|
|
"specify the InstallationDir of MariaDB Connector/C by "
|
|
"setting the environment variable "
|
|
"MARIADB_CC_INSTALL_DIR.")
|
|
sys.exit(3)
|
|
|
|
print("Found MariaDB Connector/C in '%s'" % mariadb_dir)
|
|
cfg = MariaDBConfiguration()
|
|
cfg.includes = [".\\include", mariadb_dir + "\\include", mariadb_dir +
|
|
"\\include\\mysql", mariadb_dir + "\\include\\mariadb",
|
|
mariadb_dir + "\\include\\mariadb\\mysql"]
|
|
cfg.lib_dirs = [mariadb_dir + "\\lib", mariadb_dir + "\\lib\\mariadb"]
|
|
cfg.libs = ["ws2_32", "advapi32", "kernel32", "shlwapi", "crypt32",
|
|
"secur32", "bcrypt"]
|
|
if static.lower() == "on" or static.lower() == "default":
|
|
cfg.libs.append("mariadbclient")
|
|
else:
|
|
print("dynamic")
|
|
cfg.extra_link_args = ["/NODEFAULTLIB:LIBCMT"]
|
|
cfg.extra_compile_args = ["/MD"]
|
|
|
|
f = open("./include/config_win.h", "w")
|
|
f.write("#define DEFAULT_PLUGINS_SUBDIR \"%s\\\\lib\\\\mariadb\\\\plugin\"" %
|
|
mariadb_dir.replace(""'\\', '\\\\'))
|
|
f.close()
|
|
return cfg
|