]> git.saurik.com Git - wxWidgets.git/blob - wxPython/distrib/mac/wxPythonOSX/build
distrib changes to enable graphics context and add gdiplus.dll
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
1 #!/bin/sh -e
2 #----------------------------------------------------------------------
3 # Build wxMac and wxPythonOSX from the tarball and then make an
4 # Installer package out of it.
5
6 #set -o xtrace
7
8 spectemplate=distrib/wxPythonFull.spec.in
9
10 if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
11 echo "Please run this script from the root wxPython directory."
12 exit 1
13 fi
14
15 if [ "$UID" != "0" ]; then
16 echo "-------------------------------------------------------"
17 echo " WARNING: I will be unable to change ownership of files"
18 echo " unless this script is run as root or via sudo"
19 echo "-------------------------------------------------------"
20 fi
21
22 #----------------------------------------------------------------------
23 # Check Parameters
24
25 function usage {
26 echo ""
27 echo "Usage: $0 PYVER [command flags...]"
28 echo ""
29 echo " PYVER Python version to use to do the build. A"
30 echo " matching python\$PYVER must be found on the PATH"
31 echo ""
32 echo "optional command flags:"
33 echo " skiptar Don't unpack the tarball"
34 echo " inplace Don't use the tarball, build from the CVS tree instead"
35 echo " (The Docs and Demo tarballs are still required for a full build.)"
36 echo " reswig Regenerate SWIG wrappers"
37 echo " universal Generate Universal wxWidgets binary (requires Universal Python "
38 echo " to general Universal wxPython)."
39 echo " unicode Make a unicode build"
40 echo " skipconfig Don't run configure"
41 echo " skipbuild Don't build wxWidgets or wxPython"
42 echo " skipinstall Don't do the installation step"
43 echo " skipdmg Don't make the package or diskimage"
44 echo " skipclean Don't do the cleanup at the end"
45 echo ""
46 }
47
48
49 PYVER=$1
50 if [ "$PYVER" != "" ] && which python$PYVER && which pythonw$PYVER; then
51 PYTHON=`which python$PYVER`
52 PYTHONW=`which pythonw$PYVER`
53 else
54 usage;
55 exit 1
56 fi
57
58 shift
59
60 skiptar=no
61 skipconfig=no
62 skipbuild=no
63 skipinstall=no
64 skipdmg=no
65 skipclean=no
66 inplace=no
67 unicode=no
68 debug=no
69 reswig=no
70 universal=no
71
72 for flag in $*; do
73 case ${flag} in
74 skiptar) skiptar=yes ;;
75 skipconfig) skipconfig=yes; skiptar=yes ;;
76 skipbuild) skipbuild=yes; skipconfig=yes; skiptar=yes ;;
77 skipinstall) skipinstall=yes ;;
78 skipdmg) skipdmg=yes ;;
79 skipclean) skipclean=yes ;;
80 inplace) inplace=yes; skiptar=yes ;;
81 unicode) unicode=yes ;;
82 ansi) unicode=no ;;
83 debug) debug=yes ;;
84 reswig) reswig=yes ;;
85 universal) universal=yes ;;
86 *) echo "Unknown flag \"${flag}\""
87 usage
88 exit 1
89 esac
90 done
91
92
93
94 OSX_VERSION=`sw_vers -productVersion`
95 OSX_VERSION=${OSX_VERSION:0:4}
96
97 case $OSX_VERSION in
98 10.4) TAG=macosx10.4 ;;
99 10.3) TAG=macosx10.3 ;;
100 10.2) TAG=macosx10.2 ;;
101 *) usage; exit 1 ;;
102 esac
103
104 if [ $universal = yes ]; then
105 TAG=universal10.4
106 fi
107
108
109
110 VERSION=`$PYTHON -c "import setup;print setup.VERSION"`
111 SHORTVER=`echo $VERSION | cut -c 1,2,3`
112 PYPREFIX=`$PYTHON -c "import sys; print sys.exec_prefix"`
113 PYLIB=$PYPREFIX/lib/python$PYVER
114 SITEPACKAGES=$PYLIB/site-packages
115
116 if [ $unicode == yes ]; then
117 CHARTYPE=unicode
118 UNICODEOPT=--enable-unicode
119 PYUNICODEOPT=1
120 else
121 CHARTYPE=ansi
122 UNICODEOPT=--disable-unicode
123 PYUNICODEOPT=0
124 fi
125
126 if [ $debug == yes ]; then
127 DEBUG_FLAG=--enable-debug
128 PYDEBUGOPT=--debug
129 else
130 DEBUG_FLAG=--enable-debug_flag
131 PYDEBUGOPT=
132 fi
133
134
135 # Test if the python we are using is the System installed framework
136 # or one that was installed by the user. This changes where the
137 # site-packages (or its alias) is located in the installer tree.
138 APPLE_PYTHON=no
139 if [ -e /Library/Python/$PYVER ] && [ `dirname $PYTHON` == "/usr/bin" ]; then
140 APPLE_PYTHON=yes
141 fi
142
143
144
145 if [ -z "$TARBALLDIR" ]; then
146 # this is a spot on my fileserver where the tarballs go, adjust
147 # as needed for where you put the wxPython tarball, or set
148 # TARBALLDIR before invoking this script...
149 TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
150 fi
151 TARBALL=$TARBALLDIR/wxPython-src-$VERSION.tar.bz2
152
153 if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; then
154 echo "-------------------------------------------------------"
155 echo " WARNING: Demo tarball not found, will skip building "
156 echo " the Demo app bundle and etc."
157 echo " $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2"
158 echo "-------------------------------------------------------"
159 fi
160
161 if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; then
162 echo "-------------------------------------------------------"
163 echo " WARNING: Docs tarball not found, will skip building "
164 echo " the the wxDocsViewer app bundle and etc."
165 echo " $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2"
166 echo "-------------------------------------------------------"
167 fi
168
169
170
171
172 PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$VERSION
173 BINPREFIX=/usr/local/bin
174
175 SWIGBIN=/opt/swig/bin/swig
176 WXROOT=`dirname $PWD`
177 PROGDIR="`dirname \"$0\"`"
178 TMPDIR=$PWD/_build_dmg
179
180 BUILDROOT=$TMPDIR/build
181
182 INSTALLROOT=$TMPDIR/install-root
183 INSTALLAPPS=$TMPDIR/install-apps
184
185 DMGDIR=$TMPDIR/dmg
186 DMGROOT=$DMGDIR/root
187 DMGAPPS=$DMGDIR/apps
188
189 RESOURCEDIR=$PROGDIR/resources
190 DESTDIR=$PWD/dist
191 SRCROOT=$BUILDROOT/wxPython-src-$VERSION
192
193
194 #----------------------------------------------------------------------
195 # Setup builddirs
196
197 mkdir -p $BUILDROOT
198 mkdir -p $INSTALLROOT
199 mkdir -p $INSTALLAPPS
200
201 rm -rf $DMGDIR
202 mkdir -p $DMGROOT
203 mkdir -p $DMGAPPS/Docs
204 mkdir -p $DMGAPPS/Samples
205
206 if [ ! -d $DESTDIR ]; then
207 mkdir $DESTDIR
208 fi
209
210 pushd $BUILDROOT
211
212
213 #----------------------------------------------------------------------
214 # Unpack the tarball
215
216 if [ $skiptar != yes ]; then
217 echo Unarchiving tarball...
218 tar xjf $TARBALL
219 fi
220
221 if [ $inplace = no ]; then
222 # make a build dir and cd to it.
223 cd wxPython-src-$VERSION
224 WXDIR=`pwd`
225 mkdir -p $WXDIR/bld
226 cd $WXDIR/bld
227 WXBLD=$WXDIR/bld
228 else
229
230 # If building "inplace" then our build dir will be off of the
231 # WXROOT like normal, adjust the variables to find things that
232 # way.
233 WXBLD=$WXROOT/build-$CHARTYPE
234 mkdir -p $WXBLD
235 cd $WXBLD
236 WXDIR=..
237 SRCROOT=$WXROOT
238 fi
239
240 echo "Using wx root dir: $WXROOT"
241 echo "Using build dir: $WXBLD"
242 echo "Using source tree: $WXDIR"
243
244 #----------------------------------------------------------------------
245
246 if [ $OSX_VERSION = 10.3 -o $OSX_VERSION = 10.4 ]; then
247 OTHER_CFG_OPTS=--enable-mediactrl
248 fi
249
250 # Configure wxWidgets
251 if [ $skipconfig != yes -a $universal != yes ]; then
252 $WXDIR/configure \
253 --prefix=$PREFIX \
254 --with-mac \
255 --enable-monolithic \
256 --with-opengl \
257 --enable-sound \
258 --enable-display \
259 --enable-geometry \
260 --enable-graphics_ctx \
261 $DEBUG_FLAG \
262 --enable-precomp=no \
263 --enable-optimise \
264 --disable-debugreport \
265 --disable-precompiled-headers \
266 $UNICODEOPT $OTHER_CFG_OPTS
267
268 fi
269
270 # Build wxWidgets and wxPython
271 if [ $skipbuild != yes ]; then
272
273 # Make wxWidgets and some contribs
274 WXBLD_CONFIG="$WXBLD/wx-config"
275 if [ $universal = yes ]; then
276 export WXROOT
277 export BUILDPREFIX=$PREFIX
278 export INSTALLDIR=$INSTALLROOT$PREFIX
279 $WXDIR/distrib/scripts/mac/macbuild wxpython universal $CHARTYPE
280 else
281 make $MAKEJOBS
282 make $MAKEJOBS -C contrib/src/animate
283 make $MAKEJOBS -C contrib/src/gizmos
284 make $MAKEJOBS -C contrib/src/stc
285 fi
286
287 SWIGIT=0
288 if [ $reswig = yes ]; then
289 SWIGIT=1
290 fi
291
292 # Build wxPython
293 cd $WXROOT/wxPython
294 $PYTHON setup.py \
295 UNICODE=$PYUNICODEOPT \
296 NO_SCRIPTS=1 \
297 EP_ADD_OPTS=1 \
298 WX_CONFIG="$WXBLD_CONFIG --inplace" \
299 BUILD_BASE=$WXBLD/wxPython \
300 SWIG=$SWIGBIN \
301 USE_SWIG=$SWIGIT \
302 build
303 fi
304
305 #----------------------------------------------------------------------
306
307 if [ $skipinstall != yes ]; then
308 # Install wxWidgets
309 cd $WXBLD
310 if [ $universal != yes ]; then
311 make prefix=$INSTALLROOT$PREFIX install
312 make -C contrib/src/animate prefix=$INSTALLROOT$PREFIX install
313 make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
314 make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
315 fi
316
317 # relink wx-config with a relative link
318 cd $INSTALLROOT$PREFIX/bin
319 rm wx-config
320 ln -s ../lib/wx/config/* wx-config
321
322 # and wxPython
323 cd $WXROOT/wxPython
324 $PYTHON setup.py \
325 UNICODE=$PYUNICODEOPT \
326 NO_SCRIPTS=1 \
327 EP_ADD_OPTS=1 \
328 WX_CONFIG="$INSTALLROOT$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
329 BUILD_BASE=$WXBLD/wxPython \
330 install \
331 --root=$INSTALLROOT
332
333
334 # Apple's Python Framework (such as what comes with Panther)
335 # sym-links the site-packages dir in the framework to
336 # /Library/Python/$PYVER so we need to move the files so they are
337 # installed in the physical location, not the virtual one.
338 if [ $APPLE_PYTHON == yes ]; then
339 if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
340 rm -r $INSTALLROOT/Library/Python/$PYVER
341 fi
342 mkdir -p $INSTALLROOT/Library/Python/$PYVER
343 mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER
344 rm -r $INSTALLROOT/System
345 SITEPACKAGES=/Library/Python/$PYVER
346 fi
347
348 # install wxPython's tool scripts
349 mkdir -p $INSTALLROOT$BINPREFIX
350 cd $WXROOT/wxPython/scripts
351 python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX
352
353
354 # Remove the .pyc/.pyo files they just take up space and can be recreated
355 # during the install.
356 pushd $WXROOT/wxPython
357 $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
358 popd
359
360 # Set premissions for files in $INSTALLROOT
361 if [ "$UID" = "0" ]; then
362 chown -R root:admin $INSTALLROOT
363 chmod -R g+w $INSTALLROOT
364 fi
365 fi
366
367 if [ $APPLE_PYTHON == yes ]; then
368 SITEPACKAGES=/Library/Python/$PYVER
369 fi
370 PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
371
372 popd
373
374 #----------------------------------------------------------------------
375
376 # Make the Installer packages and disk image
377 if [ $skipdmg != yes ]; then
378
379 #-----------------------------------------------
380 # The main runtime installer package
381
382 # Make the welcome message
383 case $OSX_VERSION in
384 10.4) W_MSG="the Tiger (OS X 10.4.x Intel) version of" ;;
385 10.3) W_MSG="the Panther (OS X 10.3.x) version of" ;;
386 10.2) W_MSG="the Jaguar (OS X 10.2.x) version of" ;;
387 esac
388
389 if [ $universal == yes ]; then
390 W_MSG="the Universal (OS X 10.4.x and above) version of"
391 fi
392
393
394 cat > $RESOURCEDIR/Welcome.txt <<EOF
395 Welcome!
396
397 This Installer package will install the wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER. This includes:
398
399 * The wxPython packages and modules
400 * The wxWidgets shared libraries and headers
401 * Some command line tool scripts, installed to /usr/local/bin.
402
403 You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
404
405 You can install more than one version of the wxPython runtime if you desire. The most recently installed version will be the default wxPython, but you can choose another by setting the PYTHONPATH or by using the wxversion module. See http://wiki.wxpython.org/index.cgi/MultiVersionInstalls for more details.
406
407 Build date: `date`
408 EOF
409
410 # make the preflight script
411 cat > $RESOURCEDIR/preflight <<EOF
412 #!/bin/sh
413 # Cleanup any old install of the wxPython package
414 rm -rf \$2$SITEPACKAGES/wxPython
415 rm -rf \$2$SITEPACKAGES/wx
416 rm -rf \$2$SITEPACKAGES/$PKGDIR
417 exit 0
418 EOF
419 chmod +x $RESOURCEDIR/preflight
420
421 # make the postflight script
422 cat > $RESOURCEDIR/postflight <<EOF
423 #!/bin/sh -e
424 # Compile the .py files in the wxPython pacakge
425 $PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
426 $PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
427
428 # and all of the wxPython pacakge should be group writable
429 chgrp -R admin \$2$SITEPACKAGES/$PKGDIR
430 chmod -R g+w \$2$SITEPACKAGES/$PKGDIR
431
432 exit 0
433 EOF
434 chmod +x $RESOURCEDIR/postflight
435
436
437
438 # Build the main Installer Package...
439 PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$TAG
440 if [ $PYVER != 2.3 ]; then
441 PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$TAG-py$PYVER
442 fi
443 rm -rf $PKGNAME.pkg
444 $PYTHON $PROGDIR/../buildpkg.py \
445 --Title=$PKGNAME \
446 --Version=$VERSION \
447 --Description="wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER" \
448 --NeedsAuthorization="YES" \
449 --Relocatable="NO" \
450 --InstallOnly="YES" \
451 $INSTALLROOT \
452 $RESOURCEDIR
453
454 mv $PKGNAME.pkg $DMGROOT/$PKGNAME.pkg
455
456 rm $RESOURCEDIR/postflight
457 rm $RESOURCEDIR/preflight
458 rm $RESOURCEDIR/Welcome.txt
459
460
461 #-----------------------------------------------
462 # Make a README to go on the disk image
463 cat > "$DMGROOT/README 1st.txt" <<EOF
464 Welcome to wxPython!
465
466 This disk image contains the following items:
467
468 wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND
469
470 This Installer contains the wxPython runtime, compiled on a
471 $KIND OS X system, using the $CHARTYPE build of the wxWidgets
472 library. It includes the Python modules and extension
473 modules, as well as the wxWidgets libraries.
474
475 It is possible to have more than one version of the runtime
476 installed at once if you wish. The most recently installed
477 version will be the default wxPython, but you can choose
478 another by setting the PYTHONPATH or by using the wxversion
479 module. For more details see:
480 http://wiki.wxpython.org/index.cgi/MultiVersionInstalls
481
482
483 uninstall_wxPython.py
484
485 A simple tool to help you manage your installed versions of
486 wxPython. It will allow you to choose from the currently
487 installed wxPython packages and to select one for
488 uninstallation. It is a text-mode tool so you can either run
489 it from a Terminal command line, or you can open it with
490 PythonLauncher and let it create a Terminal to run it in.
491
492 NOTE: If you have versions prior to 2.5.3.1 installed, please
493 do run this uninstall tool to remove the older version.
494
495 EOF
496
497
498
499 cp $PROGDIR/../uninstall_wxPython.py $DMGROOT
500
501
502 #-----------------------------------------------
503 # Make a disk image to hold these files
504 dmgname=wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$TAG-py$PYVER
505 $PROGDIR/../makedmg $DMGROOT $DMGDIR $dmgname
506
507 echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
508 mv $DMGDIR/$dmgname.dmg $DESTDIR/$dmgname.dmg
509
510
511 #---------------------------------------------------------------------------
512 # Now create app bundles for the demo, docs, and tools and make another
513 # disk image to hold it all.
514 #---------------------------------------------------------------------------
515
516 cat > "$DMGAPPS/README 1st.txt" <<EOF
517 Welcome to wxPython!
518
519 On this disk image you will find Demo, Tools, Docs, and etc. for
520 wxPython $VERSION. Everything here is optional and you can drag them
521 out of the disk image and drop them wherever you want. You will need
522 to have an installed wxPython runtime to be able to use any of them.
523
524
525 wxPython Demo An application bundle version of the demo.
526 (This has it's own copy of the demo sources
527 within the bundle.)
528
529 XRCed An application for editing wxPython resource
530 files (XRC files.)
531
532 PyCrust An application that provides an interactive
533 Python shell and also namespace inspectors.
534
535
536
537 Docs/wxDocsViewer An application that allows you to view the
538 wxWidgets documentation.
539
540 Docs/licence License files.
541
542 Docs/other A few readmes, change log, etc.
543
544
545 Samples/samples Several small sample applications that
546 demonstrate how to use wxPython.
547
548 Samples/demo A copy of the wxPython demo source code,
549 just open the folder and run demo.pyw.
550
551 Happy Hacking!
552 EOF
553
554 # PyAlaMode An extension of PyCrust that includes source
555 # file editing capabilities.
556
557
558 # wxDocs
559 if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; then
560 cat > "$DMGAPPS/Docs/Build ERROR.txt" <<EOF
561
562 The wxPython-docs tarball was not found when building this disk image!
563
564 EOF
565
566 else
567 pushd $BUILDROOT
568 tar xjvf $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2
569 popd
570
571 # Make an app to launch viewdocs.py
572 $PYTHONW $PROGDIR/../buildapp.py \
573 --builddir=$DMGAPPS/Docs \
574 --name=wxDocsViewer \
575 --mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
576 --iconfile=$PROGDIR/Info.icns \
577 build
578
579 cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGAPPS/Docs/wxDocsViewer.app/Contents/Resources
580
581 cat > "$DMGAPPS/Docs/README 1st.txt" <<EOF
582
583 The wxDocsViewer application needs to be copied to your Desktop (or
584 someplace else you have write access to) before you can run it, so it
585 can cache some indexes within its bundle.
586
587 EOF
588
589 fi
590
591 # license files, docs, etc.
592 pushd $DMGAPPS/Docs
593 cp -pR $SRCROOT/wxPython/licence .
594 cp -pR $SRCROOT/wxPython/docs .
595 rm -rf docs/bin
596 rm -rf docs/xml-raw
597 mv docs other
598 popd
599
600
601 if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; then
602 cat > "$DMGAPPS/Samples/Build ERROR.txt" <<EOF
603
604 The wxPython-$VERSION-demo tarball was not found when building this disk image!
605
606 EOF
607 cp "$DMGAPPS/Samples/Build ERROR.txt" $DMGAPPS
608
609 else
610
611 # Copy the demo and samples to the disk image from the tarball
612 pushd $DMGAPPS/Samples
613 tar xjvf $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2
614 mv wxPython-$VERSION/* .
615 rm -rf wxPython-$VERSION
616 rm -f demo/b demo/.setup.sh
617 mv demo/demo.py demo/demo.pyw
618 popd
619
620 # Make an app bundle to run the demo
621 $PYTHONW $PROGDIR/../buildapp.py \
622 --builddir=$DMGAPPS \
623 --name="wxPython Demo" \
624 --mainprogram=$DMGAPPS/Samples/demo/demo.pyw \
625 --iconfile=$PROGDIR/RunDemo.icns \
626 build
627 cp -pR $DMGAPPS/Samples/demo/* "$DMGAPPS/wxPython Demo.app/Contents/Resources"
628 fi
629
630
631 # Make an app bundle to launch PyCrust
632 $PYTHONW $PROGDIR/../buildapp.py \
633 --builddir=$DMGAPPS \
634 --name=PyCrust \
635 --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
636 --iconfile=$PROGDIR/PieShell.icns \
637 build
638
639 ## TODO: PyAlaMode needs tweaked to be able to run from a bundle. It
640 ## needs to know to ignore command line parameters and etc...
641 # # and PyAlaMode
642 # $PYTHONW $PROGDIR/../buildapp.py \
643 # --builddir=$DMGAPPS \
644 # --name=PyAlaMode \
645 # --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
646 # --iconfile=$PROGDIR/PieShell.icns \
647 # build
648
649 # Make an app to launch XRCed
650 $PYTHONW $PROGDIR/../buildapp.py \
651 --builddir=$DMGAPPS \
652 --name=XRCed \
653 --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
654 --iconfile=$PROGDIR/XRCed.icns \
655 build
656
657
658
659 # and then finally make a disk image containing everything
660 dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION-$TAG-py$PYVER
661 $PROGDIR/../makedmg $DMGAPPS $DMGDIR $dmgname
662
663 echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
664 mv $DMGDIR/$dmgname.dmg $DESTDIR/$dmgname.dmg
665 fi
666
667
668 # Cleanup build/install dirs
669 if [ $skipclean != yes ]; then
670 echo "Cleaning up..."
671 rm -rf $TMPDIR
672 else
673 echo "Cleanup is disabled. You should remove $TMPDIR when finished"
674 fi
675
676 exit 0