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.
This commit is contained in:
parent
5c83bb0f4a
commit
8806d47aff
|
@ -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.
|
||||
|
|
@ -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 <<EOF
|
||||
Welcome!
|
||||
|
||||
This program will install Python $PYVERSION for Mac OS X as a Framework.
|
||||
|
||||
Build number: $BUILDNUM
|
||||
Build date: `date`
|
||||
EOF
|
||||
|
||||
|
||||
# fix a bug in the IDLE install
|
||||
IDLERES=$INSTALLROOT/Applications/MacPython-2.3/IDLE.app/Contents/Resources
|
||||
mv $IDLERES/idlelib/idle $IDLERES
|
||||
|
||||
|
||||
# Finally, build the package...
|
||||
rm -rf MacPython-OSX.pkg
|
||||
python $PROGDIR/../buildpkg.py \
|
||||
--Title=MacPython-OSX \
|
||||
--Version=$PYVERSION-$BUILDNUM \
|
||||
--Description="Python $PYVERSION for Mac OS X, framework based" \
|
||||
--NeedsAuthorization="YES" \
|
||||
--Relocatable="NO" \
|
||||
--InstallOnly="YES" \
|
||||
$INSTALLROOT \
|
||||
$RESOURCEDIR
|
||||
|
||||
## --RootVolumeOnly="YES" \
|
||||
|
||||
# ...and then make a disk image containing the package.
|
||||
mv MacPython-OSX.pkg $DMGDIR/root
|
||||
$PROGDIR/../makedmg $DMGDIR/root $DMGDIR MacPython-OSX-$PYVERSION-$BUILDNUM
|
||||
|
||||
echo Moving $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM to $DESTDIR
|
||||
mv $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM.dmg $DESTDIR
|
||||
|
||||
|
||||
# Cleanup build/install dirs
|
||||
if [ $DOCLEANUP = yes ]; then
|
||||
echo "Cleaning up..."
|
||||
rm -rf $BUILDROOT
|
||||
rm -rf $INSTALLROOT
|
||||
rm -rf $DMGDIR
|
||||
else
|
||||
echo "Cleanup is disabled. You should remove these dirs when done:"
|
||||
echo " $BUILDROOT"
|
||||
echo " $INSTALLROOT"
|
||||
echo " $DMGDIR"
|
||||
fi
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# make disk image from folder
|
||||
#
|
||||
# usage: makedmg src dst name
|
||||
#
|
||||
# (C)opyright 2002 Frank Vercruesse
|
||||
|
||||
|
||||
$hdiUtilExec = "/usr/bin/hdiutil";
|
||||
$hdiDrvExec = "/usr/bin/hdid";
|
||||
$newfsExec = "/sbin/newfs_hfs";
|
||||
$duExec = "/usr/bin/du";
|
||||
$dittoExec = "/usr/bin/ditto";
|
||||
|
||||
if ( $#ARGV != 2 ) {
|
||||
die "Wrong number of arguments.\nUsage: makedmg src dst name\n";
|
||||
}
|
||||
|
||||
&make_dmg( $ARGV[0], $ARGV[1], $ARGV[2]);
|
||||
|
||||
|
||||
sub make_dmg
|
||||
{
|
||||
my $src = $_[0];
|
||||
my $dst = $_[1];
|
||||
my $name = $_[2];
|
||||
|
||||
# check dirs
|
||||
if( not -d $dst && -d $src ) {
|
||||
die "src and dst must be directories\n";
|
||||
}
|
||||
|
||||
# calc disk image size
|
||||
if( not open( MYPIPE, "$duExec -sk \"${src}\" |") ) {
|
||||
die "couldn't open pipe\n";
|
||||
}
|
||||
(my $dmgsize) = split( /\s+/, <MYPIPE>);
|
||||
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/, <MYPIPE>);
|
||||
$dev =~ s/^(.*\S)\s*$/$1/;
|
||||
my( $part, $raw, $pname);
|
||||
while( <MYPIPE> ) {
|
||||
($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/, <MYPIPE>);
|
||||
$dev =~ s/^(.*\S)\s*$/$1/;
|
||||
my $vname;
|
||||
while( <MYPIPE> ) {
|
||||
($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"; }
|
||||
}
|
|
@ -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
|
|
@ -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 <<EOF
|
||||
#!/bin/sh
|
||||
exec "$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/python" "\$@"
|
||||
EOF
|
||||
chmod +x $TOOLDIR/pythonw
|
||||
|
||||
|
||||
# Compile the .py files in the Python library to .pyc's and then .pyo's
|
||||
$TOOLDIR/python -Wi -tt \
|
||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
|
||||
-x badsyntax -x site-packages $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER
|
||||
|
||||
$TOOLDIR/python -Wi -tt -O \
|
||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
|
||||
-x badsyntax -x site-packages $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER
|
||||
|
||||
|
||||
# Make the site-packages and other dirs writable by the admin.
|
||||
for d in $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages \
|
||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin \
|
||||
$DEST/Applications/MacPython-$PYVER; do
|
||||
chgrp -R admin $d
|
||||
chmod -R g+w $d
|
||||
done
|
||||
|
||||
|
||||
# The link in the app bundles needs updated.
|
||||
for app in BuildApplet IDLE PackageManager PythonIDE; do
|
||||
ln -s $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/python \
|
||||
$DEST/Applications/MacPython-$PYVER/$app.app/Contents/MacOS
|
||||
done
|
Loading…
Reference in New Issue