mirror of
https://github.com/PyMySQL/mysqlclient.git
synced 2025-08-15 11:10:58 +08:00
167 lines
5.1 KiB
Python
167 lines
5.1 KiB
Python
#!/usr/bin/env python
|
|
|
|
"""\
|
|
=========================
|
|
Python interface to MySQL
|
|
=========================
|
|
|
|
MySQLdb is an interface to the popular MySQL_ database server for
|
|
Python. The design goals are:
|
|
|
|
- Compliance with Python database API version 2.0 [PEP-0249]_
|
|
|
|
- Thread-safety
|
|
|
|
- Thread-friendliness (threads will not block each other)
|
|
|
|
MySQL-3.22 through 4.1 and Python-2.3 through 2.4 are currently
|
|
supported.
|
|
|
|
MySQLdb is `Free Software`_.
|
|
|
|
.. _MySQL: http://www.mysql.com/
|
|
.. _`Free Software`: http://www.gnu.org/
|
|
.. [PEP-0249] http://www.python.org/peps/pep-0249.html
|
|
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from distutils.core import setup
|
|
from distutils.extension import Extension
|
|
|
|
mysqlclient = os.getenv('mysqlclient', 'mysqlclient')
|
|
mysqloptlibs = os.getenv('mysqloptlibs', '').split()
|
|
embedded_server = (mysqlclient == 'mysqld')
|
|
|
|
name = "MySQL-%s" % os.path.basename(sys.executable)
|
|
if embedded_server:
|
|
name = name + "-embedded"
|
|
version = "1.1.8"
|
|
|
|
# include files and library locations should cover most platforms
|
|
include_dirs = [
|
|
'/usr/local/include/mysql',
|
|
'/usr/local/mysql/include',
|
|
'/usr/local/mysql/include/mysql',
|
|
'/usr/include/mysql',
|
|
]
|
|
library_dirs = [
|
|
'/usr/local/lib/mysql',
|
|
'/usr/local/mysql/lib',
|
|
'/usr/local/mysql/lib/mysql',
|
|
'/usr/lib/mysql',
|
|
]
|
|
|
|
libraries = [mysqlclient] + mysqloptlibs
|
|
|
|
# On some platorms, this can be used to find the shared libraries
|
|
# at runtime, if they are in a non-standard location. Doesn't
|
|
# work for Linux gcc.
|
|
runtime_library_dirs = []
|
|
|
|
# This can be used to force linking against static libraries.
|
|
extra_objects = []
|
|
|
|
# Sometimes the compiler or linker needs an extra switch to make
|
|
# things work.
|
|
extra_compile_args = []
|
|
extra_link_args = []
|
|
|
|
if sys.platform == "netbsd1":
|
|
include_dirs = ['/usr/pkg/include/mysql']
|
|
library_dirs = ['/usr/pkg/lib/mysql']
|
|
elif sys.platform in ("freebsd4", "openbsd3"):
|
|
LOCALBASE = os.getenv('LOCALBASE', '/usr/local')
|
|
include_dirs = ['%s/include/mysql' % LOCALBASE]
|
|
library_dirs = ['%s/lib/mysql' % LOCALBASE]
|
|
elif sys.platform == "sunos5": # Solaris 2.8 + gcc
|
|
runtime_library_dirs.append('/usr/local/lib:/usr/openwin/lib:/usr/dt/lib')
|
|
extra_compile_args.append("-fPIC")
|
|
elif sys.platform == "win32": # Ugh
|
|
include_dirs = [r'c:\mysql\include']
|
|
library_dirs = [r'c:\mysql\lib\opt']
|
|
libraries.extend(['zlib', 'msvcrt', 'libcmt', 'wsock32', 'advapi32'])
|
|
extra_objects = [r'c:\mysql\lib\opt\mysqlclient.lib']
|
|
elif sys.platform == "cygwin":
|
|
include_dirs = ['/c/mysql/include']
|
|
library_dirs = ['/c/mysql/lib']
|
|
extra_compile_args.append('-DMS_WIN32')
|
|
elif sys.platform[:6] == "darwin": # Mac OS X
|
|
include_dirs.append('/sw/include/mysql')
|
|
library_dirs.append('/sw/lib/mysql')
|
|
extra_link_args.append('-flat_namespace')
|
|
elif sys.platform == 'linux2' and os.getenv('HOSTTYPE') == 'alpha':
|
|
libraries.extend(['ots', 'cpml'])
|
|
elif os.name == "posix": # UNIX-ish platforms not covered above
|
|
pass # default should work
|
|
else:
|
|
raise "UnknownPlatform", "sys.platform=%s, os.name=%s" % \
|
|
(sys.platform, os.name)
|
|
|
|
# avoid frightening noobs with warnings about missing directories
|
|
include_dirs = [ d for d in include_dirs if os.path.isdir(d) ]
|
|
library_dirs = [ d for d in library_dirs if os.path.isdir(d) ]
|
|
|
|
classifiers = """\
|
|
Development Status :: 5 - Production/Stable
|
|
Environment :: Other Environment
|
|
License :: OSI Approved :: GNU General Public License (GPL)
|
|
Operating System :: MacOS :: MacOS X
|
|
Operating System :: Microsoft :: Windows :: Windows NT/2000
|
|
Operating System :: OS Independent
|
|
Operating System :: POSIX
|
|
Operating System :: POSIX :: Linux
|
|
Operating System :: Unix
|
|
Programming Language :: C
|
|
Programming Language :: Python
|
|
Topic :: Database
|
|
Topic :: Database :: Database Engines/Servers""".split('\n')
|
|
|
|
metadata = {
|
|
'name': name,
|
|
'version': version,
|
|
'description': "Python interface to MySQL",
|
|
'long_description': __doc__,
|
|
'author': "Andy Dustman",
|
|
'author_email': "andy@dustman.net",
|
|
'license': "GPL",
|
|
'platforms': "ALL",
|
|
'url': "http://sourceforge.net/projects/mysql-python",
|
|
'download_url': "http://prdownloads.sourceforge.net/mysql-python/" \
|
|
"MySQL-python-%s.tar.gz" % version,
|
|
'classifiers': classifiers,
|
|
'py_modules': [
|
|
"_mysql_exceptions",
|
|
"MySQLdb.converters",
|
|
"MySQLdb.connections",
|
|
"MySQLdb.cursors",
|
|
"MySQLdb.sets",
|
|
"MySQLdb.times",
|
|
"MySQLdb.stringtimes",
|
|
"MySQLdb.mxdatetimes",
|
|
"MySQLdb.pytimes",
|
|
"MySQLdb.constants.CR",
|
|
"MySQLdb.constants.FIELD_TYPE",
|
|
"MySQLdb.constants.ER",
|
|
"MySQLdb.constants.FLAG",
|
|
"MySQLdb.constants.REFRESH",
|
|
"MySQLdb.constants.CLIENT",
|
|
],
|
|
'ext_modules': [
|
|
Extension(
|
|
name='_mysql',
|
|
sources=['_mysql.c'],
|
|
include_dirs=include_dirs,
|
|
library_dirs=library_dirs,
|
|
runtime_library_dirs=runtime_library_dirs,
|
|
libraries=libraries,
|
|
extra_objects=extra_objects,
|
|
extra_link_args=extra_link_args,
|
|
extra_compile_args=extra_compile_args,
|
|
),
|
|
],
|
|
}
|
|
|
|
setup(**metadata)
|