1 |
|
|
2 |
import os |
import os |
3 |
|
import sys |
4 |
from distutils.core import setup, Extension |
from distutils.core import setup, Extension |
5 |
from distutils.util import convert_path |
from distutils.util import convert_path |
6 |
|
|
12 |
# 2. Built in the Thuban source tree where ../shapelib/ relative to the |
# 2. Built in the Thuban source tree where ../shapelib/ relative to the |
13 |
# directory containing this setup.py contains (the relevant parts of) |
# directory containing this setup.py contains (the relevant parts of) |
14 |
# shapelib |
# shapelib |
15 |
|
# |
16 |
|
# 3. Binary build with e.g. bdist_rpm. This takes place deep in the |
17 |
|
# build directory. |
18 |
|
|
19 |
# os.path expects filenames in OS-specific form so we have to construct |
# os.path expects filenames in OS-specific form so we have to construct |
20 |
# the files with os.path functions. distutils, OTOH, uses posix-style |
# the files with os.path functions. distutils, OTOH, uses posix-style |
21 |
# filenames exclusively, so we use posix conventions when making |
# filenames exclusively, so we use posix conventions when making |
22 |
# filenames for distutils. |
# filenames for distutils. |
23 |
for shp_dir in ["..", "../shapelib"]: |
for shp_dir in ["..", "../shapelib", "../../../../../../shapelib"]: |
24 |
if os.path.exists(os.path.join(convert_path(shp_dir), "shpopen.c")): |
if (os.path.isdir(convert_path(shp_dir)) |
25 |
|
and os.path.exists(os.path.join(convert_path(shp_dir), "shpopen.c"))): |
26 |
# shp_dir contains shpopen.c, so assume it's the directory with |
# shp_dir contains shpopen.c, so assume it's the directory with |
27 |
# the shapefile library to use |
# the shapefile library to use |
28 |
break |
break |
29 |
|
else: |
30 |
|
print >>sys.stderr, "no shapelib directory found" |
31 |
|
sys.exit(1) |
32 |
|
|
33 |
def dbf_macros(): |
def dbf_macros(): |
34 |
"""Return the macros to define when compiling the dbflib wrapper. |
"""Return the macros to define when compiling the dbflib wrapper. |
42 |
f = open(convert_path(shp_dir + "/shapefil.h")) |
f = open(convert_path(shp_dir + "/shapefil.h")) |
43 |
contents = f.read() |
contents = f.read() |
44 |
f.close() |
f.close() |
|
print contents.find("DBFUpdateHeader") |
|
45 |
if contents.find("DBFUpdateHeader") >= 0: |
if contents.find("DBFUpdateHeader") >= 0: |
46 |
return [("HAVE_UPDATE_HEADER", "1")] |
return [("HAVE_UPDATE_HEADER", "1")] |
47 |
else: |
else: |
48 |
return [("HAVE_UPDATE_HEADER", "0")] |
return [("HAVE_UPDATE_HEADER", "0")] |
49 |
|
|
50 |
extensions = [Extension("shapelibc", |
extensions = [Extension("shapelib", |
51 |
["shapelib_wrap.c", |
["shapelib.c", |
52 |
shp_dir + "/shpopen.c", |
shp_dir + "/shpopen.c", |
53 |
shp_dir + "/shptree.c"], |
shp_dir + "/shptree.c"], |
54 |
include_dirs = [shp_dir]), |
include_dirs = [shp_dir]), |
67 |
author = "Bernhard Herzog", |
author = "Bernhard Herzog", |
68 |
author_email = "[email protected]", |
author_email = "[email protected]", |
69 |
url = "ftp:intevation.de/users/bh", |
url = "ftp:intevation.de/users/bh", |
70 |
py_modules = ["shapelib", "dbflib"], |
py_modules = ["dbflib"], |
71 |
ext_modules = extensions) |
ext_modules = extensions) |
72 |
|
|