source: sasview/sasview/setup_mac.py @ 1d310bb

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 1d310bb was b58654c, checked in by Piotr Rozyczko <rozyczko@…>, 8 years ago

Remove stale reference

  • Property mode set to 100644
File size: 5.2 KB
RevLine 
[3a39c2e]1"""
2This is a setup.py script partly generated by py2applet
3
4Usage:
5    python setup.py py2app
[bd971ec]6
7
[3a39c2e]8NOTES:
9   12/01/2011: When seeing an error related to pytz.zoneinfo not being found, change the following line in py2app/recipes/matplotlib.py
10               mf.import_hook('pytz.tzinfo', m, ['UTC'])
11   12/05/2011: Needs macholib >= 1.4.3 and py2app >= 0.6.4 to create a 64-bit app
12"""
13from setuptools import setup
14import periodictable.xsf
[bd971ec]15import sas.sascalc.dataloader.readers
[3a39c2e]16import os
17import string
18import local_config
19import pytz
20import sys
21import platform
[70be725]22#Extending recursion limit
23sys.setrecursionlimit(10000)
[3a39c2e]24
[a8d882a]25from distutils.util import get_platform
26root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
27platform = '%s-%s'%(get_platform(),sys.version[:3])
[5881b17]28build_path = os.path.join(root, 'build','lib.'+platform)
[a8d882a]29sys.path.insert(0, build_path)
[5881b17]30print "BUILDING PATH INSIDE", build_path
[3a39c2e]31ICON = local_config.SetupIconFile_mac
32EXTENSIONS_LIST = []
33DATA_FILES = []
34RESOURCES_FILES = []
35
36#Periodictable data file
37DATA_FILES = periodictable.data_files()
38#invariant and calculator help doc
[d85c194]39import sas.sasgui.perspectives.fitting as fitting
[3a39c2e]40DATA_FILES += fitting.data_files()
[d85c194]41import sas.sasgui.perspectives.calculator as calculator
[3a39c2e]42DATA_FILES += calculator.data_files()
[d85c194]43import sas.sasgui.perspectives.invariant as invariant
[3a39c2e]44DATA_FILES += invariant.data_files()
[aa4a549]45import sasmodels as models
[3a39c2e]46DATA_FILES += models.data_files()
[d85c194]47import sas.sasgui.guiframe as guiframe
[3a39c2e]48DATA_FILES += guiframe.data_files()
49
50#CANSAxml reader data files
[55c7d4b]51RESOURCES_FILES.append(os.path.join(sas.sascalc.dataloader.readers.get_data_path(),'defaults.json'))
[3a39c2e]52
53# Locate libxml2 library
54lib_locs = ['/usr/local/lib', '/usr/lib']
55libxml_path = None
56for item in lib_locs:
57    libxml_path_test = '%s/libxml2.2.dylib' % item
[bd971ec]58    if os.path.isfile(libxml_path_test):
[3a39c2e]59        libxml_path = libxml_path_test
60if libxml_path == None:
61    raise RuntimeError, "Could not find libxml2 on the system"
62
63APP = ['sasview.py']
[b58654c]64DATA_FILES += ['images','test','media', 'custom_config.py', 'local_config.py']
[3a39c2e]65if os.path.isfile("BUILD_NUMBER"):
66    DATA_FILES.append("BUILD_NUMBER")
[a8d882a]67
68# See if the documentation has been built, and if so include it.
[5881b17]69doc_path = os.path.join(build_path, "doc")
[70be725]70print doc_path
[a8d882a]71if os.path.exists(doc_path):
72    for dirpath, dirnames, filenames in os.walk(doc_path):
73        for filename in filenames:
[5881b17]74            sub_dir = os.path.join("doc", os.path.relpath(dirpath, doc_path))
[018582f]75            DATA_FILES.append((sub_dir, [os.path.join(dirpath, filename)]))
[a8d882a]76else:
77    raise Exception("You must first build the documentation before creating an installer.")
[bd971ec]78
[3a39c2e]79# locate file extensions
80def find_extension():
81    """
82    Describe the extensions that can be read by the current application
83    """
84    try:
85        list = []
86        EXCEPTION_LIST = ['*', '.', '']
[b699768]87        from sas.sascalc.dataloader.loader import Loader
[3a39c2e]88        wild_cards = Loader().get_wildcards()
89        for item in wild_cards:
90            #['All (*.*)|*.*']
91            file_type, ext = string.split(item, "|*.", 1)
92            if ext.strip() not in EXCEPTION_LIST and ext.strip() not in list:
93                list.append(ext)
94    except:
95        pass
96    try:
97        file_type, ext = string.split(local_config.APPLICATION_WLIST, "|*.", 1)
98        if ext.strip() not in EXCEPTION_LIST and ext.strip() not in list:
99            list.append(ext)
100    except:
101        pass
102    try:
103        for item in local_config.PLUGINS_WLIST:
104            file_type, ext = string.split(item, "|*.", 1)
105            if ext.strip() not in EXCEPTION_LIST and ext.strip() not in list:
[bd971ec]106                list.append(ext)
[3a39c2e]107    except:
108        pass
[bd971ec]109
[3a39c2e]110    return list
111
112EXTENSIONS_LIST = find_extension()
113
[bd971ec]114
[3a39c2e]115plist = dict(CFBundleDocumentTypes=[dict(CFBundleTypeExtensions=EXTENSIONS_LIST,
116                                         CFBundleTypeIconFile=ICON,
117                                   CFBundleTypeName="sasview file",
118                                   CFBundleTypeRole="Shell" )],)
119
[49cd712]120#Get version - NB nasty hack. Need to find correct way to give path to installed sasview (AJJ)
[3d8e3c7]121#h5py has been added to packages. It requires hdf5 to be installed separetly
122#
[49cd712]123import __init__ as sasviewver
124
125VERSION = sasviewver.__version__
[369ac54]126APPNAME = "SasView "+VERSION
[e8e3e38]127DMGNAME = "SasView-"+VERSION+"-MacOSX"
[369ac54]128
[3a39c2e]129APP = ['sasview.py']
130DATA_FILES += ['images','test','media']
131
132EXCLUDES = ['PyQt4', 'sip', 'QtGui']
133
134OPTIONS = {'argv_emulation': True,
135           'packages': ['lxml','numpy', 'scipy', 'pytz', 'encodings',
136                        'encodings','matplotlib', 'periodictable',
[a929b6b]137                        'reportlab','sasmodels',"pyopencl", "h5py"
[3a39c2e]138                        ],
139           'iconfile': ICON,
140           'frameworks':[libxml_path],
141           'resources': RESOURCES_FILES,
142           'plist':plist,
143           'excludes' : EXCLUDES,
144           }
145setup(
[369ac54]146    name=APPNAME,
[3a39c2e]147    app=APP,
148    data_files=DATA_FILES,
149    include_package_data= True,
150    options={'py2app': OPTIONS},
151    setup_requires=['py2app'],
152)
[369ac54]153
154#Build dmg
155DMG="dist/%s.dmg"%DMGNAME
156if os.path.exists(DMG): os.unlink(DMG)
[66b42f6]157os.system('cd dist && ../../build_tools/dmgpack.sh "%s" "%s.app"'%(DMGNAME,APPNAME))
[369ac54]158os.system('chmod a+r "%s"'%DMG)
Note: See TracBrowser for help on using the repository browser.