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

Diff of /branches/WIP-pyshapelib-bramz/setup.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 671 by bh, Tue Apr 15 18:09:47 2003 UTC revision 1291 by jonathan, Mon Jun 23 13:05:32 2003 UTC
# Line 22  from distutils.core import setup, Extens Line 22  from distutils.core import setup, Extens
22  from distutils.command.install import install, INSTALL_SCHEMES, subst_vars  from distutils.command.install import install, INSTALL_SCHEMES, subst_vars
23  from distutils.command.build_py import build_py  from distutils.command.build_py import build_py
24  from distutils.command.bdist_rpm import bdist_rpm  from distutils.command.bdist_rpm import bdist_rpm
25    from distutils.command.build_ext import build_ext
26  from distutils.file_util import write_file  from distutils.file_util import write_file
27  from distutils.filelist import FileList  from distutils.filelist import FileList
28  from distutils.util import convert_path, change_root  from distutils.util import convert_path, change_root
# Line 32  import distutils Line 33  import distutils
33  from string import split  from string import split
34  import string  import string
35    
36    # config script parameter list indices
37    CS_DEFS, CS_INCDIRS, CS_LIBDIRS, CS_LIBS, CS_NUM_PARAMS = range(5)
38    
39    # support for gdal is on by default, but under posix we try to
40    # detect it anyway. Set this to False to disable GDAL.
41    include_gdal = True
42    
43  if os.name == "posix":  if os.name == "posix":
44      ###################################################################      ###################################################################
45      # Posix configuration. Adapt this if you're running some kind of      # Posix configuration. Adapt this if you're running some kind of
# Line 52  if os.name == "posix": Line 60  if os.name == "posix":
60      # with the install command's --prefix option.      # with the install command's --prefix option.
61      #      #
62      # Note that there's a separate prefix option for the bdist_rpm      # Note that there's a separate prefix option for the bdist_rpm
63      # command completely independend of this one.      # command completely independent of this one.
64      prefix = "/usr/local/"      prefix = "/usr/local/"
65    
66      # Whether to create the thubaninit module. You can override this      # Whether to create the thubaninit module. You can override this
# Line 64  if os.name == "posix": Line 72  if os.name == "posix":
72      # flags      # flags
73      wx_config_script = "wx-config"      wx_config_script = "wx-config"
74      # These lists will be filled automatically below      # These lists will be filled automatically below
75      wx_defs = []      wx_cs_params = [[] for i in range(CS_NUM_PARAMS)]
76      wx_incdirs = []  
77      wx_libdirs = []      gdal_config_script = "gdal-config"
78      wx_libs = []      gdal_cs_params = [[] for i in range(CS_NUM_PARAMS)]
79    
80  elif os.name == "nt":  elif os.name == "nt":
81      #################################################################      #################################################################
# Line 75  elif os.name == "nt": Line 83  elif os.name == "nt":
83      #      #
84            
85      # Directories where Proj4 is installed      # Directories where Proj4 is installed
86      proj4_prefix = r"D:\cygwin\home\user\proj-4.4.3\src"      proj4_prefix = r"D:\cygwin\home\user\proj-4.4.7\src"
87      proj4_incdir =  proj4_prefix      proj4_incdir =  proj4_prefix
88      proj4_libdir =  proj4_prefix      proj4_libdir =  proj4_prefix
89      proj4_lib = "proj_i"      proj4_lib = "proj_i"
90    
91      # Define include and lib directories for wxWindows and      # Define include and lib directories for wxWindows and
92      wx_prefix = r"D:\wx240"      #wx_prefix = r"D:\cygwin\home\user\project\greater\wxPython-2.4.0.4"
93      wx_inc = [os.path.join(wx_prefix, 'lib', 'mswdllh'),      wx_prefix = r"D:\wx-sources\wxPythonSrc-2.4.0.7"
94        wx_inc = [os.path.join(wx_prefix, 'lib', 'mswdll'),
95                os.path.join(wx_prefix, "include")]                os.path.join(wx_prefix, "include")]
96      wx_lib = [os.path.join(wx_prefix, "lib")]      wx_lib = [os.path.join(wx_prefix, "lib")]
97    
98        # Define include and lib directories for GDAL
99        gdal_prefix = r"D:\cygwin\home\user\build\gdal-1.1.8"
100        gdal_inc = [os.path.join(gdal_prefix, 'alg'),
101                    os.path.join(gdal_prefix, 'ogr'),
102                    os.path.join(gdal_prefix, 'port'),
103                    os.path.join(gdal_prefix, 'core')]
104        gdal_lib = [gdal_prefix]
105    
106      #      #
107      # Unless you use a wxPython version other than 2.4.0, you probably      # Unless you use a wxPython version other than 2.4.0, you probably
# Line 112  elif os.name == "nt": Line 128  elif os.name == "nt":
128      # there's no config script.      # there's no config script.
129      wx_config_script = ""      wx_config_script = ""
130            
131        wx_cs_params = [[] for i in range(CS_NUM_PARAMS)]
132    
133      # the values of wx_defs and wx_libs. copied from the wxPython      # the values of wx_defs and wx_libs. copied from the wxPython
134      # setup.py      # setup.py
135      wx_defs = [ ('WIN32', None),        # Some of these are no longer      wx_cs_params[CS_DEFS] = \
136                  [ ('WIN32', None),        # Some of these are no longer
137                  ('__WIN32__', None),    # necessary.  Anybody know which?                  ('__WIN32__', None),    # necessary.  Anybody know which?
138                  ('_WINDOWS', None),                  ('_WINDOWS', None),
139                  ('__WINDOWS__', None),                  ('__WINDOWS__', None),
# Line 130  elif os.name == "nt": Line 149  elif os.name == "nt":
149                  ('WXP_USE_THREAD', '1'),                  ('WXP_USE_THREAD', '1'),
150                  ]                  ]
151            
152      wx_incdirs = wx_inc      wx_cs_params[CS_INCDIRS] = wx_inc
153      wx_libdirs = wx_lib      wx_cs_params[CS_LIBDIRS] = wx_lib
154      wx_libs = ["wxmsw24h"]      wx_cs_params[CS_LIBS] = ["wxmsw24"] \
155                          + ['kernel32', 'user32', 'gdi32', 'comdlg32',
     wx_libs = wx_libs + ['kernel32', 'user32', 'gdi32', 'comdlg32',  
156                           'winspool', 'winmm', 'shell32', 'oldnames',                           'winspool', 'winmm', 'shell32', 'oldnames',
157                           'comctl32', 'ctl3d32', 'odbc32', 'ole32', 'oleaut32',                           'comctl32', 'ctl3d32', 'odbc32', 'ole32', 'oleaut32',
158                           'uuid', 'rpcrt4', 'advapi32', 'wsock32']                           'uuid', 'rpcrt4', 'advapi32', 'wsock32']
159    
160        gdal_config_script = ""
161        gdal_cs_params = [[] for i in range(CS_NUM_PARAMS)]
162    
163        gdal_cs_params[CS_INCDIRS] = gdal_inc
164        gdal_cs_params[CS_LIBDIRS] = gdal_lib
165        gdal_cs_params[CS_LIBS] = ["gdal_i"]
166    
167  else:  else:
168      raise RuntimeError("Unsupported platform " + os.name)      raise RuntimeError("Unsupported platform " + os.name)
169    
# Line 164  def run_script(cmdline): Line 190  def run_script(cmdline):
190      return result      return result
191    
192    
193  def run_wx_script(command):  def run_cs_script(command, store):
194      # first, determine the C++ preprocessor flags Use --cflags here      # first, determine the C++ preprocessor flags Use --cflags here
195      # because it seems that older version don't have --cxxflags and      # because it seems that older version don't have --cxxflags and
196      # newer ones return the same result for both      # newer ones return the same result for both
197      flags = run_script(command + ' --cflags ')      flags = run_script(command + ' --cflags ')
198      if flags is None:      if flags is None:
199          return 0          return False
200      for flag in split(flags):      for flag in split(flags):
201          start = flag[:2]          start = flag[:2]
202          value = flag[2:]          value = flag[2:]
203          if start == "-I":          if start == "-I":
204              wx_incdirs.append(value)              store[CS_INCDIRS].append(value)
205          elif start == "-D":          elif start == "-D":
206              wx_defs.append((value, None))              store[CS_DEFS].append((value, None))
207    
208      # determine the library flags      # determine the library flags
209      flags = run_script(command + ' --libs')      flags = run_script(command + ' --libs')
210      if flags is None:      if flags is None:
211          return 0          return False
212      for flag in split(flags):      for flag in split(flags):
213          start = flag[:2]          start = flag[:2]
214          value = flag[2:]          value = flag[2:]
215          if start == "-L":          if start == "-L":
216              wx_libdirs.append(value)              store[CS_LIBDIRS].append(value)
217          elif start == "-l":          elif start == "-l":
218              wx_libs.append(value)              store[CS_LIBS].append(value)
219    
220        return True
221    
222  if wx_config_script:  if wx_config_script:
223      # if there's a wx config script, run it to determine the configuration      # if there's a wx config script, run it to determine the configuration
224      run_wx_script(wx_config_script)      run_cs_script(wx_config_script, wx_cs_params)
       
