5 if sys.platform.startswith('darwin'):
6 from setuptools import setup
9 DATA_FILES = ['Cura/LICENSE', 'Cura/resources/images', 'Cura/resources/meshes', 'Cura/resources/example', 'Cura/resources/firmware']
11 u'CFBundleName': u'Cura',
12 u'CFBundleShortVersionString': u'13.06.5',
13 u'CFBundleVersion': u'13.06.5',
14 u'CFBundleIdentifier': u'com.ultimaker.Cura',
15 u'LSMinimumSystemVersion': u'10.6',
16 u'LSApplicationCategoryType': u'public.app-category.graphics-design',
17 u'CFBundleDocumentTypes': [
19 u'CFBundleTypeRole': u'Viewer',
20 u'LSItemContentTypes': [u'com.pleasantsoftware.uti.stl'],
21 u'LSHandlerRank': u'Owner',
24 u'CFBundleTypeRole': u'Viewer',
25 u'LSItemContentTypes': [u'org.khronos.collada.digital-asset-exchange'],
26 u'LSHandlerRank': u'Owner'
29 u'CFBundleTypeName': u'Wavefront 3D Object',
30 u'CFBundleTypeExtensions': [u'obj'],
31 u'CFBundleTypeMIMETypes': [u'application/obj-3d'],
32 u'CFBundleTypeRole': u'Viewer',
33 u'LSHandlerRank': u'Owner'
36 u'UTImportedTypeDeclarations': [
38 u'UTTypeIdentifier': u'com.pleasantsoftware.uti.stl',
39 u'UTTypeConformsTo': [u'public.data'],
40 u'UTTypeDescription': u'Stereo Lithography 3D object',
41 u'UTTypeReferenceURL': u'http://en.wikipedia.org/wiki/STL_(file_format)',
42 u'UTTypeTagSpecification': {u'public.filename-extension': [u'stl'], u'public.mime-type': [u'text/plain']}
45 u'UTTypeIdentifier': u'org.khronos.collada.digital-asset-exchange',
46 u'UTTypeConformsTo': [u'public.xml', u'public.audiovisual-content'],
47 u'UTTypeDescription': u'Digital Asset Exchange (DAE)',
48 u'UTTypeTagSpecification': {u'public.filename-extension': [u'dae'], u'public.mime-type': [u'model/vnd.collada+xml']}
51 u'UTTypeIdentifier': u'com.ultimaker.obj',
52 u'UTTypeConformsTo': [u'public.data'],
53 u'UTTypeDescription': u'Wavefront OBJ',
54 u'UTTypeReferenceURL': u'https://en.wikipedia.org/wiki/Wavefront_.obj_file',
55 u'UTTypeTagSpecification': {u'public.filename-extension': [u'obj'], u'public.mime-type': [u'text/plain']}
58 u'UTTypeIdentifier': u'com.ultimaker.amf',
59 u'UTTypeConformsTo': [u'public.data'],
60 u'UTTypeDescription': u'Additive Manufacturing File',
61 u'UTTypeReferenceURL': u'https://en.wikipedia.org/wiki/Additive_Manufacturing_File_Format',
62 u'UTTypeTagSpecification': {u'public.filename-extension': [u'amf'], u'public.mime-type': [u'text/plain']}
67 'argv_emulation': True,
68 'iconfile': 'Cura/resources/Cura.icns',
69 'includes': ['objc', 'Foundation'],
70 'resources': DATA_FILES,
73 'bdist_base': 'scripts/darwin/build',
74 'dist_dir': 'scripts/darwin/dist'
80 data_files=DATA_FILES,
81 options={'py2app': OPTIONS},
82 setup_requires=['py2app']
89 print "ERROR: You need cx-Freeze installed to build this package"
92 freezeVersion = map(int, cx_Freeze.version.split('.'))
93 if freezeVersion[0] < 4 or freezeVersion[0] == 4 and freezeVersion[1] < 2:
94 print "ERROR: Your cx-Freeze version is too old to use with Cura."
97 sys.path.append(os.path.abspath('cura_sf'))
99 # Dependencies are automatically detected, but it might need fine tuning.
100 build_exe_options = {
104 "OpenGL", "OpenGL.arrays", "OpenGL.platform", "OpenGL.GLU",
106 'Tkinter', 'tcl', 'cura_sf', 'fabmetheus_utilities', 'skeinforge_application', 'numpy',
107 ], "include_files": [
108 ('images', 'images'),
109 ], "build_exe": 'freeze_build'}
111 # GUI applications require a different base on Windows (the default is for a
112 # console application).
114 if sys.platform == "win32":
117 cx_Freeze.setup( name = "Cura",
119 description = "Cura",
120 options = {"build_exe": build_exe_options},
121 executables = [cx_Freeze.Executable("cura.py", base=base)])
123 m = cx_Freeze.ModuleFinder(excludes=["gui"])
124 m.IncludeFile(os.path.abspath("cura.py"))
125 m.IncludeFile(os.path.abspath("cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py"))
126 m.IncludeFile(os.path.abspath("cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py"))
127 m.IncludeFile(os.path.abspath("cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py"))
128 for name in os.listdir("cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins"):
129 if name.endswith('.py'):
130 m.IncludeFile(os.path.abspath("cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/" + name))
131 m.ReportMissingModules()
132 cwd = os.path.abspath(".")
134 z = zipfile.ZipFile("freeze_build/cura_sf.zip", "w", zipfile.ZIP_DEFLATED)
135 for mod in m.modules:
136 if mod.file != None and mod.file.startswith(cwd):
137 if mod.file[len(cwd)+1:] == "cura.py":
138 z.write(mod.file[len(cwd)+1:], "__main__.py")
140 z.write(mod.file[len(cwd)+1:])
141 z.write('cura_sf/fabmetheus_utilities/templates/layer_template.svg')
142 z.write('cura_sf/fabmetheus_utilities/version.txt')
143 z.write('__init__.py')