]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/distrib/mac/wxPythonOSX/build
2 #----------------------------------------------------------------------
3 # Build wxMac and wxPythonOSX from the tarball and then make an
4 # Installer package out of it.
6 spectemplate
= distrib
/ wxPythonFull.spec.
in
8 if [ ! -d wxPython
-o ! -e ${spectemplate} ]; then
9 echo "Please run this script from the root wxPython directory."
13 if [ " $UID " != "0" ]; then
14 echo "-------------------------------------------------------"
15 echo " WARNING: will be unable to change ownership of files"
16 echo " unless this script is run as root or via sudo"
17 echo "-------------------------------------------------------"
20 #----------------------------------------------------------------------
25 echo "Usage: $0 [panther|jaguar] [command flags...]"
27 echo " panther Build for Apple's python in /usr/bin, such as on Panther"
28 echo " jaguar Build for a python in /usr/local/bin, such as on Jaguar"
30 echo "optional command flags:"
31 echo " skiptar Don't unpack the tarball"
32 echo " inplace Don't use the tarball, build from the CVS tree instead"
33 echo " (The Docs and Demo tarballs are still required for a full build.)"
34 echo " unicode Make a unicode build"
35 echo " skipconfig Don't run configure"
36 echo " skipbuild Don't build wxWidgets or wxPython"
37 echo " skipinstall Don't do the installation step"
38 echo " skipdmg Don't make the package or diskimage"
39 echo " skipclean Don't do the cleanup at the end"
51 panther
) PYTHON
=/ usr
/ bin
/ python
;;
52 jaguar
) PYTHON
=/ usr
/ local
/ bin
/ python
;;
69 skiptar
) skiptar
= yes ;;
70 skipconfig
) skipconfig
= yes ; skiptar
= yes ;;
71 skipbuild
) skipbuild
= yes ; skipconfig
= yes ; skiptar
= yes ;;
72 skipinstall
) skipinstall
= yes ;;
73 skipdmg
) skipdmg
= yes ;;
74 skipclean
) skipclean
= yes ;;
75 inplace
) inplace
= yes ; skiptar
= yes ;;
76 unicode
) unicode
= yes ;;
78 *) echo "Unknown flag \" ${flag} \" "
85 VERSION
= ` $PYTHON -c "import setup;print setup.VERSION"`
86 PYVER
= ` $PYTHON -c "import sys; print sys.version[:3]"`
87 PYPREFIX
= ` $PYTHON -c "import sys; print sys.exec_prefix"`
88 PYLIB
= $PYPREFIX / lib
/ python
$PYVER
89 SITEPACKAGES
= $PYLIB / site
-packages
90 SHORTVER
= `echo $VERSION | cut -c 1,2,3`
92 if [ $unicode == yes ]; then
94 UNICODEOPT
= --enable-unicode
98 UNICODEOPT
= --disable-unicode
102 #if [ "$HOSTNAME" = "bigmac.alldunn.com" ]; then
103 # MAKEJOBS="--jobs=2"
107 if [ -z " $TARBALLDIR " ]; then
108 # this is a spot on my fileserver where the tarballs go, adjust
109 # as needed for where you put the wxPython tarball, or set
110 # TARBALLDIR before invoking this script...
111 TARBALLDIR
=/ stuff
/ Development
/ wxPython
/ dist
/ $VERSION
113 TARBALL
= $TARBALLDIR / wxPython
-src- $VERSION .
tar .gz
115 if [ ! -e $TARBALLDIR / wxPython
-demo- $VERSION .
tar .gz
]; then
116 echo "-------------------------------------------------------"
117 echo " WARNING: Demo tarball not found, will skip building "
118 echo " the Demo app bundle and etc."
119 echo " $TARBALLDIR /wxPython-demo- $VERSION .tar.gz"
120 echo "-------------------------------------------------------"
123 if [ ! -e $TARBALLDIR / wxPython
-docs- $VERSION .
tar .gz
]; then
124 echo "-------------------------------------------------------"
125 echo " WARNING: Docs tarball not found, will skip building "
126 echo " the the wxDocsViewer app bundle and etc."
127 echo " $TARBALLDIR /wxPython-docs- $VERSION .tar.gz"
128 echo "-------------------------------------------------------"
134 PREFIX
=/ usr
/ local
/ lib
/ wxPython
- $CHARTYPE - $VERSION
135 BINPREFIX
=/ usr
/ local
/ bin
137 WXROOT
= `dirname $PWD `
138 PROGDIR
= "`dirname \" $0 \" `"
139 TMPDIR
= $PWD / _build_dmg
141 BUILDROOT
= $TMPDIR / build
143 INSTALLROOT
= $TMPDIR / install -root
144 INSTALLAPPS
= $TMPDIR / install -apps
150 RESOURCEDIR
= $PROGDIR / resources
152 SRCROOT
= $BUILDROOT / wxPython
-src- $VERSION
155 #----------------------------------------------------------------------
159 mkdir -p $INSTALLROOT
160 mkdir -p $INSTALLAPPS
164 mkdir -p $DMGAPPS / Docs
165 mkdir -p $DMGAPPS / Samples
171 #----------------------------------------------------------------------
174 if [ $skiptar != yes ]; then
175 echo Unarchiving tarball...
179 if [ $inplace = no
]; then
180 # make a build dir and cd to it.
181 cd wxPython
-src- $VERSION
188 # If building "inplace" then our build dir will be off of the
189 # WXROOT like normal, adjust the variables to find things that
191 WXBLD
= $WXROOT / build
- $CHARTYPE
198 echo "Using wx root dir: $WXROOT "
199 echo "Using build dir: $WXBLD "
200 echo "Using source tree: $WXDIR "
202 #----------------------------------------------------------------------
204 if [ $KIND = panther
]; then
205 OTHER_CFG_OPTS
= --enable-mediactrl
208 # Configure wxWidgets
209 if [ $skipconfig != yes ]; then
213 --enable-monolithic \
218 --enable-debug_flag \
219 --enable-precomp = no \
221 --disable-debugreport \
222 $UNICODEOPT $OTHER_CFG_OPTS
226 # Build wxWidgets and wxPython
227 if [ $skipbuild != yes ]; then
229 # Make wxWidgets and some contribs
231 # For some reason Rez and DeRez have started locking up if run via
232 # an ssh terminal. Figure out why, but in the meantime...
233 if [ " $CHARTYPE " = "ansi" ]; then
234 echo cp / projects
/ wx2.5
/ bld
/ lib
/ libwx_macd
-2 .5.?.r
* lib
235 cp / projects
/ wx2.5
/ bld
/ lib
/ libwx_macd
-2 .5.?.r
* lib
237 echo cp / projects
/ wx2.5
/ bld
-unicode / lib
/ libwx_macud
-2 .5.?.r
* lib
238 cp / projects
/ wx2.5
/ bld
-unicode / lib
/ libwx_macud
-2 .5.?.r
* lib
243 make $MAKEJOBS -C contrib
/ src
/ gizmos
244 make $MAKEJOBS -C contrib
/ src
/ ogl CXXFLAGS
= "-DwxUSE_DEPRECATED=0"
245 make $MAKEJOBS -C contrib
/ src
/ stc
250 UNICODE
= $PYUNICODEOPT \
253 WX_CONFIG
= " $WXBLD /wx-config --inplace" \
254 BUILD_BASE
= $WXBLD / wxPython \
258 #----------------------------------------------------------------------
260 if [ $skipinstall != yes ]; then
263 make prefix
= $INSTALLROOT$PREFIX install
264 make -C contrib
/ src
/ gizmos prefix
= $INSTALLROOT$PREFIX install
265 make -C contrib
/ src
/ ogl CXXFLAGS
= "-DwxUSE_DEPRECATED=0" prefix
= $INSTALLROOT / $PREFIX install
266 make -C contrib
/ src
/ stc prefix
= $INSTALLROOT$PREFIX install
269 # relink wx-config with a relative link
270 cd $INSTALLROOT$PREFIX / bin
272 ln -s ..
/ lib
/ wx
/ config
/* wx
-config
277 UNICODE
= $PYUNICODEOPT \
280 WX_CONFIG
= " $INSTALLROOT / $PREFIX /bin/wx-config --prefix= $INSTALLROOT / $PREFIX " \
281 BUILD_BASE
= $WXBLD / wxPython \
286 # Apple's Python (on Panther) sym-links the site-packages dir to
287 # /Library/Python/$PYVER so we need to move the files so they are
288 # installed in the physical location, not the virtual one.
289 if [ " $KIND " = "panther" ]; then
290 if [ -e $INSTALLROOT / Library
/ Python
/ $PYVER ]; then
291 rm -r $INSTALLROOT / Library
/ Python
/ $PYVER
293 mkdir -p $INSTALLROOT / Library
/ Python
/ $PYVER
294 mv $INSTALLROOT / $SITEPACKAGES /* $INSTALLROOT / Library
/ Python
/ $PYVER
295 rm -r $INSTALLROOT / System
296 SITEPACKAGES
=/ Library
/ Python
/ $PYVER
299 # install wxPython's tool scripts
300 mkdir -p $INSTALLROOT$BINPREFIX
301 cd $WXROOT / wxPython
/ scripts
302 python
$PYVER CreateMacScripts.py
$INSTALLROOT $BINPREFIX
305 # Remove the .pyc/.pyo files they just take up space and can be recreated
306 # during the install.
307 pushd $WXROOT / wxPython
308 $PYTHON $PROGDIR / ..
/ zappycfiles.py
$INSTALLROOT > / dev
/ null
311 # Set premissions for files in $INSTALLROOT
312 if [ " $UID " = "0" ]; then
313 chown
-R root
: admin
$INSTALLROOT
314 chmod -R g
+ w
$INSTALLROOT
318 if [ " $KIND " = "panther" ]; then
319 SITEPACKAGES
=/ Library
/ Python
/ $PYVER
321 PKGDIR
= `cat $INSTALLROOT $SITEPACKAGES /wx.pth`
325 #----------------------------------------------------------------------
327 # Make the Installer packages and disk image
328 if [ $skipdmg != yes ]; then
330 #-----------------------------------------------
331 # The main runtime installer package
333 # Make the welcome message
335 panther
) W_MSG
= "the Panther (OS X 10.3.x) version of" ;;
336 jaguar
) W_MSG
= "the Jaguar (OS X 10.2.x) version of" ;;
340 cat > $RESOURCEDIR / Welcome.txt
<<EOF
343 This Installer package will install the wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER . This includes:
345 * The wxPython packages and modules
346 * The wxWidgets shared libraries and headers
347 * Some command line tool scripts, installed to /usr/local/bin.
349 You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
351 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.
356 # make the preflight script
357 cat > $RESOURCEDIR / preflight
<<EOF
359 # Cleanup any old install of the wxPython package
360 rm -rf \ $2 $SITEPACKAGES /wxPython
361 rm -rf \ $2 $SITEPACKAGES /wx
362 rm -rf \ $2 $SITEPACKAGES / $PKGDIR
365 chmod + x
$RESOURCEDIR / preflight
367 # make the postflight script
368 cat > $RESOURCEDIR / postflight
<<EOF
370 # Compile the .py files in the wxPython pacakge
371 $PYTHON \ $2 $PYLIB /compileall.py \ $2 $SITEPACKAGES / $PKGDIR
372 $PYTHON -O \ $2 $PYLIB /compileall.py \ $2 $SITEPACKAGES / $PKGDIR
374 # and all of the wxPython pacakge should be group writable
375 chgrp -R admin \ $2 $SITEPACKAGES / $PKGDIR
376 chmod -R g+w \ $2 $SITEPACKAGES / $PKGDIR
380 chmod + x
$RESOURCEDIR / postflight
384 # Build the main Installer Package...
385 rm -rf wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND .pkg
386 python
$PROGDIR / ..
/ buildpkg.py \
387 --Title = wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND \
389 --Description = "wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER " \
390 --NeedsAuthorization = "YES" \
392 --InstallOnly = "YES" \
396 mv wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND .pkg
$DMGROOT
398 rm $RESOURCEDIR / postflight
399 rm $RESOURCEDIR / preflight
400 rm $RESOURCEDIR / Welcome.txt
403 #-----------------------------------------------
404 # Make a README to go on the disk image
405 cat > " $DMGROOT /README 1st.txt" <<EOF
408 This disk image contains the following items:
410 wxPython ${SHORTVER} -osx- $CHARTYPE - $VERSION - $KIND
412 This Installer contains the wxPython runtime, compiled on a
413 $KIND OS X system, using the $CHARTYPE build of the wxWidgets
414 library. It includes the Python modules and extension
415 modules, as well as the wxWidgets libraries.
417 It is possible to have more than one version of the runtime
418 installed at once if you wish. The most recently installed
419 version will be the default wxPython, but you can choose
420 another by setting the PYTHONPATH or by using the wxversion
421 module. For more details see:
422 http://wiki.wxpython.org/index.cgi/MultiVersionInstalls
425 uninstall_wxPython.py
427 A simple tool to help you manage your installed versions of
428 wxPython. It will allow you to choose from the currently
429 installed wxPython packages and to select one for
430 uninstallation. It is a text-mode tool so you can either run
431 it from a Terminal command line, or you can open it with
432 PythonLauncher and let it create a Terminal to run it in.
434 NOTE: If you have versions prior to 2.5.3.1 installed, please
435 do run this uninstall tool to remove the older version.
441 cp $PROGDIR / ..
/ uninstall_wxPython.py
$DMGROOT
444 #-----------------------------------------------
445 # Make a disk image to hold these files
446 dmgname
= wxPython
${SHORTVER} -osx- $CHARTYPE - $VERSION - $KIND -py $PYVER
447 $PROGDIR / ..
/ makedmg
$DMGROOT $DMGDIR $dmgname
449 echo Moving
$DMGDIR / $dmgname .dmg to
$DESTDIR
450 mv $DMGDIR / $dmgname .dmg
$DESTDIR
453 #---------------------------------------------------------------------------
454 # Now create app bundles for the demo, docs, and tools and make another
455 # disk image to hold it all.
456 #---------------------------------------------------------------------------
458 cat > " $DMGAPPS /README 1st.txt" <<EOF
461 On this disk image you will find Demo, Tools, Docs, and etc. for
462 wxPython $VERSION . Everything here is optional and you can drag them
463 out of the disk image and drop them wherever you want. You will need
464 to have an installed wxPython runtime to be able to use any of them.
467 wxPython Demo An application bundle version of the demo.
468 (This has it's own copy of the demo sources
471 XRCed An application for editing wxPython resource
474 PyCrust An application that provides an interactive
475 Python shell and also namespace inspectors.
479 Docs/wxDocsViewer An application that allows you to view the
480 wxWidgets documentation.
482 Docs/licence License files.
484 Docs/other A few readmes, change log, etc.
487 Samples/samples Several small sample applications that
488 demonstrate how to use wxPython.
490 Samples/demo A copy of the wxPython demo source code,
491 just open the folder and run demo.pyw.
496 # PyAlaMode An extension of PyCrust that includes source
497 # file editing capabilities.
501 if [ ! -e $TARBALLDIR / wxPython
-docs- $VERSION .
tar .gz
]; then
502 cat > " $DMGAPPS /Docs/Build ERROR.txt" <<EOF
504 The wxPython-docs tarball was not found when building this disk image!
510 tar xzvf
$TARBALLDIR / wxPython
-docs- $VERSION .
tar .gz
513 # Make an app to launch viewdocs.py
514 $PYTHONW $PROGDIR / ..
/ buildapp.py \
515 --builddir = $DMGAPPS / Docs \
516 --name = wxDocsViewer \
517 --mainprogram = $BUILDROOT / wxPython
- $VERSION / docs
/ viewdocs.py \
518 --iconfile = $PROGDIR / Info.icns \
521 cp $BUILDROOT / wxPython
- $VERSION / docs
/* .
zip $DMGAPPS / Docs
/ wxDocsViewer.app
/ Contents
/ Resources
523 cat > " $DMGAPPS /Docs/README 1st.txt" <<EOF
525 The wxDocsViewer application needs to be copied to your Desktop (or
526 someplace else you have write access to) before you can run it, so it
527 can cache some indexes within its bundle.
533 # license files, docs, etc.
535 cp -pR $SRCROOT / wxPython
/ licence .
536 cp -pR $SRCROOT / wxPython
/ docs .
543 if [ ! -e $TARBALLDIR / wxPython
-demo- $VERSION .
tar .gz
]; then
544 cat > " $DMGAPPS /Samples/Build ERROR.txt" <<EOF
546 The wxPython-demo tarball was not found when building this disk image!
549 cp " $DMGAPPS /Samples/Build ERROR.txt" $DMGAPPS
553 # Copy the demo and samples to the disk image from the tarball
554 pushd $DMGAPPS / Samples
555 tar xzvf
$TARBALLDIR / wxPython
-demo- $VERSION .
tar .gz
556 mv wxPython
- $VERSION /* .
557 rm -rf wxPython
- $VERSION
558 rm demo
/ b demo
/ .setup.sh
559 mv demo
/ demo.py demo
/ demo.pyw
562 # Make an app bundle to run the demo
563 $PYTHONW $PROGDIR / ..
/ buildapp.py \
564 --builddir = $DMGAPPS \
565 --name = "wxPython Demo" \
566 --mainprogram = $DMGAPPS / Samples
/ demo
/ demo.pyw \
567 --iconfile = $PROGDIR / RunDemo.icns \
569 cp -pR $DMGAPPS / Samples
/ demo
/* " $DMGAPPS /wxPython Demo.app/Contents/Resources"
573 # Make an app bundle to launch PyCrust
574 $PYTHONW $PROGDIR / ..
/ buildapp.py \
575 --builddir = $DMGAPPS \
577 --mainprogram = $INSTALLROOT$BINPREFIX / pycrust.py \
578 --iconfile = $PROGDIR / PieShell.icns \
581 ## TODO: PyAlaMode needs tweaked to be able to run from a bundle. It
582 ## needs to know to ignore command line parameters and etc...
584 # $PYTHONW $PROGDIR/../buildapp.py \
585 # --builddir=$DMGAPPS \
587 # --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
588 # --iconfile=$PROGDIR/PieShell.icns \
591 # Make an app to launch XRCed
592 $PYTHONW $PROGDIR / ..
/ buildapp.py \
593 --builddir = $DMGAPPS \
595 --mainprogram = $INSTALLROOT$BINPREFIX / xrced.py \
596 --iconfile = $PROGDIR / XRCed.icns \
601 # and then finally make a disk image containing everything
602 dmgname
= wxPython
${SHORTVER} -osx-docs-demos- $VERSION - $KIND
603 $PROGDIR / ..
/ makedmg
$DMGAPPS $DMGDIR $dmgname
605 echo Moving
$DMGDIR / $dmgname .dmg to
$DESTDIR
606 mv $DMGDIR / $dmgname .dmg
$DESTDIR
610 # Cleanup build/install dirs
611 if [ $skipclean != yes ]; then
612 echo "Cleaning up..."
615 echo "Cleanup is disabled. You should remove $TMPDIR when finished"