225    
226    if gdal_config_script:
227        # if there's a gdal config script, run it to determine the configuration
228        include_gdal = include_gdal \
229                       and run_cs_script(gdal_config_script, gdal_cs_params)
230    
231  #  #
232  # Define some extension and python modules  # Define some extension and python modules
# Line 223  extensions.append(Extension("Lib.wxproj" Line 254  extensions.append(Extension("Lib.wxproj"
254                              [ext_dir + "/thuban/wxproj.cpp"],                              [ext_dir + "/thuban/wxproj.cpp"],
255                              include_dirs = ([shp_dir, proj4_incdir,                              include_dirs = ([shp_dir, proj4_incdir,
256                                               ext_dir + "/pyshapelib/"]                                               ext_dir + "/pyshapelib/"]
257                                              + wx_incdirs),                                              + wx_cs_params[CS_INCDIRS]),
258                              define_macros = wx_defs,                              define_macros = wx_cs_params[CS_DEFS],
259                              library_dirs = [proj4_libdir] + wx_libdirs,                              library_dirs = [proj4_libdir] +
260                              libraries = [proj4_lib] + wx_libs))                                             wx_cs_params[CS_LIBDIRS],
261                                libraries = [proj4_lib] + wx_cs_params[CS_LIBS]))
262    
263    
264  #  #
265  # shapelib wrappers are also distributed with thuban  # shapelib wrappers are also distributed with thuban
# Line 265  py_modules.append(ext_dir + "/pyprojecti Line 298  py_modules.append(ext_dir + "/pyprojecti
298  data_files = []  data_files = []
299    
300  # bitmaps  # bitmaps
301  for d, pattern in [("Resources/Bitmaps", "Resources/Bitmaps/*.xpm"),  # ("Resources/Locale", "Resources/Locale/*/LC_MESSAGES/*.mo")
302                     ("Resources/Locale", "Resources/Locale/*/LC_MESSAGES/*.mo")  for d, pattern in [("Resources/Bitmaps", "Resources/Bitmaps/*.xpm")]:
                    ]:  
