- Timestamp:
- Apr 11, 2017 4:08:57 AM (7 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- b854587
- Parents:
- 09983d1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
setup.py
r2a8b4756 rf36e01f 1 # -*- coding: utf-8 -*- 2 #!/usr/bin/env python 3 1 4 """ 2 5 Setup for SasView 3 #TODO: Add checks to see that all the dependencies are on the system6 TODO: Add checks to see that all the dependencies are on the system 4 7 """ 5 import sys 8 6 9 import os 7 10 import shutil 8 from setuptools import setup, Extension 11 import sys 9 12 from distutils.command.build_ext import build_ext 10 13 from distutils.core import Command 14 11 15 import numpy as np 16 from setuptools import Extension, setup 12 17 13 18 # Manage version number ###################################### 14 19 import sasview 20 15 21 VERSION = sasview.__version__ 16 22 ############################################################## … … 25 31 # except when there is no such file 26 32 # Todo : make this list generic 27 # plugin_model_list = ['polynominal5.py', 'sph_bessel_jn.py',33 # plugin_model_list = ['polynominal5.py', 'sph_bessel_jn.py', 28 34 # 'sum_Ap1_1_Ap2.py', 'sum_p1_p2.py', 29 35 # 'testmodel_2.py', 'testmodel.py', … … 35 41 SASVIEW_BUILD = os.path.join(CURRENT_SCRIPT_DIR, "build") 36 42 37 sas_dir = os.path.join(os.path.expanduser("~"), '.sasview')43 sas_dir = os.path.join(os.path.expanduser("~"), '.sasview') 38 44 if os.path.isdir(sas_dir): 39 45 f_path = os.path.join(sas_dir, "sasview.log") … … 47 53 os.remove(f_path) 48 54 #f_path = os.path.join(sas_dir, 'plugin_models') 49 # if os.path.isdir(f_path):55 # if os.path.isdir(f_path): 50 56 # for f in os.listdir(f_path): 51 57 # if f in plugin_model_list: … … 53 59 # os.remove(file_path) 54 60 if os.path.exists(SASVIEW_BUILD): 55 print("Removing existing build directory", SASVIEW_BUILD, "for a clean build") 61 print("Removing existing build directory", 62 SASVIEW_BUILD, "for a clean build") 56 63 shutil.rmtree(SASVIEW_BUILD) 57 64 … … 63 70 enable_openmp = False 64 71 65 if sys.platform == 'darwin':72 if sys.platform == 'darwin': 66 73 if not is_64bits: 67 74 # Disable OpenMP … … 77 84 78 85 # Options to enable OpenMP 79 copt = 80 'mingw32': ['-fopenmp'],81 'unix': ['-fopenmp']}82 lopt = 83 'mingw32': ['-fopenmp'],84 'unix': ['-lgomp']}86 copt = {'msvc': ['/openmp'], 87 'mingw32': ['-fopenmp'], 88 'unix': ['-fopenmp']} 89 lopt = {'msvc': ['/MANIFEST'], 90 'mingw32': ['-fopenmp'], 91 'unix': ['-lgomp']} 85 92 86 93 # Platform-specific link options 87 platform_lopt = {'msvc' 94 platform_lopt = {'msvc': ['/MANIFEST']} 88 95 platform_copt = {} 89 96 90 97 # Set copts to get compile working on OS X >= 10.9 using clang 91 if sys.platform == 'darwin':98 if sys.platform == 'darwin': 92 99 try: 93 100 darwin_ver = int(os.uname()[2].split('.')[0]) 94 101 if darwin_ver >= 13 and darwin_ver < 14: 95 platform_copt = {'unix' : ['-Wno-error=unused-command-line-argument-hard-error-in-future']} 102 platform_copt = { 103 'unix': ['-Wno-error=unused-command-line-argument-hard-error-in-future']} 96 104 except: 97 105 print("PROBLEM determining Darwin version") 106 98 107 99 108 class DisableOpenMPCommand(Command): … … 114 123 pass 115 124 116 class build_ext_subclass( build_ext ): 125 126 class build_ext_subclass(build_ext): 117 127 def build_extensions(self): 118 128 # Get 64-bitness … … 124 134 if c in copt: 125 135 for e in self.extensions: 126 e.extra_compile_args = copt[ c]136 e.extra_compile_args = copt[c] 127 137 if c in lopt: 128 138 for e in self.extensions: 129 e.extra_link_args = lopt[ c]139 e.extra_link_args = lopt[c] 130 140 131 141 # Platform-specific build options 132 142 if c in platform_lopt: 133 143 for e in self.extensions: 134 e.extra_link_args = platform_lopt[ c]144 e.extra_link_args = platform_lopt[c] 135 145 136 146 if c in platform_copt: 137 147 for e in self.extensions: 138 e.extra_compile_args = platform_copt[ c ] 139 148 e.extra_compile_args = platform_copt[c] 140 149 141 150 build_ext.build_extensions(self) 151 142 152 143 153 class BuildSphinxCommand(Command): … … 156 166 build_sphinx.rebuild() 157 167 168 158 169 # sas module 159 170 package_dir["sas"] = os.path.join("src", "sas") … … 169 180 170 181 # sas.sascalc.invariant 171 package_dir["sas.sascalc.invariant"] = os.path.join("src", "sas", "sascalc", "invariant") 182 package_dir["sas.sascalc.invariant"] = os.path.join( 183 "src", "sas", "sascalc", "invariant") 172 184 packages.extend(["sas.sascalc.invariant"]) 173 185 … … 175 187 guiframe_path = os.path.join("src", "sas", "sasgui", "guiframe") 176 188 package_dir["sas.sasgui.guiframe"] = guiframe_path 177 package_dir["sas.sasgui.guiframe.local_perspectives"] = os.path.join(os.path.join(guiframe_path, "local_perspectives")) 189 package_dir["sas.sasgui.guiframe.local_perspectives"] = os.path.join( 190 os.path.join(guiframe_path, "local_perspectives")) 178 191 package_data["sas.sasgui.guiframe"] = ['images/*', 'media/*'] 179 packages.extend(["sas.sasgui.guiframe", "sas.sasgui.guiframe.local_perspectives"]) 192 packages.extend( 193 ["sas.sasgui.guiframe", "sas.sasgui.guiframe.local_perspectives"]) 180 194 # build local plugin 181 195 for d in os.listdir(os.path.join(guiframe_path, "local_perspectives")): 182 if d not in ['.svn', '__init__.py', '__init__.pyc']:196 if d not in ['.svn', '__init__.py', '__init__.pyc']: 183 197 package_name = "sas.sasgui.guiframe.local_perspectives." + d 184 198 packages.append(package_name) 185 package_dir[package_name] = os.path.join(guiframe_path, "local_perspectives", d) 199 package_dir[package_name] = os.path.join( 200 guiframe_path, "local_perspectives", d) 186 201 187 202 # sas.sascalc.dataloader 188 package_dir["sas.sascalc.dataloader"] = os.path.join("src", "sas", "sascalc", "dataloader") 189 package_data["sas.sascalc.dataloader.readers"] = ['defaults.json','schema/*.xsd'] 190 packages.extend(["sas.sascalc.dataloader","sas.sascalc.dataloader.readers","sas.sascalc.dataloader.readers.schema"]) 203 package_dir["sas.sascalc.dataloader"] = os.path.join( 204 "src", "sas", "sascalc", "dataloader") 205 package_data["sas.sascalc.dataloader.readers"] = [ 206 'defaults.json', 'schema/*.xsd'] 207 packages.extend(["sas.sascalc.dataloader", "sas.sascalc.dataloader.readers", 208 "sas.sascalc.dataloader.readers.schema"]) 191 209 192 210 # sas.sascalc.calculator 193 211 gen_dir = os.path.join("src", "sas", "sascalc", "calculator", "c_extensions") 194 212 package_dir["sas.sascalc.calculator.core"] = gen_dir 195 package_dir["sas.sascalc.calculator"] = os.path.join("src", "sas", "sascalc", "calculator") 196 packages.extend(["sas.sascalc.calculator","sas.sascalc.calculator.core"]) 197 ext_modules.append( Extension("sas.sascalc.calculator.core.sld2i", 198 sources = [ 199 os.path.join(gen_dir, "sld2i_module.cpp"), 200 os.path.join(gen_dir, "sld2i.cpp"), 201 os.path.join(gen_dir, "libfunc.c"), 202 os.path.join(gen_dir, "librefl.c"), 203 ], 204 include_dirs=[gen_dir], 205 ) 206 ) 213 package_dir["sas.sascalc.calculator"] = os.path.join( 214 "src", "sas", "sascalc", "calculator") 215 packages.extend(["sas.sascalc.calculator", "sas.sascalc.calculator.core"]) 216 ext_modules.append(Extension("sas.sascalc.calculator.core.sld2i", 217 sources=[ 218 os.path.join(gen_dir, "sld2i_module.cpp"), 219 os.path.join(gen_dir, "sld2i.cpp"), 220 os.path.join(gen_dir, "libfunc.c"), 221 os.path.join(gen_dir, "librefl.c"), 222 ], 223 include_dirs=[gen_dir], 224 ) 225 ) 207 226 208 227 # sas.sascalc.pr 209 srcdir 228 srcdir = os.path.join("src", "sas", "sascalc", "pr", "c_extensions") 210 229 package_dir["sas.sascalc.pr.core"] = srcdir 211 package_dir["sas.sascalc.pr"] = os.path.join("src", "sas", "sascalc", "pr")212 packages.extend(["sas.sascalc.pr", "sas.sascalc.pr.core"])213 ext_modules.append( 214 sources =[os.path.join(srcdir, "Cinvertor.c"),215 216 217 218 ))230 package_dir["sas.sascalc.pr"] = os.path.join("src", "sas", "sascalc", "pr") 231 packages.extend(["sas.sascalc.pr", "sas.sascalc.pr.core"]) 232 ext_modules.append(Extension("sas.sascalc.pr.core.pr_inversion", 233 sources=[os.path.join(srcdir, "Cinvertor.c"), 234 os.path.join(srcdir, "invertor.c"), 235 ], 236 include_dirs=[], 237 )) 219 238 220 239 # sas.sascalc.file_converter 221 240 mydir = os.path.join("src", "sas", "sascalc", "file_converter", "c_ext") 222 241 package_dir["sas.sascalc.file_converter.core"] = mydir 223 package_dir["sas.sascalc.file_converter"] = os.path.join("src","sas", "sascalc", "file_converter") 224 packages.extend(["sas.sascalc.file_converter","sas.sascalc.file_converter.core"]) 225 ext_modules.append( Extension("sas.sascalc.file_converter.core.bsl_loader", 226 sources = [os.path.join(mydir, "bsl_loader.c")], 227 include_dirs=[np.get_include()], 228 ) ) 229 230 #sas.sascalc.corfunc 231 package_dir["sas.sascalc.corfunc"] = os.path.join("src", "sas", "sascalc", "corfunc") 242 package_dir["sas.sascalc.file_converter"] = os.path.join( 243 "src", "sas", "sascalc", "file_converter") 244 packages.extend(["sas.sascalc.file_converter", 245 "sas.sascalc.file_converter.core"]) 246 ext_modules.append(Extension("sas.sascalc.file_converter.core.bsl_loader", 247 sources=[os.path.join(mydir, "bsl_loader.c")], 248 include_dirs=[np.get_include()], 249 )) 250 251 # sas.sascalc.corfunc 252 package_dir["sas.sascalc.corfunc"] = os.path.join( 253 "src", "sas", "sascalc", "corfunc") 232 254 packages.extend(["sas.sascalc.corfunc"]) 233 255 … … 237 259 238 260 # Perspectives 239 package_dir["sas.sasgui.perspectives"] = os.path.join("src", "sas", "sasgui", "perspectives") 240 package_dir["sas.sasgui.perspectives.pr"] = os.path.join("src", "sas", "sasgui", "perspectives", "pr") 241 packages.extend(["sas.sasgui.perspectives","sas.sasgui.perspectives.pr"]) 261 package_dir["sas.sasgui.perspectives"] = os.path.join( 262 "src", "sas", "sasgui", "perspectives") 263 package_dir["sas.sasgui.perspectives.pr"] = os.path.join( 264 "src", "sas", "sasgui", "perspectives", "pr") 265 packages.extend(["sas.sasgui.perspectives", "sas.sasgui.perspectives.pr"]) 242 266 package_data["sas.sasgui.perspectives.pr"] = ['media/*'] 243 267 244 package_dir["sas.sasgui.perspectives.invariant"] = os.path.join("src", "sas", "sasgui", "perspectives", "invariant") 268 package_dir["sas.sasgui.perspectives.invariant"] = os.path.join( 269 "src", "sas", "sasgui", "perspectives", "invariant") 245 270 packages.extend(["sas.sasgui.perspectives.invariant"]) 246 package_data['sas.sasgui.perspectives.invariant'] = [os.path.join("media",'*')] 247 248 package_dir["sas.sasgui.perspectives.fitting"] = os.path.join("src", "sas", "sasgui", "perspectives", "fitting") 249 package_dir["sas.sasgui.perspectives.fitting.plugin_models"] = os.path.join("src", "sas", "sasgui", "perspectives", "fitting", "plugin_models") 250 packages.extend(["sas.sasgui.perspectives.fitting", "sas.sasgui.perspectives.fitting.plugin_models"]) 251 package_data['sas.sasgui.perspectives.fitting'] = ['media/*', 'plugin_models/*'] 252 253 packages.extend(["sas.sasgui.perspectives", "sas.sasgui.perspectives.calculator"]) 271 package_data['sas.sasgui.perspectives.invariant'] = [ 272 os.path.join("media", '*')] 273 274 package_dir["sas.sasgui.perspectives.fitting"] = os.path.join( 275 "src", "sas", "sasgui", "perspectives", "fitting") 276 package_dir["sas.sasgui.perspectives.fitting.plugin_models"] = os.path.join( 277 "src", "sas", "sasgui", "perspectives", "fitting", "plugin_models") 278 packages.extend(["sas.sasgui.perspectives.fitting", 279 "sas.sasgui.perspectives.fitting.plugin_models"]) 280 package_data['sas.sasgui.perspectives.fitting'] = [ 281 'media/*', 'plugin_models/*'] 282 283 packages.extend(["sas.sasgui.perspectives", 284 "sas.sasgui.perspectives.calculator"]) 254 285 package_data['sas.sasgui.perspectives.calculator'] = ['images/*', 'media/*'] 255 286 256 package_dir["sas.sasgui.perspectives.corfunc"] = os.path.join("src", "sas", "sasgui", "perspectives", "corfunc") 287 package_dir["sas.sasgui.perspectives.corfunc"] = os.path.join( 288 "src", "sas", "sasgui", "perspectives", "corfunc") 257 289 packages.extend(["sas.sasgui.perspectives.corfunc"]) 258 290 package_data['sas.sasgui.perspectives.corfunc'] = ['media/*'] 259 291 260 package_dir["sas.sasgui.perspectives.file_converter"] = os.path.join("src", "sas", "sasgui", "perspectives", "file_converter") 292 package_dir["sas.sasgui.perspectives.file_converter"] = os.path.join( 293 "src", "sas", "sasgui", "perspectives", "file_converter") 261 294 packages.extend(["sas.sasgui.perspectives.file_converter"]) 262 295 package_data['sas.sasgui.perspectives.file_converter'] = ['media/*'] 263 296 264 297 # Data util 265 package_dir["sas.sascalc.data_util"] = os.path.join("src", "sas", "sascalc", "data_util") 298 package_dir["sas.sascalc.data_util"] = os.path.join( 299 "src", "sas", "sascalc", "data_util") 266 300 packages.append("sas.sascalc.data_util") 267 301 268 302 # Plottools 269 package_dir["sas.sasgui.plottools"] = os.path.join("src", "sas", "sasgui", "plottools") 303 package_dir["sas.sasgui.plottools"] = os.path.join( 304 "src", "sas", "sasgui", "plottools") 270 305 packages.append("sas.sasgui.plottools") 271 306 … … 275 310 276 311 EXTENSIONS = [".c", ".cpp"] 312 277 313 278 314 def append_file(file_list, dir_path): … … 294 330 file_list.append(os.path.join(sub_dir, new_f)) 295 331 332 296 333 # Comment out the following to avoid rebuilding all the models 297 334 file_sources = [] 298 335 append_file(file_sources, gen_dir) 299 336 300 # Wojtek's hacky way to add doc files while bundling egg301 # def add_doc_files(directory):337 # Wojtek's hacky way to add doc files while bundling egg 338 # def add_doc_files(directory): 302 339 # paths = [] 303 340 # for (path, directories, filenames) in os.walk(directory): … … 332 369 'lxml', 'h5py', 333 370 334 # #The following dependecies won't install automatically, so assume them335 # #The numbers should be bumped up for matplotlib and wxPython as well.371 # The following dependecies won't install automatically, so assume them 372 # The numbers should be bumped up for matplotlib and wxPython as well. 336 373 # 'numpy>=1.4.1', 'scipy>=0.7.2', 'matplotlib>=0.99.1.1', 337 374 # 'wxPython>=2.8.11', 'pil', 338 339 340 if os.name =='nt':375 ] 376 377 if os.name == 'nt': 341 378 required.extend(['html5lib', 'reportlab']) 342 379 else: … … 347 384 setup( 348 385 name="sasview", 349 version =VERSION,350 description ="SasView application",351 author ="SasView Team",352 author_email ="developers@sasview.org",353 url ="http://sasview.org",354 license ="PSF",355 keywords ="small-angle x-ray and neutron scattering analysis",356 download_url ="https://github.com/SasView/sasview.git",357 package_dir =package_dir,358 packages =packages,359 package_data =package_data,360 ext_modules =ext_modules,361 install_requires =required,362 zip_safe =False,363 entry_points ={364 'console_scripts':[365 366 367 368 cmdclass ={'build_ext': build_ext_subclass,369 370 371 386 version=VERSION, 387 description="SasView application", 388 author="SasView Team", 389 author_email="developers@sasview.org", 390 url="http://sasview.org", 391 license="PSF", 392 keywords="small-angle x-ray and neutron scattering analysis", 393 download_url="https://github.com/SasView/sasview.git", 394 package_dir=package_dir, 395 packages=packages, 396 package_data=package_data, 397 ext_modules=ext_modules, 398 install_requires=required, 399 zip_safe=False, 400 entry_points={ 401 'console_scripts': [ 402 "sasview = sas.sasview.sasview:run", 403 ] 404 }, 405 cmdclass={'build_ext': build_ext_subclass, 406 'docs': BuildSphinxCommand, 407 'disable_openmp': DisableOpenMPCommand} 408 )
Note: See TracChangeset
for help on using the changeset viewer.