]>
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 #----------------------------------------------------------------------
205 # Configure wxWidgets
206 if [ $skipconfig != yes ]; then
210 --enable-monolithic \
215 --enable-debug_flag \
216 --enable-precomp = no \
223 # Build wxWidgets and wxPython
224 if [ $skipbuild != yes ]; then
226 # Make wxWidgets and some contribs
228 # For some reason Rez and DeRez have started locking up if run as
229 # root, figure out why, but in the meantime...
230 if [ " $UID " = "0" ]; then
232 if [ " $CHARTYPE " = "ansi" ]; then
233 su robind
-c "make lib/libwx_macd-2.5.4.r"
235 su robind
-c "make lib/libwx_macud-2.5.4.r"
240 make $MAKEJOBS -C contrib
/ src
/ gizmos
241 make $MAKEJOBS -C contrib
/ src
/ ogl CXXFLAGS
= "-DwxUSE_DEPRECATED=0"
242 make $MAKEJOBS -C contrib
/ src
/ stc
247 UNICODE
= $PYUNICODEOPT \
250 WX_CONFIG
= " $WXBLD /wx-config --inplace" \
251 BUILD_BASE
= $WXBLD / wxPython \
255 #----------------------------------------------------------------------
257 if [ $skipinstall != yes ]; then
260 make prefix
= $INSTALLROOT$PREFIX install
261 make -C contrib
/ src
/ gizmos prefix
= $INSTALLROOT$PREFIX install
262 make -C contrib
/ src
/ ogl CXXFLAGS
= "-DwxUSE_DEPRECATED=0" prefix
= $INSTALLROOT / $PREFIX install
263 make -C contrib
/ src
/ stc prefix
= $INSTALLROOT$PREFIX install
266 # relink wx-config with a relative link
267 cd $INSTALLROOT$PREFIX / bin
269 ln -s ..
/ lib
/ wx
/ config
/* wx
-config
274 UNICODE
= $PYUNICODEOPT \
277 WX_CONFIG
= " $INSTALLROOT / $PREFIX /bin/wx-config --prefix= $INSTALLROOT / $PREFIX " \
278 BUILD_BASE
= $WXBLD / wxPython \
283 # Apple's Python (on Panther) sym-links the site-packages dir to
284 # /Library/Python/$PYVER so we need to move the files so they are
285 # installed in the physical location, not the virtual one.
286 if [ " $KIND " = "panther" ]; then
287 if [ -e $INSTALLROOT / Library
/ Python
/ $PYVER ]; then
288 rm -r $INSTALLROOT / Library
/ Python
/ $PYVER
290 mkdir -p $INSTALLROOT / Library
/ Python
/ $PYVER
291 mv $INSTALLROOT / $SITEPACKAGES /* $INSTALLROOT / Library
/ Python
/ $PYVER
292 rm -r $INSTALLROOT / System
293 SITEPACKAGES
=/ Library
/ Python
/ $PYVER
296 # install wxPython's tool scripts
297 mkdir -p $INSTALLROOT$BINPREFIX
298 cd $WXROOT / wxPython
/ scripts
299 python
$PYVER CreateMacScripts.py
$INSTALLROOT $BINPREFIX
302 # Remove the .pyc/.pyo files they just take up space and can be recreated
303 # during the install.
304 pushd $WXROOT / wxPython
305 $PYTHON $PROGDIR / ..
/ zappycfiles.py
$INSTALLROOT > / dev
/ null
308 # Set premissions for files in $INSTALLROOT
309 if [ " $UID " = "0" ]; then
310 chown
-R root
: admin
$INSTALLROOT
311 chmod -R g
+ w
$INSTALLROOT
315 if [ " $KIND " = "panther" ]; then
316 SITEPACKAGES
=/ Library
/ Python
/ $PYVER
318 PKGDIR
= `cat $INSTALLROOT $SITEPACKAGES /wx.pth`
322 #----------------------------------------------------------------------
324 # Make the Installer packages and disk image
325 if [ $skipdmg != yes ]; then
327 #-----------------------------------------------
328 # The main runtime installer package
330 # Make the welcome message
332 panther
) W_MSG
= "the Panther (OS X 10.3.x) version of" ;;
333 jaguar
) W_MSG
= "the Jaguar (OS X 10.2.x) version of" ;;
337 cat > $RESOURCEDIR / Welcome.txt
<<EOF
340 This Installer package will install the wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER . This includes:
342 * The wxPython packages and modules
343 * The wxWidgets shared libraries and headers
344 * Some command line tool scripts, installed to /usr/local/bin.
346 You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
348 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.
353 # make the preflight script
354 cat > $RESOURCEDIR / preflight
<<EOF
356 # Cleanup any old install of the wxPython package
357 rm -rf \ $2 $SITEPACKAGES /wxPython
358 rm -rf \ $2 $SITEPACKAGES /wx
359 rm -rf \ $2 $SITEPACKAGES / $PKGDIR
362 chmod + x
$RESOURCEDIR / preflight
364 # make the postflight script
365 cat > $RESOURCEDIR / postflight
<<EOF
367 # Compile the .py files in the wxPython pacakge
368 $PYTHON \ $2 $PYLIB /compileall.py \ $2 $SITEPACKAGES / $PKGDIR
369 $PYTHON -O \ $2 $PYLIB /compileall.py \ $2 $SITEPACKAGES / $PKGDIR
371 # and all of the wxPython pacakge should be group writable
372 chgrp -R admin \ $2 $SITEPACKAGES / $PKGDIR
373 chmod -R g+w \ $2 $SITEPACKAGES / $PKGDIR
377 chmod + x
$RESOURCEDIR / postflight
381 # Build the main Installer Package...
382 rm -rf wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND .pkg
383 python
$PROGDIR / ..
/ buildpkg.py \
384 --Title = wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND \
386 --Description = "wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER " \
387 --NeedsAuthorization = "YES" \
389 --InstallOnly = "YES" \
393 mv wxPython
${SHORTVER} -osx- $CHARTYPE - $KIND .pkg
$DMGROOT
395 rm $RESOURCEDIR / postflight
396 rm $RESOURCEDIR / preflight
397 rm $RESOURCEDIR / Welcome.txt
400 #-----------------------------------------------
401 # Make a README to go on the disk image
402 cat > " $DMGROOT /README 1st.txt" <<EOF
405 This disk image contains the following items:
407 wxPython ${SHORTVER} -osx- $CHARTYPE - $VERSION - $KIND
409 This Installer contains the wxPython runtime, compiled on a
410 $KIND OS X system, using the $CHARTYPE build of the wxWidgets
411 library. It includes the Python modules and extension
412 modules, as well as the wxWidgets libraries.
414 It is possible to have more than one version of the runtime
415 installed at once if you wish. The most recently installed
416 version will be the default wxPython, but you can choose
417 another by setting the PYTHONPATH or by using the wxversion
418 module. For more details see:
419 http://wiki.wxpython.org/index.cgi/MultiVersionInstalls
422 uninstall_wxPython.py
424 A simple tool to help you manage your installed versions of
425 wxPython. It will allow you to choose from the currently
426 installed wxPython packages and to select one for
427 uninstallation. It is a text-mode tool so you can either run
428 it from a Terminal command line, or you can open it with
429 PythonLauncher and let it create a Terminal to run it in.
431 NOTE: If you have versions prior to 2.5.3.1 installed, please
432 do run this uninstall tool to remove the older version.
438 cp $PROGDIR / ..
/ uninstall_wxPython.py
$DMGROOT
441 #-----------------------------------------------
442 # Make a disk image to hold these files
443 dmgname
= wxPython
${SHORTVER} -osx- $CHARTYPE - $VERSION - $KIND -py $PYVER
444 $PROGDIR / ..
/ makedmg
$DMGROOT $DMGDIR $dmgname
446 echo Moving
$DMGDIR / $dmgname .dmg to
$DESTDIR
447 mv $DMGDIR / $dmgname .dmg
$DESTDIR
450 #---------------------------------------------------------------------------
451 # Now create app bundles for the demo, docs, and tools and make another
452 # disk image to hold it all.
453 #---------------------------------------------------------------------------
455 cat > " $DMGAPPS /README 1st.txt" <<EOF
458 On this disk image you will find Demo, Tools, Docs, and etc. for
459 wxPython $VERSION . Everything here is optional and you can drag them
460 out of the disk image and drop them wherever you want. You will need
461 to have an installed wxPython runtime to be able to use any of them.
464 wxPython Demo An application bundle version of the demo.
465 (This has it's own copy of the demo sources
468 XRCed An application for editing wxPython resource
471 PyCrust An application that provides an interactive
472 Python shell and also namespace inspectors.
476 Docs/wxDocsViewer An application that allows you to view the
477 wxWidgets documentation.
479 Docs/licence License files.
481 Docs/other A few readmes, change log, etc.
484 Samples/samples Several small sample applications that
485 demonstrate how to use wxPython.
487 Samples/demo A copy of the wxPython demo source code,
488 just open the folder and run demo.pyw.
493 # PyAlaMode An extension of PyCrust that includes source
494 # file editing capabilities.
498 if [ ! -e $TARBALLDIR / wxPython
-docs- $VERSION .
tar .gz
]; then
499 cat > " $DMGAPPS /Docs/Build ERROR.txt" <<EOF
501 The wxPython-docs tarball was not found when building this disk image!
507 tar xzvf
$TARBALLDIR / wxPython
-docs- $VERSION .
tar .gz
510 # Make an app to launch viewdocs.py
511 $PYTHONW $PROGDIR / ..
/ buildapp.py \
512 --builddir = $DMGAPPS / Docs \
513 --name = wxDocsViewer \
514 --mainprogram = $BUILDROOT / wxPython
- $VERSION / docs
/ viewdocs.py \
515 --iconfile = $PROGDIR / Info.icns \
518 cp $BUILDROOT / wxPython
- $VERSION / docs
/* .
zip $DMGAPPS / Docs
/ wxDocsViewer.app
/ Contents
/ Resources
520 cat > " $DMGAPPS /Docs/README 1st.txt" <<EOF
522 The wxDocsViewer application needs to be copied to your Desktop (or
523 someplace else you have write access to) before you can run it, so it
524 can cache some indexes within its bundle.
530 # license files, docs, etc.
532 cp -pR $SRCROOT / wxPython
/ licence .
533 cp -pR $SRCROOT / wxPython
/ docs .
540 if [ ! -e $TARBALLDIR / wxPython
-demo- $VERSION .
tar .gz
]; then
541 cat > " $DMGAPPS /Samples/Build ERROR.txt" <<EOF
543 The wxPython-demo tarball was not found when building this disk image!
546 cp " $DMGAPPS /Samples/Build ERROR.txt" $DMGAPPS
550 # Copy the demo and samples to the disk image from the tarball
551 pushd $DMGAPPS / Samples
552 tar xzvf
$TARBALLDIR / wxPython
-demo- $VERSION .
tar .gz
553 mv wxPython
- $VERSION /* .
554 rm -rf wxPython
- $VERSION
555 rm demo
/ b demo
/ .setup.sh
556 mv demo
/ demo.py demo
/ demo.pyw
559 # Make an app bundle to run the demo
560 $PYTHONW $PROGDIR / ..
/ buildapp.py \
561 --builddir = $DMGAPPS \
562 --name = "wxPython Demo" \
563 --mainprogram = $DMGAPPS / Samples
/ demo
/ demo.pyw \
564 --iconfile = $PROGDIR / RunDemo.icns \
566 cp -pR $DMGAPPS / Samples
/ demo
/* " $DMGAPPS /wxPython Demo.app/Contents/Resources"
570 # Make an app bundle to launch PyCrust
571 $PYTHONW $PROGDIR / ..
/ buildapp.py \
572 --builddir = $DMGAPPS \
574 --mainprogram = $INSTALLROOT$BINPREFIX / pycrust.py \
575 --iconfile = $PROGDIR / PieShell.icns \
578 ## TODO: PyAlaMode needs tweaked to be able to run from a bundle. It
579 ## needs to know to ignore command line parameters and etc...
581 # $PYTHONW $PROGDIR/../buildapp.py \
582 # --builddir=$DMGAPPS \
584 # --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
585 # --iconfile=$PROGDIR/PieShell.icns \
588 # Make an app to launch XRCed
589 $PYTHONW $PROGDIR / ..
/ buildapp.py \
590 --builddir = $DMGAPPS \
592 --mainprogram = $INSTALLROOT$BINPREFIX / xrced.py \
593 --iconfile = $PROGDIR / XRCed.icns \
598 # and then finally make a disk image containing everything
599 dmgname
= wxPython
${SHORTVER} -osx-docs-demos- $VERSION - $KIND
600 $PROGDIR / ..
/ makedmg
$DMGAPPS $DMGDIR $dmgname
602 echo Moving
$DMGDIR / $dmgname .dmg to
$DESTDIR
603 mv $DMGDIR / $dmgname .dmg
$DESTDIR
607 # Cleanup build/install dirs
608 if [ $skipclean != yes ]; then
609 echo "Cleaning up..."
612 echo "Cleanup is disabled. You should remove $TMPDIR when finished"