/[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 928 by jonathan, Tue May 20 15:22:10 2003 UTC revision 1316 by jonathan, Mon Jun 30 09:47:04 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"C:\wx-versions\wxPython-2.4.0.6"
93      wx_inc = [os.path.join(wx_prefix, 'lib', 'mswdllh'),      wx_inc = [os.path.join(wx_prefix, 'lib', 'mswdllh'),
94                os.path.join(wx_prefix, "include")]                os.path.join(wx_prefix, "include")]
95      wx_lib = [os.path.join(wx_prefix, "lib")]      wx_lib = [os.path.join(wx_prefix, "lib")]
96    
97        # Define include and lib directories for GDAL
98        gdal_prefix = r"D:\cygwin\home\user\build\gdal-1.1.8"
99        gdal_inc = [os.path.join(gdal_prefix, 'alg'),
100                    os.path.join(gdal_prefix, 'ogr'),
101                    os.path.join(gdal_prefix, 'port'),
102                    os.path.join(gdal_prefix, 'core')]
103        gdal_lib = [gdal_prefix]
104    
105      #      #
106      # 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 127  elif os.name == "nt":
127      # there's no config script.      # there's no config script.
128      wx_config_script = ""      wx_config_script = ""
129            
130        wx_cs_params = [[] for i in range(CS_NUM_PARAMS)]
131    
132      # the values of wx_defs and wx_libs. copied from the wxPython      # the values of wx_defs and wx_libs. copied from the wxPython
133      # setup.py      # setup.py
134      wx_defs = [ ('WIN32', None),        # Some of these are no longer      wx_cs_params[CS_DEFS] = \
135                  [ ('WIN32', None),        # Some of these are no longer
136                  ('__WIN32__', None),    # necessary.  Anybody know which?                  ('__WIN32__', None),    # necessary.  Anybody know which?
137                  ('_WINDOWS', None),                  ('_WINDOWS', None),
138                  ('__WINDOWS__', None),                  ('__WINDOWS__', None),
# Line 130  elif os.name == "nt": Line 148  elif os.name == "nt":
148                  ('WXP_USE_THREAD', '1'),                  ('WXP_USE_THREAD', '1'),
149                  ]                  ]
150            
151      wx_incdirs = wx_inc      wx_cs_params[CS_INCDIRS] = wx_inc
152      wx_libdirs = wx_lib      wx_cs_params[CS_LIBDIRS] = wx_lib
153      wx_libs = ["wxmsw24h"]      wx_cs_params[CS_LIBS] = ["wxmsw24h"] \
154                          + ['kernel32', 'user32', 'gdi32', 'comdlg32',
     wx_libs = wx_libs + ['kernel32', 'user32', 'gdi32', 'comdlg32',  
155                           'winspool', 'winmm', 'shell32', 'oldnames',                           'winspool', 'winmm', 'shell32', 'oldnames',
156                           'comctl32', 'ctl3d32', 'odbc32', 'ole32', 'oleaut32',                           'comctl32', 'ctl3d32', 'odbc32', 'ole32', 'oleaut32',
157                           'uuid', 'rpcrt4', 'advapi32', 'wsock32']                           'uuid', 'rpcrt4', 'advapi32', 'wsock32']
158    
159        gdal_config_script = ""
160        gdal_cs_params = [[] for i in range(CS_NUM_PARAMS)]
161    
162        gdal_cs_params[CS_INCDIRS] = gdal_inc
163        gdal_cs_params[CS_LIBDIRS] = gdal_lib
164        gdal_cs_params[CS_LIBS] = ["gdal_i"]
165    
166  else:  else:
167      raise RuntimeError("Unsupported platform " + os.name)      raise RuntimeError("Unsupported platform " + os.name)
168    
# Line 164  def run_script(cmdline): Line 189  def run_script(cmdline):
189      return result      return result
190    
191    
192  def run_wx_script(command):  def run_cs_script(command, store):
193      # first, determine the C++ preprocessor flags Use --cflags here      # first, determine the C++ preprocessor flags Use --cflags here
194      # because it seems that older version don't have --cxxflags and      # because it seems that older version don't have --cxxflags and
195      # newer ones return the same result for both      # newer ones return the same result for both
196      flags = run_script(command + ' --cflags ')      flags = run_script(command + ' --cflags ')
197      if flags is None:      if flags is None:
198          return 0          return False
199      for flag in split(flags):      for flag in split(flags):
200          start = flag[:2]          start = flag[:2]
201          value = flag[2:]          value = flag[2:]
202          if start == "-I":          if start == "-I":
203              wx_incdirs.append(value)              store[CS_INCDIRS].append(value)
204          elif start == "-D":          elif start == "-D":
205              wx_defs.append((value, None))              store[CS_DEFS].append((value, None))
206    
207      # determine the library flags      # determine the library flags
208      flags = run_script(command + ' --libs')      flags = run_script(command + ' --libs')
209      if flags is None:      if flags is None:
210          return 0          return False
211      for flag in split(flags):      for flag in split(flags):
212          start = flag[:2]          start = flag[:2]
213          value = flag[2:]          value = flag[2:]
214          if start == "-L":          if start == "-L":
215              wx_libdirs.append(value)              store[CS_LIBDIRS].append(value)
216          elif start == "-l":          elif start == "-l":
217              wx_libs.append(value)              store[CS_LIBS].append(value)
218    
219        return True
220    
221  if wx_config_script:  if wx_config_script:
222      # 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
223      run_wx_script(wx_config_script)      run_cs_script(wx_config_script, wx_cs_params)
       
224    
225    if gdal_config_script:
226        # if there's a gdal config script, run it to determine the configuration
227        include_gdal = include_gdal \
228                       and run_cs_script(gdal_config_script, gdal_cs_params)
229    
230  #  #
231  # Define some extension and python modules  # Define some extension and python modules
# Line 223  extensions.append(Extension("Lib.wxproj" Line 253  extensions.append(Extension("Lib.wxproj"
253                              [ext_dir + "/thuban/wxproj.cpp"],                              [ext_dir + "/thuban/wxproj.cpp"],
254                              include_dirs = ([shp_dir, proj4_incdir,                              include_dirs = ([shp_dir, proj4_incdir,
255                                               ext_dir + "/pyshapelib/"]                                               ext_dir + "/pyshapelib/"]
256                                              + wx_incdirs),                                              + wx_cs_params[CS_INCDIRS]),
257                              define_macros = wx_defs,                              define_macros = wx_cs_params[CS_DEFS],
258                              library_dirs = [proj4_libdir] + wx_libdirs,                              library_dirs = [proj4_libdir] +
259                              libraries = [proj4_lib] + wx_libs))                                             wx_cs_params[CS_LIBDIRS],
260                                libraries = [proj4_lib] + wx_cs_params[CS_LIBS]))
 extensions.append(Extension("Lib.gdalwarp",  
                             [ext_dir + "/thuban/gdalwarp.cpp",  
                              ext_dir + "/thuban/cpl_mfile.cpp",  
                              ext_dir + "/thuban/bmpdataset.cpp"],  
                             libraries = [proj4_lib] + ["gdal.1.1"]))  
