Code

Set the xml:space attribute on <svg> once rather than on every <text>
[inkscape.git] / packaging / macosx / osx-dmg.sh
index 0b11d4fe00ed703ff00cbc6f24727088ee90fcc5..91aefdd41d6be74cdae6f0b878635009c5773064 100755 (executable)
@@ -3,8 +3,9 @@
 # Inkscape packaging script for Mac OS X
 #
 # The script creates a read-write disk image, 
-# copies Inkscape in it, customizes its appearance using a 
-# previously created .DS_Store file (inkscape.ds_store),
+# copies Inkscape in it, copies additional python packages
+# if needed, customizes its appearance using a 
+# previously created .DS_Store file (inkscape*.ds_store),
 # and then compresses the disk image for distribution.
 #
 # Authors:
 #
 # Run this script with the '-s' option.  It will apply the
 # 'dmg_set_style.scpt' AppleScript file, and then prompt the
-# user to check the window size and position before writing
+# user to check the window size and position before writing
 # a new 'inkscape.ds_store' file to work around a bug in Finder
 # and AppleScript.  The updated 'inkscape.ds_store' will need 
 # to be commited to the repository when this is done.
 #
 
+# Defaults
 set_ds_store=false
-if [ "$1" = "-s" ]; then
-       set_ds_store=true
-       shift
-fi
-
+add_python=false
+ds_store_file="inkscape.ds_store"
+package="Inkscape.app"
 RWNAME="RWinkscape.dmg"
 VOLNAME="Inkscape"
-FIRSTTIME="false"
 TMPDIR="/tmp/dmg-$$"
+AUTOOPENOPT=
+
+# Parse command line arguments
+while [ "$1" != "" ]
+do
+       case $1 in
+               -s)
+                       set_ds_store=true ;;
+               -py|--with-python)
+                       add_python=true
+                       python_dir="$2"
+                       ds_store_file="inkscape_python.ds_store"
+                       shift 1 ;;
+       esac
+       shift 1
+done
+# some checks
+if [ ! -e "$package" ]; then
+       echo "Cannot find $package"
+       exit 1
+fi
+if [ ${add_python} = "true" ]; then
+       if [ ! -e "$python_dir" ]; then
+               echo "Cannot find your python packages directory"
+               exit 1
+       fi
+fi
 
 # Create temp directory with desired contents of the release volume.
 rm -rf "$TMPDIR"
 mkdir "$TMPDIR"
 
 echo "Copying files to temp directory..."
-# Copy Inkscape.app folder.
-cp -rf ../Inkscape.app "$TMPDIR"/
-
+# Inkscape itself
+# copy Inkscape.app
+cp -rf "$package" "$TMPDIR"/
 # link to Applications in order to drag and drop inkscape onto it.
 ln -sf /Applications "$TMPDIR"/
-       
+
+# Python
+if [ ${add_python} = "true" ]; then
+       # copy python libraries
+       cp -rf "$python_dir"/* "$TMPDIR"/
+       # link python environment in order to drag and drop inkscape onto it
+       ln -sf /System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages "$TMPDIR"/Python\ site-packages
+fi
+
 # Copy a background image inside a hidden directory so the image
 # file itself won't be shown.
 mkdir "$TMPDIR/.background"
 cp dmg_background.png "$TMPDIR/.background/background.png"
 
-AUTOOPENOPT=
+# If the appearance settings are not to be modified we just copy them
 if [ ${set_ds_store} = "false" ]; then
        # Copy the .DS_Store file which contains information about
        # window size, appearance, etc.  Most of this can be set
-       # with Apple script but involves user intervention so we
+       # with Apple script but involves user intervention so we
        # just keep a copy of the correct settings and use that instead.
-       cp inkscape.ds_store "$TMPDIR/.DS_Store"
+       cp $ds_store_file "$TMPDIR/.DS_Store"
        AUTOOPENOPT=-noautoopen
 fi
 
 # Create a new RW image from the temp directory.
 echo "Creating a new RW disk image..."
 rm -f "$RWNAME"
-/usr/bin/hdiutil create -srcfolder "tmp-dmg" -volname "$VOLNAME" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW "$RWNAME"
+/usr/bin/hdiutil create -srcfolder "$TMPDIR" -volname "$VOLNAME" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW "$RWNAME"
 
 # We're finished with the temp directory, remove it.
 rm -rf "$TMPDIR"
@@ -84,6 +118,7 @@ DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify $AUTOOPENOPT  "$RWNAME" |
 # Have the disk image window open automatically when mounted.
 bless -openfolder /Volumes/$VOLNAME
 
+# In case the apperance has to be modified, mount the image and apply the base settings to it via Applescript
 if [ ${set_ds_store} = "true" ]; then
        /usr/bin/osascript dmg_set_style.scpt
 
@@ -105,8 +140,9 @@ if [ ${set_ds_store} = "true" ]; then
        AUTOOPENOPT=-noautoopen
        DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify $AUTOOPENOPT  "$RWNAME" | egrep '^/dev/' | sed 1q | awk '{print $1}'`
        echo
-       echo "New inkscape.ds_store file written."
-       cp /Volumes/$VOLNAME/.DS_Store ./inkscape.ds_store
+       echo "New $ds_store_file file written. Re-run $0 without the -s option to use it"
+       cp /Volumes/$VOLNAME/.DS_Store ./$ds_store_file
+       SetFile -a v ./$ds_store_file
 
        # Unmount the disk image.
        hdiutil detach "$DEV_NAME"
@@ -119,7 +155,7 @@ fi
 hdiutil detach "$DEV_NAME"
 
 # Create the offical release image by compressing the RW one.
-DATE=`date "+%Y%m%d"`
-/usr/bin/hdiutil convert "$RWNAME" -format UDZO -imagekey zlib-level=9 -o "../Inkscape_$DATE.dmg"
+/usr/bin/hdiutil convert "$RWNAME" -format UDZO -imagekey zlib-level=9 -o "Inkscape.dmg"
 rm -f "$RWNAME"
 
+exit 0