chiark / gitweb /
package.sh is able to package Cura using new build system.
authorIlya Kulakov <kulakov.ilya@gmail.com>
Thu, 6 Dec 2012 12:39:37 +0000 (19:39 +0700)
committerIlya Kulakov <kulakov.ilya@gmail.com>
Thu, 6 Dec 2012 12:39:37 +0000 (19:39 +0700)
.gitignore
package.sh
scripts/darwin/DmgTemplateCompressed.dmg [new file with mode: 0644]
scripts/darwin/STLQuickLook.qlgenerator/Contents/Info.plist [new file with mode: 0644]
scripts/darwin/STLQuickLook.qlgenerator/Contents/MacOS/STLQuickLook [new file with mode: 0755]
scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/English.lproj/InfoPlist.strings [new file with mode: 0644]
scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/stlTagImage.png [new file with mode: 0755]
setup.py

index 6b14fc8016df6f2137c716b43754f3cd87da5238..35c9d5fc4b26f1ac4011c2dea59f7f32c4477053 100644 (file)
@@ -3,7 +3,7 @@
 *.pyc
 *.zip
 *.exe
-osx64-Cura-*
+darwin-Cura-*
 win32-Cura-*
 linux-Cura-*
 Printrun
@@ -18,5 +18,4 @@ printrun.bat
 cura.bat
 object-mirror.png
 object.png
-build/*
-dist/*
+*darwin.dmg
index b3ec909611b89ec69c6c4f4d8753cf1975187265..157d3ab021f224fab5a1acd7b5e4f4dfd0651b90 100755 (executable)
@@ -1,17 +1,17 @@
 #!/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
@@ -62,10 +62,50 @@ function extract
 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 )"
@@ -100,13 +140,6 @@ if [ $BUILD_TARGET = "win32" ]; then
        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
@@ -131,7 +164,7 @@ if [ $BUILD_TARGET = "win32" ]; then
        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
@@ -150,7 +183,7 @@ if [ $BUILD_TARGET = "win32" ]; then
        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
@@ -194,12 +227,12 @@ if (( ${ARCHIVE_FOR_DISTRIBUTION} )); then
                #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
@@ -208,28 +241,6 @@ if (( ${ARCHIVE_FOR_DISTRIBUTION} )); 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
diff --git a/scripts/darwin/DmgTemplateCompressed.dmg b/scripts/darwin/DmgTemplateCompressed.dmg
new file mode 100644 (file)
index 0000000..e982f21
Binary files /dev/null and b/scripts/darwin/DmgTemplateCompressed.dmg differ
diff --git a/scripts/darwin/STLQuickLook.qlgenerator/Contents/Info.plist b/scripts/darwin/STLQuickLook.qlgenerator/Contents/Info.plist
new file mode 100644 (file)
index 0000000..44f52f4
--- /dev/null
@@ -0,0 +1,75 @@
+<?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>
diff --git a/scripts/darwin/STLQuickLook.qlgenerator/Contents/MacOS/STLQuickLook b/scripts/darwin/STLQuickLook.qlgenerator/Contents/MacOS/STLQuickLook
new file mode 100755 (executable)
index 0000000..f004690
Binary files /dev/null and b/scripts/darwin/STLQuickLook.qlgenerator/Contents/MacOS/STLQuickLook differ
diff --git a/scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/English.lproj/InfoPlist.strings b/scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/English.lproj/InfoPlist.strings
new file mode 100644 (file)
index 0000000..1a053bd
Binary files /dev/null and b/scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/English.lproj/InfoPlist.strings differ
diff --git a/scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/stlTagImage.png b/scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/stlTagImage.png
new file mode 100755 (executable)
index 0000000..e0c61a2
Binary files /dev/null and b/scripts/darwin/STLQuickLook.qlgenerator/Contents/Resources/stlTagImage.png differ
index bcd181ff97fed1c31288b5bd5f6f2b76b2d13a2b..4a4830107f936092eef6ca64f811ee5e5c039098 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,4 @@
 # coding=utf-8
-
 import sys
 import os
 
@@ -26,26 +25,12 @@ if sys.platform.startswith('darwin'):
                 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': [
@@ -54,13 +39,13 @@ if sys.platform.startswith('darwin'):
                 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']}
             }
         ]
     }
@@ -70,7 +55,9 @@ if sys.platform.startswith('darwin'):
         'includes': ['objc', 'Foundation'],
         'resources': DATA_FILES,
         'optimize': '2',
-        'plist': PLIST
+        'plist': PLIST,
+        'bdist_base': 'scripts/darwin/build',
+        'dist_dir': 'scripts/darwin/dist'
     }
 
     setup(
@@ -78,7 +65,7 @@ if sys.platform.startswith('darwin'):
         app=APP,
         data_files=DATA_FILES,
         options={'py2app': OPTIONS},
-        setup_requires=['py2app'],
+        setup_requires=['py2app']
     )
 else:
     import zipfile