package small-splash image in binary bundles
[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.8.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/small-splash.png $Shared
413 cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared
414
415 # go through and recursively remove any .svn dirs in the bundle
416 for svndir in `find $APPDIR -name .svn -type dir`; do
417     rm -rf $svndir
418 done
419
420 # now fix up the executables
421 echo "Fixing up executable dependency names ..."
422 executables=$MAIN_EXECUTABLE
423 if test x$SAE != x ; then
424     executables="$executables"
425 fi
426
427 for exe in $executables; do
428     EXE=$APPROOT/MacOS/$exe
429     changes=""
430     for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
431       base=`basename $lib`
432       changes="$changes -change $lib @executable_path/../lib/$base"
433     done
434     if test "x$changes" != "x" ; then
435         install_name_tool $changes $EXE
436     fi
437 done
438
439 echo "Fixing up library names ..."
440 # now do the same for all the libraries we include
441 for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners ; do
442
443     libbase=`basename $libdir`
444     
445     for dylib in $libdir/*.dylib $libdir/*.so ; do
446         
447        # skip symlinks
448         
449         if test -L $dylib ; then
450             continue
451         fi
452         
453         # change all the dependencies
454         
455         changes=""
456         for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
457             base=`basename $lib`
458             if echo $lib | grep -s libbase; then
459                 changes="$changes -change $lib @executable_path/../$libbase/$base"
460             else
461                 changes="$changes -change $lib @executable_path/../lib/$base"
462             fi
463         done
464         
465         if test "x$changes" != x ; then
466             if  install_name_tool $changes $dylib ; then
467                 :
468             else
469                 exit 1
470             fi
471         fi
472         
473         # now the change what the library thinks its own name is
474         
475         base=`basename $dylib`
476         install_name_tool -id @executable_path/../$libbase/$base $dylib
477     done
478 done
479
480 #
481 # and now ... the DMG
482
483
484 rm -rf $PRODUCT_PKG_DIR
485 mkdir $PRODUCT_PKG_DIR
486
487 DMGWINBOTTOM=440
488 DMGBACKGROUND=dmgbg.png
489
490 if [ x$SAE != x ] ; then
491         
492     # SAE packaging
493     
494     echo "Creating SAE packaging directory"
495     mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
496     cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
497     cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
498     cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
499     
500 elif [ x$MIXBUS != x ] ; then
501
502      # Mixbus packaging
503
504     echo "Creating Mixbus packaging directory"
505     mv $APPDIR $PRODUCT_PKG_DIR/
506     cp MixBus_Install_QuickStart.pdf "$PRODUCT_PKG_DIR/Mixbus Install & Quick Start Guide.pdf"
507                 DMGWINBOTTOM=580
508                 YPOS=$[ $DMGWINBOTTOM - 300 ]
509                 MIXBUSPOS="set position of item \"MixBus_Install_QuickStart.pdf\" of container window to {90, ${YPOS}}"
510 else 
511
512     echo "Creating $APPNAME packaging directory"
513     mv $APPDIR $PRODUCT_PKG_DIR/
514
515 fi
516
517 if test x$WITH_HARVID != x ; then
518         echo "installing video tools.."
519         HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
520         XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
521         echo "copying harvid and xjadeo ..."
522
523         rsync -Pa \
524                 rsync://ardour.org/video-tools/harvid-osx-${HARVID_VERSION}.tgz \
525                 "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
526
527         rsync -Pa \
528                 rsync://ardour.org/video-tools/jadeo-${XJADEO_VERSION:1}.dmg \
529                 "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg"
530
531         tar -x -z \
532                 -C $PRODUCT_PKG_DIR/$APPROOT \
533                 -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
534
535         JADEO=$(hdiutil attach "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg" | grep Apple_HFS | grep dev/ | cut -f 3)
536         cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
537         hdiutil detach "${JADEO}"
538
539         DMGWINBOTTOM=580
540         YPOS=$[ $DMGWINBOTTOM - 300 ]
541         XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
542
543         DMGBACKGROUND=dmgbgxj.png
544 fi
545
546 echo "Building DMG ..."
547
548 # UC_DMG=$APPNAME-${release_version}-${revision}-UC.dmg
549 # FINAL_DMG=$APPNAME-${release_version}-${revision}.dmg
550 UC_DMG=$APPNAME-$version.dmg
551 VOLNAME=$APPNAME-$version
552
553 # TODO use mktemp
554 export TMPDIR=`pwd`
555 MNTPATH=`mktemp -d -t /ardourimg`
556 TMPDMG=`mktemp -t ardour`
557 ICNSTMP=`mktemp -t ardouricon`
558 EXTRA_SPACE_MB=30
559 DMGMEGABYTES=$[ `du -sk "$PRODUCT_PKG_DIR" | cut -f 1` * 1024 / 1048576 + $EXTRA_SPACE_MB ]
560
561 echo "DMG MB = " $DMGMEGABYTES
562
563 rm -f $UC_DMG "$TMPDMG" "${TMPDMG}.dmg" "$ICNSTMP"
564 rm -rf "$MNTPATH"
565 mkdir -p "$MNTPATH"
566
567 TMPDMG="${TMPDMG}.dmg"
568
569 hdiutil create -megabytes $DMGMEGABYTES "$TMPDMG"
570 DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
571 newfs_hfs -v "${VOLNAME}" "${DiskDevice}"
572 mount -t hfs "${DiskDevice}" "${MNTPATH}"
573
574 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
575 mkdir "${MNTPATH}/.background"
576 cp -vi ${DMGBACKGROUND} "${MNTPATH}/.background/dmgbg.png"
577
578 echo "setting DMG background ..."
579
580 echo '
581    tell application "Finder"
582      tell disk "'${VOLNAME}'"
583            open
584            set current view of container window to icon view
585            set toolbar visible of container window to false
586            set statusbar visible of container window to false
587            set the bounds of container window to {400, 200, 800, '${DMGWINBOTTOM}'}
588            set theViewOptions to the icon view options of container window
589            set arrangement of theViewOptions to not arranged
590            set icon size of theViewOptions to 64
591            set background picture of theViewOptions to file ".background:dmgbg.png"
592            make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
593            set position of item "'${APPDIR}'" of container window to {90, 100}
594            set position of item "Applications" of container window to {310, 100}
595            '${MIXBUSPOS}'
596            '${HARVIDPOS}'
597            '${XJADEOPOS}'
598            close
599            open
600            update without registering applications
601            delay 5
602            eject
603      end tell
604    end tell
605 ' | osascript
606
607 chmod -Rf go-w "${MNTPATH}"
608 sync
609
610 echo "compressing Image ..."
611
612 # Umount the image
613 umount "${DiskDevice}"
614 hdiutil eject "${DiskDevice}"
615 # Create a read-only version, use zlib compression
616 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
617 # Delete the temporary files
618 rm "$TMPDMG"
619 rm -rf "$MNTPATH"
620
621 echo "setting file icon ..."
622
623 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
624 /usr/bin/sips -i ${ICNSTMP}.icns
625 /Developer/Tools/DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
626 /Developer/Tools/Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
627 /Developer/Tools/SetFile -a C "$UC_DMG"
628
629 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
630
631 echo
632 echo "packaging suceeded."
633 ls -l "$UC_DMG"
634
635 echo "Done."
636 exit