update osx dmg packaging to new pango
[ardour.git] / tools / osx_packaging / osx_build
1 #!/bin/bash
2
3 # script for pulling together a MacOSX app bundle.
4
5 GTKSTACK_ROOT=$HOME/gtk/inst
6 ARDOURSTACK_ROOT=$HOME/a3/inst
7 BUILD_ROOT=../../build
8
9 # where harvid and xjadeo binaries are cached
10 if test -z "$CACHEDIR" -o ! -d "$CACHEDIR"; then
11         CACHEDIR=`pwd`
12 fi
13
14 SAE=
15 MIXBUS=
16 WITH_HARVID=1
17 WITH_LADSPA=1
18 STRIP=1
19 PRINT_SYSDEPS=
20 WITH_NLS=
21
22 while [ $# -gt 0 ] ; do
23     echo "arg = $1"
24     case $1 in
25
26         #
27         # top level build targets
28         #
29
30         --sae) WITH_NLS= ; 
31                SAE=1 ; 
32                WITH_LADSPA=1; 
33                STRIP= ; 
34                PRODUCT_PKG_DIR=ArdourSAE ; 
35                APPNAME=Ardour ;
36                shift ;;
37         --mixbus) MIXBUS=1; 
38                   WITH_NLS=1 ; 
39                   SAE= ; 
40                   WITH_LADSPA=; 
41                   STRIP= ; 
42                   PRODUCT_PKG_DIR=MixBus;
43                   APPNAME=Mixbus ;
44                   shift ;;
45         --public) WITH_NLS= ; 
46                   SAE= ; 
47                   WITH_LADSPA=1; 
48                   STRIP= ; 
49                   PRODUCT_PKG_DIR=Ardour;
50                   APPNAME=Ardour ;
51                   shift ;;
52         --allinone) SAE= ; 
53                     WITH_NLS= ; 
54                     WITH_LADSPA=1; 
55                     STRIP= ; 
56                     PRODUCT_PKG_DIR=Ardour ;
57                     shift ;;
58         --test) SAE= ; WITH_LADSPA=; STRIP= ; shift ;;
59
60         #
61         # specific build flags
62         #
63
64         --noharvid) WITH_HARVID= ; shift ;;
65         --noladspa) WITH_LADSPA= ; shift ;;
66         --nostrip) STRIP= ; shift ;;
67         --sysdeps) PRINT_SYSDEPS=1; shift ;;
68         --nls) WITH_NLS=1 ; shift ;;
69     esac
70 done
71
72 if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
73         echo "application or product-name was not specified"
74         exit 1
75 fi
76
77 . ../define_versions.sh
78 echo "Version is $release_version / $revision"
79 info_string="$version built on `hostname` by `whoami` on `date`"
80 echo "Info string is $info_string"
81
82 # setup directory structure
83
84 APPDIR=${APPNAME}.app
85 APPROOT=$APPDIR/Contents
86 Frameworks=$APPROOT/lib
87 Resources=$APPROOT/Resources
88 #
89 # Since this is OS X, don't try to distinguish between etc and shared
90 # (machine dependent and independent data) - just put everything
91 # into Resources.
92
93 Shared=$Resources
94 Etc=$Resources
95 Locale=$Resources/locale
96 #
97 # Bundled Plugins live in a top level folder
98
99 Plugins=$APPROOT/Plugins
100 Surfaces=$Frameworks/surfaces
101 Panners=$Frameworks/panners
102 Backends=$Frameworks/backends
103 MidiMaps=$Shared/midi_maps
104 ExportFormats=$Shared/export
105 Templates=$Shared/templates
106 PatchFiles=$Shared/patchfiles
107 MackieControl=$Shared/mcp
108
109 if [ x$PRINT_SYSDEPS != x ] ; then
110 #
111 # print system dependencies
112 #
113
114     for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Plugins/*.so ; do 
115         if ! file $file | grep -qs Mach-O ; then
116             continue
117         fi
118         otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)" 
119     done | sort | uniq
120     exit 0
121 fi
122
123 echo "Removing old $APPDIR tree ..."
124
125 rm -rf $APPDIR
126
127 echo "Building new app directory structure ..."
128
129 # only bother to make the longest paths
130
131 mkdir -p $APPROOT/MacOS
132 mkdir -p $APPROOT/Resources
133 mkdir -p $Plugins
134 mkdir -p $Surfaces
135 mkdir -p $Panners
136 mkdir -p $Backends
137 mkdir -p $MidiMaps
138 mkdir -p $ExportFormats
139 mkdir -p $Templates
140 mkdir -p $Frameworks/modules
141 mkdir -p $Etc
142 mkdir -p $MackieControl
143
144 # maybe set variables
145 env=""
146 if test x$SAE != x ; then
147     appname="Ardour3/SAE"
148     env="$env<key>ARDOUR_SAE</key><string>true</string>"
149     #
150     # current default for SAE version is German keyboard layout without a keypad
151     #
152     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
153     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
154     env="$env<key>ARDOUR3_UI_RC</key><string>ardour3_ui_dark_sae.rc</string>"
155 elif test x$MIXBUS != x ; then
156     appname="Ardour3/Mixbus"
157     env="$env<key>ARDOUR_MIXBUS</key><string>true</string>"
158     #
159     # current default for MIXBUS version is US keyboard layout without a keypad
160     #
161     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
162     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
163     env="$env<key>ARDOUR3_UI_RC</key><string>ardour3_ui_dark.rc</string>"
164 else
165     appname="Ardour3"
166 fi
167
168 #
169 # if we're not going to bundle JACK, make sure we can find
170 # jack in the places where it might be
171 #
172
173 env="$env<key>PATH</key><string>/usr/local/bin:/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>"
174 env="$env<key>DYLIB_FALLBACK_LIBRARY_PATH</key><string>/usr/local/lib:/opt/lib</string>"
175
176 env="<key>LSEnvironment</key><dict>$env<key>ARDOUR_BUNDLED</key><string>true</string></dict>"
177
178 # edit plist
179 sed -e "s?@ENV@?$env?g" \
180     -e "s?@VERSION@?$release_version/$revision?g" \
181     -e "s?@INFOSTRING@?$info_string?g" < Info.plist.in > Info.plist
182 # and plist strings
183 sed -e "s?@APPNAME@?$appname?" \
184     -e "s?@ENV@?$env?g" \
185     -e "s?@VERSION@?$release_version/$revision?g" \
186     -e "s?@INFOSTRING@?$info_string?g" < InfoPlist.strings.in > Resources/InfoPlist.strings || exit 1
187
188 # copy static files
189
190 cp Info.plist $APPROOT
191 cp -R Resources $APPROOT
192
193 #
194 # if we build a bundle without jack, then
195 # make the Ardour3 executable a helper
196 # script that checks to see if JACK is
197 # installed.
198 #
199
200 cp startup_script $APPROOT/MacOS/Ardour3
201 chmod 775 $APPROOT/MacOS/Ardour3
202 MAIN_EXECUTABLE=Ardour3.bin
203
204 echo "Copying ardour executable ...."
205 cp $BUILD_ROOT/gtk2_ardour/ardour-$release_version $APPROOT/MacOS/$MAIN_EXECUTABLE
206 if test x$SAE != x ; then
207     # cp $BUILD_ROOT/gtk2_ardour/evtest $APPROOT/MacOS/gtkevents
208     cp  Ardour3-SAE.icns $Resources/appIcon.icns
209 elif test x$MIXBUS != x ; then
210     cp  Mixbus.icns $Resources/appIcon.icns
211 else
212     cp  Ardour3.icns $Resources/appIcon.icns
213 fi
214 cp  typeArdour.icns $Resources/
215 if test x$STRIP != x ; then
216     strip $APPROOT/MacOS/Ardour3
217 fi
218
219 # copy locale files
220 if test x$WITH_NLS != x ; then
221     echo "NLS support ..."
222     echo "I hope you remembered to run scons msgupdate!"
223     LINGUAS=
224     for file in $BUILD_ROOT/gtk2_ardour/*.mo 
225     do
226         lang=`basename $file | sed 's/\.mo//'`
227         mkdir -p $Locale/$lang/LC_MESSAGES
228         cp $file $Locale/$lang/LC_MESSAGES/gtk2_ardour.mo
229         LINGUAS="$LINGUAS $lang"
230     done
231     for file in $BUILD_ROOT/libs/ardour/*.mo 
232     do
233         lang=`basename $file | sed 's/\.mo//'`
234         mkdir -p $Locale/$lang/LC_MESSAGES
235         cp $file $Locale/$lang/LC_MESSAGES/libardour.mo
236     done
237     for l in $LINGUAS
238     do
239       if [ -d $GTKSTACK_ROOT/share/locale/$l ] ; then
240           echo "Copying GTK i18n files for $l..."
241           cp -r $GTKSTACK_ROOT/share/locale/$l $Locale
242       else
243           # try with just the language spec
244           just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
245           if [ -d $GTKSTACK_ROOT/share/locale/$just_lang ] ; then
246               echo "Copying GTK i18n files for $l..."
247               cp -r $GTKSTACK_ROOT/share/locale/$just_lang $Locale
248           fi
249       fi
250     done
251 else
252     echo "Skipping NLS support"
253 fi
254
255 #
256 # Copy stuff that may be dynamically loaded
257
258
259 cp -R $GTKSTACK_ROOT/etc/* $Etc
260 echo "Copying all Pango modules ..."
261 cp -R $GTKSTACK_ROOT/lib/pango/1.8.0/modules/*.so $Frameworks/modules
262 echo "Copying all GDK Pixbuf loaders ..."
263 cp -R $GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so $Frameworks/modules
264 # charset alias file
265 cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources
266
267 # generate new Pango module file
268 cat > pangorc <<EOF 
269 [Pango]
270 ModulesPath=$GTKSTACK_ROOT/lib/pango/1.6.0/modules
271 EOF
272 env PANGO_RC_FILE=pangorc $GTKSTACK_ROOT/bin/pango-querymodules | sed "s?$GTKSTACK_ROOT/lib/pango/1.8.0/modules/?@executable_path/../lib/modules/?" > $Resources/pango.modules
273 rm pangorc
274
275 # generate a new GDK pixbufs loaders file
276 gdk-pixbuf-query-loaders | sed "s?$GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/?@executable_path/../lib/modules/?" > $Resources/gdk-pixbuf.loaders
277
278 # We rely on clearlooks, so include a version from our own build tree
279 # this one is special - we will set GTK_PATH to $Frameworks/gtkengines
280
281 GTK_ENGINE_DIR=$Frameworks/gtkengines/engines
282 mkdir -p $GTK_ENGINE_DIR
283
284 echo "Copying GTK engines ..."
285 cp $BUILD_ROOT/libs/clearlooks-newer/libclearlooks.dylib $Frameworks
286 (cd $GTK_ENGINE_DIR && ln -s ../../libclearlooks.dylib . && ln -s ../../libclearlooks.dylib libclearlooks.so)
287
288 cp $GTKSTACK_ROOT/lib/gtk-2.0/2.10.0/engines/libpixmap.so $Frameworks
289 (cd $GTK_ENGINE_DIR && ln -s ../../libpixmap.so)
290
291
292 if test x$WITH_LADSPA != x ; then
293     if test x$SAE != x ; then
294         plugdir=sae_ladspa
295     elif test x$MIXBUS != x ; then
296         plugdir=mixbus_ladspa
297     else
298         plugdir=ladspa
299     fi
300     if [ -d $plugdir -a "x$(ls $plugdir)" != x ] ; then 
301         echo "Copying `ls $plugdir | wc -l` plugins ..."
302         cp -r $plugdir/* $Plugins
303     fi
304 fi
305
306 # Control Surface shared libraries
307 cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
308 cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
309
310 # Panners
311 cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
312
313 # Backends
314 cp $BUILD_ROOT/libs/backends/*/lib*.dylib $Backends
315
316 # Export Formats/Presets
317 for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do 
318     cp "$f" $ExportFormats ; 
319 done
320
321 # Session and Route templates
322 #for f in $BUILD_ROOT/../templates/* ; do 
323 #    if [ -d "$f" ] ; then
324 #        cp -r "$f" $Templates ; 
325 #    fi
326 #done
327
328 # MidiMaps
329 # got to be careful with names here
330 for x in $BUILD_ROOT/../midi_maps/*.map ; do
331     cp "$x" $MidiMaps
332 done
333
334 # MIDNAM Patch Files
335 # got to be careful with names here
336 for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
337     cp "$x" $PatchFiles
338 done
339
340 # MackieControl data
341 # got to be careful with names here
342 for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
343     cp "$x" $MackieControl
344 done
345
346 # VAMP plugins that we use
347 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
348
349 # Suil modules
350 cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
351
352 while [ true ] ; do 
353     missing=false
354     for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do 
355         if ! file $file | grep -qs Mach-O ; then
356             continue
357         fi
358         deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | grep -v 'libjack\.'`
359         # echo -n "."
360         for dep in $deps ; do
361             base=`basename $dep`
362             if ! test -f $Frameworks/$base; then
363                 if echo $dep | grep -sq '^libs' ; then
364                     cp $BUILD_ROOT/$dep $Frameworks
365                 else
366                     cp $dep $Frameworks
367                 fi
368                 missing=true
369             fi
370         done
371     done
372     if test x$missing = xfalse ; then
373         # everything has been found
374         break
375     fi
376 done
377 echo
378
379 echo "Copying other stuff to $APPDIR  ..."
380
381 #cp $BUILD_ROOT/gtk2_ardour/ergonomic-us.bindings  $Resources
382
383 cp $BUILD_ROOT/gtk2_ardour/mnemonic-us.bindings  $Resources
384 cp ../../gtk2_ardour/mixer.bindings $Resources
385 cp ../../gtk2_ardour/step_editing.bindings $Resources
386 cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Resources
387
388 if test x$SAE != x ; then
389     cp $BUILD_ROOT/gtk2_ardour/SAE-de-keypad.bindings  $Resources
390     cp $BUILD_ROOT/gtk2_ardour/SAE-de-nokeypad.bindings  $Resources
391     cp $BUILD_ROOT/gtk2_ardour/SAE-us-keypad.bindings  $Resources
392     cp $BUILD_ROOT/gtk2_ardour/SAE-us-nokeypad.bindings  $Resources
393     cp $BUILD_ROOT/ardour_system_sae.rc $Resources/ardour_system.rc
394     echo cp $BUILD_ROOT/ardour_system_sae.rc $Resources/ardour_system.rc
395     cp $BUILD_ROOT/instant.xml.sae $Resources/instant.xml
396     echo cp $BUILD_ROOT/instant.xml.sae $Resources/instant.xml
397 else
398     cp ../../ardour_system.rc $Resources/ardour_system.rc
399     cp ../../instant.xml $Resources/instant.xml
400     echo cp ../../instant.xml $Resources/instant.xml
401 fi
402 cp ../../gtk2_ardour/ardour3_ui_default.conf $Resources
403 cp ../../gtk2_ardour/ardour3_ui_default.conf $Resources/ardour3_ui.conf
404 cp $BUILD_ROOT/gtk2_ardour/ardour3_ui_light.rc $Resources
405 cp $BUILD_ROOT/gtk2_ardour/ardour3_ui_dark.rc $Resources
406
407 cp -r ../../gtk2_ardour/icons $Resources
408 cp -r ../../gtk2_ardour/pixmaps $Resources
409
410 # shared stuff
411 cp -R ../../gtk2_ardour/splash.png $Shared
412 cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared
413
414 # go through and recursively remove any .svn dirs in the bundle
415 for svndir in `find $APPDIR -name .svn -type dir`; do
416     rm -rf $svndir
417 done
418
419 # now fix up the executables
420 echo "Fixing up executable dependency names ..."
421 executables=$MAIN_EXECUTABLE
422 if test x$SAE != x ; then
423     executables="$executables"
424 fi
425
426 for exe in $executables; do
427     EXE=$APPROOT/MacOS/$exe
428     changes=""
429     for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
430       base=`basename $lib`
431       changes="$changes -change $lib @executable_path/../lib/$base"
432     done
433     if test "x$changes" != "x" ; then
434         install_name_tool $changes $EXE
435     fi
436 done
437
438 echo "Fixing up library names ..."
439 # now do the same for all the libraries we include
440 for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners ; do
441
442     libbase=`basename $libdir`
443     
444     for dylib in $libdir/*.dylib $libdir/*.so ; do
445         
446        # skip symlinks
447         
448         if test -L $dylib ; then
449             continue
450         fi
451         
452         # change all the dependencies
453         
454         changes=""
455         for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
456             base=`basename $lib`
457             if echo $lib | grep -s libbase; then
458                 changes="$changes -change $lib @executable_path/../$libbase/$base"
459             else
460                 changes="$changes -change $lib @executable_path/../lib/$base"
461             fi
462         done
463         
464         if test "x$changes" != x ; then
465             if  install_name_tool $changes $dylib ; then
466                 :
467             else
468                 exit 1
469             fi
470         fi
471         
472         # now the change what the library thinks its own name is
473         
474         base=`basename $dylib`
475         install_name_tool -id @executable_path/../$libbase/$base $dylib
476     done
477 done
478
479 #
480 # and now ... the DMG
481
482
483 rm -rf $PRODUCT_PKG_DIR
484 mkdir $PRODUCT_PKG_DIR
485
486 DMGWINBOTTOM=440
487 DMGBACKGROUND=dmgbg.png
488
489 if [ x$SAE != x ] ; then
490         
491     # SAE packaging
492     
493     echo "Creating SAE packaging directory"
494     mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
495     cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
496     cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
497     cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
498     
499 elif [ x$MIXBUS != x ] ; then
500
501      # Mixbus packaging
502
503     echo "Creating Mixbus packaging directory"
504     mv $APPDIR $PRODUCT_PKG_DIR/
505     cp MixBus_Install_QuickStart.pdf "$PRODUCT_PKG_DIR/Mixbus Install & Quick Start Guide.pdf"
506                 DMGWINBOTTOM=580
507                 YPOS=$[ $DMGWINBOTTOM - 300 ]
508                 MIXBUSPOS="set position of item \"MixBus_Install_QuickStart.pdf\" of container window to {90, ${YPOS}}"
509 else 
510
511     echo "Creating $APPNAME packaging directory"
512     mv $APPDIR $PRODUCT_PKG_DIR/
513
514 fi
515
516 if test x$WITH_HARVID != x ; then
517         echo "installing video tools.."
518         HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
519         XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
520         echo "copying harvid and xjadeo ..."
521
522         rsync -Pa \
523                 rsync://ardour.org/video-tools/harvid-osx-${HARVID_VERSION}.tgz \
524                 "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
525
526         rsync -Pa \
527                 rsync://ardour.org/video-tools/jadeo-${XJADEO_VERSION:1}.dmg \
528                 "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg"
529
530         tar -x -z \
531                 -C $PRODUCT_PKG_DIR/$APPROOT \
532                 -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
533
534         JADEO=$(hdiutil attach "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg" | grep Apple_HFS | grep dev/ | cut -f 3)
535         cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
536         hdiutil detach "${JADEO}"
537
538         DMGWINBOTTOM=580
539         YPOS=$[ $DMGWINBOTTOM - 300 ]
540         XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
541
542         DMGBACKGROUND=dmgbgxj.png
543 fi
544
545 echo "Building DMG ..."
546
547 # UC_DMG=$APPNAME-${release_version}-${revision}-UC.dmg
548 # FINAL_DMG=$APPNAME-${release_version}-${revision}.dmg
549 UC_DMG=$APPNAME-$version.dmg
550 VOLNAME=$APPNAME-$version
551
552 # TODO use mktemp
553 export TMPDIR=`pwd`
554 MNTPATH=`mktemp -d -t /ardourimg`
555 TMPDMG=`mktemp -t ardour`
556 ICNSTMP=`mktemp -t ardouricon`
557 EXTRA_SPACE_MB=30
558 DMGMEGABYTES=$[ `du -sk "$PRODUCT_PKG_DIR" | cut -f 1` * 1024 / 1048576 + $EXTRA_SPACE_MB ]
559
560 echo "DMG MB = " $DMGMEGABYTES
561
562 rm -f $UC_DMG "$TMPDMG" "${TMPDMG}.dmg" "$ICNSTMP"
563 rm -rf "$MNTPATH"
564 mkdir -p "$MNTPATH"
565
566 TMPDMG="${TMPDMG}.dmg"
567
568 hdiutil create -megabytes $DMGMEGABYTES "$TMPDMG"
569 DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
570 newfs_hfs -v "${VOLNAME}" "${DiskDevice}"
571 mount -t hfs "${DiskDevice}" "${MNTPATH}"
572
573 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
574 mkdir "${MNTPATH}/.background"
575 cp -vi ${DMGBACKGROUND} "${MNTPATH}/.background/dmgbg.png"
576
577 echo "setting DMG background ..."
578
579 echo '
580    tell application "Finder"
581      tell disk "'${VOLNAME}'"
582            open
583            set current view of container window to icon view
584            set toolbar visible of container window to false
585            set statusbar visible of container window to false
586            set the bounds of container window to {400, 200, 800, '${DMGWINBOTTOM}'}
587            set theViewOptions to the icon view options of container window
588            set arrangement of theViewOptions to not arranged
589            set icon size of theViewOptions to 64
590            set background picture of theViewOptions to file ".background:dmgbg.png"
591            make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
592            set position of item "'${APPDIR}'" of container window to {90, 100}
593            set position of item "Applications" of container window to {310, 100}
594            '${MIXBUSPOS}'
595            '${HARVIDPOS}'
596            '${XJADEOPOS}'
597            close
598            open
599            update without registering applications
600            delay 5
601            eject
602      end tell
603    end tell
604 ' | osascript
605
606 chmod -Rf go-w "${MNTPATH}"
607 sync
608
609 echo "compressing Image ..."
610
611 # Umount the image
612 umount "${DiskDevice}"
613 hdiutil eject "${DiskDevice}"
614 # Create a read-only version, use zlib compression
615 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
616 # Delete the temporary files
617 rm "$TMPDMG"
618 rm -rf "$MNTPATH"
619
620 echo "setting file icon ..."
621
622 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
623 /usr/bin/sips -i ${ICNSTMP}.icns
624 /Developer/Tools/DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
625 /Developer/Tools/Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
626 /Developer/Tools/SetFile -a C "$UC_DMG"
627
628 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
629
630 echo
631 echo "packaging suceeded."
632 ls -l "$UC_DMG"
633
634 echo "Done."
635 exit