]>
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.3.r"  235              su robind 
-c  "make lib/libwx_macud-2.5.3.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"