]>
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 " skipconfig Don't run configure"
35 echo " skipbuild Don't build wxWidgets or wxPython"
36 echo " skipinstall Don't do the installation step"
37 echo " skipdmg Don't make the package or diskimage"
38 echo " skipclean Don't do the cleanup at the end"
50 panther
) PYTHON
=/usr
/bin
/python
;;
51 jaguar
) PYTHON
=/usr
/local
/bin
/python
;;
67 skiptar
) skiptar
=yes ;;
68 skipconfig
) skipconfig
=yes; skiptar
=yes ;;
69 skipbuild
) skipbuild
=yes; skipconfig
=yes; skiptar
=yes ;;
70 skipinstall
) skipinstall
=yes ;;
71 skipdmg
) skipdmg
=yes ;;
72 skipclean
) skipclean
=yes ;;
73 inplace
) inplace
=yes; skiptar
=yes ;;
75 *) echo "Unknown flag \"${flag}\""
82 VERSION
=`$PYTHON -c "import setup;print setup.VERSION"`
83 PYVER
=`$PYTHON -c "import sys; print sys.version[:3]"`
84 PYPREFIX
=`$PYTHON -c "import sys; print sys.exec_prefix"`
85 PYLIB
=$PYPREFIX/lib
/python
$PYVER
86 SITEPACKAGES
=$PYLIB/site
-packages
90 if [ -z "$TARBALLDIR" ]; then
91 # this is a spot on my fileserver where the tarballs go, adjust
92 # as needed for where you put the wxPython tarball, or set
93 # TARBALLDIR before invoking this script...
94 TARBALLDIR
=/stuff
/Development
/wxPython
/dist
/$VERSION
96 TARBALL
=$TARBALLDIR/wxPythonSrc
-$VERSION.
tar.gz
98 if [ ! -e $TARBALLDIR/wxPythonDemo
-$VERSION.
tar.gz
]; then
99 echo "-------------------------------------------------------"
100 echo " WARNING: Demo tarball not found, will skip building "
101 echo " the Demo app bundle and etc."
102 echo " $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz"
103 echo "-------------------------------------------------------"
106 if [ ! -e $TARBALLDIR/wxPythonDocs
-$VERSION.
tar.gz
]; then
107 echo "-------------------------------------------------------"
108 echo " WARNING: Docs tarball not found, will skip building "
109 echo " the the wxDocsViewer app bundle and etc."
110 echo " $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz"
111 echo "-------------------------------------------------------"
117 PREFIX
=/usr
/local
/lib
/wxPython
-$VERSION
118 BINPREFIX
=/usr
/local
/bin
120 WXROOT
=`dirname $PWD`
121 PROGDIR
="`dirname \"$0\"`"
122 TMPDIR
=$PWD/_build_dmg
124 BUILDROOT
=$TMPDIR/build
125 INSTALLROOT
=$TMPDIR/install
126 INSTALLDEVEL
=$TMPDIR/install-devel
128 RESOURCEDIR
=$PROGDIR/resources
130 SRCROOT
=$BUILDROOT/wxPythonSrc
-$VERSION
133 #----------------------------------------------------------------------
137 mkdir -p $INSTALLROOT
138 #mkdir -p $INSTALLDEVEL
140 mkdir -p $DMGDIR/root
/Apps
141 mkdir -p $DMGDIR/root
/Docs
142 mkdir -p $DMGDIR/root
/Samples
148 #----------------------------------------------------------------------
151 if [ $skiptar != yes ]; then
152 echo Unarchiving tarball...
156 if [ $inplace = no
]; then
157 # make a build dir and cd to it.
158 cd wxPythonSrc
-$VERSION
164 # If building "inplace" then our build dir will be BUILDROOT,
165 # adjust the variables to find things that way.
171 echo "Using source tree: $WXDIR"
172 echo "Using build dir: $WXBLD"
174 #----------------------------------------------------------------------
177 # Configure wxWidgets
178 if [ $skipconfig != yes ]; then
182 --enable-monolithic \
187 --enable-precomp=no \
190 ## --enable-optimise \
191 ## --with-libjpeg=builtin \
192 ## --with-libpng=builtin \
193 ## --with-libtiff=builtin \
194 ## --with-zlib=builtin \
198 # Build wxWidgets and wxPython
199 if [ $skipbuild != yes ]; then
201 # Make wxWidgets and some contribs
203 make -C contrib
/src
/gizmos
204 make -C contrib
/src
/ogl CXXFLAGS
="-DwxUSE_DEPRECATED=0"
205 make -C contrib
/src
/stc
206 make -C contrib
/src
/xrc
212 WX_CONFIG
="$WXBLD/wx-config --inplace" \
213 BUILD_BASE
=$WXBLD/wxPython \
217 # Build wxrc (XRC resource tool)
218 cd $WXBLD/contrib
/utils
/wxrc
224 #----------------------------------------------------------------------
226 if [ $skipinstall != yes ]; then
229 make prefix
=$INSTALLROOT$PREFIX install
230 make -C contrib
/src
/gizmos prefix
=$INSTALLROOT$PREFIX install
231 make -C contrib
/src
/ogl CXXFLAGS
="-DwxUSE_DEPRECATED=0" prefix
=$INSTALLROOT/$PREFIX install
232 make -C contrib
/src
/stc prefix
=$INSTALLROOT$PREFIX install
233 make -C contrib
/src
/xrc prefix
=$INSTALLROOT$PREFIX install
240 WX_CONFIG
="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
241 BUILD_BASE
=$WXBLD/wxPython \
246 # Apple's Python (on Panther) sym-links the site-packages dir to
247 # /Library/Python/$PYVER so we need to move the files so they are
248 # installed in the physical location, not the virtual one.
249 if [ "$KIND" = "panther" ]; then
250 if [ -e $INSTALLROOT/Library
/Python
/$PYVER ]; then
251 rm -r $INSTALLROOT/Library
/Python
/$PYVER
253 mkdir -p $INSTALLROOT/Library
/Python
/$PYVER
254 mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library
/Python
/$PYVER
255 rm -r $INSTALLROOT/System
256 SITEPACKAGES
=/Library
/Python
/$PYVER
260 # install wxPython's tool scripts
261 mkdir -p $INSTALLROOT$BINPREFIX
262 cd $WXDIR/wxPython
/scripts
263 python
$PYVER CreateMacScripts.py
$INSTALLROOT $BINPREFIX
267 cp $WXBLD/contrib
/utils
/wxrc
/wxrc
$INSTALLROOT$BINPREFIX
270 # Set premissions for files in $INSTALLROOT
271 if [ "$UID" = "0" ]; then
272 chown
-R root
:admin
$INSTALLROOT
273 chmod -R g
+w
$INSTALLROOT
279 #----------------------------------------------------------------------
281 # Make the Installer packages and disk image
282 if [ $skipdmg != yes ]; then
284 # Remove the .pyc/.pyo files they just take up space and can be recreated
285 # during the install.
286 $PYTHON $PROGDIR/..
/zappycfiles.py
$INSTALLROOT > /dev
/null
289 # Make the welcome message
291 panther
) W_MSG
="the Panther (OS X 10.3.x) version of" ;;
292 jaguar
) W_MSG
="the Jaguar (OS X 10.2.x) version of" ;;
294 cat > $RESOURCEDIR/Welcome.txt
<<EOF
297 This program will install wxPython $VERSION for $W_MSG MacPython-OSX $PYVER.
299 You must install onto your current boot disk, even though the installer does not enforce this, otherwise things will not work.
304 # make the preflight script
305 cat > $RESOURCEDIR/preflight
<<EOF
307 # Cleanup any old install of the wxPython package
308 rm -rf \$2$SITEPACKAGES/wxPython
309 rm -rf \$2$SITEPACKAGES/wx
312 chmod +x
$RESOURCEDIR/preflight
314 # make the postflight script
315 cat > $RESOURCEDIR/postflight
<<EOF
317 # Compile the .py files in the wxPython pacakge
318 $PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wxPython
319 $PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wx
320 $PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wxPython
321 $PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wx
324 # and all of the wxPython pacakge should be group writable
325 chgrp -R admin \$2$SITEPACKAGES/wxPython
326 chmod -R g+w \$2$SITEPACKAGES/wxPython
327 chgrp -R admin \$2$SITEPACKAGES/wx
328 chmod -R g+w \$2$SITEPACKAGES/wx
332 chmod +x
$RESOURCEDIR/postflight
336 # Build the main Installer Package...
337 rm -rf wxPythonOSX
-$KIND.pkg
338 python
$PROGDIR/..
/buildpkg.py \
339 --Title=wxPythonOSX
-$KIND \
341 --Description="wxPython $VERSION for $W_MSG MacPython-OSX $PYVER" \
342 --NeedsAuthorization="YES" \
344 --InstallOnly="YES" \
348 mv wxPythonOSX
-$KIND.pkg
$DMGDIR/root
352 # Make a README.txt to go on the disk image
353 cat > "$DMGDIR/root/README 1st.txt" <<EOF
356 On this disk image you will find the installer for wxPython $VERSION for $W_MSG MacPython-OSX $PYVER. MacPython-OSX is not included.
358 wxPython-$KIND.pkg The installer package. It contains the wxPython
359 extension modules, wxMac dynamic libraries and
360 headers, and some scripts for the command-line
363 Everything else here is optional and you can drag them out of the disk
364 image and drop them wherever you want. You do need to install the above
365 package before you can use any of the items below.
368 Apps/wxPython Demo An application bundle version of the demo.
369 (This has it's own copy of the sources within
372 Apps/XRCed An application for editing wxPython resource
375 Apps/PyCrust An application that provides an interactive
376 Python shell and also namespace inspectors.
380 Docs/wxDocsViewer An application that allows you to view the
381 wxWidgets documentation.
383 Docs/licence License files.
385 Docs/other A few readmes, change log, etc.
388 Samples/samples Several small sample applications that
389 demonstrate how to use wxPython.
391 Samples/demo A copy of the wxPython demo source code,
392 just open the folder and run demo.pyw.
397 # PyAlaMode An extension of PyCrust that includes source
398 # file editing capabilities.
402 if [ ! -e $TARBALLDIR/wxPythonDocs
-$VERSION.
tar.gz
]; then
403 cat > "$DMGDIR/root/Docs/Build ERROR.txt" <<EOF
405 The wxPythonDocs tarball was not found when building this disk image!
411 tar xzvf
$TARBALLDIR/wxPythonDocs
-$VERSION.
tar.gz
414 # Make an app to launch viewdocs.py
415 $PYTHONW $PROGDIR/..
/buildapp.py \
416 --builddir=$DMGDIR/root
/Docs \
417 --name=wxDocsViewer \
418 --mainprogram=$BUILDROOT/wxPython
-$VERSION/docs
/viewdocs.py \
419 --iconfile=$PROGDIR/Info.icns \
422 cp $BUILDROOT/wxPython
-$VERSION/docs
/*.
zip $DMGDIR/root
/Docs
/wxDocsViewer.app
/Contents
/Resources
424 cat > "$DMGDIR/root/Docs/README 1st.txt" <<EOF
426 The wxDocsViewer application needs to be copied to your Desktop (or
427 someplace else you have write access to) before you can run it, so it
428 can cache some indexes within its bundle.
434 # license files, docs, etc.
435 pushd $DMGDIR/root
/Docs
436 cp -pR $SRCROOT/wxPython
/licence .
437 cp -pR $SRCROOT/wxPython
/docs .
444 if [ ! -e $TARBALLDIR/wxPythonDemo
-$VERSION.
tar.gz
]; then
445 cat > "$DMGDIR/root/Samples/Build ERROR.txt" <<EOF
447 The wxPythonDemo tarball was not found when building this disk image!
450 cp "$DMGDIR/root/Samples/Build ERROR.txt" $DMGDIR/root
/Apps
454 # Copy the demo and samples to the disk image from the tarball
455 pushd $DMGDIR/root
/Samples
456 tar xzvf
$TARBALLDIR/wxPythonDemo
-$VERSION.
tar.gz
457 mv wxPython
-$VERSION/* .
458 rm -rf wxPython
-$VERSION
459 rm demo
/b demo
/.setup.sh
460 mv demo
/demo.py demo
/demo.pyw
463 # Make an app bundle to run the demo
464 $PYTHONW $PROGDIR/..
/buildapp.py \
465 --builddir=$DMGDIR/root
/Apps \
466 --name="wxPython Demo" \
467 --mainprogram=$DMGDIR/root
/Samples
/demo
/demo.pyw \
468 --iconfile=$PROGDIR/RunDemo.icns \
470 cp -pR $DMGDIR/root
/Samples
/demo
/* "$DMGDIR/root/Apps/wxPython Demo.app/Contents/Resources"
474 # Make an app bundle to launch PyCrust
475 $PYTHONW $PROGDIR/..
/buildapp.py \
476 --builddir=$DMGDIR/root
/Apps \
478 --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
479 --iconfile=$PROGDIR/PieShell.icns \
483 # $PYTHONW $PROGDIR/../buildapp.py \
484 # --builddir=$DMGDIR/root \
486 # --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
487 # --iconfile=$PROGDIR/PieShell.icns \
490 # Make an app to launch XRCed
491 $PYTHONW $PROGDIR/..
/buildapp.py \
492 --builddir=$DMGDIR/root
/Apps \
494 --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
495 --iconfile=$PROGDIR/XRCed.icns \
500 # and then finally make a disk image containing the packages and etc.
501 $PROGDIR/..
/makedmg
$DMGDIR/root
$DMGDIR wxPythonOSX
-$VERSION-$KIND-Py$PYVER
503 echo Moving
$DMGDIR/wxPythonOSX
-$VERSION-$KIND-Py$PYVER.dmg to
$DESTDIR
504 mv $DMGDIR/wxPythonOSX
-$VERSION-$KIND-Py$PYVER.dmg
$DESTDIR
508 # Cleanup build/install dirs
509 if [ $skipclean != yes ]; then
510 echo "Cleaning up..."
513 echo "Cleanup is disabled. You should remove $TMPDIR when finished"