From 8806d47aff795338346f24c610382bdcf618c46e Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Fri, 21 Mar 2003 23:52:36 +0000 Subject: [PATCH] Tools to build a disk image with a binary installer for MacPython-OSX, donated by Robin Dunn and the rest of the wxPythonMac crew. These are the versions from cvs.wxwindows.org as of 22-Mar-03, checked in for reference. --- Mac/OSX/Dist/README.txt | 3 + Mac/OSX/Dist/build | 129 +++++++++++++++++++++++++++++ Mac/OSX/Dist/makedmg | 95 +++++++++++++++++++++ Mac/OSX/Dist/resources/Welcome.txt | 6 ++ Mac/OSX/Dist/resources/postflight | 67 +++++++++++++++ 5 files changed, 300 insertions(+) create mode 100644 Mac/OSX/Dist/README.txt create mode 100755 Mac/OSX/Dist/build create mode 100755 Mac/OSX/Dist/makedmg create mode 100644 Mac/OSX/Dist/resources/Welcome.txt create mode 100755 Mac/OSX/Dist/resources/postflight diff --git a/Mac/OSX/Dist/README.txt b/Mac/OSX/Dist/README.txt new file mode 100644 index 00000000000..89ecd2b9b48 --- /dev/null +++ b/Mac/OSX/Dist/README.txt @@ -0,0 +1,3 @@ +This is a set of build scripts and such for MacPython-OSX 2.3 that I +will use until there are standard distributions from Jack. + diff --git a/Mac/OSX/Dist/build b/Mac/OSX/Dist/build new file mode 100755 index 00000000000..f684d4363c6 --- /dev/null +++ b/Mac/OSX/Dist/build @@ -0,0 +1,129 @@ +#!/bin/sh -e +#---------------------------------------------------------------------- +# Build MacPython 2.3 and make an Installer package of it + +# TODO: Parameterize the versions, builddirs, etc... + +# Script configs +PYVERSION=2.3a2 +PYVER=2.3 +BUILDNUM=3 +DOCLEANUP=no + +PROGDIR="`dirname \"$0\"`" +TMPDIR=/tmp/_py +#TMPDIR=/projects/_py + +BUILDROOT=$TMPDIR/build +INSTALLROOT=$TMPDIR/install +DMGDIR=$TMPDIR/dmg +RESOURCEDIR=$PROGDIR/resources +DESTDIR=/projects/wx/wxPython/dist +PYTHONSRC=/projects/Python-$PYVERSION +WASTEDIR=/projects/waste + +# Setup +mkdir -p $BUILDROOT +mkdir -p $INSTALLROOT +rm -rf $DMGDIR +mkdir -p $DMGDIR/root + + +# Configure and build Python +pushd $BUILDROOT + +# Check if we should build and install the docs, but only if it +# doesn't appear to be done already. TODO: fix this path to be version independent +if [ ! -e "build/temp.darwin-6.3-Power Macintosh-2.3/build-html/build-html idx" ]; then + read -p "Build the Python docs? (y/N)? " builddocs +fi + +# If the filesystem is case-sensitive then "python" will be built, but +# some parts of the install expect "python.exe which is what is built +# on a case-insensitive filesystem. Make a link just in case it is +# needed. +if [ ! -e python.exe ]; then + ln -s python python.exe +fi + +# Make a link to the waste dir so that lib can be found. This allows +# the PythonIDE to be built +if [ ! -e waste ]; then + ln -s $WASTEDIR waste +fi + +$PYTHONSRC/configure --enable-framework=$INSTALLROOT/Library/Frameworks LDFLAGS=-Wl,-x +make +make frameworkinstall + +if [ "$builddocs" = "y" -o "$builddocs" = "Y" ]; then + ./python.exe $PYTHONSRC/Mac/OSX/setupDocs.py build + echo "" + read -p "When the help indexer is done press Enter..." ans + ./python.exe $PYTHONSRC/Mac/OSX/setupDocs.py install \ + --prefix=$INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER +fi + +popd + + + +# Make the Installer package: +# First, remove the unix tools as their paths will be wrong. We'll recreate +# them in the postinstall. +rm -r $INSTALLROOT/usr + +# Next, remove the .pyc/.pyo files +python $PROGDIR/../zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER + +# Make the welcome message +cat > $RESOURCEDIR/Welcome.txt <); + close( MYPIPE); + $dmgsize /= 1024; + $dmgsize = int($dmgsize + 4); + if( $dmgsize < 5 ) { + $dmgsize = 5 + } + + # create disk image + system "cd \"$dst\"; $hdiUtilExec create -megabytes $dmgsize -ov \"_${name}\""; + if( $? ) { die "couldn't create disk image\n"; } + + # format disk image + if( not open( MYPIPE, "cd \"$dst\"; $hdiDrvExec -nomount \"_${name}.dmg\" |") ) { + die "couldn't open pipe\n"; + } + (my $dev) = split( /\t/, ); + $dev =~ s/^(.*\S)\s*$/$1/; + my( $part, $raw, $pname); + while( ) { + ($part,$pname) = split /\t/; + if( $pname =~ m/^Apple_HFS/ ) { + $part =~ s/^\s*(.*\S)\s*$/$1/; + $raw = $part; + $raw =~ s/^(\/dev\/)(.+)/$1r$2/; + last; + } + } + close( MYPIPE); + system "cd \"$dst\" ; $newfsExec -v \"$name\" $raw"; + if( $? ) { system "$hdiUtilExec eject $dev"; die "couldn't format disk image\n"; } + system "$hdiUtilExec eject $dev"; + if( $? ) { die "couldn't eject disk image\n"; } + + # copy files + if( not open( MYPIPE, "cd \"$dst\"; $hdiDrvExec \"_${name}.dmg\" |") ) { + die "couldn't open pipe\n"; + } + ($dev) = split( /\t/, ); + $dev =~ s/^(.*\S)\s*$/$1/; + my $vname; + while( ) { + ($part,$pname,$vname) = split /\t/; + if( $pname =~ m/^Apple_HFS/ ) { + $vname =~ s/^(.*\S)\s*$/$1/; + last; + } + } + close( MYPIPE); + system "$dittoExec \"${src}\" \"${vname}\""; + if( $? ) { system "$hdiUtilExec eject $dev"; die "couldn't copy files\n"; } + system "$hdiUtilExec eject $dev"; + if( $? ) { die "couldn't eject disk image\n"; } + + # convert disk image + system "cd \"$dst\"; $hdiUtilExec convert \"_${name}.dmg\" -format UDCO -o \"${name}\""; + if( $? ) { die "couldn't convert disk image\n"; } +} diff --git a/Mac/OSX/Dist/resources/Welcome.txt b/Mac/OSX/Dist/resources/Welcome.txt new file mode 100644 index 00000000000..9ecb080986b --- /dev/null +++ b/Mac/OSX/Dist/resources/Welcome.txt @@ -0,0 +1,6 @@ +Welcome! + +This program will install Python 2.3a2 for Mac OS X as a Framework. + +Build number: 3 +Build date: Thu Mar 20 18:54:52 PST 2003 diff --git a/Mac/OSX/Dist/resources/postflight b/Mac/OSX/Dist/resources/postflight new file mode 100755 index 00000000000..25c12c1c049 --- /dev/null +++ b/Mac/OSX/Dist/resources/postflight @@ -0,0 +1,67 @@ +#!/bin/sh +#---------------------------------------------------------------------- +# Create the unix tools and compile the .py files after Python has been +# installed. +#---------------------------------------------------------------------- + +PYVER=2.3 + +PKG=$1 +DEST=$2 + + +# if destination is / then use usr/local/bin, otherwise just bin +if [ "$DEST" = "/" ]; then + TOOLDIR=/usr/local/bin + DEST= +else + TOOLDIR=$DEST/bin +fi + +# Make sure the dir exists +mkdir -p $TOOLDIR + +# Make some links to the python executable +if [ -e $TOOLDIR/python$PYVER ]; then + rm $TOOLDIR/python$PYVER +fi +ln -fs $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin/python $TOOLDIR/python$PYVER + +if [ -e $TOOLDIR/python ]; then + rm $TOOLDIR/python +fi +ln -fs python$PYVER $TOOLDIR/python + + +# make the pythonw script +cat > $TOOLDIR/pythonw <