]>
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"