/[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 555 by jonathan, Tue Mar 25 16:21:23 2003 UTC revision 1291 by jonathan, Mon Jun 23 13:05:32 2003 UTC
# Line 17  __version__ = "$Revision$" Line 17  __version__ = "$Revision$"
17    
18  import os  import os
19  from types import TupleType  from types import TupleType
20    import glob
21  from distutils.core import setup, Extension, Command  from distutils.core import setup, Extension, Command
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 31  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 51  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 63  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 74  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 111  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 129  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 163  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 222  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 264  py_modules.append(ext_dir + "/pyprojecti Line 298  py_modules.append(ext_dir + "/pyprojecti
298  data_files = []  data_files = []
299    
300  # bitmaps  # bitmaps
301  dir = "Resources/Bitmaps"  # ("Resources/Locale", "Resources/Locale/*/LC_MESSAGES/*.mo")
302  bitmaps = []  for d, pattern in [("Resources/Bitmaps", "Resources/Bitmaps/*.xpm")]:
303  for file in os.listdir(os.path.join("Resources", "Bitmaps")):      data_files.append((d, glob.glob(pattern)))
     if string.lower(file[-4:]) == ".xpm":  
         bitmaps.append(dir + '/' +  file)  
 data_files.append((dir, bitmaps))  
304    
305  #  #
306  #       Command definitions  #       Command definitions
# Line 606  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 1023  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 1076  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.555  
changed lines
  Added in v.1291

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26