#!/bin/bash
-# This script is to package the Cura package for Windows/Linux and OSx
-# This script should run under Linux and OSx, as well as Windows with Cygwin.
+# This script is to package the Cura package for Windows/Linux and Mac OS X
+# This script should run under Linux and Mac OS X, as well as Windows with Cygwin.
#############################
# CONFIGURATION
#############################
##Select the build target
-BUILD_TARGET=${1:-all}
+# BUILD_TARGET=${1:-all}
#BUILD_TARGET=win32
#BUILD_TARGET=linux
-#BUILD_TARGET=osx64
+BUILD_TARGET=darwin
##Do we need to create the final archive
ARCHIVE_FOR_DISTRIBUTION=1
if [ "$BUILD_TARGET" = "all" ]; then
$0 win32
$0 linux
- $0 osx64
+ $0 darwin
exit
fi
+#############################
+# Darwin
+#############################
+
+if [ "$BUILD_TARGET" = "darwin" ]; then
+ rm -rf scripts/darwin/build
+ rm -rf scripts/darwin/dist
+
+ python setup.py py2app
+ rc=$?
+ if [[ $rc != 0 ]]; then
+ echo "Cannot build app."
+ exit 1
+ fi
+
+ cd scripts/darwin
+
+ # Install QuickLook plugin
+ mkdir -p dist/Cura.app/Contents/Library/QuickLook
+ cp STLQuickLook.qlgenerator dist/Cura.app/Contents/Library/QuickLook/
+
+ # Archive app
+ $TAR cfp - dist/Cura.app | gzip --best -c > ../../${TARGET_DIR}.tar.gz
+
+ # Create sparse image for distribution
+ hdiutil detach /Volumes/Cura\ -\ Ultimaker/
+ rm -rf Cura.dmg.sparseimage
+ hdiutil convert DmgTemplateCompressed.dmg -format UDSP -o Cura.dmg
+ hdiutil resize -size 500m Cura.dmg.sparseimage
+ hdiutil attach Cura.dmg.sparseimage
+ cp -a dist/Cura.app /Volumes/Cura\ -\ Ultimaker/Cura/
+ hdiutil detach /Volumes/Cura\ -\ Ultimaker
+ hdiutil convert Cura.dmg.sparseimage -format UDZO -imagekey zlib-level=9 -ov -o ../../${TARGET_DIR}.dmg
+ exit
+fi
+
+#############################
+# Rest
+#############################
+
# Change working directory to the directory the script is in
# http://stackoverflow.com/a/246128
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
downloadURL http://www.uwe-sieber.de/files/ejectmedia.zip
#Get pypy
downloadURL https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-win32.zip
-elif [ $BUILD_TARGET = "osx64" ]; then
- downloadURL https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-${BUILD_TARGET}.tar.bz2
- downloadURL http://python.org/ftp/python/2.7.3/python-2.7.3-macosx10.6.dmg
- downloadURL http://sourceforge.net/projects/numpy/files/NumPy/1.6.2/numpy-1.6.2-py2.7-python.org-macosx10.3.dmg
- downloadURL http://pypi.python.org/packages/source/p/pyserial/pyserial-2.6.tar.gz
- downloadURL http://pypi.python.org/packages/source/P/PyOpenGL/PyOpenGL-3.0.2.tar.gz
- downloadURL http://downloads.sourceforge.net/wxpython/wxPython2.9-osx-2.9.4.0-cocoa-py2.7.dmg
else
downloadURL https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-${BUILD_TARGET}.tar.bz2
fi
extract ffmpeg-20120927-git-13f0cd6-win32-static.7z ffmpeg-20120927-git-13f0cd6-win32-static/licenses
extract comtypes-0.6.2.win32.exe
extract ejectmedia.zip Win32
-
+
mkdir -p ${TARGET_DIR}/python
mkdir -p ${TARGET_DIR}/Cura/
mv \$_OUTDIR/App/* ${TARGET_DIR}/python
rm -rf VideoCapture-0.9-5
rm -rf numpy-1.6.2-sse2.exe
rm -rf ffmpeg-20120927-git-13f0cd6-win32-static
-
+
#Clean up portable python a bit, to keep the package size down.
rm -rf ${TARGET_DIR}/python/PyScripter.*
rm -rf ${TARGET_DIR}/python/Doc
#cd ${TARGET_DIR}
#7z a ../${TARGET_DIR}.zip *
#cd ..
-
+
if [ ! -z `which wine` ]; then
#if we have wine, try to run our nsis script.
rm -rf scripts/win32/dist
ln -sf `pwd`/${TARGET_DIR} scripts/win32/dist
- wine ~/.wine/drive_c/Program\ Files/NSIS/makensis.exe /DVERSION=${BUILD_NAME} scripts/win32/installer.nsi
+ wine ~/.wine/drive_c/Program\ Files/NSIS/makensis.exe /DVERSION=${BUILD_NAME} scripts/win32/installer.nsi
mv scripts/win32/Cura_${BUILD_NAME}.exe ./
fi
if [ -f '/c/Program Files (x86)/NSIS/makensis.exe' ]; then
'/c/Program Files (x86)/NSIS/makensis.exe' -DVERSION=${BUILD_NAME} 'scripts/win32/installer.nsi' >> log.txt
mv scripts/win32/Cura_${BUILD_NAME}.exe ./
fi
- elif [ $BUILD_TARGET = "osx64" ]; then
- echo "Building osx app"
- mkdir -p scripts/osx64/Cura.app/Contents/Resources
- mkdir -p scripts/osx64/Cura.app/Contents/Pkgs
- rm -rf scripts/osx64/Cura.app/Contents/Resources/Cura
- rm -rf scripts/osx64/Cura.app/Contents/Resources/pypy
- cp -a ${TARGET_DIR}/* scripts/osx64/Cura.app/Contents/Resources
- cp python-2.7.3-macosx10.6.dmg scripts/osx64/Cura.app/Contents/Pkgs
- cp numpy-1.6.2-py2.7-python.org-macosx10.3.dmg scripts/osx64/Cura.app/Contents/Pkgs
- cp pyserial-2.6.tar.gz scripts/osx64/Cura.app/Contents/Pkgs
- cp PyOpenGL-3.0.2.tar.gz scripts/osx64/Cura.app/Contents/Pkgs
- cp wxPython2.9-osx-2.9.4.0-cocoa-py2.7.dmg scripts/osx64/Cura.app/Contents/Pkgs
- cd scripts/osx64
- $TAR cfp - Cura.app | gzip --best -c > ../../${TARGET_DIR}.tar.gz
- hdiutil detach /Volumes/Cura\ -\ Ultimaker/
- rm -rf Cura.dmg.sparseimage
- hdiutil convert DmgTemplateCompressed.dmg -format UDSP -o Cura.dmg
- hdiutil resize -size 500m Cura.dmg.sparseimage
- hdiutil attach Cura.dmg.sparseimage
- cp -a Cura.app /Volumes/Cura\ -\ Ultimaker/Cura/
- hdiutil detach /Volumes/Cura\ -\ Ultimaker
- hdiutil convert Cura.dmg.sparseimage -format UDZO -imagekey zlib-level=9 -ov -o ../../${TARGET_DIR}.dmg
else
echo "Archiving to ${TARGET_DIR}.tar.gz"
$TAR cfp - ${TARGET_DIR} | gzip --best -c > ${TARGET_DIR}.tar.gz
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>BuildMachineOSBuild</key>
+ <string>12C60</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeRole</key>
+ <string>QLGenerator</string>
+ <key>LSItemContentTypes</key>
+ <array>
+ <string>com.pleasantsoftware.uti.stl</string>
+ </array>
+ </dict>
+ </array>
+ <key>CFBundleExecutable</key>
+ <string>STLQuickLook</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.pleasantsoftware.qlgenerator.STLQuickLook</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>STLQuickLook</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.1</string>
+ <key>CFBundleVersion</key>
+ <string>2</string>
+ <key>CFPlugInDynamicRegisterFunction</key>
+ <string></string>
+ <key>CFPlugInDynamicRegistration</key>
+ <string>YES</string>
+ <key>CFPlugInFactories</key>
+ <dict>
+ <key>C02E94A7-9A81-43CB-9663-4C4F30F4D259</key>
+ <string>QuickLookGeneratorPluginFactory</string>
+ </dict>
+ <key>CFPlugInTypes</key>
+ <dict>
+ <key>5E2D9680-5022-40FA-B806-43349622E5B9</key>
+ <array>
+ <string>C02E94A7-9A81-43CB-9663-4C4F30F4D259</string>
+ </array>
+ </dict>
+ <key>CFPlugInUnloadFunction</key>
+ <string></string>
+ <key>DTCompiler</key>
+ <string></string>
+ <key>DTPlatformBuild</key>
+ <string>4G2008a</string>
+ <key>DTPlatformVersion</key>
+ <string>GM</string>
+ <key>DTSDKBuild</key>
+ <string>12C37</string>
+ <key>DTSDKName</key>
+ <string>macosx10.8</string>
+ <key>DTXcode</key>
+ <string>0452</string>
+ <key>DTXcodeBuild</key>
+ <string>4G2008a</string>
+ <key>QLNeedsToBeRunInMainThread</key>
+ <false/>
+ <key>QLPreviewHeight</key>
+ <real>600</real>
+ <key>QLPreviewWidth</key>
+ <real>800</real>
+ <key>QLSupportsConcurrentRequests</key>
+ <false/>
+ <key>QLThumbnailMinimumSize</key>
+ <real>48</real>
+</dict>
+</plist>
# coding=utf-8
-
import sys
import os
u'LSItemContentTypes': [u'org.khronos.collada.digital-asset-exchange'],
u'LSHandlerRank': u'Alternate'
},
- {
- u'CFBundleTypeName': u'Stereo Lithography 3D Object',
- u'CFBundleTypeExtensions': [u'stl'],
- u'CFBundleTypeMIMETypes': [u'text/plain'],
- u'CFBundleTypeRole': u'Viewer',
- u'LSHandlerRank': u'Alternate'
- },
{
u'CFBundleTypeName': u'Wavefront 3D Object',
u'CFBundleTypeExtensions': [u'obj'],
u'CFBundleTypeMIMETypes': [u'application/obj-3d'],
u'CFBundleTypeRole': u'Viewer',
u'LSHandlerRank': u'Alternate'
- },
- {
- u'CFBundleTypeName': u'Digital Asset Exchange (DAE)',
- u'CFBundleTypeExtensions': [u'dae'],
- u'CFBundleTypeMIMETypes': [u'model/vnd.collada+xml'],
- u'CFBundleTypeRole': u'Viewer',
- u'LSHandlerRank': u'Alternate'
}
],
u'UTImportedTypeDeclarations': [
u'UTTypeConformsTo': [u'public.data'],
u'UTTypeDescription': u'Stereo Lithography 3D object',
u'UTTypeReferenceURL': u'http://en.wikipedia.org/wiki/STL_(file_format)',
- u'UTTypeTagSpecification:': {u'public.filename-extension': [u'stl']}
+ u'UTTypeTagSpecification': {u'public.filename-extension': [u'stl'], u'public.mime-type': [u'text/plain']}
},
{
u'UTTypeIdentifier': u'org.khronos.collada.digital-asset-exchange',
u'UTTypeConformsTo': [u'public.xml', u'public.audiovisual-content'],
u'UTTypeDescription': u'Digital Asset Exchange (DAE)',
- u'UTTypeTagSpecification': {u'public.filename-extension': [u'dae']}
+ u'UTTypeTagSpecification': {u'public.filename-extension': [u'dae'], u'public.mime-type': [u'model/vnd.collada+xml']}
}
]
}
'includes': ['objc', 'Foundation'],
'resources': DATA_FILES,
'optimize': '2',
- 'plist': PLIST
+ 'plist': PLIST,
+ 'bdist_base': 'scripts/darwin/build',
+ 'dist_dir': 'scripts/darwin/dist'
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
- setup_requires=['py2app'],
+ setup_requires=['py2app']
)
else:
import zipfile