mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-22 17:06:33 +03:00
We now use pg_config in setup.py (closes: #70).
This commit is contained in:
parent
c79e92e928
commit
d5674253ca
|
@ -1,3 +1,8 @@
|
|||
2006-01-05 Federico Di Gregorio <fog@initd.org>
|
||||
|
||||
* setup.{cfg,py}: we now use pg_config to locate PostgreSQL libraries
|
||||
and headers (modified patch from lbruno, see #70.)
|
||||
|
||||
2006-01-01 Federico Di Gregorio <fog@initd.org>
|
||||
|
||||
* Preparing release 2 beta 7.
|
||||
|
|
17
setup.cfg
17
setup.cfg
|
@ -20,16 +20,23 @@ use_decimal=0
|
|||
# uncommenting the following line and setting its value to the right path.
|
||||
#mx_include_dir=
|
||||
|
||||
# "include_dirs" is the preferred method for locating postgresql headers,
|
||||
# but some extra checks on sys.platform will still be done in setup.py.
|
||||
# "pg_config" is the preferred method to locate PostgreSQL headers and
|
||||
# libraries needed to build psycopg2. If pg_config is not in the path or
|
||||
# is installed under a different name uncomment the following option and
|
||||
# set it to the pg_config full path.
|
||||
#pg_config=
|
||||
|
||||
# If "pg_config" is not available, "include_dirs" can be used to locate
|
||||
# postgresql headers and libraries. Some extra checks on sys.platform will
|
||||
# still be done in setup.py.
|
||||
# The next line is the default as used on psycopg author Debian laptop:
|
||||
include_dirs=.:/usr/include/postgresql:/usr/include/postgresql/server
|
||||
#include_dirs=/usr/include/postgresql:/usr/include/postgresql/server
|
||||
|
||||
# Uncomment next line on Mandrake 10.x (and comment previous ones):
|
||||
#include_dirs=.:/usr/include/pgsql/8.0:/usr/include/pgsql/8.0/server
|
||||
#include_dirs=/usr/include/pgsql/8.0:/usr/include/pgsql/8.0/server
|
||||
|
||||
# Uncomment next line on SUSE 9.3 (and comment previous ones):
|
||||
#include_dirs=.:/usr/include/pgsql:/usr/include/pgsql/server
|
||||
#include_dirs=/usr/include/pgsql:/usr/include/pgsql/server
|
||||
|
||||
# If postgresql is installed somewhere weird (i.e., not in your runtime library
|
||||
# path like /usr/lib), just add the right path in "library_dirs" and any extra
|
||||
|
|
40
setup.py
40
setup.py
|
@ -49,6 +49,7 @@ Operating System :: Unix
|
|||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import popen2
|
||||
from distutils.core import setup, Extension
|
||||
from distutils.errors import DistutilsFileError
|
||||
from distutils.command.build_ext import build_ext
|
||||
|
@ -81,7 +82,9 @@ class psycopg_build_ext(build_ext):
|
|||
('use-pg-dll', None,
|
||||
"Build against libpq.dll (win32 only)"),
|
||||
('use-pydatetime', None,
|
||||
"Use Python datatime objects for date and time representation."),
|
||||
"Use Python datatime objects for date and time representation."),
|
||||
('pg_config=', None,
|
||||
"The name of the pg_config binary and/or full path to find it"),
|
||||
])
|
||||
|
||||
boolean_options = build_ext.boolean_options[:]
|
||||
|
@ -95,7 +98,15 @@ class psycopg_build_ext(build_ext):
|
|||
self.use_pydatetime = 1
|
||||
self.use_pg_dll = 1
|
||||
self.pgdir = None
|
||||
|
||||
self.pg_config = "pg_config"
|
||||
|
||||
def get_pg_config(self, kind):
|
||||
p = popen2.popen3(self.pg_config + " --" + kind, mode="r")
|
||||
r = p[0].readline().strip()
|
||||
if not r:
|
||||
raise Warning(p[2].readline().strip())
|
||||
return r
|
||||
|
||||
def get_compiler(self):
|
||||
"""Return the c compiler to compile extensions.
|
||||
|
||||
|
@ -111,7 +122,7 @@ class psycopg_build_ext(build_ext):
|
|||
if self.get_compiler().compiler_type == "mingw32" \
|
||||
and 'msvcr71' in self.compiler.dll_libraries:
|
||||
self.compiler.dll_libraries.remove('msvcr71')
|
||||
|
||||
|
||||
build_ext.build_extensions(self)
|
||||
|
||||
def finalize_win32(self):
|
||||
|
@ -164,28 +175,21 @@ class psycopg_build_ext(build_ext):
|
|||
self.libraries.append(self.get_lib("pq"))
|
||||
|
||||
def finalize_darwin(self):
|
||||
"""Finalize build system configuration on darwin platform.
|
||||
|
||||
fink installs lots of goodies in /sw/... - make sure we check there
|
||||
"""
|
||||
self.include_dirs.append("/sw/include")
|
||||
self.include_dirs.append("/sw/include/postgresql")
|
||||
self.include_dirs.append("/sw/include/postgresql/server")
|
||||
self.library_dirs.append("/sw/lib")
|
||||
self.include_dirs.append("/opt/local/include")
|
||||
self.include_dirs.append("/opt/local/include/postgresql")
|
||||
self.include_dirs.append("/opt/local/include/postgresql/server")
|
||||
self.library_dirs.append("/opt/local/lib")
|
||||
self.library_dirs.append("/usr/lib")
|
||||
"""Finalize build system configuration on darwin platform."""
|
||||
self.libraries.append('ssl')
|
||||
self.libraries.append('crypto')
|
||||
|
||||
def finalize_options(self):
|
||||
"""Complete the build system configuation."""
|
||||
build_ext.finalize_options(self)
|
||||
|
||||
|
||||
self.include_dirs.append(".")
|
||||
self.libraries.append("pq")
|
||||
|
||||
self.library_dirs.append(self.get_pg_config("libdir"))
|
||||
self.include_dirs.append(self.get_pg_config("includedir"))
|
||||
self.include_dirs.append(self.get_pg_config("includedir-server"))
|
||||
|
||||
if hasattr(self, "finalize_" + sys.platform):
|
||||
getattr(self, "finalize_" + sys.platform)()
|
||||
|
||||
|
@ -198,6 +202,8 @@ class psycopg_build_ext(build_ext):
|
|||
if sys.platform == 'win32' and self.use_pg_dll:
|
||||
shutil.copy(self.find_libpq_dll(), "lib")
|
||||
|
||||
## win32-specific stuff ##
|
||||
|
||||
def build_from_src(self):
|
||||
"""Detect if building from postgres source or bin on w32 platform"""
|
||||
return os.path.exists(os.path.join(self.pgdir, "src"))
|
||||
|
|
Loading…
Reference in New Issue
Block a user