Updated Installer builder scripts and such for OS X

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2004-01-17 23:20:49 +00:00
parent 9ee7c8d670
commit 46456f618c
13 changed files with 899 additions and 1056 deletions

View File

@ -1 +0,0 @@
.DS_Store

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,129 +0,0 @@
#!/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

View File

@ -1,6 +0,0 @@
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

View File

@ -1,67 +0,0 @@
#!/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

View File

@ -3,34 +3,34 @@
"""buildpkg.py -- Build OS X packages for Apple's Installer.app.
This is an experimental command-line tool for building packages to be
installed with the Mac OS X Installer.app application.
installed with the Mac OS X Installer.app application.
It is much inspired by Apple's GUI tool called PackageMaker.app, that
seems to be part of the OS X developer tools installed in the folder
/Developer/Applications. But apparently there are other free tools to
do the same thing which are also named PackageMaker like Brian Hill's
one:
It is much inspired by Apple's GUI tool called PackageMaker.app, that
seems to be part of the OS X developer tools installed in the folder
/Developer/Applications. But apparently there are other free tools to
do the same thing which are also named PackageMaker like Brian Hill's
one:
http://personalpages.tds.net/~brian_hill/packagemaker.html
Beware of the multi-package features of Installer.app (which are not
yet supported here) that can potentially screw-up your installation
Beware of the multi-package features of Installer.app (which are not
yet supported here) that can potentially screw-up your installation
and are discussed in these articles on Stepwise:
http://www.stepwise.com/Articles/Technical/Packages/InstallerWoes.html
http://www.stepwise.com/Articles/Technical/Packages/InstallerOnX.html
Beside using the PackageMaker class directly, by importing it inside
Beside using the PackageMaker class directly, by importing it inside
another module, say, there are additional ways of using this module:
the top-level buildPackage() function provides a shortcut to the same
the top-level buildPackage() function provides a shortcut to the same
feature and is also called when using this module from the command-
line.
****************************************************************
NOTE: For now you should be able to run this even on a non-OS X
NOTE: For now you should be able to run this even on a non-OS X
system and get something similar to a package, but without
the real archive (needs pax) and bom files (needs mkbom)
inside! This is only for providing a chance for testing to
the real archive (needs pax) and bom files (needs mkbom)
inside! This is only for providing a chance for testing to
folks without OS X.
****************************************************************
@ -39,7 +39,7 @@ TODO:
- handle multi-volume packages (?)
- integrate into distutils (?)
Dinu C. Gherman,
Dinu C. Gherman,
gherman@europemail.com
November 2001
@ -60,7 +60,6 @@ Title
Version
Description
DefaultLocation
Diskname
DeleteWarning
NeedsAuthorization
DisableStop
@ -71,6 +70,10 @@ Required
InstallOnly
RequiresReboot
RootVolumeOnly
LongFilenames
LibrarySubdirectory
AllowBackRev
OverwritePermissions
InstallFat\
"""
@ -117,14 +120,14 @@ class PackageMaker:
"""A class to generate packages for Mac OS X.
This is intended to create OS X packages (with extension .pkg)
containing archives of arbitrary files that the Installer.app
containing archives of arbitrary files that the Installer.app
will be able to handle.
As of now, PackageMaker instances need to be created with the
title, version and description of the package to be built.
The package is built after calling the instance method
build(root, **options). It has the same name as the constructor's
title argument plus a '.pkg' extension and is located in the same
As of now, PackageMaker instances need to be created with the
title, version and description of the package to be built.
The package is built after calling the instance method
build(root, **options). It has the same name as the constructor's
title argument plus a '.pkg' extension and is located in the same
parent folder that contains the root folder.
E.g. this will create a package folder /my/space/distutils.pkg/:
@ -138,7 +141,6 @@ class PackageMaker:
'Version': None,
'Description': '',
'DefaultLocation': '/',
'Diskname': '(null)',
'DeleteWarning': '',
'NeedsAuthorization': 'NO',
'DisableStop': 'NO',
@ -149,7 +151,12 @@ class PackageMaker:
'InstallOnly': 'NO',
'RequiresReboot': 'NO',
'RootVolumeOnly' : 'NO',
'InstallFat': 'NO'}
'InstallFat': 'NO',
'LongFilenames': 'YES',
'LibrarySubdirectory': 'Standard',
'AllowBackRev': 'YES',
'OverwritePermissions': 'NO',
}
def __init__(self, title, version, desc):
@ -158,7 +165,7 @@ class PackageMaker:
info = {"Title": title, "Version": version, "Description": desc}
self.packageInfo = copy.deepcopy(self.packageInfoDefaults)
self.packageInfo.update(info)
# variables set later
self.packageRootFolder = None
self.packageResourceFolder = None
@ -169,8 +176,8 @@ class PackageMaker:
def build(self, root, resources=None, **options):
"""Create a package for some given root folder.
With no 'resources' argument set it is assumed to be the same
as the root directory. Option items replace the default ones
With no 'resources' argument set it is assumed to be the same
as the root directory. Option items replace the default ones
in the package info.
"""
@ -188,12 +195,12 @@ class PackageMaker:
self.packageInfo[k] = v
elif not k in ["OutputDir"]:
raise Error, "Unknown package option: %s" % k
# Check where we should leave the output. Default is current directory
outputdir = options.get("OutputDir", os.getcwd())
packageName = self.packageInfo["Title"]
self.PackageRootFolder = os.path.join(outputdir, packageName + ".pkg")
# do what needs to be done
self._makeFolders()
self._addInfo()
@ -201,13 +208,14 @@ class PackageMaker:
self._addArchive()
self._addResources()
self._addSizes()
self._addLoc()
def _makeFolders(self):
"Create package folder structure."
# Not sure if the package name should contain the version or not...
# packageName = "%s-%s" % (self.packageInfo["Title"],
# packageName = "%s-%s" % (self.packageInfo["Title"],
# self.packageInfo["Version"]) # ??
contFolder = join(self.PackageRootFolder, "Contents")
@ -223,7 +231,8 @@ class PackageMaker:
info = ""
for f in string.split(PKG_INFO_FIELDS, "\n"):
info = info + "%s %%(%s)s\n" % (f, f)
if self.packageInfo.has_key(f):
info = info + "%s %%(%s)s\n" % (f, f)
info = info % self.packageInfo
base = self.packageInfo["Title"] + ".info"
path = join(self.packageResourceFolder, base)
@ -258,7 +267,7 @@ class PackageMaker:
self.archPath = join(self.packageResourceFolder, base)
cmd = "pax -w -f %s %s" % (self.archPath, ".")
res = os.system(cmd)
# compress archive
cmd = "gzip %s" % self.archPath
res = os.system(cmd)
@ -268,8 +277,8 @@ class PackageMaker:
def _addResources(self):
"Add Welcome/ReadMe/License files, .lproj folders and scripts."
# Currently we just copy everything that matches the allowed
# filenames. So, it's left to Installer.app to deal with the
# Currently we just copy everything that matches the allowed
# filenames. So, it's left to Installer.app to deal with the
# same file available in multiple formats...
if not self.resourceFolder:
@ -328,9 +337,9 @@ class PackageMaker:
def _addSizes(self):
"Write .sizes file with info about number and size of files."
# Not sure if this is correct, but 'installedSize' and
# 'zippedSize' are now in Bytes. Maybe blocks are needed?
# Well, Installer.app doesn't seem to care anyway, saying
# Not sure if this is correct, but 'installedSize' and
# 'zippedSize' are now in Bytes. Maybe blocks are needed?
# Well, Installer.app doesn't seem to care anyway, saying
# the installation needs 100+ MB...
numFiles = 0
@ -344,19 +353,24 @@ class PackageMaker:
try:
zippedSize = os.stat(self.archPath+ ".gz")[6]
except OSError: # ignore error
except OSError: # ignore error
pass
base = self.packageInfo["Title"] + ".sizes"
f = open(join(self.packageResourceFolder, base), "w")
format = "NumFiles %d\nInstalledSize %d\nCompressedSize %d\n"
f.write(format % (numFiles, installedSize, zippedSize))
def _addLoc(self):
"Write .loc file."
base = self.packageInfo["Title"] + ".loc"
f = open(join(self.packageResourceFolder, base), "w")
f.write('/')
# Shortcut function interface
def buildPackage(*args, **options):
"A Shortcut function for building a package."
o = options
title, version, desc = o["Title"], o["Version"], o["Description"]
pm = PackageMaker(title, version, desc)
@ -377,9 +391,9 @@ def test0():
def test1():
"Test for the reportlab distribution with modified options."
pm = PackageMaker("reportlab", "1.10",
pm = PackageMaker("reportlab", "1.10",
"ReportLab's Open Source PDF toolkit.")
pm.build(root="/Users/dinu/Desktop/reportlab",
pm.build(root="/Users/dinu/Desktop/reportlab",
DefaultLocation="/Applications/ReportLab",
Relocatable="YES")
@ -387,9 +401,9 @@ def test2():
"Shortcut test for the reportlab distribution with modified options."
buildPackage(
"/Users/dinu/Desktop/reportlab",
Title="reportlab",
Version="1.10",
"/Users/dinu/Desktop/reportlab",
Title="reportlab",
Version="1.10",
Description="ReportLab's Open Source PDF toolkit.",
DefaultLocation="/Applications/ReportLab",
Relocatable="YES")

File diff suppressed because it is too large Load Diff

View File

@ -15,11 +15,13 @@ fi
function usage {
echo ""
echo "Usage: $0 wx_version py_version [command flags...]"
echo " wx_version String to use for version in filenames, etc."
echo " py_version String to append to python (which python version to use.)"
echo "Usage: $0 [apple|local] [command flags...]"
echo ""
echo "command flags:"
echo " apple Build for Apple's python in /usr/bin"
echo " local Build for a locally installed python in /usr/local/bin"
echo " (for example Jaguar's MacPython)"
echo ""
echo "optional command flags:"
echo " skiptar Don't unpack the tarball"
echo " use_cvs Use the CVS workspace instead of a tarfile"
echo " skipconfig Don't run configure"
@ -27,17 +29,23 @@ function usage {
echo " skipinstall Don't do the installation step"
echo " skipdmg Don't make the package or diskimage"
echo " skipclean Don't do the cleanup at the end"
echo ""
}
if [ $# -lt 2 ]; then
if [ $# -lt 1 ]; then
usage
exit 1
fi
VERSION=$1
PYVER=$2
shift;shift
KIND=$1
case $KIND in
apple) PYTHON=/usr/bin/python ;;
local) PYTHON=/usr/local/bin/python ;;
*) usage; exit 1 ;;
esac
PYTHONW=${PYTHON}w
shift
for flag in $*; do
@ -57,13 +65,18 @@ for flag in $*; do
done
SRCDIR=/Volumes/Gate.Stuff/Development/wxPython/dist/$VERSION
VERSION=`$PYTHON -c "import setup;print setup.VERSION"`
PYVER=`$PYTHON -c "import sys; print sys.version[:3]"`
PYPREFIX=`$PYTHON -c "import sys; print sys.exec_prefix"`
SITEPACKAGES=$PYPREFIX/lib/python$PYVER/site-packages
SRCDIR=/stuff/Development/wxPython/dist/$VERSION
TARBALL=$SRCDIR/wxPythonSrc-$VERSION.tar.gz
SITEPACKAGES=/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages
# TODO: Should I change the prefix to /usr?
PREFIX=/usr/local
PREFIX=/usr/lib/wxPython-$VERSION
BINPREFIX=/usr/bin
WXROOT=`dirname $PWD`
PROGDIR="`dirname \"$0\"`"
TMPDIR=$PWD/_build_dmg
@ -81,7 +94,7 @@ DESTDIR=$PWD/dist
mkdir -p $BUILDROOT
mkdir -p $INSTALLROOT
mkdir -p $INSTALLDEVEL
#mkdir -p $INSTALLDEVEL
rm -rf $DMGDIR
mkdir -p $DMGDIR/root
@ -92,7 +105,8 @@ pushd $BUILDROOT
# Unpack the tarball
if [ -z "$skiptar" ]; then
tar xzvf $TARBALL
echo Unarchiving tarball...
tar xzf $TARBALL
fi
if [ "$use_cvs" = 1 ]; then
@ -104,19 +118,21 @@ if [ "$use_cvs" = 1 ]; then
if [ -e .last_copy ]; then
FEXPR="-cnewer .last_copy"
fi
find /projects/wx $FEXPR -print \
| grep -v wx/build \
MEASURE=$WXROOT//
find $WXROOT $FEXPR -print \
| grep -v $WXROOT/bld \
| grep -v wxPython/build \
| grep -v wxPython/_build \
| grep -v CVS \
| cut -b 14- > filelist
| grep -v .pyc \
| cut -b ${#MEASURE}- > filelist
for x in `cat filelist`; do
if [ -d "/projects/wx/$x" ]; then
if [ -d "$WXROOT/$x" ]; then
mkdir -p "wxPythonSrc-$VERSION/$x"
else
echo $x
cp -p "/projects/wx/$x" "wxPythonSrc-$VERSION/$x"
cp -p "$WXROOT/$x" "wxPythonSrc-$VERSION/$x"
fi
done
@ -126,60 +142,60 @@ fi
cd wxPythonSrc-$VERSION
WXDIR=`pwd`
mkdir -p $WXDIR/build
cd $WXDIR/build
mkdir -p $WXDIR/bld
cd $WXDIR/bld
#----------------------------------------------------------------------
# Configure wxWindows
if [ -z "$skipconfig" ]; then
../configure --with-mac --prefix=$PREFIX \
../configure \
--prefix=$PREFIX \
--with-mac \
--disable-monolithic \
--with-opengl \
--enable-precomp=no \
--enable-geometry \
--enable-optimise \
--enable-precomp=no \
\
--with-libjpeg=builtin \
--with-libpng=builtin \
--with-libtiff=builtin \
# --with-zlib=builtin
# --enable-debug_flag
--with-zlib=builtin \
\
--enable-debug_flag
fi
# Build wxWindows and wxPython
if [ -z "$skipbuild" ]; then
make
# Make wxWindows and some contribs
make
make -C contrib/src/gizmos
make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
make -C contrib/src/stc
make -C contrib/src/xrc
if [ ! -e $WXDIR/include/wx/gizmos ]; then
# Make some links so the wxPython build can find all the headers it needs
pushd $WXDIR/include/wx
ln -s ../../contrib/include/wx/* .
popd
fi
# Build wxPython
cd $WXDIR/wxPython
python$PYVER setup.py \
IN_CVS_TREE=1 \
WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \
$PYTHON setup.py \
NO_SCRIPTS=1 \
WX_CONFIG="$WXDIR/bld/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/bld" \
build
# Build wxrc (XRC resource tool) but don't use the makefiles since they expect
# a shared version of the xrc lib to have been built...
cd $WXDIR/contrib/utils/wxrc
WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build"
wCC=`$WX_CONFIG --cc`
wCXX=`$WX_CONFIG --cxx`
for f in wxrc.cpp ../../src/xrc/*.cpp; do
echo $f
$wCXX `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f
done
for f in ../../src/xrc/expat/xmlparse/xmlparse.c ../../src/xrc/expat/xmltok/xmlrole.c ../../src/xrc/expat/xmltok/xmltok.c; do
echo $f
$wCC `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f
done
# the handlers are not needed
rm xh_*.o xmlrsall.o
$wCXX `$WX_CONFIG --libs` *.o -o wxrc
# Build wxrc (XRC resource tool)
cd $WXDIR/bld/contrib/utils/wxrc
make
strip wxrc
fi
@ -188,37 +204,42 @@ fi
# Install wxWindows
if [ -z "$skipinstall" ]; then
cd $WXDIR/build
make prefix=$INSTALLROOT/$PREFIX install
cd $WXDIR/bld
make prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" prefix=$INSTALLROOT/$PREFIX install
make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
make -C contrib/src/xrc prefix=$INSTALLROOT$PREFIX install
# and wxPython
cd $WXDIR/wxPython
python$PYVER setup.py \
IN_CVS_TREE=1 \
WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \
$PYTHON setup.py \
NO_SCRIPTS=1 \
WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
install \
--root=$INSTALLROOT
# install wxPython's tool scripts
mkdir -p $INSTALLROOT$BINPREFIX
cd $WXDIR/wxPython/scripts
python$PYVER CreateMacScripts.py $INSTALLROOT $PREFIX/bin
python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX
# Install wxrc
cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin
cp $WXDIR/bld/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX
# Move wxWindows devel files and save for a separate installer package
mkdir -p $INSTALLDEVEL$PREFIX
mkdir -p $INSTALLDEVEL$PREFIX/bin
mkdir -p $INSTALLDEVEL$PREFIX/lib
mv -f $INSTALLROOT$PREFIX/include $INSTALLDEVEL$PREFIX
mv -f $INSTALLROOT$PREFIX/lib/wx $INSTALLDEVEL$PREFIX/lib
mv -f $INSTALLROOT$PREFIX/bin/wx* $INSTALLDEVEL$PREFIX/bin
# install the wxPython headers
cd $WXDIR/wxPython
cp -R include $INSTALLROOT$PREFIX
mkdir -p $INSTALLROOT$PREFIX/include/wx/wxPython/i_files
cp src/*.i $INSTALLROOT$PREFIX/include/wx/wxPython/i_files
# TODO for $INSTALLROOT and $INSTALLDEVEL ?
# chown -R root:admin
# chmod -R g+w
#chown -R root:admin $INSTALLROOT
#chmod -R g+w $INSTALLROOT
fi
popd
@ -230,63 +251,18 @@ if [ -z "$skipdmg" ]; then
# Remove the .pyc/.pyo files they just take up space and can be recreated
# during the install.
python $PROGDIR/../zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework
# Copy the demo, samples, and such to the Applications dir
APPDIR=$INSTALLROOT/Applications/wxPythonOSX-$VERSION
mkdir -p $APPDIR
cp -pR $WXDIR/wxPython/demo $APPDIR
cp -pR $WXDIR/wxPython/samples $APPDIR
# Move sample launchers to .pyw files.
# TODO: A better, more automated way to do this!!!
pushd $APPDIR/samples
for x in StyleEditor/STCStyleEditor \
doodle/superdoodle \
frogedit/FrogEdit \
pySketch/pySketch \
wxProject/wxProject; do
mv $x.py $x.pyw
done
popd
# Make an app to launch the demo
cat > $APPDIR/demo/RunDemo.pyw <<EOF
import sys, os
sys.path.insert(0, "/Applications/wxPythonOSX-$VERSION/demo")
os.chdir("/Applications/wxPythonOSX-$VERSION/demo")
import Main
Main.main()
EOF
pythonw $PROGDIR/../buildapp.py \
--builddir=$APPDIR \
--name=RunDemo \
--mainprogram=$APPDIR/demo/RunDemo.pyw \
--iconfile=$PROGDIR/RunDemo.icns \
build
# Make an app to launch PyShell
pythonw $PROGDIR/../buildapp.py \
--builddir=$APPDIR \
--name=PyShell \
--mainprogram=$INSTALLROOT$PREFIX/bin/pyshell.py \
--iconfile=$PROGDIR/PieShell.icns \
build
# Make an app to launch XRCed
pythonw $PROGDIR/../buildapp.py \
--builddir=$APPDIR \
--name=XRCed \
--mainprogram=$INSTALLROOT$PREFIX/bin/xrced.py \
--iconfile=$PROGDIR/XRCed.icns \
build
$PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT
# Make the welcome message
case $KIND in
apple) W_MSG="an Apple installed (Panther) version of" ;;
local) W_MSG="a locally built version (or Jaguar version) of" ;;
esac
cat > $RESOURCEDIR/Welcome.txt <<EOF
Welcome!
This program will install wxPython $VERSION for MacPython-OSX $PYVER.
This program will install wxPython $VERSION for $W_MSG MacPython-OSX $PYVER.
Build date: `date`
EOF
@ -296,6 +272,7 @@ EOF
#!/bin/sh
# Cleanup any old install of the wxPython package
rm -rf \$2$SITEPACKAGES/wxPython
rm -rf \$2$SITEPACKAGES/wx
exit 0
EOF
chmod +x $RESOURCEDIR/preflight
@ -304,20 +281,17 @@ EOF
cat > $RESOURCEDIR/postflight <<EOF
#!/bin/sh -e
# Compile the .py files in the wxPython pacakge
/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
/usr/local/bin/python -O \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
$PYTHON \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
$PYTHON \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wx
$PYTHON -O \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
$PYTHON -O \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wx
# and in the demo
/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py /Applications/wxPythonOSX-$VERSION/demo
# Make the demo/data dir writable
chmod a+w /Applications/wxPythonOSX-$VERSION/demo/data
# and the wxPython pacakge should be group writable
chgrp -R admin \$2$SITEPACKAGES/wxPython
chgrp -R admin /Applications/wxPythonOSX-$VERSION
chmod -R g+w \$2$SITEPACKAGES/wxPython
chmod -R g+w /Applications/wxPythonOSX-$VERSION
chgrp -R admin \$2$SITEPACKAGES/wx
chmod -R g+w \$2$SITEPACKAGES/wx
exit 0
EOF
@ -325,63 +299,106 @@ EOF
# Finally, build the main package...
rm -rf wxPythonOSX.pkg
# Finally, build the main Installer Package...
rm -rf wxPythonOSX-$KIND.pkg
python $PROGDIR/../buildpkg.py \
--Title=wxPythonOSX \
--Title=wxPythonOSX-$KIND \
--Version=$VERSION \
--Description="wxPython $VERSION for MacPython-OSX $PYVER" \
--Description="wxPython $VERSION for $W_MSG MacPython-OSX $PYVER" \
--NeedsAuthorization="YES" \
--Relocatable="NO" \
--InstallOnly="YES" \
$INSTALLROOT \
$RESOURCEDIR
mv wxPythonOSX.pkg $DMGDIR/root
mv wxPythonOSX-$KIND.pkg $DMGDIR/root
# and the devel package
rm -rf wxPythonOSX-devel.pkg
python $PROGDIR/../buildpkg.py \
--Title=wxPythonOSX-devel \
--Version=$VERSION \
--Description="Headers and such that allow you to link with the same wxMac that wxPython does" \
--NeedsAuthorization="YES" \
--Relocatable="NO" \
--InstallOnly="YES" \
$INSTALLROOT
# # and the devel package
# rm -rf wxPythonOSX-devel.pkg
# python $PROGDIR/../buildpkg.py \
# --Title=wxPythonOSX-devel \
# --Version=$VERSION \
# --Description="Headers and such that allow you to link with the same wxMac that wxPython does" \
# --NeedsAuthorization="YES" \
# --Relocatable="NO" \
# --InstallOnly="YES" \
# $INSTALLDEVEL
mv wxPythonOSX-devel.pkg $DMGDIR/root
# mv wxPythonOSX-devel.pkg $DMGDIR/root
# Make a README.txt to go on the disk image
cat > $DMGDIR/root/README.txt <<EOF
The files on this disk image are Installer packages for wxPythonOSX
$VERSION for MacPython-OSX $PVER. You must already have MacPython-OSX
installed.
Welcome to wxPython!
The wxPython extension modules, library, demo and samples are
contained in the wxPythonOSX package. You should install at least this
package to use wxPython.
On this disk image you will find the installer for the wxPython $VERSION for $W_MSG MacPython-OSX $PYVER. You must already have MacPython-OSX installed.
If you have any need to create applicaitons or extension modules that
link with the same wxMac that wxPython does, then you can also install
the wxPythonOSX-devel package to get the necessary header files and
such. Otherwise you don't need it.
wxPython-$KIND.pkg The installer package. It contains the wxPython
extension modules, wxMac dynamic libraries and
headers, and some scripts for the command-line
tools.
Everything else here is optional and you can drag them out of the disk
image and drop them where ever you want.
docs/ A few readmes, change log, etc. The full
documentation is downloadable separately.
licence/ License docs.
demo/ A copy of the wxPython demo.
samples/ Several small sample applications that
demonstrate how to use wxPython.
Happy Hacking!
EOF
# license files, etc.
# license files, docs, etc.
cp -pR $WXDIR/wxPython/licence $DMGDIR/root
cp $WXDIR/wxPython/CHANGES.txt $DMGDIR/root
rm -rf $WXDIR/wxPython/docs/xml-raw
cp -pR $WXDIR/wxPython/docs $DMGDIR/root
rm -rf $DMGDIR/root/docs/bin
# Copy the demo and samples to the disk image
cp -pR $WXDIR/wxPython/demo $DMGDIR/root
cp -pR $WXDIR/wxPython/samples $DMGDIR/root
rm $DMGDIR/root/demo/b
# Make an app bundle to launch PyCrust
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGDIR/root \
--name=PyCrust \
--mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
--iconfile=$PROGDIR/PieShell.icns \
build
# Make an app to launch XRCed
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGDIR/root \
--name=XRCed \
--mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
--iconfile=$PROGDIR/XRCed.icns \
build
# Make an app bundle to run the demo
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGDIR/root \
--name="wxPython Demo" \
--mainprogram=$DMGDIR/root/demo/demo.py \
--iconfile=$PROGDIR/RunDemo.icns \
build
cp -pR $DMGDIR/root/demo/* "$DMGDIR/root/wxPython Demo.app/Contents/Resources"
# and then finally make a disk image containing the packages and etc.
$PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-py$PYVER
$PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-$KIND-Py$PYVER
echo Moving $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg to $DESTDIR
mv $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg $DESTDIR
echo Moving $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg to $DESTDIR
mv $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg $DESTDIR
fi

View File

@ -0,0 +1,2 @@
Welcome.txt
postflight

View File

@ -1,79 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 Monaco;
\f3\fnil\fcharset77 LucidaGrande;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue255;}
\margl1440\margr1440\vieww11800\viewh14740\viewkind0
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f0\b\fs24 \cf0 About\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b0 \cf0 \
This is a binary package of wxPython for MacPython on Mac OS X 10.2 or later. The wxMac binaries will be installed as well. MacPython-OSX, however, is not included with this package, but is also required to run wxPython. Before you continue you should have already installed the MacPython-OSX framework.\
\
Please note that the Mac OS ports of wxPython as well as wxWindows (a.k.a. wxMac) are works-in-progress. Report bugs via SourceForge [1] or discuss the problem on the mailing list(s) related to your questions (see below).\
\
\fs18 [1] \cf2 http://sf.net/tracker/?atid=109863&group_id=9863
\fs24 \cf0 \
\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f0\b \cf0 What will be installed and where\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b0 \cf0 \
wxMac goes into
\f2 /usr/local
\f1 and wxPython will be installed into the appropriate subfolder of the Python framework. Choose the
\f3 Show files
\f1 command from the
\f3 File
\f1 menu for a complete file listing. (The menu item becomes available as soon as the license agreement is accepted in the next step.)
\f2 \
\f1 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f0\b \cf0 Getting started with wxPython
\f1\b0 \
\
You can verify that wxPython was succesfully installed by running the demo. It resides on the same disk image where you found this package. Just double click the script named
\f2 demo.py
\f1 or drag and drop it onto the Python interpreter in your
\f2 Application
\f1 folder.\
\
The official wxPython site:\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2 \cf2 http://wxPython.org\cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1 \cf0 \
The best way to get help with wxWindows and wxPython is to subscribe to the mail lists and post questions there. You can see info about the mail lists, including how to subscribe, at this website:\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2 \cf2 http://wxPython.org/maillist.php\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1 \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f0\b \cf0 Disclaimer
\f1\b0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2 \cf0 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\f1 \
\
\
Robin Dunn\
\
}

View File

@ -1,4 +0,0 @@
#!/bin/sh
# Cleanup any old install of the wxPython package
rm -rf $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/wxPython
exit 0

View File

@ -10,11 +10,10 @@ doit = 1
def main():
if not sys.argv[1:]:
if os.name == 'mac':
import macfs
fss, ok = macfs.GetDirectory('Directory to zap pyc files in')
if not ok:
import EasyDialogs
dir = EasyDialogs.AskFolder(message='Directory to zap pyc files in')
if not dir:
sys.exit(0)
dir = fss.as_pathname()
zappyc(dir)
else:
print 'Usage: zappyc dir ...'

View File

@ -1,6 +1,6 @@
#----------------------------------------------------------------------
# Name: CreateMacScripts.py
# Purpose: Massages the scripts to be usable with MachoPython
# Purpose: Massages the scripts to be usable with MacPython-OSX
#
# Author: Robin Dunn
#