261    
262    
263  #  #
# Line 271  py_modules.append(ext_dir + "/pyprojecti Line 296  py_modules.append(ext_dir + "/pyprojecti
296    
297  data_files = []  data_files = []
298    
299  # bitmaps  # Resources
300    # ("Resources/Locale", "Resources/Locale/*/LC_MESSAGES/*.mo")
301  for d, pattern in [("Resources/Bitmaps", "Resources/Bitmaps/*.xpm"),  for d, pattern in [("Resources/Bitmaps", "Resources/Bitmaps/*.xpm"),
302                     ("Resources/Locale", "Resources/Locale/*/LC_MESSAGES/*.mo")                     ("Resources/Projections", "Resources/Projections/*.proj"),
303                     ]:                     ("Resources/XML", "Resources/XML/*.dtd")]:
304      data_files.append((d, glob.glob(pattern)))      data_files.append((d, glob.glob(pattern)))
305    
306  #  #
# Line 612  class ThubanInstall(install): Line 638  class ThubanInstall(install):
638                           ("extra-files", None,                           ("extra-files", None,
639                            "List of filenames or (src, dest) pairs describing"                            "List of filenames or (src, dest) pairs describing"
640                            " extra files to install "                            " extra files to install "
641                            "(can only be set from witin setup.py"),                            "(can only be set from within setup.py"),
642    
643                           ("create-init-module=", None,                           ("create-init-module=", None,
644                            "If true, create a module in the site-packages"                            "If true, create a module in the site-packages"
# Line 1029  class thuban_build_docs(Command): Line 1055  class thuban_build_docs(Command):
1055      def run(self, install_options = None):      def run(self, install_options = None):
1056          self.spawn(["happydoc", "-d./Doc", "./Thuban"])          self.spawn(["happydoc", "-d./Doc", "./Thuban"])
1057    
1058    class thuban_build_ext(build_ext):
1059    
1060        """Extend the build_ext command to optionally include the
1061        GDAL extension.
1062        """
1063    
1064        user_options = build_ext.user_options[:]
1065        user_options.extend([("with-gdal", None, "Include GDAL support."),
1066                             ("without-gdal", None, "Don't include GDAL support.")])
1067    
1068        boolean_options = ["with-gdal"]
1069        negative_opt = {'without-gdal' : 'with-gdal'}
1070    
1071        def initialize_options(self):
1072            self.with_gdal = True
1073            build_ext.initialize_options(self)
1074    
1075        def finalize_options(self):
1076            build_ext.finalize_options(self)
1077            if self.with_gdal and include_gdal:
1078                self.extensions.append(Extension("Lib.gdalwarp",
1079                                    [ext_dir + "/thuban/gdalwarp.cpp",
1080                                    ext_dir + "/thuban/cpl_mfile.cpp",
1081                                    ext_dir + "/thuban/bmpdataset.cpp"],
1082                                    include_dirs = gdal_cs_params[CS_INCDIRS] +
1083                                                   [ext_dir + "/thuban/"],
1084                                    define_macros = gdal_cs_params[CS_DEFS],
1085                                    library_dirs = gdal_cs_params[CS_LIBDIRS],
1086                                    libraries = gdal_cs_params[CS_LIBS]))
1087    
1088        def run(self, install_options = None):
1089            build_ext.run(self)
1090    
1091  #  #
1092  #   Run the script  #   Run the script
1093  #  #
1094    
   
1095  long_description = """\  long_description = """\
1096  Thuban is a viewer for geographic data written in Python  Thuban is a viewer for geographic data written in Python
1097  """  """
1098    
1099  setup(name = "Thuban",  setup(name = "Thuban",
1100        version = "0.2.0",        version = "0.8.1",
1101        description = "Geographic data viewer",        description = "Geographic data viewer",
1102        long_description = long_description,        long_description = long_description,
1103        licence = "GPL",        licence = "GPL",
# Line 1082  setup(name = "Thuban", Line 1140  setup(name = "Thuban",
1140                    "bdist_rpm": thuban_bdist_rpm,                    "bdist_rpm": thuban_bdist_rpm,
1141                    "bdist_inno": thuban_bdist_inno,                    "bdist_inno": thuban_bdist_inno,
1142                    "data_dist": data_dist,                    "data_dist": data_dist,
1143                    "build_docs": thuban_build_docs                    "build_docs": thuban_build_docs,
1144                      "build_ext": thuban_build_ext
1145                    })                    })
1146    
1147    

Legend:
Removed from v.928  
changed lines
  Added in v.1316

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26