/[thuban]/branches/WIP-pyshapelib-bramz/libraries/pyshapelib/setup.py
ViewVC logotype

Annotation of /branches/WIP-pyshapelib-bramz/libraries/pyshapelib/setup.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2752 - (hide annotations)
Tue Apr 10 23:45:00 2007 UTC (17 years, 10 months ago) by bramz
File MIME type: text/x-python
File size: 2612 byte(s)
attempt to add support for Unicode and Language Driver ID (LDID) support in dbflib
1 jan 1611
2     import os
3 bh 2222 import sys
4 jan 1611 from distutils.core import setup, Extension
5 bh 2212 from distutils.util import convert_path
6 jan 1611
7     # try to determine the directory where the shapelib source files are.
8     # There are currently two supported situations.
9     #
10     # 1. "Standalone" build: the parent directory is the shapelib source
11     # directory
12 bh 2212 # 2. Built in the Thuban source tree where ../shapelib/ relative to the
13     # directory containing this setup.py contains (the relevant parts of)
14     # shapelib
15 bh 2222 #
16     # 3. Binary build with e.g. bdist_rpm. This takes place deep in the
17     # build directory.
18 jan 1611
19     # 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
21 bh 2212 # filenames exclusively, so we use posix conventions when making
22     # filenames for distutils.
23 bh 2222 for shp_dir in ["..", "../shapelib", "../../../../../../shapelib"]:
24 bramz 2752 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
27     # the shapefile library to use
28     break
29 bh 2222 else:
30 bramz 2752 print >>sys.stderr, "no shapelib directory found"
31     sys.exit(1)
32 jan 1611
33 bh 2212 def dbf_macros():
34 bramz 2752 """Return the macros to define when compiling the dbflib wrapper.
35 bh 2212
36 bramz 2752 The returned list specifies following macros:
37     - HAVE_UPDATE_HEADER, which is
38     '1' if the dbflib version we will be compiling with has the
39     DBFUpdateHeader function and '0' otherwise. To check whether
40     DBFUpdateHeader is available, we scan shapefil.h for the string
41     'DBFUpdateHeader'.
42     - HAVE_LANGUAGE_DRIVER, whics is '1' if the dbflib version we will
43     compiling with has the nLanguageDriver field in DBFInfo and '0' otherwise.
44     Again, shapefil.h is scanned to check this.
45     """
46     f = open(convert_path(shp_dir + "/shapefil.h"))
47     contents = f.read()
48     f.close()
49    
50     def have(keyword):
51     if keyword in contents:
52     return "1"
53     return 0
54    
55     return [
56     ("HAVE_UPDATE_HEADER", have("DBFUpdateHeader")),
57     ("HAVE_LANGUAGE_DRIVER", have("nLanguageDriver"))]
58 bh 2212
59 bramz 2735 extensions = [Extension("shapelib",
60 bramz 2752 ["shapelibmodule.c",
61     shp_dir + "/shpopen.c",
62     shp_dir + "/shptree.c"],
63     include_dirs = [shp_dir]),
64     Extension("shptree",
65     ["shptreemodule.c"],
66     include_dirs = [shp_dir]),
67     Extension("dbflib",
68     ["dbflibmodule.c",
69     shp_dir + "/dbfopen.c"],
70     include_dirs = [shp_dir],
71     define_macros = dbf_macros())]
72 jan 1611
73     setup(name = "pyshapelib",
74 bramz 2752 version = "0.3",
75     description = "Python bindings for shapelib",
76     author = "Bernhard Herzog",
77     author_email = "[email protected]",
78     url = "ftp:intevation.de/users/bh",
79     ext_modules = extensions)
80 jan 1611

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26