]>
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 $UNICODEOPT $OTHER_CFG_OPTS
225 # Build wxWidgets and wxPython
226 if [ $skipbuild != yes ]; then
228 # Make wxWidgets and some contribs
230 # For some reason Rez and DeRez have started locking up if run via
231 # an ssh terminal. Figure out why, but in the meantime...
232 if [ " $CHARTYPE " = "ansi" ]; then
233 echo cp / projects
/ wx2.5
/ bld
/ lib
/ libwx_macd
-2 .5.?.r
* lib
234 cp / projects
/ wx2.5
/ bld
/ lib
/ libwx_macd
-2 .5.?.r
* lib
236 echo cp / projects
/ wx2.5
/ bld
-unicode / lib
/ libwx_macud
-2 .5.?.r
* lib
237 cp / projects
/ wx2.5
/ bld
-unicode / lib
/ libwx_macud
-2 .5.?.r
* lib
242 make $MAKEJOBS -C contrib
/ src
/ gizmos
243 make $MAKEJOBS -C contrib
/ src
/ ogl CXXFLAGS
= "-DwxUSE_DEPRECATED=0"
244 make $MAKEJOBS -C contrib
/ src
/ stc
249 UNICODE
= $PYUNICODEOPT \
252 WX_CONFIG
= " $WXBLD /wx-config --inplace" \
253 BUILD_BASE
= $WXBLD / wxPython \
257 #----------------------------------------------------------------------
259 if [ $skipinstall != yes ]; then
262 make prefix
= $INSTALLROOT$PREFIX install
263 make -C contrib
/ src
/ gizmos prefix
= $INSTALLROOT$PREFIX install
264 make -C contrib
/ src
/ ogl CXXFLAGS
= "-DwxUSE_DEPRECATED=0" prefix
= $INSTALLROOT / $PREFIX install
265 make -C contrib
/ src
/ stc prefix
= $INSTALLROOT$PREFIX install
268 # relink wx-config with a relative link
269 cd $INSTALLROOT$PREFIX / bin
271 ln -s ..
/ lib
/ wx
/ config
/* wx
-config
276 UNICODE
= $PYUNICODEOPT \
279 WX_CONFIG
= " $INSTALLROOT / $PREFIX /bin/wx-config --prefix= $INSTALLROOT / $PREFIX " \
280 BUILD_BASE
= $WXBLD / wxPython \
285 # Apple's Python (on Panther) sym-links the site-packages dir to
286 # /Library/Python/$PYVER so we need to move the files so they are
287 # installed in the physical location, not the virtual one.
288 if [ " $KIND " = "panther" ]; then
289 if [ -e $INSTALLROOT / Library
/ Python
/ $PYVER ]; then
290 rm -r $INSTALLROOT / Library
/ Python
/ $PYVER
292 mkdir -p $INSTALLROOT / Library
/ Python
/ $PYVER
293 mv $INSTALLROOT / $SITEPACKAGES /* $INSTALLROOT / Library
/ Python
/ $PYVER
294 rm -r $INSTALLROOT / System
295 SITEPACKAGES
=/ Library
/ Python
/ $PYVER
298 # install wxPython's tool scripts
299 mkdir -p $INSTALLROOT$BINPREFIX
300 cd $WXROOT / wxPython
/ scripts
301 python
$PYVER CreateMacScripts.py
$INSTALLROOT $BINPREFIX
304 # Remove the .pyc/.pyo files they just take up space and can be recreated
305 # during the install.
306 pushd $WXROOT / wxPython
307 $PYTHON $PROGDIR / ..
/ zappycfiles.py
$INSTALLROOT > / dev
/ null
310 # Set premissions for files in $INSTALLROOT
311 if [ " $UID " = "0" ]; then
312 chown
-R root
: admin
$INSTALLROOT
313 chmod -R g
+ w
$INSTALLROOT
317 if [ " $KIND " = "panther" ]; then
318 SITEPACKAGES
=/ Library
/ Python
/ $PYVER
320 PKGDIR
= `cat $INSTALLROOT $SITEPACKAGES /wx.pth`
324 #----------------------------------------------------------------------
326 # Make the Installer packages and disk image
327 if [ $skipdmg != yes ]; then
329 #-----------------------------------------------
330 # The main runtime installer package
332 # Make the welcome message
334 panther
) W_MSG
= "the Panther (OS X 10.3.x) version of" ;;
335 jaguar
) W_MSG
= "the Jaguar (OS X 10.2.x) version of" ;;
339 cat > $RESOURCEDIR / Welcome.txt
<<EOF
342 This Installer package will install the wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER . This includes:
344 * The wxPython packages and modules
345 * The wxWidgets shared libraries and headers
346 * Some command line tool scripts, installed to /usr/local/bin.
348 You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
350 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.
355 # make the preflight script
356 cat > $RESOURCEDIR / preflight
<<EOF
358 # Cleanup any old install of the wxPython package
359 rm -rf \ $2 $SITEPACKAGES /wxPython
360 rm -rf \ $2 $SITEPACKAGES /wx
361 rm -rf \ $2 $SITEPACKAGES / $PKGDIR
364 chmod + x
$RESOURCEDIR / preflight
366 # make the postflight script
367 cat > $RESOURCEDIR / postflight
<<EOF
369 # Compile the .py files in the wxPython pacakge
370 $PYTHON \ $2 $PYLIB /compileall.py \ $2 $SITEPACKAGES / $PKGDIR
371 $PYTHON -O \ $2 $PYLIB /compileall.py \ $2 $SITEPACKAGES / $PKGDIR
373 # and all of the wxPython pacakge should be group writable
374 chgrp -R admin \ $2 $SITEPACKAGES / $PKGDIR
375 chmod -R g+w \ $2 $SITEPACKAGES / $PKGDIR
379 chmod + x
$RESOURCEDIR / postflight
383 # Build the main Installer Package...
384 rm -rf wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND .pkg
385 python
$PROGDIR / ..
/ buildpkg.py \
386 --Title = wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND \
388 --Description = "wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER " \
389 --NeedsAuthorization = "YES" \
391 --InstallOnly = "YES" \
395 mv wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND .pkg
$DMGROOT
397 rm $RESOURCEDIR / postflight
398 rm $RESOURCEDIR / preflight
399 rm $RESOURCEDIR / Welcome.txt
402 #-----------------------------------------------
403 # Make a README to go on the disk image
404 cat > " $DMGROOT /README 1st.txt" <<EOF
407 This disk image contains the following items:
409 wxPython ${SHORTVER} -osx- $CHARTYPE - $VERSION - $KIND
411 This Installer contains the wxPython runtime, compiled on a
412 $KIND OS X system, using the $CHARTYPE build of the wxWidgets
413 library. It includes the Python modules and extension
414 modules, as well as the wxWidgets libraries.
416 It is possible to have more than one version of the runtime
417 installed at once if you wish. The most recently installed
418 version will be the default wxPython, but you can choose
419 another by setting the PYTHONPATH or by using the wxversion
420 module. For more details see:
421 http://wiki.wxpython.org/index.cgi/MultiVersionInstalls
424 uninstall_wxPython.py
426 A simple tool to help you manage your installed versions of
427 wxPython. It will allow you to choose from the currently
428 installed wxPython packages and to select one for
429 uninstallation. It is a text-mode tool so you can either run
430 it from a Terminal command line, or you can open it with
431 PythonLauncher and let it create a Terminal to run it in.
433 NOTE: If you have versions prior to 2.5.3.1 installed, please
434 do run this uninstall tool to remove the older version.
440 cp $PROGDIR / ..
/ uninstall_wxPython.py
$DMGROOT
443 #-----------------------------------------------
444 # Make a disk image to hold these files
445 dmgname
= wxPython
${SHORTVER} -osx- $CHARTYPE - $VERSION - $KIND -py $PYVER
446 $PROGDIR / ..
/ makedmg
$DMGROOT $DMGDIR $dmgname
448 echo Moving
$DMGDIR / $dmgname .dmg to
$DESTDIR
449 mv $DMGDIR / $dmgname .dmg
$DESTDIR
452 #---------------------------------------------------------------------------
453 # Now create app bundles for the demo, docs, and tools and make another
454 # disk image to hold it all.
455 #---------------------------------------------------------------------------
457 cat > " $DMGAPPS /README 1st.txt" <<EOF
460 On this disk image you will find Demo, Tools, Docs, and etc. for
461 wxPython $VERSION . Everything here is optional and you can drag them
462 out of the disk image and drop them wherever you want. You will need
463 to have an installed wxPython runtime to be able to use any of them.
466 wxPython Demo An application bundle version of the demo.
467 (This has it's own copy of the demo sources
470 XRCed An application for editing wxPython resource
473 PyCrust An application that provides an interactive
474 Python shell and also namespace inspectors.
478 Docs/wxDocsViewer An application that allows you to view the
479 wxWidgets documentation.
481 Docs/licence License files.
483 Docs/other A few readmes, change log, etc.
486 Samples/samples Several small sample applications that
487 demonstrate how to use wxPython.
489 Samples/demo A copy of the wxPython demo source code,
490 just open the folder and run demo.pyw.
495 # PyAlaMode An extension of PyCrust that includes source
496 # file editing capabilities.
500 if [ ! -e $TARBALLDIR / wxPython
-docs- $VERSION .
tar .gz
]; then
501 cat > " $DMGAPPS /Docs/Build ERROR.txt" <<EOF
503 The wxPython-docs tarball was not found when building this disk image!
509 tar xzvf
$TARBALLDIR / wxPython
-docs- $VERSION .
tar .gz
512 # Make an app to launch viewdocs.py
513 $PYTHONW $PROGDIR / ..
/ buildapp.py \
514 --builddir = $DMGAPPS / Docs \
515 --name = wxDocsViewer \
516 --mainprogram = $BUILDROOT / wxPython
- $VERSION / docs
/ viewdocs.py \
517 --iconfile = $PROGDIR / Info.icns \
520 cp $BUILDROOT / wxPython
- $VERSION / docs
/* .
zip $DMGAPPS / Docs
/ wxDocsViewer.app
/ Contents
/ Resources
522 cat > " $DMGAPPS /Docs/README 1st.txt" <<EOF
524 The wxDocsViewer application needs to be copied to your Desktop (or
525 someplace else you have write access to) before you can run it, so it
526 can cache some indexes within its bundle.
532 # license files, docs, etc.
534 cp -pR $SRCROOT / wxPython
/ licence .
535 cp -pR $SRCROOT / wxPython
/ docs .
542 if [ ! -e $TARBALLDIR / wxPython
-demo- $VERSION .
tar .gz
]; then
543 cat > " $DMGAPPS /Samples/Build ERROR.txt" <<EOF
545 The wxPython-demo tarball was not found when building this disk image!
548 cp " $DMGAPPS /Samples/Build ERROR.txt" $DMGAPPS
552 # Copy the demo and samples to the disk image from the tarball
553 pushd $DMGAPPS / Samples
554 tar xzvf
$TARBALLDIR / wxPython
-demo- $VERSION .
tar .gz
555 mv wxPython
- $VERSION /* .
556 rm -rf wxPython
- $VERSION
557 rm demo
/ b demo
/ .setup.sh
558 mv demo
/ demo.py demo
/ demo.pyw
561 # Make an app bundle to run the demo
562 $PYTHONW $PROGDIR / ..
/ buildapp.py \
563 --builddir = $DMGAPPS \
564 --name = "wxPython Demo" \
565 --mainprogram = $DMGAPPS / Samples
/ demo
/ demo.pyw \
566 --iconfile = $PROGDIR / RunDemo.icns \
568 cp -pR $DMGAPPS / Samples
/ demo
/* " $DMGAPPS /wxPython Demo.app/Contents/Resources"
572 # Make an app bundle to launch PyCrust
573 $PYTHONW $PROGDIR / ..
/ buildapp.py \
574 --builddir = $DMGAPPS \
576 --mainprogram = $INSTALLROOT$BINPREFIX / pycrust.py \
577 --iconfile = $PROGDIR / PieShell.icns \
580 ## TODO: PyAlaMode needs tweaked to be able to run from a bundle. It
581 ## needs to know to ignore command line parameters and etc...
583 # $PYTHONW $PROGDIR/../buildapp.py \
584 # --builddir=$DMGAPPS \
586 # --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
587 # --iconfile=$PROGDIR/PieShell.icns \
590 # Make an app to launch XRCed
591 $PYTHONW $PROGDIR / ..
/ buildapp.py \
592 --builddir = $DMGAPPS \
594 --mainprogram = $INSTALLROOT$BINPREFIX / xrced.py \
595 --iconfile = $PROGDIR / XRCed.icns \
600 # and then finally make a disk image containing everything
601 dmgname
= wxPython
${SHORTVER} -osx-docs-demos- $VERSION - $KIND
602 $PROGDIR / ..
/ makedmg
$DMGAPPS $DMGDIR $dmgname
604 echo Moving
$DMGDIR / $dmgname .dmg to
$DESTDIR
605 mv $DMGDIR / $dmgname .dmg
$DESTDIR
609 # Cleanup build/install dirs
610 if [ $skipclean != yes ]; then
611 echo "Cleaning up..."
614 echo "Cleanup is disabled. You should remove $TMPDIR when finished"