303      data_files.append((d, glob.glob(pattern)))      data_files.append((d, glob.glob(pattern)))
304    
305  #  #
# Line 605  class ThubanInstall(install): Line 637  class ThubanInstall(install):
637                           ("extra-files", None,                           ("extra-files", None,
638                            "List of filenames or (src, dest) pairs describing"                            "List of filenames or (src, dest) pairs describing"
639                            " extra files to install "                            " extra files to install "
640                            "(can only be set from witin setup.py"),                            "(can only be set from within setup.py"),
641    
642                           ("create-init-module=", None,                           ("create-init-module=", None,
643                            "If true, create a module in the site-packages"                            "If true, create a module in the site-packages"
# Line 1022  class thuban_build_docs(Command): Line 1054  class thuban_build_docs(Command):
1054      def run(self, install_options = None):      def run(self, install_options = None):
1055          self.spawn(["happydoc", "-d./Doc", "./Thuban"])          self.spawn(["happydoc", "-d./Doc", "./Thuban"])
1056    
1057    class thuban_build_ext(build_ext):
1058    
1059        """Extend the build_ext command to optionally include the
1060        GDAL extension.
1061        """
1062    
1063        user_options = build_ext.user_options[:]
1064        user_options.extend([("with-gdal", None, "Include GDAL support."),
1065                             ("without-gdal", None, "Don't include GDAL support.")])
1066    
1067        boolean_options = ["with-gdal"]
1068        negative_opt = {'without-gdal' : 'with-gdal'}
1069    
1070        def initialize_options(self):
1071            self.with_gdal = True
1072            build_ext.initialize_options(self)
1073    
1074        def finalize_options(self):
1075            build_ext.finalize_options(self)
1076            if self.with_gdal and include_gdal:
1077                self.extensions.append(Extension("Lib.gdalwarp",
1078                                    [ext_dir + "/thuban/gdalwarp.cpp",
1079                                    ext_dir + "/thuban/cpl_mfile.cpp",
1080                                    ext_dir + "/thuban/bmpdataset.cpp"],
1081                                    include_dirs = gdal_cs_params[CS_INCDIRS] +
1082                                                   [ext_dir + "/thuban/"],
1083                                    define_macros = gdal_cs_params[CS_DEFS],
1084                                    library_dirs = gdal_cs_params[CS_LIBDIRS],
1085                                    libraries = gdal_cs_params[CS_LIBS]))
1086    
1087        def run(self, install_options = None):
1088            build_ext.run(self)
1089    
1090  #  #
1091  #   Run the script  #   Run the script
1092  #  #
1093    
   
1094  long_description = """\  long_description = """\
1095  Thuban is a viewer for geographic data written in Python  Thuban is a viewer for geographic data written in Python
1096  """  """
1097    
1098  setup(name = "Thuban",  setup(name = "Thuban",
1099        version = "0.2.0",        version = "0.8.0",
1100        description = "Geographic data viewer",        description = "Geographic data viewer",
1101        long_description = long_description,        long_description = long_description,
1102        licence = "GPL",        licence = "GPL",
# Line 1075  setup(name = "Thuban", Line 1139  setup(name = "Thuban",
1139                    "bdist_rpm": thuban_bdist_rpm,                    "bdist_rpm": thuban_bdist_rpm,
1140                    "bdist_inno": thuban_bdist_inno,                    "bdist_inno": thuban_bdist_inno,
1141                    "data_dist": data_dist,                    "data_dist": data_dist,
1142                    "build_docs": thuban_build_docs                    "build_docs": thuban_build_docs,
1143                      "build_ext": thuban_build_ext
1144                    })                    })
1145    
1146    

Legend:
Removed from v.671  
changed lines
  Added in v.1291

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26