Changeset 706bb4e in sasview for installers


Ignore:
Timestamp:
Sep 18, 2017 10:20:29 AM (7 years ago)
Author:
Paul Kienzle <pkienzle@…>
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, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
60a7820
Parents:
460d3a1 (diff), cfd27dd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into ticket-887-reorg

Location:
installers
Files:
4 added
9 moved

Legend:

Unmodified
Added
Removed
  • installers/installer_generator.py

    ra1b8fee r460d3a1  
    66from __future__ import print_function 
    77 
    8 import local_config 
    9 import os  
     8import os 
     9import sys 
    1010import string 
    1111 
    12  
    13 REG_PROGRAM = """{app}\MYPROG.EXE"" ""%1""" 
     12root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
     13sys.path.insert(0, os.path.join(root, 'sasview-install', 'Lib', 'site-packages')) 
     14from sas.sasview import local_config 
     15 
     16#REG_PROGRAM = """{app}\MYPROG.EXE"" ""%1""" 
    1417APPLICATION = str(local_config.__appname__ )+ '.exe' 
    1518AppName = str(local_config.__appname__ ) 
     
    2326AppUpdatesURL = local_config._homepage 
    2427ChangesEnvironment = 'true' 
    25 DefaultDirName = os.path.join("{pf}" , AppName+Dev)  
     28DefaultDirName = os.path.join("{pf}" , AppName+Dev) 
    2629DefaultGroupName = os.path.join(local_config.DefaultGroupName, AppVerName) 
    27                                  
     30 
    2831OutputBaseFilename = local_config.OutputBaseFilename 
    29 SetupIconFile = "images\\ball.ico" 
     32SetupIconFile = local_config.SetupIconFile_win 
    3033LicenseFile = 'license.txt' 
    3134DisableProgramGroupPage = 'yes' 
     
    4649    list_app =[] 
    4750    try: 
    48          
     51 
    4952        #(ext, type, name, flags) 
    5053        from sas.sascalc.dataloader.loader import Loader 
     
    5558            if ext.strip() not in ['.*', ''] and ext.strip() not in list_data: 
    5659                list_data.append((ext, 'string', file_type)) 
    57     except: 
     60    except Exception: 
    5861        pass 
    5962    try: 
     
    6164        if ext.strip() not in ['.', ''] and ext.strip() not in list_app: 
    6265            list_app.append((ext, 'string', file_type)) 
    63     except: 
     66    except Exception: 
    6467        pass 
    6568    try: 
     
    6770            file_type, ext = string.split(item, "|*", 1) 
    6871            if ext.strip() not in ['.', ''] and ext.strip() not in list_app: 
    69                 list_app.append((ext, 'string', file_type))  
    70     except: 
     72                list_app.append((ext, 'string', file_type)) 
     73    except Exception: 
    7174        pass 
    7275    return list_data, list_app 
     
    9194                              %  str(APPLICATION) 
    9295        msg += """ValueType: %s; """ % str('string') 
    93         msg += """ValueName: "%s";\t""" %str('')  
     96        msg += """ValueName: "%s";\t""" %str('') 
    9497        msg += """ValueData: \"""{app}\%s""  ""%s1\"""; \t"""% (str(APPLICATION), 
    95                                                           str('%'))     
     98                                                          str('%')) 
    9699        msg += """ Flags: %s""" % str('uninsdeletevalue noerror') 
    97100        msg += "\n" 
    98         user_list = "Software\Classes"  
     101        user_list = "Software\Classes" 
    99102        for (ext, type, _) in data_extension: 
    100103            list = os.path.join(user_list, ext, openwithlist) 
     
    107110                              %  (str(user_list), str(APPLICATION)) 
    108111        msg += """ValueType: %s; """ % str('string') 
    109         msg += """ValueName: "%s";\t""" %str('')  
     112        msg += """ValueName: "%s";\t""" %str('') 
    110113        msg += """ValueData: \"""{app}\%s""  ""%s1\"""; \t"""% (str(APPLICATION), 
    111                                                           str('%'))     
     114                                                          str('%')) 
    112115        msg += """ Flags: %s""" % str('uninsdeletevalue noerror') 
    113         msg += "\n"         
     116        msg += "\n" 
    114117    if app_extension is not None and app_extension: 
    115118        for (ext, type, _) in app_extension: 
    116119            msg +=  """Root: HKCR;\tSubkey: "%s";\t""" % str(ext) 
    117120            msg += """ValueType: %s;\t""" % str(type) 
    118             #file type empty set the current application as the default  
     121            #file type empty set the current application as the default 
    119122            #reader for this file. change the value of file_type to another 
    120123            #string modify the default reader 
     
    126129    msg += """Root: HKCR; Subkey: "{app}\%s";\t""" % str(APPLICATION) 
    127130    msg += """ValueType: %s; """ % str('string') 
    128     msg += """ValueName: "%s";\t""" % str('')  
    129     msg += """ValueData: "{app}\%s";\t""" % str("SasView File")  
     131    msg += """ValueName: "%s";\t""" % str('') 
     132    msg += """ValueData: "{app}\%s";\t""" % str("SasView File") 
    130133    msg += """ Flags: %s \t""" % str("uninsdeletekey  noerror") 
    131134    msg += "\n" 
    132          
     135 
    133136    #execute the file on double-click 
    134137    msg += """Root: HKCR; Subkey: "{app}\%s\shell\open\command";\t"""  %  str(APPLICATION) 
    135138    msg += """ValueType: %s; """ % str('string') 
    136     msg += """ValueName: "%s";\t""" %str('')  
     139    msg += """ValueName: "%s";\t""" %str('') 
    137140    msg += """ValueData: \"""{app}\%s""  ""%s1\""";\t"""% (str(APPLICATION), 
    138                                                           str('%'))   
     141                                                          str('%')) 
    139142    msg += """ Flags: %s \t""" % str("uninsdeletevalue noerror") 
    140     msg += "\n"                                                       
     143    msg += "\n" 
    141144    #create default icon 
    142145    msg += """Root: HKCR; Subkey: "{app}\%s";\t""" % str(SetupIconFile) 
    143146    msg += """ValueType: %s; """ % str('string') 
    144     msg += """ValueName: "%s";\t""" % str('')  
     147    msg += """ValueName: "%s";\t""" % str('') 
    145148    msg += """ValueData: "{app}\%s,0";\t""" % str(APPLICATION) 
    146149    msg += """ Flags: %s \t""" % str("uninsdeletevalue noerror") 
    147     msg += "\n"   
    148  
    149      
     150    msg += "\n" 
     151 
     152 
    150153    #SASVIEWPATH 
    151154    msg += """Root: HKLM; Subkey: "%s";\t"""  %  str('SYSTEM\CurrentControlSet\Control\Session Manager\Environment') 
    152155    msg += """ValueType: %s; """ % str('expandsz') 
    153     msg += """ValueName: "%s";\t""" % str('SASVIEWPATH')  
     156    msg += """ValueName: "%s";\t""" % str('SASVIEWPATH') 
    154157    msg += """ValueData: "{app}";\t""" 
    155158    msg += """ Flags: %s""" % str('uninsdeletevalue noerror') 
    156159    msg += "\n" 
    157      
     160 
    158161    #PATH 
    159162    msg += """; Write to PATH (below) is disabled; need more tests\n""" 
    160163    msg += """;Root: HKCU; Subkey: "%s";\t"""  %  str('Environment') 
    161164    msg += """ValueType: %s; """ % str('expandsz') 
    162     msg += """ValueName: "%s";\t""" % str('PATH')  
     165    msg += """ValueName: "%s";\t""" % str('PATH') 
    163166    msg += """ValueData: "%s;{olddata}";\t""" % str('%SASVIEWPATH%') 
    164167    msg += """ Check: %s""" % str('NeedsAddPath()') 
    165168    msg += "\n" 
    166          
    167     return msg 
    168  
    169 def write_language(language=['english'], msfile="compiler:Default.isl"):   
     169 
     170    return msg 
     171 
     172def write_languages(languages=('english',), msfile="compiler:Default.isl"): 
    170173    """ 
    171174    define the language of the application 
    172     """  
     175    """ 
    173176    msg = '' 
    174     if language: 
     177    if languages: 
    175178        msg = "\n\n[Languages]\n" 
    176         for lang in language: 
    177             msg += """Name: "%s";\tMessagesFile: "%s"\n""" % (str(lang),  
    178                                                            str(msfile)) 
    179     return msg  
     179        for lang in languages: 
     180            msg += """Name: "%s";\tMessagesFile: "%s"\n""" % (str(lang), str(msfile)) 
     181    return msg 
    180182 
    181183def write_tasks(): 
     
    201203    msg += """Flags: ignoreversion recursesubdirs createallsubdirs\n""" 
    202204    msg += """Source: "dist\plugin_models\*";\tDestDir: "{userdesktop}\..\.sasview\plugin_models";\t""" 
    203     msg += """Flags: recursesubdirs createallsubdirs\n"""  
     205    msg += """Flags: recursesubdirs createallsubdirs\n""" 
    204206    msg += """Source: "dist\compiled_models\*";\tDestDir: "{userdesktop}\..\.sasmodels\compiled_models";\t""" 
    205207    msg += """Flags: recursesubdirs createallsubdirs\n""" 
    206     msg += """Source: "dist\config\custom_config.py";\tDestDir: "{userdesktop}\..\.sasview\config";\t"""  
     208    msg += """Source: "dist\config\custom_config.py";\tDestDir: "{userdesktop}\..\.sasview\config";\t""" 
    207209    msg += """Flags: recursesubdirs createallsubdirs\n""" 
    208     #msg += """Source: "dist\default_categories.json";    DestDir: "{userdesktop}\..\.sasview";\t"""  
     210    #msg += """Source: "dist\default_categories.json";    DestDir: "{userdesktop}\..\.sasview";\t""" 
    209211    #msg += """DestName: "categories.json";\n""" 
    210212    msg += """;\tNOTE: Don't use "Flags: ignoreversion" on any shared system files""" 
     
    235237    msg = """\n\n[Run]\n""" 
    236238    msg += """Filename: "{app}\%s";\t""" % str(APPLICATION) 
    237     msg += """Description: "{cm:LaunchProgram, %s}";\t""" %str(AppName)  
     239    msg += """Description: "{cm:LaunchProgram, %s}";\t""" %str(AppName) 
    238240    msg += """Flags: nowait postinstall skipifsilent\n""" 
    239241    msg += """; Install the Microsoft C++ DLL redistributable package if it is """ 
     
    260262    msg = """\n\n[Dirs]\n""" 
    261263    msg += """Name: "{app}\%s";\t""" % str('') 
    262     msg += """Permissions: everyone-modify\t"""  
    263     msg += """\n"""   
     264    msg += """Permissions: everyone-modify\t""" 
     265    msg += """\n""" 
    264266    return msg 
    265267 
    266268def write_code(): 
    267269    """ 
    268     Code that checks the existing path and snaviewpath  
     270    Code that checks the existing path and snaviewpath 
    269271    in the environmental viriables/PATH 
    270272    """ 
    271273    msg = """\n\n[Code]\n""" 
    272     msg += """function InstallVC90CRT(): Boolean;\n"""  
     274    msg += """function InstallVC90CRT(): Boolean;\n""" 
    273275    msg += """begin\n""" 
    274276    msg += """    Result := not DirExists('C:\WINDOWS\WinSxS\\x86_Microsoft.VC90.""" 
    275277    msg += """CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375');\n""" 
    276278    msg += """end;\n\n""" 
    277     msg += """function NeedsAddPath(): boolean;\n"""  
    278     msg += """var\n"""  
     279    msg += """function NeedsAddPath(): boolean;\n""" 
     280    msg += """var\n""" 
    279281    msg += """  oldpath: string;\n""" 
    280     msg += """  newpath: string;\n"""  
    281     msg += """  pathArr:    TArrayOfString;\n"""  
    282     msg += """  i:        Integer;\n"""  
    283     msg += """begin\n"""  
     282    msg += """  newpath: string;\n""" 
     283    msg += """  pathArr:    TArrayOfString;\n""" 
     284    msg += """  i:        Integer;\n""" 
     285    msg += """begin\n""" 
    284286    msg += """  RegQueryStringValue(HKEY_CURRENT_USER,'Environment',""" 
    285287    msg += """'PATH', oldpath)\n""" 
     
    324326    msg += """; installation.\n""" 
    325327    msg += """Type: dirifempty; Name: "{app}"\n""" 
    326     msg += """\n"""   
     328    msg += """\n""" 
    327329    return msg 
    328330 
     
    333335    TEMPLATE += "\n; and local_config.py located in this directory.\n " 
    334336    TEMPLATE += "; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!" 
    335     TEMPLATE += "\n[Setup]\n\n"  
     337    TEMPLATE += "\n[Setup]\n\n" 
    336338    TEMPLATE += "ChangesAssociations=%s\n" %str('yes') 
    337339    TEMPLATE += "AppName=%s\n" % str(AppName) 
     
    352354    TEMPLATE += "PrivilegesRequired=%s\n" % str(PrivilegesRequired) 
    353355    TEMPLATE += "UsePreviousAppDir=no\n" 
    354     
     356 
    355357    TEMPLATE += write_registry(data_extension=DATA_EXTENSION, 
    356358                                app_extension=APP_EXTENSION) 
    357     TEMPLATE += write_language() 
     359    TEMPLATE += write_languages() 
    358360    TEMPLATE += write_tasks() 
    359361    TEMPLATE += write_file() 
     
    364366    TEMPLATE += write_uninstalldelete() 
    365367    path = '%s.iss' % str(INSTALLER_FILE) 
    366     f = open(path,'w')  
     368    f = open(path,'w') 
    367369    f.write(TEMPLATE) 
    368370    f.close() 
    369371    print("Generate Inno setup installer script complete") 
    370372    print("A new file %s.iss should be created.Please refresh your directory" % str(INSTALLER_FILE)) 
    371      
     373 
    372374if __name__ == "__main__": 
    373375    generate_installer() 
  • installers/setup_exe.py

    r5a8cdbb r460d3a1  
    33# 
    44# The setup to create a Windows executable. 
    5 # Inno Setup can then be used with the installer.iss file  
    6 # in the top source directory to create an installer.  
     5# Inno Setup can then be used with the installer.iss file 
     6# in the top source directory to create an installer. 
    77# 
    88# Setuptools clashes with py2exe 0.6.8 (and probably later too). 
    99# For that reason, most of the code needs to have direct imports 
    10 # that are not going through pkg_resources.  
     10# that are not going through pkg_resources. 
    1111# 
    1212# Attention should be paid to dynamic imports. Data files can 
     
    1717import os 
    1818import sys 
     19from glob import glob 
    1920import warnings 
    20 from glob import glob 
    2121import shutil 
    2222 
     
    2929#from idlelib.PyShell import warning_stream 
    3030 
     31if os.path.abspath(os.path.dirname(__file__)) != os.path.abspath(os.getcwd()): 
     32    raise RuntimeError("Must run setup_exe from the installers directory") 
     33 
    3134# put the build directory at the front of the path 
    32 if os.path.abspath(os.path.dirname(__file__)) != os.path.abspath(os.getcwd()): 
    33     raise RuntimeError("Must run setup_exe from the sasview directory") 
    3435root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
    3536platform = '%s-%s'%(get_platform(), sys.version[:3]) 
    36 build_path = os.path.join(root, 'build', 'lib.'+platform) 
    37 #build_path = os.path.join(root, 'sasview-install', 'Lib', 'site-packages') 
     37doc_path = os.path.join(root, 'build', 'lib.'+platform, 'doc') 
     38build_path = os.path.join(root, 'sasview-install', 'Lib', 'site-packages') 
    3839sys.path.insert(0, build_path) 
    3940 
    40 import local_config 
     41from sas.sasview import local_config 
    4142from installer_generator import generate_installer 
    4243 
     
    6263        del sys.argv[path_flag_idx+1] 
    6364        sys.argv.remove('--extrapath') 
    64 except: 
     65except Exception: 
    6566    print("Error processing extra python path needed to build SasView\n  %s" % 
    6667          sys.exc_value) 
     
    149150    """%{'arch': arch} 
    150151 
    151 if is_64bits: 
    152     msvcrtdll = glob(r"C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*") 
    153 else: 
    154     msvcrtdll = glob(r"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*") 
    155 if msvcrtdll: 
    156     msvcrtdll_data_files = ("Microsoft.VC90.CRT", msvcrtdll) 
    157 else: 
    158     msvcrtdll_data_files = None 
    159  
    160  
    161152class Target: 
    162153    def __init__(self, **kw): 
     
    172163# to use the MatPlotLib. 
    173164# 
    174 path = os.getcwd() 
    175  
    176 media_dir = os.path.join(path, "media") 
    177 images_dir = os.path.join(path, "images") 
    178 test_dir = os.path.join(path, "test") 
    179 test_1d_dir = os.path.join(path, "test\\1d_data") 
    180 test_2d_dir = os.path.join(path, "test\\2d_data") 
    181 test_save_dir = os.path.join(path, "test\\save_states") 
    182 test_upcoming_dir = os.path.join(path, "test\\upcoming_formats") 
    183  
    184165matplotlibdatadir = matplotlib.get_data_path() 
    185166matplotlibdata = findall(matplotlibdatadir) 
    186167 
    187 site_loc = get_python_lib() 
    188 opencl_include_dir = os.path.join(site_loc, "pyopencl", "cl") 
    189  
    190168data_files = [] 
    191169 
     
    193171    data_files += tinycc.data_files() 
    194172 
    195 # Copying SLD data 
     173# Include data for supporting packages 
    196174import periodictable 
    197175data_files += periodictable.data_files() 
    198176 
    199 import sas.sasgui.perspectives.fitting as fitting 
    200 data_files += fitting.data_files() 
    201  
    202 import sas.sasgui.perspectives.calculator as calculator 
    203 data_files += calculator.data_files() 
    204  
    205 import sas.sasgui.perspectives.invariant as invariant 
    206 data_files += invariant.data_files() 
    207  
    208 import sas.sasgui.guiframe as guiframe 
    209 data_files += guiframe.data_files() 
     177for f in matplotlibdata: 
     178    dirname = os.path.join('mpl-data', f[len(matplotlibdatadir)+1:]) 
     179    data_files.append((os.path.split(dirname)[0], [f])) 
     180 
     181import sasmodels 
     182data_files += sasmodels.data_files() 
    210183 
    211184# precompile sas models into the sasview build path; doesn't matter too much 
     
    219192data_files.append(('compiled_models', compiled_dlls)) 
    220193 
    221 import sasmodels 
    222 data_files += sasmodels.data_files() 
    223  
    224 for f in matplotlibdata: 
    225     dirname = os.path.join('mpl-data', f[len(matplotlibdatadir)+1:]) 
    226     data_files.append((os.path.split(dirname)[0], [f])) 
    227  
    228 # Copy the settings file for the sas.dataloader file extension associations 
    229 import sas.sascalc.dataloader.readers 
    230 f = os.path.join(sas.sascalc.dataloader.readers.get_data_path()) 
    231 if os.path.isfile(f): 
    232     data_files.append(('.', [f])) 
    233 f = 'custom_config.py' 
    234 if os.path.isfile(f): 
    235     data_files.append(('.', [f])) 
    236     data_files.append(('config', [f])) 
    237 f = 'local_config.py' 
    238 if os.path.isfile(f): 
    239     data_files.append(('.', [f])) 
    240  
    241 f = 'logging.ini' 
    242 if os.path.isfile(f): 
    243     data_files.append(('.', [f])) 
    244  
    245 # numerical libraries 
    246 def dll_check(dll_path, dlls): 
    247     dll_includes = [os.path.join(dll_path, dll+'.dll') for dll in dlls] 
    248     return [dll for dll in dll_includes if os.path.exists(dll)] 
    249  
    250 python_root = os.path.dirname(os.path.abspath(sys.executable)) 
    251 # Check for ATLAS 
    252 dll_path = os.path.join(python_root, 'lib', 'site-packages', 'numpy', 'core') 
    253 dlls = ['numpy-atlas'] 
    254 atlas_dlls = dll_check(dll_path, dlls) 
    255  
    256 # Check for MKL 
    257 dll_path = os.path.join(python_root, 'Library', 'bin') 
    258 dlls = ['mkl_core', 'mkl_def', 'libiomp5md'] 
    259 mkl_dlls = dll_check(dll_path, dlls) 
    260  
    261 if atlas_dlls: 
    262     data_files.append(('.', atlas_dlls)) 
    263 elif mkl_dlls: 
    264     data_files.append(('.', mkl_dlls)) 
     194# Data files for the different perspectives 
     195from sas.sasgui.perspectives import fitting 
     196data_files += fitting.data_files() 
     197 
     198from sas.sasgui.perspectives import calculator 
     199data_files += calculator.data_files() 
     200 
     201from sas.sasgui.perspectives import invariant 
     202data_files += invariant.data_files() 
     203 
     204from sas.sasgui import guiframe 
     205data_files += guiframe.data_files() 
     206 
     207# Copy the config files 
     208sasview_path = os.path.join('..', 'src', 'sas', 'sasview') 
     209data_files.append(('.', [os.path.join(sasview_path, 'custom_config.py')])) 
     210data_files.append(('config', [os.path.join(sasview_path, 'custom_config.py')])) 
     211data_files.append(('.', [os.path.join(sasview_path, 'local_config.py')])) 
     212 
     213# Copy the logging config 
     214sas_path = os.path.join('..', 'src', 'sas') 
     215data_files.append(('.', [os.path.join(sas_path, 'logging.ini')])) 
    265216 
    266217if os.path.isfile("BUILD_NUMBER"): 
     
    268219 
    269220# Copying the images directory to the distribution directory. 
     221images_dir = local_config.icon_path 
    270222for f in findall(images_dir): 
    271     if not ".svn" in f: 
    272         data_files.append(("images", [f])) 
     223    data_files.append(("images", [f])) 
    273224 
    274225# Copying the HTML help docs 
     226media_dir = local_config.media_path 
    275227for f in findall(media_dir): 
    276     if not ".svn" in f: 
    277         data_files.append(("media", [f])) 
     228    data_files.append(("media", [f])) 
    278229 
    279230# Copying the sample data user data 
    280 for f in findall(test_1d_dir): 
    281     if not ".svn" in f: 
    282         data_files.append(("test\\1d_data", [f])) 
    283  
    284 # Copying the sample data user data 
    285 for f in findall(test_2d_dir): 
    286     if not ".svn" in f: 
    287         data_files.append(("test\\2d_data", [f])) 
    288  
    289 # Copying the sample data user data 
    290 for f in findall(test_save_dir): 
    291     if not ".svn" in f: 
    292         data_files.append(("test\\save_states", [f])) 
    293  
    294 # Copying the sample data user data 
    295 for f in findall(test_upcoming_dir): 
    296     if not ".svn" in f: 
    297         data_files.append(("test\\upcoming_formats", [f])) 
    298  
    299 # Copying opencl include files 
    300 for f in findall(opencl_include_dir): 
    301     data_files.append(("includes\\pyopencl",[f])) 
     231test_dir = local_config.test_path 
     232for f in findall(os.path.join(test_dir, "1d_data")): 
     233    data_files.append((os.path.join("test", "1d_data"), [f])) 
     234for f in findall(os.path.join(test_dir, "2d_data")): 
     235    data_files.append((os.path.join("test", "2d_data"), [f])) 
     236for f in findall(os.path.join(test_dir, "save_states")): 
     237    data_files.append((os.path.join("test", "save_states"), [f])) 
     238for f in findall(os.path.join(test_dir, "upcoming_formats")): 
     239    data_files.append((os.path.join("test", "upcoming_formats"), [f])) 
    302240 
    303241# See if the documentation has been built, and if so include it. 
    304 doc_path = os.path.join(build_path, "doc") 
    305242if os.path.exists(doc_path): 
    306243    for dirpath, dirnames, filenames in os.walk(doc_path): 
     
    311248    raise Exception("You must first build the documentation before creating an installer.") 
    312249 
    313 if msvcrtdll_data_files is not None: 
     250# Copying opencl include files 
     251site_loc = get_python_lib() 
     252opencl_include_dir = os.path.join(site_loc, "pyopencl", "cl") 
     253for f in findall(opencl_include_dir): 
     254    data_files.append((os.path.join("includes", "pyopencl"), [f])) 
     255 
     256# Numerical libraries 
     257python_root = os.path.dirname(os.path.abspath(sys.executable)) 
     258def dll_check(dll_path, dlls): 
     259    dll_includes = [os.path.join(dll_path, dll+'.dll') for dll in dlls] 
     260    return [dll for dll in dll_includes if os.path.exists(dll)] 
     261 
     262# Check for ATLAS 
     263numpy_path = os.path.join(python_root, 'lib', 'site-packages', 'numpy', 'core') 
     264atlas_dlls = dll_check(numpy_path, ['numpy-atlas']) 
     265 
     266# Check for MKL 
     267mkl_path = os.path.join(python_root, 'Library', 'bin') 
     268mkl_dlls = dll_check(mkl_path, ['mkl_core', 'mkl_def', 'libiomp5md']) 
     269 
     270if atlas_dlls: 
     271    data_files.append(('.', atlas_dlls)) 
     272elif mkl_dlls: 
     273    data_files.append(('.', mkl_dlls)) 
     274 
     275if is_64bits: 
     276    msvcrtdll = glob(r"C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*") 
     277else: 
     278    msvcrtdll = glob(r"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*") 
     279if msvcrtdll: 
    314280    # install the MSVC 9 runtime dll's into the application folder 
    315     data_files.append(msvcrtdll_data_files) 
     281    data_files.append(("Microsoft.VC90.CRT", msvcrtdll)) 
    316282 
    317283# NOTE: 
     
    322288packages = [ 
    323289    'matplotlib', 'scipy', 'encodings', 'comtypes', 'h5py', 
    324     'win32com', 'xhtml2pdf', 'bumps','sasmodels', 'sas', 
     290    'win32com', 'xhtml2pdf', 'bumps', 'sasmodels', 'sas', 
    325291    ] 
    326292packages.extend([ 
     
    337303    ]) 
    338304packages.append('periodictable.core') # not found automatically 
    339 # packages.append('IPython') 
     305 
     306# For the interactive interpreter SasViewCom make sure ipython is available 
     307#packages.extend(['IPython', 'pyreadline', 'pyreadline.unicode_helper']) 
     308 
     309# individual models 
    340310includes = ['site', 'lxml._elementpath', 'lxml.etree'] 
    341311 
     
    345315# Exclude packages that are not needed but are often found on build systems 
    346316excludes = ['Tkinter', 'PyQt4', '_tkagg', 'sip', 'pytz', 'sympy'] 
    347  
    348317 
    349318dll_excludes = [ 
     
    352321    'tcl84.dll', 'tk84.dll', 'QtGui4.dll', 'QtCore4.dll', 
    353322    # numpy 1.8 openmp bindings (still seems to use all the cores without them) 
     323    # ... but we seem to need them when building from anaconda, so don't exclude ... 
    354324    #'libiomp5md.dll', 'libifcoremd.dll', 'libmmd.dll', 'svml_dispmd.dll','libifportMD.dll', 
    355325    'numpy-atlas.dll', 
     
    365335 
    366336target_wx_client = Target( 
    367     description = 'SasView', 
    368     script = 'sasview.py', 
    369     icon_resources = [(1, os.path.join(images_dir, "ball.ico"))], 
    370     other_resources = [(24, 1, manifest)], 
    371     dest_base = "SasView" 
     337    description='SasView', 
     338    script='sasview_gui.py', 
     339    icon_resources=[(1, local_config.SetupIconFile_win)], 
     340    other_resources=[(24, 1, manifest)], 
     341    dest_base="SasView" 
    372342) 
    373343 
    374 # bundle_option = 2 
     344target_console_client = Target( 
     345    description='SasView console', 
     346    script='sasview_console.py', 
     347    icon_resources=[(1, local_config.SetupIconFile_win)], 
     348    other_resources=[(24, 1, manifest)], 
     349    dest_base="SasViewCom" 
     350) 
     351 
     352#bundle_option = 3 if is_64bits else 2 
    375353bundle_option = 3 
    376 if is_64bits: 
    377     bundle_option = 3 
    378354generate_installer() 
    379355#initialize category stuff 
     
    383359setup( 
    384360    windows=[target_wx_client], 
    385     console=[], 
     361    console=[target_console_client], 
    386362    options={ 
    387363        'py2exe': { 
Note: See TracChangeset for help on using the changeset viewer.