diff options
author | Ronald Oussoren <ronaldoussoren@mac.com> | 2006-05-26 12:23:20 (GMT) |
---|---|---|
committer | Ronald Oussoren <ronaldoussoren@mac.com> | 2006-05-26 12:23:20 (GMT) |
commit | 736123605c29e5bf7cac7b3c39a61250f480824a (patch) | |
tree | 5ba67a77fb9f0de61612645168fc0783568aa79f | |
parent | 2856e5f3909f8366487ad85ca6c234040317e1e5 (diff) | |
download | cpython-736123605c29e5bf7cac7b3c39a61250f480824a.zip cpython-736123605c29e5bf7cac7b3c39a61250f480824a.tar.gz cpython-736123605c29e5bf7cac7b3c39a61250f480824a.tar.bz2 |
- 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
-rwxr-xr-x | Mac/OSX/BuildScript/build-installer.py | 7 | ||||
-rw-r--r-- | Mac/OSX/Dist/README.txt | 50 | ||||
-rwxr-xr-x | Mac/OSX/Dist/build | 164 | ||||
-rw-r--r-- | Mac/OSX/Dist/example-pimp-database.plist | 51 | ||||
-rwxr-xr-x | Mac/OSX/Dist/makedmg | 95 | ||||
-rw-r--r-- | Mac/OSX/Dist/resources/ReadMe.txt | 31 | ||||
-rw-r--r-- | Mac/OSX/Dist/resources/Welcome.rtf | 15 | ||||
-rwxr-xr-x | Mac/OSX/Dist/resources/postflight | 92 | ||||
-rw-r--r-- | Mac/OSX/Extras.ReadMe.txt | 9 | ||||
-rw-r--r-- | Mac/OSX/Extras.install.py | 1 | ||||
-rw-r--r-- | Mac/OSX/IDLE/Makefile.in | 2 | ||||
-rw-r--r-- | Mac/OSX/IDLE/idlemain.py | 2 | ||||
-rw-r--r-- | Mac/OSX/README | 156 | ||||
-rw-r--r-- | Mac/OSX/fixversions.py | 69 | ||||
-rw-r--r-- | Mac/OSX/sample_sitecustomize.py | 6 |
15 files changed, 87 insertions, 663 deletions
diff --git a/Mac/OSX/BuildScript/build-installer.py b/Mac/OSX/BuildScript/build-installer.py index 03f5696..2308059 100755 --- a/Mac/OSX/BuildScript/build-installer.py +++ b/Mac/OSX/BuildScript/build-installer.py @@ -591,10 +591,10 @@ def buildPython(): version = getVersion() 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(SDKPATH), shellQuote(WORKDIR), - shellQuote(WORKDIR))) + shellQuote(SDKPATH), shellQuote(WORKDIR)[1:-1], + shellQuote(WORKDIR)[1:-1])) print "Running make" runCommand("make") @@ -839,6 +839,7 @@ def buildInstaller(): writePlist(pl, os.path.join(pkgroot, 'Resources', 'Description.plist')) for fn in os.listdir('resources'): + if fn == '.svn': continue if fn.endswith('.jpg'): shutil.copy(os.path.join('resources', fn), os.path.join(rsrcDir, fn)) else: diff --git a/Mac/OSX/Dist/README.txt b/Mac/OSX/Dist/README.txt deleted file mode 100644 index 371c3fe..0000000 --- a/Mac/OSX/Dist/README.txt +++ /dev/null @@ -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. diff --git a/Mac/OSX/Dist/build b/Mac/OSX/Dist/build deleted file mode 100755 index b5ebe3e..0000000 --- a/Mac/OSX/Dist/build +++ /dev/null @@ -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" - diff --git a/Mac/OSX/Dist/example-pimp-database.plist b/Mac/OSX/Dist/example-pimp-database.plist deleted file mode 100644 index c0c52ab..0000000 --- a/Mac/OSX/Dist/example-pimp-database.plist +++ /dev/null @@ -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> diff --git a/Mac/OSX/Dist/makedmg b/Mac/OSX/Dist/makedmg deleted file mode 100755 index de13ef9..0000000 --- a/Mac/OSX/Dist/makedmg +++ /dev/null @@ -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"; } -} diff --git a/Mac/OSX/Dist/resources/ReadMe.txt b/Mac/OSX/Dist/resources/ReadMe.txt deleted file mode 100644 index 39a7b82..0000000 --- a/Mac/OSX/Dist/resources/ReadMe.txt +++ /dev/null @@ -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. diff --git a/Mac/OSX/Dist/resources/Welcome.rtf b/Mac/OSX/Dist/resources/Welcome.rtf deleted file mode 100644 index ec6bb1a..0000000 --- a/Mac/OSX/Dist/resources/Welcome.rtf +++ /dev/null @@ -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.}
\ No newline at end of file diff --git a/Mac/OSX/Dist/resources/postflight b/Mac/OSX/Dist/resources/postflight deleted file mode 100755 index 878b6d4..0000000 --- a/Mac/OSX/Dist/resources/postflight +++ /dev/null @@ -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 diff --git a/Mac/OSX/Extras.ReadMe.txt b/Mac/OSX/Extras.ReadMe.txt index 3ab4568..2d7fd42 100644 --- a/Mac/OSX/Extras.ReadMe.txt +++ b/Mac/OSX/Extras.ReadMe.txt @@ -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 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. - -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. - diff --git a/Mac/OSX/Extras.install.py b/Mac/OSX/Extras.install.py index 2521f06..ce00af3 100644 --- a/Mac/OSX/Extras.install.py +++ b/Mac/OSX/Extras.install.py @@ -12,6 +12,7 @@ def isclean(name): if name == 'CVS': return 0 if name == '.cvsignore': return 0 if name == '.DS_store': return 0 + if name == '.svn': return 0 if name.endswith('~'): return 0 if name.endswith('.BAK'): return 0 if name.endswith('.pyc'): return 0 diff --git a/Mac/OSX/IDLE/Makefile.in b/Mac/OSX/IDLE/Makefile.in index a429277..a96e7ef 100644 --- a/Mac/OSX/IDLE/Makefile.in +++ b/Mac/OSX/IDLE/Makefile.in @@ -38,7 +38,7 @@ IDLE.app: \ $(srcdir)/../Icons/IDLE.icns $(srcdir)/idlemain.py \ $(srcdir)/../Icons/PythonSource.icns \ $(srcdir)/../Icons/PythonCompiled.icns - rm -fr PythonLauncher.app + rm -fr IDLE.app $(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \ --builddir=. \ --name=IDLE \ diff --git a/Mac/OSX/IDLE/idlemain.py b/Mac/OSX/IDLE/idlemain.py index eaebee8..aa75d4c 100644 --- a/Mac/OSX/IDLE/idlemain.py +++ b/Mac/OSX/IDLE/idlemain.py @@ -7,7 +7,7 @@ from idlelib.PyShell import main # Change the current directory the user's home directory, that way we'll get # 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 diff --git a/Mac/OSX/README b/Mac/OSX/README index 26c646db..1e58b02 100644 --- a/Mac/OSX/README +++ b/Mac/OSX/README @@ -1,29 +1,57 @@ +============ +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? -------------------------------------------------------------------------- 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 -need to be run from a fullblown MacOSX application (a ".app" bundle). +exception of X11/XDarwin-based GUI toolkits all GUI programs need to be run +from a fullblown MacOSX application (a ".app" bundle). 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. 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. -This simplifies matters for users installing Python from a binary distribution -if they want to get rid of it again. Moreover, due to the way frameworks work -a user without admin privileges can install a 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. +only two places: "/Library/Framework/Python.framework" and +"/Applications/MacPython 2.5". This simplifies matters for users installing +Python from a binary distribution if they want to get rid of it again. Moreover, +due to the way frameworks work a user without admin privileges can install a +binary distribution in his or her home directory without recompilation. 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? ---------------------------- -Yes, probably. If you want to be able to use the PythonIDE you will need to -get Waste, an all-singing-all-dancing TextEdit replacement, from -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 +Yes, probably. If you want Tkinter support you need to get the OSX AquaTk +distribution, this is installed by default on Mac OS X 10.4 or later. If 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 -http://www.cwi.nl/~jack/macpython.html, which should contain pointers to more -information. +PyObjC. 4. How do I build a framework Python? ------------------------------------- This directory contains a Makefile that will create a couple of python-related applications (fullblown OSX .app applications, that is) in -/Applications/MacPython-2.3, and a hidden helper application Python.app inside the -Python.framework, and unix tools "python" and "pythonw" into /usr/local/bin. -In addition it has a target "installmacsubtree" that installs the relevant -portions of the Mac subtree into the Python.framework. +"/Applications/MacPython 2.3", and a hidden helper application Python.app +inside the Python.framework, and unix tools "python" and "pythonw" into +/usr/local/bin. In addition it has a target "installmacsubtree" that installs +the relevant portions of the Mac subtree into the Python.framework. It is normally invoked indirectly through the main Makefile, as the last step in the sequence -1. ./configure --enable-framework -2. make -3. make frameworkinstall + + 1. ./configure --enable-framework + + 2. make + + 3. make install 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 no admin privileges on your machine, has only been tested very lightly. This 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 -also be deposited in $HOME. This is sub-optimal for the unix tools, which you -would want in $HOME/bin, but there is no easy way to fix this right now. +The other two directories, /Applications/MacPython-2.3 and /usr/local/bin, will +then also be deposited in $HOME. This is sub-optimal for the unix tools, which +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 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 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 -Makefile, you will have to pass various variable-assignments. Read the -beginning of the Makefile for details. +What do all these programs do? +=============================== - -5. What do all these programs do? ---------------------------------- - -PythonIDE.app is an integrated development environment for Python: editor, +"IDLE.app" is an integrated development environment for Python: editor, 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 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 @@ -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 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, to be supplied later. Some useful (but outdated) info can be found in Mac/Demo. @@ -116,43 +135,27 @@ Mac/Demo. 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. -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 -you are going to distribute. This will fix the version numbers and copyright -strings in the various Info.plist files. +Go to the directory "Mac/OSX/BuildScript". There you'll find a script +"build-installer.py" that does all the work. This will download and build +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 -does all the work: it configures and builds a framework Python, installs -it, creates the installer package file and packs this in a DMG image. +The script will build a universal binary, you'll therefore have to run this +script on Mac OS X 10.4 or later and with Xcode 2.1 or later installed. 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 /. -Because the build script locates the Python source tree relative to its own -pathname you may have to run it with a full pathname. If you are debugging your -install you can pass one argument: the pathname where the build directory -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 -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. ------------------ +Because of the way the script locates the files it needs you have to run it +from within the BuildScript directory. The script accepts a number of +command-line arguments, run it with --help for more information. -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. +Odds and ends +============= 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 @@ -161,3 +164,4 @@ macresource module and the Mac/OSX/Makefile cater for this, and create files. Jack Jansen, Jack.Jansen@cwi.nl, 15-Jul-2004. + Ronald Oussoren, RonaldOussoren@mac.com, 26-May-2006 diff --git a/Mac/OSX/fixversions.py b/Mac/OSX/fixversions.py deleted file mode 100644 index 0277c79..0000000 --- a/Mac/OSX/fixversions.py +++ /dev/null @@ -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() diff --git a/Mac/OSX/sample_sitecustomize.py b/Mac/OSX/sample_sitecustomize.py deleted file mode 100644 index d7bbb12..0000000 --- a/Mac/OSX/sample_sitecustomize.py +++ /dev/null @@ -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) |