]> git.saurik.com Git - wxWidgets.git/blob - wxPython/distrib/mac/wxPythonOSX/build
style required on wxGTK
[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/gizmos
283 make $MAKEJOBS -C contrib/src/stc
284 fi
285
286 SWIGIT=0
287 if [ $reswig = yes ]; then
288 SWIGIT=1
289 fi
290
291 # Build wxPython
292 cd $WXROOT/wxPython
293 $PYTHON setup.py \
294 UNICODE=$PYUNICODEOPT \
295 NO_SCRIPTS=1 \
296 EP_ADD_OPTS=1 \
297 WX_CONFIG="$WXBLD_CONFIG --inplace" \
298 BUILD_BASE=$WXBLD/wxPython \
299 SWIG=$SWIGBIN \
300 USE_SWIG=$SWIGIT \
301 build
302 fi
303
304 #----------------------------------------------------------------------
305
306 if [ $skipinstall != yes ]; then
307 # Install wxWidgets
308 cd $WXBLD
309 if [ $universal != yes ]; then
310 make prefix=$INSTALLROOT$PREFIX install
311 make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
312 make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
313 fi
314
315 # relink wx-config with a relative link
316 cd $INSTALLROOT$PREFIX/bin
317 rm wx-config
318 ln -s ../lib/wx/config/* wx-config
319
320 # and wxPython
321 cd $WXROOT/wxPython
322 $PYTHON setup.py \
323 UNICODE=$PYUNICODEOPT \
324 NO_SCRIPTS=1 \
325 EP_ADD_OPTS=1 \
326 WX_CONFIG="$INSTALLROOT$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
327 BUILD_BASE=$WXBLD/wxPython \
328 install \
329 --root=$INSTALLROOT
330
331
332 # Apple's Python Framework (such as what comes with Panther)
333 # sym-links the site-packages dir in the framework to
334 # /Library/Python/$PYVER so we need to move the files so they are
335 # installed in the physical location, not the virtual one.
336 if [ $APPLE_PYTHON == yes ]; then
337 if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
338 rm -r $INSTALLROOT/Library/Python/$PYVER
339 fi
340 mkdir -p $INSTALLROOT/Library/Python/$PYVER
341 mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER
342 rm -r $INSTALLROOT/System
343 SITEPACKAGES=/Library/Python/$PYVER
344 fi
345
346 # install wxPython's tool scripts
347 mkdir -p $INSTALLROOT$BINPREFIX
348 cd $WXROOT/wxPython/scripts
349 python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX
350
351
352 # Remove the .pyc/.pyo files they just take up space and can be recreated
353 # during the install.
354 pushd $WXROOT/wxPython
355 $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
356 popd
357
358 # Set premissions for files in $INSTALLROOT
359 if [ "$UID" = "0" ]; then
360 chown -R root:admin $INSTALLROOT
361 chmod -R g+w $INSTALLROOT
362 fi
363 fi
364
365 if [ $APPLE_PYTHON == yes ]; then
366 SITEPACKAGES=/Library/Python/$PYVER
367 fi
368 PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
369
370 popd
371
372 #----------------------------------------------------------------------
373
374 # Make the Installer packages and disk image
375 if [ $skipdmg != yes ]; then
376
377 #-----------------------------------------------
378 # The main runtime installer package
379
380 # Make the welcome message
381 case $OSX_VERSION in
382 10.4) W_MSG="the Tiger (OS X 10.4.x Intel) version of" ;;
383 10.3) W_MSG="the Panther (OS X 10.3.x) version of" ;;
384 10.2) W_MSG="the Jaguar (OS X 10.2.x) version of" ;;
385 esac
386
387 if [ $universal == yes ]; then
388 W_MSG="the Universal (OS X 10.4.x and above) version of"
389 fi
390
391
392 cat > $RESOURCEDIR/Welcome.txt <<EOF
393 Welcome!
394
395 This Installer package will install the wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER. This includes:
396
397 * The wxPython packages and modules
398 * The wxWidgets shared libraries and headers
399 * Some command line tool scripts, installed to /usr/local/bin.
400
401 You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
402
403 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.
404
405 Build date: `date`
406 EOF
407
408 # make the preflight script
409 cat > $RESOURCEDIR/preflight <<EOF
410 #!/bin/sh
411 # Cleanup any old install of the wxPython package
412 rm -rf \$2$SITEPACKAGES/wxPython
413 rm -rf \$2$SITEPACKAGES/wx
414 rm -rf \$2$SITEPACKAGES/$PKGDIR
415 exit 0
416 EOF
417 chmod +x $RESOURCEDIR/preflight
418
419 # make the postflight script
420 cat > $RESOURCEDIR/postflight <<EOF
421 #!/bin/sh -e
422 # Compile the .py files in the wxPython pacakge
423 $PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
424 $PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
425
426 # and all of the wxPython pacakge should be group writable
427 chgrp -R admin \$2$SITEPACKAGES/$PKGDIR
428 chmod -R g+w \$2$SITEPACKAGES/$PKGDIR
429
430 exit 0
431 EOF
432 chmod +x $RESOURCEDIR/postflight
433
434
435
436 # Build the main Installer Package...
437 PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$TAG
438 if [ $PYVER != 2.3 ]; then
439 PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$TAG-py$PYVER
440 fi
441 rm -rf $PKGNAME.pkg
442 $PYTHON $PROGDIR/../buildpkg.py \
443 --Title=$PKGNAME \
444 --Version=$VERSION \
445 --Description="wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER" \
446 --NeedsAuthorization="YES" \
447 --Relocatable="NO" \
448 --InstallOnly="YES" \
449 $INSTALLROOT \
450 $RESOURCEDIR
451
452 mv $PKGNAME.pkg $DMGROOT/$PKGNAME.pkg
453
454 rm $RESOURCEDIR/postflight
455 rm $RESOURCEDIR/preflight
456 rm $RESOURCEDIR/Welcome.txt
457
458
459 #-----------------------------------------------
460 # Make a README to go on the disk image
461 cat > "$DMGROOT/README 1st.txt" <<EOF
462 Welcome to wxPython!
463
464 This disk image contains the following items:
465
466 wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND
467
468 This Installer contains the wxPython runtime, compiled on a
469 $KIND OS X system, using the $CHARTYPE build of the wxWidgets
470 library. It includes the Python modules and extension
471 modules, as well as the wxWidgets libraries.
472
473 It is possible to have more than one version of the runtime
474 installed at once if you wish. The most recently installed
475 version will be the default wxPython, but you can choose
476 another by setting the PYTHONPATH or by using the wxversion
477 module. For more details see:
478 http://wiki.wxpython.org/index.cgi/MultiVersionInstalls
479
480
481 uninstall_wxPython.py
482
483 A simple tool to help you manage your installed versions of
484 wxPython. It will allow you to choose from the currently
485 installed wxPython packages and to select one for
486 uninstallation. It is a text-mode tool so you can either run
487 it from a Terminal command line, or you can open it with
488 PythonLauncher and let it create a Terminal to run it in.
489
490 NOTE: If you have versions prior to 2.5.3.1 installed, please
491 do run this uninstall tool to remove the older version.
492
493 EOF
494
495
496
497 cp $PROGDIR/../uninstall_wxPython.py $DMGROOT
498
499
500 #-----------------------------------------------
501 # Make a disk image to hold these files
502 dmgname=wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$TAG-py$PYVER
503 $PROGDIR/../makedmg $DMGROOT $DMGDIR $dmgname
504
505 echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
506 mv $DMGDIR/$dmgname.dmg $DESTDIR/$dmgname.dmg
507
508
509 #---------------------------------------------------------------------------
510 # Now create app bundles for the demo, docs, and tools and make another
511 # disk image to hold it all.
512 #---------------------------------------------------------------------------
513
514 cat > "$DMGAPPS/README 1st.txt" <<EOF
515 Welcome to wxPython!
516
517 On this disk image you will find Demo, Tools, Docs, and etc. for
518 wxPython $VERSION. Everything here is optional and you can drag them
519 out of the disk image and drop them wherever you want. You will need
520 to have an installed wxPython runtime to be able to use any of them.
521
522
523 wxPython Demo An application bundle version of the demo.
524 (This has it's own copy of the demo sources
525 within the bundle.)
526
527 XRCed An application for editing wxPython resource
528 files (XRC files.)
529
530 PyCrust An application that provides an interactive
531 Python shell and also namespace inspectors.
532
533
534
535 Docs/wxDocsViewer An application that allows you to view the
536 wxWidgets documentation.
537
538 Docs/licence License files.
539
540 Docs/other A few readmes, change log, etc.
541
542
543 Samples/samples Several small sample applications that
544 demonstrate how to use wxPython.
545
546 Samples/demo A copy of the wxPython demo source code,
547 just open the folder and run demo.pyw.
548
549 Happy Hacking!
550 EOF
551
552 # PyAlaMode An extension of PyCrust that includes source
553 # file editing capabilities.
554
555
556 # wxDocs
557 if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; then
558 cat > "$DMGAPPS/Docs/Build ERROR.txt" <<EOF
559
560 The wxPython-docs tarball was not found when building this disk image!
561
562 EOF
563
564 else
565 pushd $BUILDROOT
566 tar xjvf $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2
567 popd
568
569 # Make an app to launch viewdocs.py
570 $PYTHONW $PROGDIR/../buildapp.py \
571 --builddir=$DMGAPPS/Docs \
572 --name=wxDocsViewer \
573 --mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
574 --iconfile=$PROGDIR/Info.icns \
575 build
576
577 cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGAPPS/Docs/wxDocsViewer.app/Contents/Resources
578
579 cat > "$DMGAPPS/Docs/README 1st.txt" <<EOF
580
581 The wxDocsViewer application needs to be copied to your Desktop (or
582 someplace else you have write access to) before you can run it, so it
583 can cache some indexes within its bundle.
584
585 EOF
586
587 fi
588
589 # license files, docs, etc.
590 pushd $DMGAPPS/Docs
591 cp -pR $SRCROOT/wxPython/licence .
592 cp -pR $SRCROOT/wxPython/docs .
593 rm -rf docs/bin
594 rm -rf docs/xml-raw
595 mv docs other
596 popd
597
598
599 if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; then
600 cat > "$DMGAPPS/Samples/Build ERROR.txt" <<EOF
601
602 The wxPython-$VERSION-demo tarball was not found when building this disk image!
603
604 EOF
605 cp "$DMGAPPS/Samples/Build ERROR.txt" $DMGAPPS
606
607 else
608
609 # Copy the demo and samples to the disk image from the tarball
610 pushd $DMGAPPS/Samples
611 tar xjvf $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2
612 mv wxPython-$VERSION/* .
613 rm -rf wxPython-$VERSION
614 rm -f demo/b demo/.setup.sh
615 mv demo/demo.py demo/demo.pyw
616 popd
617
618 # Make an app bundle to run the demo
619 $PYTHONW $PROGDIR/../buildapp.py \
620 --builddir=$DMGAPPS \
621 --name="wxPython Demo" \
622 --mainprogram=$DMGAPPS/Samples/demo/demo.pyw \
623 --iconfile=$PROGDIR/RunDemo.icns \
624 build
625 cp -pR $DMGAPPS/Samples/demo/* "$DMGAPPS/wxPython Demo.app/Contents/Resources"
626 fi
627
628
629 # Make an app bundle to launch PyCrust
630 $PYTHONW $PROGDIR/../buildapp.py \
631 --builddir=$DMGAPPS \
632 --name=PyCrust \
633 --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
634 --iconfile=$PROGDIR/PieShell.icns \
635 build
636
637 ## TODO: PyAlaMode needs tweaked to be able to run from a bundle. It
638 ## needs to know to ignore command line parameters and etc...
639 # # and PyAlaMode
640 # $PYTHONW $PROGDIR/../buildapp.py \
641 # --builddir=$DMGAPPS \
642 # --name=PyAlaMode \
643 # --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
644 # --iconfile=$PROGDIR/PieShell.icns \
645 # build
646
647 # Make an app to launch XRCed
648 $PYTHONW $PROGDIR/../buildapp.py \
649 --builddir=$DMGAPPS \
650 --name=XRCed \
651 --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
652 --iconfile=$PROGDIR/XRCed.icns \
653 build
654
655
656
657 # and then finally make a disk image containing everything
658 dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION-$TAG-py$PYVER
659 $PROGDIR/../makedmg $DMGAPPS $DMGDIR $dmgname
660
661 echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
662 mv $DMGDIR/$dmgname.dmg $DESTDIR/$dmgname.dmg
663 fi
664
665
666 # Cleanup build/install dirs
667 if [ $skipclean != yes ]; then
668 echo "Cleaning up..."
669 rm -rf $TMPDIR
670 else
671 echo "Cleanup is disabled. You should remove $TMPDIR when finished"
672 fi
673
674 exit 0