- Remove previous version of the binary distribution script for OSX
- Some small bugfixes for the IDLE.app wrapper - Tweaks to build-installer to ensure that python gets build in the right way, including sqlite3. - Updated readme files
This commit is contained in:
parent
2856e5f390
commit
736123605c
|
@ -591,10 +591,10 @@ def buildPython():
|
||||||
version = getVersion()
|
version = getVersion()
|
||||||
|
|
||||||
print "Running configure..."
|
print "Running configure..."
|
||||||
runCommand("%s -C --enable-framework --enable-universalsdk=%s LDFLAGS='-g -L'%s/libraries/usr/local/lib OPT='-g -O3 -I'%s/libraries/usr/local/include 2>&1"%(
|
runCommand("%s -C --enable-framework --enable-universalsdk=%s LDFLAGS='-g -L%s/libraries/usr/local/lib' OPT='-g -O3 -I%s/libraries/usr/local/include' 2>&1"%(
|
||||||
shellQuote(os.path.join(SRCDIR, 'configure')),
|
shellQuote(os.path.join(SRCDIR, 'configure')),
|
||||||
shellQuote(SDKPATH), shellQuote(WORKDIR),
|
shellQuote(SDKPATH), shellQuote(WORKDIR)[1:-1],
|
||||||
shellQuote(WORKDIR)))
|
shellQuote(WORKDIR)[1:-1]))
|
||||||
|
|
||||||
print "Running make"
|
print "Running make"
|
||||||
runCommand("make")
|
runCommand("make")
|
||||||
|
@ -839,6 +839,7 @@ def buildInstaller():
|
||||||
|
|
||||||
writePlist(pl, os.path.join(pkgroot, 'Resources', 'Description.plist'))
|
writePlist(pl, os.path.join(pkgroot, 'Resources', 'Description.plist'))
|
||||||
for fn in os.listdir('resources'):
|
for fn in os.listdir('resources'):
|
||||||
|
if fn == '.svn': continue
|
||||||
if fn.endswith('.jpg'):
|
if fn.endswith('.jpg'):
|
||||||
shutil.copy(os.path.join('resources', fn), os.path.join(rsrcDir, fn))
|
shutil.copy(os.path.join('resources', fn), os.path.join(rsrcDir, fn))
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
Building a MacPython distribution
|
|
||||||
=================================
|
|
||||||
|
|
||||||
The ``build`` shell script here creates MacPython distributions.
|
|
||||||
It builds a complete framework-based Python out-of-tree, installs
|
|
||||||
it in a funny place with $DESTROOT, massages that installation to remove
|
|
||||||
.pyc files and such, creates an Installer package from the installation
|
|
||||||
plus the stuff in ``resources`` and compresses that installer as a
|
|
||||||
``.dmg`` disk image.
|
|
||||||
|
|
||||||
Here are the steps you ned to follow to build a MacPython installer:
|
|
||||||
|
|
||||||
- There are various version numbers that need to be updated. Weed through
|
|
||||||
``Mac/OSXResources``, ``Mac/scripts`` and ``Mac/Tools`` and inspect the
|
|
||||||
various ``.plist`` and ``.strings`` files. Note that the latter are
|
|
||||||
UTF-16 files.
|
|
||||||
- Edit ``resource/ReadMe.txt`` and ``resources/Welcome.rtf`` to reflect
|
|
||||||
version number and such.
|
|
||||||
- Edit ``build`` to change ``PYVERSION``, ``PYVER`` and ``BUILDNUM``.
|
|
||||||
- Edit ``resources/postflight`` and change version number.
|
|
||||||
- Run ``./build``. Optionally you can pass the name of the directory
|
|
||||||
where Python will be built, so you don't have to wait for the complete
|
|
||||||
build when you're debugging the process. For the final distribution use
|
|
||||||
a clean build.
|
|
||||||
- When done the script will tell you where the DMG image is.
|
|
||||||
|
|
||||||
Currently (November 2003) there is still a bug in the build procedure
|
|
||||||
for $DESTROOT builds: building some of the applets will fail (in
|
|
||||||
``Mac/OSX/Makefile``) if you don't have the same version of Python installed
|
|
||||||
normally. So before doing the distribution you should build and install
|
|
||||||
a framework Python in the normal way.
|
|
||||||
|
|
||||||
When all is done, announcements can be posted to at least the following
|
|
||||||
places:
|
|
||||||
- pythonmac-sig@python.org
|
|
||||||
- python-dev@python.org
|
|
||||||
- python-announce@python.org
|
|
||||||
- archivist@info-mac.org
|
|
||||||
- adcnews@apple.com
|
|
||||||
- news@macnn.com
|
|
||||||
- http://www.macupdate.com
|
|
||||||
- http://guide.apple.com/usindex.lasso
|
|
||||||
- http://www.apple.com/downloads/macosx/submit
|
|
||||||
- http://www.versiontracker.com/ (userid Jack.Jansen@oratrix.com)
|
|
||||||
- http://www.macshareware.net (userid jackjansen)
|
|
||||||
|
|
||||||
Also, check out Stephan Deibels http://pythonology.org/market contact list
|
|
||||||
|
|
||||||
After all this is done you may also need to update the Package Manager
|
|
||||||
database for the new distribution. A description of this remains TBD.
|
|
|
@ -1,164 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
# Build MacPython 2.5 and make an Installer package of it
|
|
||||||
|
|
||||||
# TODO: Parameterize the versions, builddirs, etc...
|
|
||||||
|
|
||||||
# Script configs
|
|
||||||
PYVERSION=2.5a0
|
|
||||||
PYVER=2.5
|
|
||||||
BUILDNUM=1
|
|
||||||
DOCLEANUP=no
|
|
||||||
|
|
||||||
PROGDIR="`dirname \"$0\"`"
|
|
||||||
case x$PROGDIR in
|
|
||||||
x|x.) PROGDIR=`pwd` ;;
|
|
||||||
x/*) ;;
|
|
||||||
*) echo "Please run with a full pathname"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
TMPDIR=/tmp/_py
|
|
||||||
#TMPDIR=/projects/_py
|
|
||||||
|
|
||||||
INSTALLROOT=$TMPDIR/install
|
|
||||||
DMGDIR=$TMPDIR/dmg
|
|
||||||
RESOURCEDIR=$PROGDIR/resources
|
|
||||||
DESTDIR=$TMPDIR/dist
|
|
||||||
PYTHONSRC=$PROGDIR/../../..
|
|
||||||
WASTEDIR=$PYTHONSRC/../waste
|
|
||||||
|
|
||||||
case x$1 in
|
|
||||||
x)
|
|
||||||
BUILDROOT=$TMPDIR/build
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
BUILDROOT=$1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Setup
|
|
||||||
if [ -e $BUILDROOT ]; then
|
|
||||||
echo Using existing build directory $BUILDROOT
|
|
||||||
CLEANBUILD=no
|
|
||||||
else
|
|
||||||
echo Creating clean build directory $BUILDROOT
|
|
||||||
CLEANBUILD=yes
|
|
||||||
mkdir -p $BUILDROOT
|
|
||||||
fi
|
|
||||||
rm -rf $DMGDIR
|
|
||||||
if [ ! -e $TMPDIR ]; then
|
|
||||||
mkdir $TMPDIR
|
|
||||||
fi
|
|
||||||
chgrp admin $TMPDIR
|
|
||||||
mkdir -p $DMGDIR/root
|
|
||||||
|
|
||||||
|
|
||||||
# Configure and build Python
|
|
||||||
pushd $BUILDROOT
|
|
||||||
|
|
||||||
# Ask the user whether s/he has edited Welcome.txt
|
|
||||||
read -p "Have you updated $RESOURCEDIR/Welcome.txt (Y/n)? " welcome
|
|
||||||
|
|
||||||
if [ "$welcome" = "n" -o "$welcome" = "N" ]; then
|
|
||||||
echo "Please do so and retry"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 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 -C --enable-framework LDFLAGS=-Wl,-x
|
|
||||||
$PYTHONSRC/configure -C --enable-framework
|
|
||||||
make
|
|
||||||
make DIRMODE=775 EXEMODE=775 FILEMODE=664 DESTDIR=$INSTALLROOT frameworkinstall
|
|
||||||
make DIRMODE=775 EXEMODE=775 FILEMODE=664 DESTDIR=$INSTALLROOT frameworkinstallextras
|
|
||||||
|
|
||||||
# Unfortunately all the ...MODE arguments above still don't do the trick.
|
|
||||||
# Cop out, and recursively set everything group-writeable.
|
|
||||||
chmod -R ug+w $INSTALLROOT
|
|
||||||
|
|
||||||
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 -rf $INSTALLROOT/usr
|
|
||||||
|
|
||||||
# Next, remove the .pyc/.pyo files
|
|
||||||
python $PYTHONSRC/Mac/scripts/zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER
|
|
||||||
python $PYTHONSRC/Mac/scripts/zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER/Mac/Tools
|
|
||||||
|
|
||||||
# Finally, build the package...
|
|
||||||
rm -rf MacPython-OSX.pkg
|
|
||||||
python $PYTHONSRC/Mac/scripts/buildpkg.py \
|
|
||||||
--Title=MacPython-OSX \
|
|
||||||
--Version=$PYVERSION-$BUILDNUM \
|
|
||||||
--Description="Python $PYVERSION for Mac OS X, framework based" \
|
|
||||||
--NeedsAuthorization="YES" \
|
|
||||||
--Relocatable="NO" \
|
|
||||||
--InstallOnly="YES" \
|
|
||||||
--UseUserMask="NO" \
|
|
||||||
$INSTALLROOT \
|
|
||||||
$RESOURCEDIR
|
|
||||||
|
|
||||||
# --RootVolumeOnly="YES" \
|
|
||||||
|
|
||||||
# ...and then make a disk image containing the package.
|
|
||||||
mv MacPython-OSX.pkg $DMGDIR/root
|
|
||||||
cp $RESOURCEDIR/ReadMe.txt $DMGDIR/root/ReadMe.txt
|
|
||||||
$PROGDIR/makedmg $DMGDIR/root $DMGDIR MacPython-OSX-$PYVERSION-$BUILDNUM
|
|
||||||
|
|
||||||
echo Moving $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM to $DESTDIR
|
|
||||||
if [ ! -e $DESTDIR ]; then
|
|
||||||
mkdir $DESTDIR
|
|
||||||
fi
|
|
||||||
mv $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM.dmg $DESTDIR
|
|
||||||
|
|
||||||
|
|
||||||
# Cleanup build/install dirs
|
|
||||||
if [ $DOCLEANUP = yes ]; then
|
|
||||||
echo "Cleaning up..."
|
|
||||||
if [ $CLEANBUILD = yes ]; then
|
|
||||||
rm -rf $BUILDROOT
|
|
||||||
fi
|
|
||||||
rm -rf $INSTALLROOT
|
|
||||||
rm -rf $DMGDIR
|
|
||||||
else
|
|
||||||
echo "Cleanup is disabled. You should remove these dirs when done:"
|
|
||||||
if [ $CLEANBUILD = yes ]; then
|
|
||||||
echo " $BUILDROOT"
|
|
||||||
fi
|
|
||||||
echo " $INSTALLROOT"
|
|
||||||
echo " $DMGDIR"
|
|
||||||
fi
|
|
||||||
echo "Your installer can be found in $DESTDIR"
|
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>Description</key>
|
|
||||||
<string>Enter database description</string>
|
|
||||||
<key>Maintainer</key>
|
|
||||||
<string>Enter your email address</string>
|
|
||||||
<key>Packages</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>Description</key>
|
|
||||||
<string>Enter package description</string>
|
|
||||||
<key>Download-URL</key>
|
|
||||||
<string>Enter URL for archive download, delete for pseudo-pkgs</string>
|
|
||||||
<key>Flavor</key>
|
|
||||||
<string>Enter binary or source</string>
|
|
||||||
<key>Home-page</key>
|
|
||||||
<string>Enter URL of human-readable webpage</string>
|
|
||||||
<key>Install-command</key>
|
|
||||||
<string>Enter shell commands to run for installation</string>
|
|
||||||
<key>Install-test</key>
|
|
||||||
<string>Enter Python code to test for already installed</string>
|
|
||||||
<key>MD5Sum</key>
|
|
||||||
<string>Enter checksum of package archive</string>
|
|
||||||
<key>Name</key>
|
|
||||||
<string>Enter name of package</string>
|
|
||||||
<key>Post-install-command</key>
|
|
||||||
<string>Enter shell command to run after install</string>
|
|
||||||
<key>Pre-install-command</key>
|
|
||||||
<string>Enter shell command to run before install</string>
|
|
||||||
<key>Prerequisites</key>
|
|
||||||
<array>
|
|
||||||
<string>Enter human-readable recipy for pseudo-dependencies</string>
|
|
||||||
<dict>
|
|
||||||
<key>Flavor</key>
|
|
||||||
<string>Enter optional flavor for real dependency</string>
|
|
||||||
<key>Name</key>
|
|
||||||
<string>Enter name for real dependency</string>
|
|
||||||
<key>Version</key>
|
|
||||||
<string></string>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
<key>Version</key>
|
|
||||||
<string>Enter version string for package</string>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
<key>Version</key>
|
|
||||||
<string>0.1</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -1,95 +0,0 @@
|
||||||
#!/usr/bin/perl -w
|
|
||||||
#
|
|
||||||
# make disk image from folder
|
|
||||||
#
|
|
||||||
# usage: makedmg src dst name
|
|
||||||
#
|
|
||||||
# Donated by 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"; }
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
This package will install MacPython 2.5a0 for Mac OS X
|
|
||||||
10.3.
|
|
||||||
|
|
||||||
Installation requires approximately 20 MB of disk
|
|
||||||
space, ignore the message that it will take zero bytes.
|
|
||||||
|
|
||||||
You must install onto your current boot disk, even
|
|
||||||
though the installer does not enforce this, otherwise
|
|
||||||
things will not work.
|
|
||||||
|
|
||||||
MacPython consists of the Python programming language
|
|
||||||
interpreter, plus a set of programs to allow easy
|
|
||||||
access to it for Mac users (an integrated development
|
|
||||||
environment, a Python extension package manager), plus
|
|
||||||
a set of pre-built extension modules that open up
|
|
||||||
specific Macintosh technologies to Python programs
|
|
||||||
(Carbon, AppleScript, Quicktime, more).
|
|
||||||
|
|
||||||
The installer puts the applications in MacPython-2.5 in
|
|
||||||
your Applications folder, command-line tools in
|
|
||||||
/usr/local/bin and the underlying machinery in
|
|
||||||
/Library/Frameworks/Python.framework.
|
|
||||||
|
|
||||||
The PythonIDE application has a Help command that gets
|
|
||||||
you started quickly with MacPython and contains
|
|
||||||
references to other documentation.
|
|
||||||
|
|
||||||
More information on MacPython can be found at
|
|
||||||
http://www.cwi.nl/~jack/macpython, more
|
|
||||||
information on Python in general at
|
|
||||||
http://www.python.org.
|
|
|
@ -1,15 +0,0 @@
|
||||||
{\rtf1\mac\ansicpg10000\cocoartf102
|
|
||||||
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;}
|
|
||||||
{\colortbl;\red255\green255\blue255;}
|
|
||||||
\paperw11900\paperh16840\margl1440\margr1440\vieww9920\viewh10660\viewkind0
|
|
||||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
|
||||||
|
|
||||||
\f0\fs24 \cf0 This package will install
|
|
||||||
\f1\b MacPython 2.5a0
|
|
||||||
\f0\b0 for
|
|
||||||
\f1\b Mac OS X 10.3
|
|
||||||
\f0\b0 . Installation on 10.2 or earlier will not work.\
|
|
||||||
\
|
|
||||||
MacPython consists of the Python programming language interpreter, plus a set of programs to allow easy access to it for Mac users (an integrated development environment, a Python extension package manager), plus a set of pre-built extension modules that open up specific Macintosh technologies to Python programs (Carbon, AppleScript, Quicktime, more).\
|
|
||||||
\
|
|
||||||
See the ReadMe file for more information.}
|
|
|
@ -1,92 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
# Create the unix tools and compile the .py files after Python has been
|
|
||||||
# installed.
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
|
|
||||||
PYVER=2.5
|
|
||||||
|
|
||||||
PKG=$1
|
|
||||||
DEST=$2
|
|
||||||
|
|
||||||
# Make sure things are group-writeable
|
|
||||||
umask 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
|
|
||||||
ln -fsh $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin/python $TOOLDIR/python$PYVER
|
|
||||||
ln -fsh python$PYVER $TOOLDIR/python
|
|
||||||
|
|
||||||
|
|
||||||
# make the pythonw script
|
|
||||||
rm -f $TOOLDIR/pythonw$PYVER
|
|
||||||
cat > $TOOLDIR/pythonw$PYVER <<EOF
|
|
||||||
#!/bin/sh
|
|
||||||
exec "$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/Python" "\$@"
|
|
||||||
EOF
|
|
||||||
chmod +x $TOOLDIR/pythonw$PYVER
|
|
||||||
ln -fsh pythonw$PYVER $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
|
|
||||||
|
|
||||||
$TOOLDIR/python -Wi -tt \
|
|
||||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
|
|
||||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Mac/Tools
|
|
||||||
|
|
||||||
$TOOLDIR/python -Wi -tt -O \
|
|
||||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
|
|
||||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Mac/Tools
|
|
||||||
|
|
||||||
|
|
||||||
# Make the site-packages and other dirs writable by the admin if destination is /
|
|
||||||
|
|
||||||
if [ "$DEST" = "/" ]; then
|
|
||||||
for d in $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages \
|
|
||||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin \
|
|
||||||
$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/Resources \
|
|
||||||
$DEST/Applications/MacPython-$PYVER; do
|
|
||||||
chgrp -R admin $d
|
|
||||||
chmod -R g+w $d
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$DEST" != "/" ]; then
|
|
||||||
# The link in the app bundles and in pydoc need updating.
|
|
||||||
installed_python=$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/python
|
|
||||||
for app in BuildApplet IDLE PackageManager PythonIDE; do
|
|
||||||
ln -fsh $installed_python \
|
|
||||||
$DEST/Applications/MacPython-$PYVER/$app.app/Contents/MacOS
|
|
||||||
ed -s $DEST/Applications/MacPython-$PYVER/$app.app/Contents/MacOS/$app << xyzzy
|
|
||||||
1c
|
|
||||||
#!$installed_python
|
|
||||||
.
|
|
||||||
w
|
|
||||||
q
|
|
||||||
xyzzy
|
|
||||||
ed -s $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin/pydoc << xyzzy
|
|
||||||
1c
|
|
||||||
#!$installed_python
|
|
||||||
.
|
|
||||||
w
|
|
||||||
q
|
|
||||||
xyzzy
|
|
||||||
done
|
|
||||||
fi
|
|
|
@ -3,12 +3,3 @@ This folder contains examples of Python usage and useful scripts and tools.
|
||||||
You should be aware that these are not Macintosh-specific but are shared
|
You should be aware that these are not Macintosh-specific but are shared
|
||||||
among Python on all platforms, so there are some that only run on Windows
|
among Python on all platforms, so there are some that only run on Windows
|
||||||
or Unix or another platform, and/or make little sense on a Macintosh.
|
or Unix or another platform, and/or make little sense on a Macintosh.
|
||||||
|
|
||||||
Some examples can be run from within the PythonIDE, but many will require
|
|
||||||
that you start them from the command line or with PythonLauncher. In the
|
|
||||||
latter case, you can supply any needed command line arguments by holding
|
|
||||||
the "alt" key while dragging the script to PythonLauncher, or while
|
|
||||||
double-clicking the script if PythonLauncher is set as the default application
|
|
||||||
to open Python scripts with. See "Changing the application that opens a file"
|
|
||||||
in Mac Help for information on making PythonLauncher the default application.
|
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ def isclean(name):
|
||||||
if name == 'CVS': return 0
|
if name == 'CVS': return 0
|
||||||
if name == '.cvsignore': return 0
|
if name == '.cvsignore': return 0
|
||||||
if name == '.DS_store': return 0
|
if name == '.DS_store': return 0
|
||||||
|
if name == '.svn': return 0
|
||||||
if name.endswith('~'): return 0
|
if name.endswith('~'): return 0
|
||||||
if name.endswith('.BAK'): return 0
|
if name.endswith('.BAK'): return 0
|
||||||
if name.endswith('.pyc'): return 0
|
if name.endswith('.pyc'): return 0
|
||||||
|
|
|
@ -38,7 +38,7 @@ IDLE.app: \
|
||||||
$(srcdir)/../Icons/IDLE.icns $(srcdir)/idlemain.py \
|
$(srcdir)/../Icons/IDLE.icns $(srcdir)/idlemain.py \
|
||||||
$(srcdir)/../Icons/PythonSource.icns \
|
$(srcdir)/../Icons/PythonSource.icns \
|
||||||
$(srcdir)/../Icons/PythonCompiled.icns
|
$(srcdir)/../Icons/PythonCompiled.icns
|
||||||
rm -fr PythonLauncher.app
|
rm -fr IDLE.app
|
||||||
$(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \
|
$(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \
|
||||||
--builddir=. \
|
--builddir=. \
|
||||||
--name=IDLE \
|
--name=IDLE \
|
||||||
|
|
|
@ -7,7 +7,7 @@ from idlelib.PyShell import main
|
||||||
|
|
||||||
# Change the current directory the user's home directory, that way we'll get
|
# Change the current directory the user's home directory, that way we'll get
|
||||||
# a more useful default location in the open/save dialogs.
|
# a more useful default location in the open/save dialogs.
|
||||||
os.chdir(os.expanduser('~'))
|
os.chdir(os.path.expanduser('~/Documents'))
|
||||||
|
|
||||||
|
|
||||||
# Make sure sys.executable points to the python interpreter inside the
|
# Make sure sys.executable points to the python interpreter inside the
|
||||||
|
|
158
Mac/OSX/README
158
Mac/OSX/README
|
@ -1,29 +1,57 @@
|
||||||
Building and using a framework-based Python on Mac OS X.
|
============
|
||||||
--------------------------------------------------------
|
MacOSX Notes
|
||||||
|
============
|
||||||
|
|
||||||
|
This document provides a quick overview of some Mac OS X specific features in
|
||||||
|
the Python distribution.
|
||||||
|
|
||||||
|
|
||||||
|
Building and using a universal binary of Python on Mac OS X
|
||||||
|
===========================================================
|
||||||
|
|
||||||
|
1. What is a universal binary
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
A universal binary build of Python contains object code for both PPC and i386
|
||||||
|
and can therefore run at native speed on both classic powerpc based macs and
|
||||||
|
the newer intel based macs.
|
||||||
|
|
||||||
|
2. How do I build a universal binary
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
You can enable universal binaries by specifying the "--enable-universalsdk"
|
||||||
|
flag to configure::
|
||||||
|
|
||||||
|
$ ./configure --enable-universalsdk
|
||||||
|
$ make
|
||||||
|
$ make install
|
||||||
|
|
||||||
|
This flag can be used a framework build of python, but also with a classic
|
||||||
|
unix build. Either way you will have to build python on Mac OS X 10.4 (or later)
|
||||||
|
with Xcode 2.1 (or later). You also have to install the 10.4u SDK when
|
||||||
|
installing Xcode.
|
||||||
|
|
||||||
|
|
||||||
|
Building and using a framework-based Python on Mac OS X.
|
||||||
|
========================================================
|
||||||
|
|
||||||
This document provides a quick introduction to framework-based Python, its
|
|
||||||
advantages, and how to build it.
|
|
||||||
|
|
||||||
1. Why would I want a framework Python instead of a normal static Python?
|
1. Why would I want a framework Python instead of a normal static Python?
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
The main reason is because you want to create GUI programs in Python. With the
|
The main reason is because you want to create GUI programs in Python. With the
|
||||||
exception of X11/XDarwin-based GUI toolkits it appears that all GUI programs
|
exception of X11/XDarwin-based GUI toolkits all GUI programs need to be run
|
||||||
need to be run from a fullblown MacOSX application (a ".app" bundle).
|
from a fullblown MacOSX application (a ".app" bundle).
|
||||||
|
|
||||||
While it is technically possible to create a .app without using frameworks you
|
While it is technically possible to create a .app without using frameworks you
|
||||||
will have to do the work yourself if you really want this.
|
will have to do the work yourself if you really want this.
|
||||||
|
|
||||||
A second reason for using frameworks is that they put Python-related items in
|
A second reason for using frameworks is that they put Python-related items in
|
||||||
only two places: /Library/Framework/Python.framework and /Applications/MacPython-2.3.
|
only two places: "/Library/Framework/Python.framework" and
|
||||||
This simplifies matters for users installing Python from a binary distribution
|
"/Applications/MacPython 2.5". This simplifies matters for users installing
|
||||||
if they want to get rid of it again. Moreover, due to the way frameworks work
|
Python from a binary distribution if they want to get rid of it again. Moreover,
|
||||||
a user without admin privileges can install a binary distribution in his or
|
due to the way frameworks work a user without admin privileges can install a
|
||||||
her home directory without recompilation.
|
binary distribution in his or her home directory without recompilation.
|
||||||
|
|
||||||
Incidentally, the procedure described here is also the procedure that is
|
|
||||||
used to create the MacPython binary installer, so the information here
|
|
||||||
should theoretically allow you to rebuild that.
|
|
||||||
|
|
||||||
2. How does a framework Python differ from a normal static Python?
|
2. How does a framework Python differ from a normal static Python?
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
|
@ -37,44 +65,40 @@ Versions/Current and you will see the familiar bin and lib directories.
|
||||||
3. Do I need extra packages?
|
3. Do I need extra packages?
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
Yes, probably. If you want to be able to use the PythonIDE you will need to
|
Yes, probably. If you want Tkinter support you need to get the OSX AquaTk
|
||||||
get Waste, an all-singing-all-dancing TextEdit replacement, from
|
distribution, this is installed by default on Mac OS X 10.4 or later. If
|
||||||
www.merzwaren.com. It will unpack into a folder named something like "Waste
|
|
||||||
2.1 Distribution". Make a symlink called "waste" to this folder, somewhere
|
|
||||||
beside your Python source distribution (it can be "../waste", "../../waste",
|
|
||||||
etc).
|
|
||||||
|
|
||||||
If you want Tkinter support you need to get the OSX AquaTk distribution. If
|
|
||||||
you want wxPython you need to get that. If you want Cocoa you need to get
|
you want wxPython you need to get that. If you want Cocoa you need to get
|
||||||
pyobjc. Because all these are currently in a state of flux please refer to
|
PyObjC.
|
||||||
http://www.cwi.nl/~jack/macpython.html, which should contain pointers to more
|
|
||||||
information.
|
|
||||||
|
|
||||||
4. How do I build a framework Python?
|
4. How do I build a framework Python?
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
This directory contains a Makefile that will create a couple of python-related
|
This directory contains a Makefile that will create a couple of python-related
|
||||||
applications (fullblown OSX .app applications, that is) in
|
applications (fullblown OSX .app applications, that is) in
|
||||||
/Applications/MacPython-2.3, and a hidden helper application Python.app inside the
|
"/Applications/MacPython 2.3", and a hidden helper application Python.app
|
||||||
Python.framework, and unix tools "python" and "pythonw" into /usr/local/bin.
|
inside the Python.framework, and unix tools "python" and "pythonw" into
|
||||||
In addition it has a target "installmacsubtree" that installs the relevant
|
/usr/local/bin. In addition it has a target "installmacsubtree" that installs
|
||||||
portions of the Mac subtree into the Python.framework.
|
the relevant portions of the Mac subtree into the Python.framework.
|
||||||
|
|
||||||
It is normally invoked indirectly through the main Makefile, as the last step
|
It is normally invoked indirectly through the main Makefile, as the last step
|
||||||
in the sequence
|
in the sequence
|
||||||
1. ./configure --enable-framework
|
|
||||||
2. make
|
1. ./configure --enable-framework
|
||||||
3. make frameworkinstall
|
|
||||||
|
2. make
|
||||||
|
|
||||||
|
3. make install
|
||||||
|
|
||||||
This sequence will put the framework in /Library/Framework/Python.framework,
|
This sequence will put the framework in /Library/Framework/Python.framework,
|
||||||
the applications in /Applications/Python and the unix tools in /usr/local/bin.
|
the applications in /Applications/MacPython 2.5 and the unix tools in
|
||||||
|
/usr/local/bin.
|
||||||
|
|
||||||
Installing in another place, for instance $HOME/Library/Frameworks if you have
|
Installing in another place, for instance $HOME/Library/Frameworks if you have
|
||||||
no admin privileges on your machine, has only been tested very lightly. This
|
no admin privileges on your machine, has only been tested very lightly. This
|
||||||
can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
|
can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
|
||||||
The other two directories, /Applications/MacPython-2.3 and /usr/local/bin, will then
|
The other two directories, /Applications/MacPython-2.3 and /usr/local/bin, will
|
||||||
also be deposited in $HOME. This is sub-optimal for the unix tools, which you
|
then also be deposited in $HOME. This is sub-optimal for the unix tools, which
|
||||||
would want in $HOME/bin, but there is no easy way to fix this right now.
|
you would want in $HOME/bin, but there is no easy way to fix this right now.
|
||||||
|
|
||||||
Note that there are no references to the actual locations in the code or
|
Note that there are no references to the actual locations in the code or
|
||||||
resource files, so you are free to move things around afterwards. For example,
|
resource files, so you are free to move things around afterwards. For example,
|
||||||
|
@ -89,18 +113,13 @@ There is an extra target frameworkinstallextras that is not part of the
|
||||||
normal frameworkinstall which installs the Demo and Tools directories
|
normal frameworkinstall which installs the Demo and Tools directories
|
||||||
into /Applications/MacPython-2.3, this is useful for binary distributions.
|
into /Applications/MacPython-2.3, this is useful for binary distributions.
|
||||||
|
|
||||||
If you want to run the Makefile here directly, in stead of through the main
|
What do all these programs do?
|
||||||
Makefile, you will have to pass various variable-assignments. Read the
|
===============================
|
||||||
beginning of the Makefile for details.
|
|
||||||
|
|
||||||
|
"IDLE.app" is an integrated development environment for Python: editor,
|
||||||
5. What do all these programs do?
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
PythonIDE.app is an integrated development environment for Python: editor,
|
|
||||||
debugger, etc.
|
debugger, etc.
|
||||||
|
|
||||||
PythonLauncher.app is a helper application that will handle things when you
|
"PythonLauncher.app" is a helper application that will handle things when you
|
||||||
double-click a .py, .pyc or .pyw file. For the first two it creates a Terminal
|
double-click a .py, .pyc or .pyw file. For the first two it creates a Terminal
|
||||||
window and runs the scripts with the normal command-line Python. For the
|
window and runs the scripts with the normal command-line Python. For the
|
||||||
latter it runs the script in the Python.app interpreter so the script can do
|
latter it runs the script in the Python.app interpreter so the script can do
|
||||||
|
@ -108,7 +127,7 @@ GUI-things. Keep the "alt" key depressed while dragging or double-clicking a
|
||||||
script to set runtime options. These options can be set once and for all
|
script to set runtime options. These options can be set once and for all
|
||||||
through PythonLauncher's preferences dialog.
|
through PythonLauncher's preferences dialog.
|
||||||
|
|
||||||
BuildApplet.app creates an applet from a Python script. Drop the script on it
|
"BuildApplet.app" creates an applet from a Python script. Drop the script on it
|
||||||
and out comes a full-featured MacOS application. There is much more to this,
|
and out comes a full-featured MacOS application. There is much more to this,
|
||||||
to be supplied later. Some useful (but outdated) info can be found in
|
to be supplied later. Some useful (but outdated) info can be found in
|
||||||
Mac/Demo.
|
Mac/Demo.
|
||||||
|
@ -116,43 +135,27 @@ Mac/Demo.
|
||||||
The commandline scripts /usr/local/bin/python and pythonw can be used to run
|
The commandline scripts /usr/local/bin/python and pythonw can be used to run
|
||||||
non-GUI and GUI python scripts from the command line, respectively.
|
non-GUI and GUI python scripts from the command line, respectively.
|
||||||
|
|
||||||
6. How do I create a binary distribution?
|
How do I create a binary distribution?
|
||||||
-----------------------------------------
|
======================================
|
||||||
|
|
||||||
First go to Mac/OSX and run "python fixversions.py -a" with the Python
|
Go to the directory "Mac/OSX/BuildScript". There you'll find a script
|
||||||
you are going to distribute. This will fix the version numbers and copyright
|
"build-installer.py" that does all the work. This will download and build
|
||||||
strings in the various Info.plist files.
|
a number of 3th-party libaries, configures and builds a framework Python,
|
||||||
|
installs it, creates the installer pacakge files and then packs this in a
|
||||||
|
DMG image.
|
||||||
|
|
||||||
Go to the Mac/OSX/Dist directory. There you find a script "build" that
|
The script will build a universal binary, you'll therefore have to run this
|
||||||
does all the work: it configures and builds a framework Python, installs
|
script on Mac OS X 10.4 or later and with Xcode 2.1 or later installed.
|
||||||
it, creates the installer package file and packs this in a DMG image.
|
|
||||||
|
|
||||||
All of this is normally done completely isolated in /tmp/_py, so it does not
|
All of this is normally done completely isolated in /tmp/_py, so it does not
|
||||||
use your normal build directory nor does it install into /.
|
use your normal build directory nor does it install into /.
|
||||||
|
|
||||||
Because the build script locates the Python source tree relative to its own
|
Because of the way the script locates the files it needs you have to run it
|
||||||
pathname you may have to run it with a full pathname. If you are debugging your
|
from within the BuildScript directory. The script accepts a number of
|
||||||
install you can pass one argument: the pathname where the build directory
|
command-line arguments, run it with --help for more information.
|
||||||
is located (i.e. where configure and make will be run), then this directory
|
|
||||||
will be saved between runs of the build script. Do *not* specify your normal
|
|
||||||
build directory here.
|
|
||||||
|
|
||||||
build will ask you whether you have updated the readme file, and it will offer
|
Odds and ends
|
||||||
to include the full documentation in the installer. That option has not
|
=============
|
||||||
been used for a while, and it may not work.
|
|
||||||
|
|
||||||
If you need to execute code on the client machine after installing Python
|
|
||||||
you can add this to resources/postflight. If you need to do even stranger things
|
|
||||||
you have to read Apple's documentation on PackageMaker and read the source
|
|
||||||
of Mac/scripts/buildpkg.py.
|
|
||||||
|
|
||||||
7. Odds and ends.
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
The PythonLauncher is actually an Objective C Cocoa app built with Project
|
|
||||||
Builder. It could be a Python program, except for the fact that pyobjc is not
|
|
||||||
a part of the core distribution, and is not completely finished yet as of this
|
|
||||||
writing.
|
|
||||||
|
|
||||||
Something to take note of is that the ".rsrc" files in the distribution are
|
Something to take note of is that the ".rsrc" files in the distribution are
|
||||||
not actually resource files, they're AppleSingle encoded resource files. The
|
not actually resource files, they're AppleSingle encoded resource files. The
|
||||||
|
@ -161,3 +164,4 @@ macresource module and the Mac/OSX/Makefile cater for this, and create
|
||||||
files.
|
files.
|
||||||
|
|
||||||
Jack Jansen, Jack.Jansen@cwi.nl, 15-Jul-2004.
|
Jack Jansen, Jack.Jansen@cwi.nl, 15-Jul-2004.
|
||||||
|
Ronald Oussoren, RonaldOussoren@mac.com, 26-May-2006
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
"""fixversions - Fix version numbers in .plist files to match current
|
|
||||||
python version and date"""
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import time
|
|
||||||
import plistlib
|
|
||||||
|
|
||||||
SHORTVERSION = "%d.%d" % (sys.version_info[0], sys.version_info[1])
|
|
||||||
if sys.version_info[2]:
|
|
||||||
SHORTVERSION = SHORTVERSION + ".%d" % sys.version_info[2]
|
|
||||||
if sys.version_info[3] != 'final':
|
|
||||||
SHORTVERSION = SHORTVERSION + "%s%d" % (sys.version_info[3], sys.version_info[4])
|
|
||||||
|
|
||||||
COPYRIGHT = "(c) %d Python Software Foundation." % time.gmtime()[0]
|
|
||||||
|
|
||||||
LONGVERSION = SHORTVERSION + ", " + COPYRIGHT
|
|
||||||
|
|
||||||
def fix(file):
|
|
||||||
plist = plistlib.Plist.fromFile(file)
|
|
||||||
changed = False
|
|
||||||
if plist.has_key("CFBundleGetInfoString") and \
|
|
||||||
plist["CFBundleGetInfoString"] != LONGVERSION:
|
|
||||||
plist["CFBundleGetInfoString"] = LONGVERSION
|
|
||||||
changed = True
|
|
||||||
if plist.has_key("CFBundleLongVersionString") and \
|
|
||||||
plist["CFBundleLongVersionString"] != LONGVERSION:
|
|
||||||
plist["CFBundleLongVersionString"] = LONGVERSION
|
|
||||||
changed = True
|
|
||||||
if plist.has_key("NSHumanReadableCopyright") and \
|
|
||||||
plist["NSHumanReadableCopyright"] != COPYRIGHT:
|
|
||||||
plist["NSHumanReadableCopyright"] = COPYRIGHT
|
|
||||||
changed = True
|
|
||||||
if plist.has_key("CFBundleVersion") and \
|
|
||||||
plist["CFBundleVersion"] != SHORTVERSION:
|
|
||||||
plist["CFBundleVersion"] = SHORTVERSION
|
|
||||||
changed = True
|
|
||||||
if plist.has_key("CFBundleShortVersionString") and \
|
|
||||||
plist["CFBundleShortVersionString"] != SHORTVERSION:
|
|
||||||
plist["CFBundleShortVersionString"] = SHORTVERSION
|
|
||||||
changed = True
|
|
||||||
if changed:
|
|
||||||
os.rename(file, file + '~')
|
|
||||||
plist.write(file)
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if len(sys.argv) < 2:
|
|
||||||
print "Usage: %s plistfile ..." % sys.argv[0]
|
|
||||||
print "or: %s -a fix standard Python plist files"
|
|
||||||
sys.exit(1)
|
|
||||||
if sys.argv[1] == "-a":
|
|
||||||
files = [
|
|
||||||
"../OSXResources/app/Info.plist",
|
|
||||||
"../OSXResources/framework/version.plist",
|
|
||||||
"../Tools/IDE/PackageManager.plist",
|
|
||||||
"../Tools/IDE/PythonIDE.plist",
|
|
||||||
"../scripts/BuildApplet.plist"
|
|
||||||
]
|
|
||||||
if not os.path.exists(files[0]):
|
|
||||||
print "%s -a must be run from Mac/OSX directory"
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
files = sys.argv[1:]
|
|
||||||
for file in files:
|
|
||||||
fix(file)
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
|
@ -1,6 +0,0 @@
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
_maclib = os.path.join(sys.prefix, 'Mac', 'Lib')
|
|
||||||
_scriptlib = os.path.join(_maclib, 'lib-scriptpackages')
|
|
||||||
sys.path.append(_maclib)
|
|
||||||
sys.path.append(_scriptlib)
|
|
Loading…
Reference in New Issue