From 32f5d8f1b153be33be42df82eb0f04c42006db54 Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Wed, 7 Jun 2006 19:02:03 +0000 Subject: [PATCH] Move Mac/OSX/* one level up --- Mac/{OSX => }/Extras.ReadMe.txt | 0 Mac/{OSX => }/Extras.install.py | 0 Mac/{OSX => }/Icons/Disk Image.icns | Bin Mac/{OSX => }/Icons/IDLE.icns | Bin Mac/{OSX => }/Icons/Python Folder.icns | Bin Mac/{OSX => }/Icons/PythonCompiled.icns | Bin Mac/{OSX => }/Icons/PythonLauncher.icns | Bin Mac/{OSX => }/Icons/PythonSource.icns | Bin Mac/{OSX => }/Icons/ReadMe.txt | 0 Mac/{OSX => }/Makefile.in | 58 +- Mac/OSX/BuildScript/README.txt | 35 - Mac/OSX/BuildScript/build-installer.py | 1014 ----------------- Mac/OSX/BuildScript/ncurses-5.5.patch | 36 - Mac/OSX/BuildScript/resources/ReadMe.txt | 31 - Mac/OSX/BuildScript/resources/Welcome.rtf | 15 - Mac/OSX/BuildScript/resources/background.jpg | Bin 45421 -> 0 bytes .../scripts/postflight.documentation | 12 - .../BuildScript/scripts/postflight.framework | 33 - .../scripts/postflight.patch-profile | 71 -- .../Help_Indexing_Tool_Suite.py | 110 -- .../Miscellaneous_Standards.py | 49 - .../Doc/HelpIndexingTool/Required_Suite.py | 32 - .../Doc/HelpIndexingTool/Standard_Suite.py | 343 ------ Mac/OSX/Doc/HelpIndexingTool/__init__.py | 78 -- Mac/OSX/Doc/HelpIndexingTool/odds_and_ends.py | 49 - Mac/OSX/Doc/README | 35 - Mac/OSX/Doc/setup.py | 214 ---- Mac/OSX/IDLE/Info.plist | 55 - Mac/OSX/IDLE/Makefile.in | 54 - Mac/OSX/IDLE/config-extensions.def | 88 -- Mac/OSX/IDLE/config-main.def | 79 -- Mac/OSX/IDLE/idlemain.py | 27 - .../PythonLauncher/English.lproj/Credits.rtf | 30 - .../English.lproj/MainMenu.nib/classes.nib | 12 - .../English.lproj/MainMenu.nib/info.nib | 21 - .../English.lproj/MainMenu.nib/objects.nib | Bin 5016 -> 0 bytes .../English.lproj/MyDocument.nib/classes.nib | 26 - .../English.lproj/MyDocument.nib/info.nib | 16 - .../English.lproj/MyDocument.nib/objects.nib | Bin 4845 -> 0 bytes .../PreferenceWindow.nib/classes.nib | 26 - .../PreferenceWindow.nib/info.nib | 16 - .../PreferenceWindow.nib/objects.nib | Bin 5882 -> 0 bytes Mac/OSX/PythonLauncher/FileSettings.h | 64 -- Mac/OSX/PythonLauncher/FileSettings.m | 298 ----- Mac/OSX/PythonLauncher/Info.plist | 65 -- Mac/OSX/PythonLauncher/Makefile.in | 78 -- Mac/OSX/PythonLauncher/MyAppDelegate.h | 15 - Mac/OSX/PythonLauncher/MyAppDelegate.m | 96 -- Mac/OSX/PythonLauncher/MyDocument.h | 41 - Mac/OSX/PythonLauncher/MyDocument.m | 175 --- .../PreferenceWindow.nib/classes.nib | 26 - .../PreferenceWindow.nib/info.nib | 16 - .../PreferenceWindow.nib/objects.nib | Bin 5882 -> 0 bytes .../PreferencesWindowController.h | 38 - .../PreferencesWindowController.m | 121 -- Mac/OSX/PythonLauncher/doscript.h | 12 - Mac/OSX/PythonLauncher/doscript.m | 118 -- Mac/OSX/PythonLauncher/factorySettings.plist | 87 -- Mac/OSX/PythonLauncher/main.m | 17 - Mac/OSX/Tools/pythonw.c | 17 - Mac/OSX/fixapplepython23.py | 118 -- Mac/{OSX => }/README | 0 .../app/Info.plist | 0 Mac/{OSXResources => Resources}/app/PkgInfo | 0 .../Documentation/PackageManager.gif | Bin .../Documentation/community.html | 0 .../Documentation/doc/index.html | 0 .../English.lproj/Documentation/finder.html | 0 .../English.lproj/Documentation/gui.html | 0 .../English.lproj/Documentation/ide/IDE.gif | Bin .../ide/entering_in_new_window.gif | Bin .../Documentation/ide/hello_world.gif | Bin .../Documentation/ide/index.html | 0 .../Documentation/ide/loading_ide.gif | Bin .../Documentation/ide/making_new_window.gif | Bin .../Documentation/ide/new_ide_window.gif | Bin .../Documentation/ide/new_window_made.gif | Bin .../Documentation/ide/output_window.gif | Bin .../Documentation/ide/saving_edited_file.gif | Bin .../Documentation/ide/simple_commands.gif | Bin .../Documentation/ide/syntax_error.gif | Bin .../English.lproj/Documentation/index.html | 0 .../English.lproj/Documentation/intro.html | 0 .../English.lproj/Documentation/packman.html | 0 .../English.lproj/Documentation/python.gif | Bin .../Documentation/pythonsmall.gif | Bin .../Documentation/scripting.html | 0 .../English.lproj/Documentation/shell.html | 0 .../Resources/English.lproj/InfoPlist.strings | Bin .../app/Resources/PythonApplet.icns | Bin .../app/Resources/PythonInterpreter.icns | Bin .../framework/English.lproj/InfoPlist.strings | Bin .../framework/Info.plist | 0 .../framework/version.plist | 0 .../iconsrc/IDE.psd | Bin .../iconsrc/PackageManager.psd | Bin .../iconsrc/PythonApplet.psd | Bin .../iconsrc/PythonCompiled.psd | Bin .../iconsrc/PythonIcon.psd | Bin .../iconsrc/PythonSource.psd | Bin .../iconsrc/PythonWSource.psd | Bin 101 files changed, 25 insertions(+), 4042 deletions(-) rename Mac/{OSX => }/Extras.ReadMe.txt (100%) rename Mac/{OSX => }/Extras.install.py (100%) rename Mac/{OSX => }/Icons/Disk Image.icns (100%) rename Mac/{OSX => }/Icons/IDLE.icns (100%) rename Mac/{OSX => }/Icons/Python Folder.icns (100%) rename Mac/{OSX => }/Icons/PythonCompiled.icns (100%) rename Mac/{OSX => }/Icons/PythonLauncher.icns (100%) rename Mac/{OSX => }/Icons/PythonSource.icns (100%) rename Mac/{OSX => }/Icons/ReadMe.txt (100%) rename Mac/{OSX => }/Makefile.in (81%) delete mode 100644 Mac/OSX/BuildScript/README.txt delete mode 100755 Mac/OSX/BuildScript/build-installer.py delete mode 100644 Mac/OSX/BuildScript/ncurses-5.5.patch delete mode 100644 Mac/OSX/BuildScript/resources/ReadMe.txt delete mode 100644 Mac/OSX/BuildScript/resources/Welcome.rtf delete mode 100644 Mac/OSX/BuildScript/resources/background.jpg delete mode 100755 Mac/OSX/BuildScript/scripts/postflight.documentation delete mode 100755 Mac/OSX/BuildScript/scripts/postflight.framework delete mode 100755 Mac/OSX/BuildScript/scripts/postflight.patch-profile delete mode 100644 Mac/OSX/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py delete mode 100644 Mac/OSX/Doc/HelpIndexingTool/Miscellaneous_Standards.py delete mode 100644 Mac/OSX/Doc/HelpIndexingTool/Required_Suite.py delete mode 100644 Mac/OSX/Doc/HelpIndexingTool/Standard_Suite.py delete mode 100644 Mac/OSX/Doc/HelpIndexingTool/__init__.py delete mode 100644 Mac/OSX/Doc/HelpIndexingTool/odds_and_ends.py delete mode 100644 Mac/OSX/Doc/README delete mode 100644 Mac/OSX/Doc/setup.py delete mode 100644 Mac/OSX/IDLE/Info.plist delete mode 100644 Mac/OSX/IDLE/Makefile.in delete mode 100644 Mac/OSX/IDLE/config-extensions.def delete mode 100644 Mac/OSX/IDLE/config-main.def delete mode 100644 Mac/OSX/IDLE/idlemain.py delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/Credits.rtf delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/classes.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/info.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/objects.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/classes.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/info.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/objects.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib delete mode 100644 Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/objects.nib delete mode 100755 Mac/OSX/PythonLauncher/FileSettings.h delete mode 100755 Mac/OSX/PythonLauncher/FileSettings.m delete mode 100644 Mac/OSX/PythonLauncher/Info.plist delete mode 100644 Mac/OSX/PythonLauncher/Makefile.in delete mode 100644 Mac/OSX/PythonLauncher/MyAppDelegate.h delete mode 100644 Mac/OSX/PythonLauncher/MyAppDelegate.m delete mode 100755 Mac/OSX/PythonLauncher/MyDocument.h delete mode 100755 Mac/OSX/PythonLauncher/MyDocument.m delete mode 100644 Mac/OSX/PythonLauncher/PreferenceWindow.nib/classes.nib delete mode 100644 Mac/OSX/PythonLauncher/PreferenceWindow.nib/info.nib delete mode 100644 Mac/OSX/PythonLauncher/PreferenceWindow.nib/objects.nib delete mode 100644 Mac/OSX/PythonLauncher/PreferencesWindowController.h delete mode 100644 Mac/OSX/PythonLauncher/PreferencesWindowController.m delete mode 100644 Mac/OSX/PythonLauncher/doscript.h delete mode 100644 Mac/OSX/PythonLauncher/doscript.m delete mode 100644 Mac/OSX/PythonLauncher/factorySettings.plist delete mode 100755 Mac/OSX/PythonLauncher/main.m delete mode 100644 Mac/OSX/Tools/pythonw.c delete mode 100644 Mac/OSX/fixapplepython23.py rename Mac/{OSX => }/README (100%) rename Mac/{OSXResources => Resources}/app/Info.plist (100%) rename Mac/{OSXResources => Resources}/app/PkgInfo (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/PackageManager.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/community.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/doc/index.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/finder.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/gui.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/IDE.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/hello_world.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/index.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/loading_ide.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/making_new_window.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/new_ide_window.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/new_window_made.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/output_window.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/simple_commands.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/ide/syntax_error.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/index.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/intro.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/packman.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/python.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/pythonsmall.gif (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/scripting.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/Documentation/shell.html (100%) rename Mac/{OSXResources => Resources}/app/Resources/English.lproj/InfoPlist.strings (100%) rename Mac/{OSXResources => Resources}/app/Resources/PythonApplet.icns (100%) rename Mac/{OSXResources => Resources}/app/Resources/PythonInterpreter.icns (100%) rename Mac/{OSXResources => Resources}/framework/English.lproj/InfoPlist.strings (100%) rename Mac/{OSXResources => Resources}/framework/Info.plist (100%) rename Mac/{OSXResources => Resources}/framework/version.plist (100%) rename Mac/{OSXResources => Resources}/iconsrc/IDE.psd (100%) rename Mac/{OSXResources => Resources}/iconsrc/PackageManager.psd (100%) rename Mac/{OSXResources => Resources}/iconsrc/PythonApplet.psd (100%) rename Mac/{OSXResources => Resources}/iconsrc/PythonCompiled.psd (100%) rename Mac/{OSXResources => Resources}/iconsrc/PythonIcon.psd (100%) rename Mac/{OSXResources => Resources}/iconsrc/PythonSource.psd (100%) rename Mac/{OSXResources => Resources}/iconsrc/PythonWSource.psd (100%) diff --git a/Mac/OSX/Extras.ReadMe.txt b/Mac/Extras.ReadMe.txt similarity index 100% rename from Mac/OSX/Extras.ReadMe.txt rename to Mac/Extras.ReadMe.txt diff --git a/Mac/OSX/Extras.install.py b/Mac/Extras.install.py similarity index 100% rename from Mac/OSX/Extras.install.py rename to Mac/Extras.install.py diff --git a/Mac/OSX/Icons/Disk Image.icns b/Mac/Icons/Disk Image.icns similarity index 100% rename from Mac/OSX/Icons/Disk Image.icns rename to Mac/Icons/Disk Image.icns diff --git a/Mac/OSX/Icons/IDLE.icns b/Mac/Icons/IDLE.icns similarity index 100% rename from Mac/OSX/Icons/IDLE.icns rename to Mac/Icons/IDLE.icns diff --git a/Mac/OSX/Icons/Python Folder.icns b/Mac/Icons/Python Folder.icns similarity index 100% rename from Mac/OSX/Icons/Python Folder.icns rename to Mac/Icons/Python Folder.icns diff --git a/Mac/OSX/Icons/PythonCompiled.icns b/Mac/Icons/PythonCompiled.icns similarity index 100% rename from Mac/OSX/Icons/PythonCompiled.icns rename to Mac/Icons/PythonCompiled.icns diff --git a/Mac/OSX/Icons/PythonLauncher.icns b/Mac/Icons/PythonLauncher.icns similarity index 100% rename from Mac/OSX/Icons/PythonLauncher.icns rename to Mac/Icons/PythonLauncher.icns diff --git a/Mac/OSX/Icons/PythonSource.icns b/Mac/Icons/PythonSource.icns similarity index 100% rename from Mac/OSX/Icons/PythonSource.icns rename to Mac/Icons/PythonSource.icns diff --git a/Mac/OSX/Icons/ReadMe.txt b/Mac/Icons/ReadMe.txt similarity index 100% rename from Mac/OSX/Icons/ReadMe.txt rename to Mac/Icons/ReadMe.txt diff --git a/Mac/OSX/Makefile.in b/Mac/Makefile.in similarity index 81% rename from Mac/OSX/Makefile.in rename to Mac/Makefile.in index d0e39e40c852..82514b2fb283 100644 --- a/Mac/OSX/Makefile.in +++ b/Mac/Makefile.in @@ -3,25 +3,23 @@ # commandline in that case. VERSION=@VERSION@ -builddir = ../.. -srcdir = @srcdir@ +builddir = .. +srcdir=@srcdir@ prefix=/Library/Frameworks/Python.framework/Versions/$(VERSION) LIBDEST=$(prefix)/lib/python$(VERSION) -BUILDPYTHON=$(builddir)/python.exe +RUNSHARED=@RUNSHARED@ +BUILDEXE=@BUILDEXEEXT@ +BUILDPYTHON=$(builddir)/python$(BUILDEXE) DESTDIR= -LDFLAGS= @LDFLAGS@ +LDFLAGS=@LDFLAGS@ FRAMEWORKUNIXTOOLSPREFIX=@FRAMEWORKUNIXTOOLSPREFIX@ # These are normally glimpsed from the previous set -bindir=@exec_prefix@/bin +bindir=$(prefix)/bin PYTHONAPPSDIR=/Applications/MacPython $(VERSION) APPINSTALLDIR=$(prefix)/Resources/Python.app # Variables for installing the "normal" unix binaries -INSTALLED_PYDOC=$(prefix)/bin/pydoc -INSTALLED_IDLE=$(prefix)/bin/idle -INSTALLED_PYTHON=$(prefix)/bin/python -INSTALLED_PYTHONW=$(prefix)/bin/pythonw INSTALLED_PYTHONAPP=$(APPINSTALLDIR)/Contents/MacOS/Python # Items more-or-less copied from the main Makefile @@ -36,15 +34,15 @@ LN=@LN@ STRIPFLAG=-s CPMAC=/Developer/Tools/CpMac -APPTEMPLATE=$(srcdir)/../OSXResources/app +APPTEMPLATE=$(srcdir)/Resources/app APPSUBDIRS=MacOS Resources Resources/English.lproj \ Resources/English.lproj/Documentation \ Resources/English.lproj/Documentation/doc \ Resources/English.lproj/Documentation/ide -DOCDIR=$(srcdir)/../OSXResources/app/Resources/English.lproj/Documentation +DOCDIR=$(srcdir)/Resources/app/Resources/English.lproj/Documentation DOCINDEX=$(DOCDIR)/"Documentation idx" -CACHERSRC=$(srcdir)/../scripts/cachersrc.py -compileall=$(srcdir)/../../Lib/compileall.py +CACHERSRC=$(srcdir)/scripts/cachersrc.py +compileall=$(srcdir)/../Lib/compileall.py installapps: install_Python install_BuildApplet install_PythonLauncher \ install_IDLE checkapplepython install_pythonw install_versionedtools @@ -163,11 +161,11 @@ install_IDLE: cd IDLE && make install install_BuildApplet: - $(BUILDPYTHON) $(srcdir)/../scripts/BuildApplet.py \ + $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/scripts/BuildApplet.py \ --destroot "$(DESTDIR)" \ --python $(INSTALLED_PYTHONAPP) \ --output "$(DESTDIR)$(PYTHONAPPSDIR)/Build Applet.app" \ - $(srcdir)/../scripts/BuildApplet.py + $(srcdir)/scripts/BuildApplet.py MACLIBDEST=$(LIBDEST)/plat-mac MACTOOLSDEST=$(prefix)/Mac/Tools @@ -225,29 +223,25 @@ installmacsubtree: done - $(BUILDPYTHON) $(CACHERSRC) -v $(DESTDIR)$(MACLIBDEST) $(DESTDIR)$(MACTOOLSDEST) - $(BUILDPYTHON) -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST) - $(BUILDPYTHON) -O -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST) + $(RUNSHARED) $(BUILDPYTHON) $(CACHERSRC) -v $(DESTDIR)$(MACLIBDEST) $(DESTDIR)$(MACTOOLSDEST) + $(RUNSHARED) $(BUILDPYTHON) -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST) + $(RUNSHARED) $(BUILDPYTHON) -O -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST) -# -# We use the full name here in stead of $(INSTALLED_PYTHONAPP), because -# the latter may be overridden by Makefile.jaguar when building for a pre-installed -$(APPINSTALLDIR)/Contents/MacOS/Python: install_Python - -# $(INSTALLED_PYTHON) has to be done by the main Makefile, we cannot do that here. -# At least this rule will give an error if it doesn't exist. +$(INSTALLED_PYTHONAPP): install_Python -installextras: +installextras: $(srcdir)/Extras.ReadMe.txt $(srcdir)/Extras.install.py $(INSTALL) -d "$(DESTDIR)$(PYTHONAPPSDIR)/Extras" - $(INSTALL) $(srcdir)/Mac/OSX/Extras.ReadMe.txt "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/ReadMe.txt" - $(BUILDPYTHON) $(srcdir)/Mac/OSX/Extras.install.py $(srcdir)/Demo \ + $(INSTALL) $(srcdir)/Extras.ReadMe.txt "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/ReadMe.txt" + $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Extras.install.py $(srcdir)/../Demo \ "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo" + $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Extras.install.py $(srcdir)/Demo \ + "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo.Mac" -checkapplepython: - @if ! $(BUILDPYTHON) $(srcdir)/fixapplepython23.py -n; then \ +checkapplepython: $(srcdir)/Tools/fixapplepython23.py + @if ! $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Tools/fixapplepython23.py -n; then \ echo "* WARNING: Apple-installed Python 2.3 will have trouble building extensions from now on."; \ - echo "* WARNING: Run $(srcdir)/fixapplepython23.py with \"sudo\" to fix this."; \ + echo "* WARNING: Run $(srcdir)/Tools/fixapplepython23.py with \"sudo\" to fix this."; \ fi @@ -255,5 +249,3 @@ clean: rm pythonw cd PythonLauncher && make clean cd IDLE && make clean - - diff --git a/Mac/OSX/BuildScript/README.txt b/Mac/OSX/BuildScript/README.txt deleted file mode 100644 index c556de8329d1..000000000000 --- a/Mac/OSX/BuildScript/README.txt +++ /dev/null @@ -1,35 +0,0 @@ -Building a MacPython distribution -================================= - -The ``build-install.py`` script creates MacPython distributions, including -sleepycat db4, sqlite3 and readline support. 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 other files in ``resources`` -and ``scripts`` and placed that on a ``.dmg`` disk image. - -Here are the steps you ned to follow to build a MacPython installer: - -- Run ``./build-installer.py``. Optionally you can pass a number of arguments - to specify locations of various files. Please see the top of - ``build-installer.py`` for its usage. -- When done the script will tell you where the DMG image is. - -The script needs to be run on Mac OS X 10.4 with Xcode 2.2 or later and -the 10.4u SDK. - -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 diff --git a/Mac/OSX/BuildScript/build-installer.py b/Mac/OSX/BuildScript/build-installer.py deleted file mode 100755 index b24f5dcee098..000000000000 --- a/Mac/OSX/BuildScript/build-installer.py +++ /dev/null @@ -1,1014 +0,0 @@ -#!/usr/bin/python2.3 -""" -This script is used to build the "official unofficial" universal build on -Mac OS X. It requires Mac OS X 10.4, Xcode 2.2 and the 10.4u SDK to do its -work. - -Please ensure that this script keeps working with Python 2.3, to avoid -bootstrap issues (/usr/bin/python is Python 2.3 on OSX 10.4) - -Usage: see USAGE variable in the script. -""" -import platform, os, sys, getopt, textwrap, shutil, urllib2, stat, time, pwd - -INCLUDE_TIMESTAMP=1 -VERBOSE=1 - -from plistlib import Plist - -import MacOS -import Carbon.File -import Carbon.Icn -import Carbon.Res -from Carbon.Files import kCustomIconResource, fsRdWrPerm, kHasCustomIcon -from Carbon.Files import kFSCatInfoFinderInfo - -try: - from plistlib import writePlist -except ImportError: - # We're run using python2.3 - def writePlist(plist, path): - plist.write(path) - -def shellQuote(value): - """ - Return the string value in a form that can savely be inserted into - a shell command. - """ - return "'%s'"%(value.replace("'", "'\"'\"'")) - -def grepValue(fn, variable): - variable = variable + '=' - for ln in open(fn, 'r'): - if ln.startswith(variable): - value = ln[len(variable):].strip() - return value[1:-1] - -def getVersion(): - return grepValue(os.path.join(SRCDIR, 'configure'), 'PACKAGE_VERSION') - -def getFullVersion(): - fn = os.path.join(SRCDIR, 'Include', 'patchlevel.h') - for ln in open(fn): - if 'PY_VERSION' in ln: - return ln.split()[-1][1:-1] - - raise RuntimeError, "Cannot find full version??" - -# The directory we'll use to create the build, will be erased and recreated -WORKDIR="/tmp/_py" - -# The directory we'll use to store third-party sources, set this to something -# else if you don't want to re-fetch required libraries every time. -DEPSRC=os.path.join(WORKDIR, 'third-party') -DEPSRC=os.path.expanduser('~/Universal/other-sources') - -# Location of the preferred SDK -SDKPATH="/Developer/SDKs/MacOSX10.4u.sdk" -#SDKPATH="/" - -# Source directory (asume we're in Mac/OSX/Dist) -SRCDIR=os.path.dirname( - os.path.dirname( - os.path.dirname( - os.path.dirname( - os.path.abspath(__file__ - ))))) - -USAGE=textwrap.dedent("""\ - Usage: build_python [options] - - Options: - -? or -h: Show this message - -b DIR - --build-dir=DIR: Create build here (default: %(WORKDIR)r) - --third-party=DIR: Store third-party sources here (default: %(DEPSRC)r) - --sdk-path=DIR: Location of the SDK (default: %(SDKPATH)r) - --src-dir=DIR: Location of the Python sources (default: %(SRCDIR)r) -""")% globals() - - -# Instructions for building libraries that are necessary for building a -# batteries included python. -LIBRARY_RECIPES=[ - dict( - # Note that GNU readline is GPL'd software - name="GNU Readline 5.1.4", - url="http://ftp.gnu.org/pub/gnu/readline/readline-5.1.tar.gz" , - patchlevel='0', - patches=[ - # The readline maintainers don't do actual micro releases, but - # just ship a set of patches. - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-001', - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-002', - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-003', - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-004', - ] - ), - - dict( - name="SQLite 3.3.5", - url="http://www.sqlite.org/sqlite-3.3.5.tar.gz", - checksum='93f742986e8bc2dfa34792e16df017a6feccf3a2', - configure_pre=[ - '--enable-threadsafe', - '--enable-tempstore', - '--enable-shared=no', - '--enable-static=yes', - '--disable-tcl', - ] - ), - - dict( - name="NCurses 5.5", - url="http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.5.tar.gz", - configure_pre=[ - "--without-cxx", - "--without-ada", - "--without-progs", - "--without-curses-h", - "--enable-shared", - "--with-shared", - "--datadir=/usr/share", - "--sysconfdir=/etc", - "--sharedstatedir=/usr/com", - "--with-terminfo-dirs=/usr/share/terminfo", - "--with-default-terminfo-dir=/usr/share/terminfo", - "--libdir=/Library/Frameworks/Python.framework/Versions/%s/lib"%(getVersion(),), - "--enable-termcap", - ], - patches=[ - "ncurses-5.5.patch", - ], - useLDFlags=False, - install='make && make install DESTDIR=%s && cd %s/usr/local/lib && ln -fs ../../../Library/Frameworks/Python.framework/Versions/%s/lib/lib* .'%( - shellQuote(os.path.join(WORKDIR, 'libraries')), - shellQuote(os.path.join(WORKDIR, 'libraries')), - getVersion(), - ), - ), - dict( - name="Sleepycat DB 4.4", - url="http://downloads.sleepycat.com/db-4.4.20.tar.gz", - #name="Sleepycat DB 4.3.29", - #url="http://downloads.sleepycat.com/db-4.3.29.tar.gz", - buildDir="build_unix", - configure="../dist/configure", - configure_pre=[ - '--includedir=/usr/local/include/db4', - ] - ), -] - - -# Instructions for building packages inside the .mpkg. -PKG_RECIPES=[ - dict( - name="PythonFramework", - long_name="Python Framework", - source="/Library/Frameworks/Python.framework", - readme="""\ - This package installs Python.framework, that is the python - interpreter and the standard library. This also includes Python - wrappers for lots of Mac OS X API's. - """, - postflight="scripts/postflight.framework", - ), - dict( - name="PythonApplications", - long_name="GUI Applications", - source="/Applications/MacPython %(VER)s", - readme="""\ - This package installs Python.framework, that is the python - interpreter and the standard library. This also includes Python - wrappers for lots of Mac OS X API's. - """, - required=False, - ), - dict( - name="PythonUnixTools", - long_name="UNIX command-line tools", - source="/usr/local/bin", - readme="""\ - This package installs the unix tools in /usr/local/bin for - compatibility with older releases of MacPython. This package - is not necessary to use MacPython. - """, - required=False, - ), - dict( - name="PythonDocumentation", - long_name="Python Documentation", - topdir="/Library/Frameworks/Python.framework/Versions/%(VER)s/Resources/English.lproj/Documentation", - source="/pydocs", - readme="""\ - This package installs the python documentation at a location - that is useable for pydoc and IDLE. If you have installed Xcode - it will also install a link to the documentation in - /Developer/Documentation/Python - """, - postflight="scripts/postflight.documentation", - required=False, - ), - dict( - name="PythonProfileChanges", - long_name="Shell profile updater", - readme="""\ - This packages updates your shell profile to make sure that - the MacPython tools are found by your shell in preference of - the system provided Python tools. - - If you don't install this package you'll have to add - "/Library/Frameworks/Python.framework/Versions/%(VER)s/bin" - to your PATH by hand. - """, - postflight="scripts/postflight.patch-profile", - topdir="/Library/Frameworks/Python.framework", - source="/empty-dir", - required=False, - ), -] - - -def fatal(msg): - """ - A fatal error, bail out. - """ - sys.stderr.write('FATAL: ') - sys.stderr.write(msg) - sys.stderr.write('\n') - sys.exit(1) - -def fileContents(fn): - """ - Return the contents of the named file - """ - return open(fn, 'rb').read() - -def runCommand(commandline): - """ - Run a command and raise RuntimeError if it fails. Output is surpressed - unless the command fails. - """ - fd = os.popen(commandline, 'r') - data = fd.read() - xit = fd.close() - if xit != None: - sys.stdout.write(data) - raise RuntimeError, "command failed: %s"%(commandline,) - - if VERBOSE: - sys.stdout.write(data); sys.stdout.flush() - -def captureCommand(commandline): - fd = os.popen(commandline, 'r') - data = fd.read() - xit = fd.close() - if xit != None: - sys.stdout.write(data) - raise RuntimeError, "command failed: %s"%(commandline,) - - return data - -def checkEnvironment(): - """ - Check that we're running on a supported system. - """ - - if platform.system() != 'Darwin': - fatal("This script should be run on a Mac OS X 10.4 system") - - if platform.release() <= '8.': - fatal("This script should be run on a Mac OS X 10.4 system") - - if not os.path.exists(SDKPATH): - fatal("Please install the latest version of Xcode and the %s SDK"%( - os.path.basename(SDKPATH[:-4]))) - - - -def parseOptions(args = None): - """ - Parse arguments and update global settings. - """ - global WORKDIR, DEPSRC, SDKPATH, SRCDIR - - if args is None: - args = sys.argv[1:] - - try: - options, args = getopt.getopt(args, '?hb', - [ 'build-dir=', 'third-party=', 'sdk-path=' , 'src-dir=']) - except getopt.error, msg: - print msg - sys.exit(1) - - if args: - print "Additional arguments" - sys.exit(1) - - for k, v in options: - if k in ('-h', '-?'): - print USAGE - sys.exit(0) - - elif k in ('-d', '--build-dir'): - WORKDIR=v - - elif k in ('--third-party',): - DEPSRC=v - - elif k in ('--sdk-path',): - SDKPATH=v - - elif k in ('--src-dir',): - SRCDIR=v - - else: - raise NotImplementedError, k - - SRCDIR=os.path.abspath(SRCDIR) - WORKDIR=os.path.abspath(WORKDIR) - SDKPATH=os.path.abspath(SDKPATH) - DEPSRC=os.path.abspath(DEPSRC) - - print "Settings:" - print " * Source directory:", SRCDIR - print " * Build directory: ", WORKDIR - print " * SDK location: ", SDKPATH - print " * third-party source:", DEPSRC - print "" - - - - -def extractArchive(builddir, archiveName): - """ - Extract a source archive into 'builddir'. Returns the path of the - extracted archive. - - XXX: This function assumes that archives contain a toplevel directory - that is has the same name as the basename of the archive. This is - save enough for anything we use. - """ - curdir = os.getcwd() - try: - os.chdir(builddir) - if archiveName.endswith('.tar.gz'): - retval = os.path.basename(archiveName[:-7]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("tar zxf %s 2>&1"%(shellQuote(archiveName),), 'r') - - elif archiveName.endswith('.tar.bz2'): - retval = os.path.basename(archiveName[:-8]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("tar jxf %s 2>&1"%(shellQuote(archiveName),), 'r') - - elif archiveName.endswith('.tar'): - retval = os.path.basename(archiveName[:-4]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("tar xf %s 2>&1"%(shellQuote(archiveName),), 'r') - - elif archiveName.endswith('.zip'): - retval = os.path.basename(archiveName[:-4]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("unzip %s 2>&1"%(shellQuote(archiveName),), 'r') - - data = fp.read() - xit = fp.close() - if xit is not None: - sys.stdout.write(data) - raise RuntimeError, "Cannot extract %s"%(archiveName,) - - return os.path.join(builddir, retval) - - finally: - os.chdir(curdir) - -KNOWNSIZES = { - "http://ftp.gnu.org/pub/gnu/readline/readline-5.1.tar.gz": 7952742, - "http://downloads.sleepycat.com/db-4.4.20.tar.gz": 2030276, -} - -def downloadURL(url, fname): - """ - Download the contents of the url into the file. - """ - try: - size = os.path.getsize(fname) - except OSError: - pass - else: - if KNOWNSIZES.get(url) == size: - print "Using existing file for", url - return - fpIn = urllib2.urlopen(url) - fpOut = open(fname, 'wb') - block = fpIn.read(10240) - try: - while block: - fpOut.write(block) - block = fpIn.read(10240) - fpIn.close() - fpOut.close() - except: - try: - os.unlink(fname) - except: - pass - -def buildRecipe(recipe, basedir, archList): - """ - Build software using a recipe. This function does the - 'configure;make;make install' dance for C software, with a possibility - to customize this process, basically a poor-mans DarwinPorts. - """ - curdir = os.getcwd() - - name = recipe['name'] - url = recipe['url'] - configure = recipe.get('configure', './configure') - install = recipe.get('install', 'make && make install DESTDIR=%s'%( - shellQuote(basedir))) - - archiveName = os.path.split(url)[-1] - sourceArchive = os.path.join(DEPSRC, archiveName) - - if not os.path.exists(DEPSRC): - os.mkdir(DEPSRC) - - - if os.path.exists(sourceArchive): - print "Using local copy of %s"%(name,) - - else: - print "Downloading %s"%(name,) - downloadURL(url, sourceArchive) - print "Archive for %s stored as %s"%(name, sourceArchive) - - print "Extracting archive for %s"%(name,) - buildDir=os.path.join(WORKDIR, '_bld') - if not os.path.exists(buildDir): - os.mkdir(buildDir) - - workDir = extractArchive(buildDir, sourceArchive) - os.chdir(workDir) - if 'buildDir' in recipe: - os.chdir(recipe['buildDir']) - - - for fn in recipe.get('patches', ()): - if fn.startswith('http://'): - # Download the patch before applying it. - path = os.path.join(DEPSRC, os.path.basename(fn)) - downloadURL(fn, path) - fn = path - - fn = os.path.join(curdir, fn) - runCommand('patch -p%s < %s'%(recipe.get('patchlevel', 1), - shellQuote(fn),)) - - configure_args = [ - "--prefix=/usr/local", - "--enable-static", - "--disable-shared", - #"CPP=gcc -arch %s -E"%(' -arch '.join(archList,),), - ] - - if 'configure_pre' in recipe: - args = list(recipe['configure_pre']) - if '--disable-static' in args: - configure_args.remove('--enable-static') - if '--enable-shared' in args: - configure_args.remove('--disable-shared') - configure_args.extend(args) - - if recipe.get('useLDFlags', 1): - configure_args.extend([ - "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%( - ' -arch '.join(archList), - shellQuote(SDKPATH)[1:-1], - shellQuote(basedir)[1:-1],), - "LDFLAGS=-syslibroot,%s -L%s/usr/local/lib -arch %s"%( - shellQuote(SDKPATH)[1:-1], - shellQuote(basedir)[1:-1], - ' -arch '.join(archList)), - ]) - else: - configure_args.extend([ - "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%( - ' -arch '.join(archList), - shellQuote(SDKPATH)[1:-1], - shellQuote(basedir)[1:-1],), - ]) - - if 'configure_post' in recipe: - configure_args = configure_args = list(recipe['configure_post']) - - configure_args.insert(0, configure) - configure_args = [ shellQuote(a) for a in configure_args ] - - print "Running configure for %s"%(name,) - runCommand(' '.join(configure_args) + ' 2>&1') - - print "Running install for %s"%(name,) - runCommand('{ ' + install + ' ;} 2>&1') - - print "Done %s"%(name,) - print "" - - os.chdir(curdir) - -def buildLibraries(): - """ - Build our dependencies into $WORKDIR/libraries/usr/local - """ - print "" - print "Building required libraries" - print "" - universal = os.path.join(WORKDIR, 'libraries') - os.mkdir(universal) - os.makedirs(os.path.join(universal, 'usr', 'local', 'lib')) - os.makedirs(os.path.join(universal, 'usr', 'local', 'include')) - - for recipe in LIBRARY_RECIPES: - buildRecipe(recipe, universal, ('i386', 'ppc',)) - - - -def buildPythonDocs(): - # This stores the documentation as Resources/English.lproj/Docuentation - # inside the framwork. pydoc and IDLE will pick it up there. - print "Install python documentation" - rootDir = os.path.join(WORKDIR, '_root') - version = getVersion() - docdir = os.path.join(rootDir, 'pydocs') - - name = 'html-%s.tar.bz2'%(getFullVersion(),) - sourceArchive = os.path.join(DEPSRC, name) - if os.path.exists(sourceArchive): - print "Using local copy of %s"%(name,) - - else: - print "Downloading %s"%(name,) - downloadURL('http://www.python.org/ftp/python/doc/%s/%s'%( - getFullVersion(), name), sourceArchive) - print "Archive for %s stored as %s"%(name, sourceArchive) - - extractArchive(os.path.dirname(docdir), sourceArchive) - os.rename( - os.path.join( - os.path.dirname(docdir), 'Python-Docs-%s'%(getFullVersion(),)), - docdir) - - -def buildPython(): - print "Building a universal python" - - buildDir = os.path.join(WORKDIR, '_bld', 'python') - rootDir = os.path.join(WORKDIR, '_root') - - if os.path.exists(buildDir): - shutil.rmtree(buildDir) - if os.path.exists(rootDir): - shutil.rmtree(rootDir) - os.mkdir(buildDir) - os.mkdir(rootDir) - os.mkdir(os.path.join(rootDir, 'empty-dir')) - curdir = os.getcwd() - os.chdir(buildDir) - - # Not sure if this is still needed, the original build script - # claims that parts of the install assume python.exe exists. - os.symlink('python', os.path.join(buildDir, 'python.exe')) - - # Extract the version from the configure file, needed to calculate - # several paths. - 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"%( - shellQuote(os.path.join(SRCDIR, 'configure')), - shellQuote(SDKPATH), shellQuote(WORKDIR)[1:-1], - shellQuote(WORKDIR)[1:-1])) - - print "Running make" - runCommand("make") - - print "Runing make frameworkinstall" - runCommand("make frameworkinstall DESTDIR=%s"%( - shellQuote(rootDir))) - - print "Runing make frameworkinstallextras" - runCommand("make frameworkinstallextras DESTDIR=%s"%( - shellQuote(rootDir))) - - print "Copy required shared libraries" - if os.path.exists(os.path.join(WORKDIR, 'libraries', 'Library')): - runCommand("mv %s/* %s"%( - shellQuote(os.path.join( - WORKDIR, 'libraries', 'Library', 'Frameworks', - 'Python.framework', 'Versions', getVersion(), - 'lib')), - shellQuote(os.path.join(WORKDIR, '_root', 'Library', 'Frameworks', - 'Python.framework', 'Versions', getVersion(), - 'lib')))) - - print "Fix file modes" - frmDir = os.path.join(rootDir, 'Library', 'Frameworks', 'Python.framework') - for dirpath, dirnames, filenames in os.walk(frmDir): - for dn in dirnames: - os.chmod(os.path.join(dirpath, dn), 0775) - - for fn in filenames: - if os.path.islink(fn): - continue - - # "chmod g+w $fn" - p = os.path.join(dirpath, fn) - st = os.stat(p) - os.chmod(p, stat.S_IMODE(st.st_mode) | stat.S_IXGRP) - - # We added some directories to the search path during the configure - # phase. Remove those because those directories won't be there on - # the end-users system. - path =os.path.join(rootDir, 'Library', 'Frameworks', 'Python.framework', - 'Versions', version, 'lib', 'python%s'%(version,), - 'config', 'Makefile') - fp = open(path, 'r') - data = fp.read() - fp.close() - - data = data.replace('-L%s/libraries/usr/local/lib'%(WORKDIR,), '') - data = data.replace('-I%s/libraries/usr/local/include'%(WORKDIR,), '') - fp = open(path, 'w') - fp.write(data) - fp.close() - - # Add symlinks in /usr/local/bin, using relative links - usr_local_bin = os.path.join(rootDir, 'usr', 'local', 'bin') - to_framework = os.path.join('..', '..', '..', 'Library', 'Frameworks', - 'Python.framework', 'Versions', version, 'bin') - if os.path.exists(usr_local_bin): - shutil.rmtree(usr_local_bin) - os.makedirs(usr_local_bin) - for fn in os.listdir( - os.path.join(frmDir, 'Versions', version, 'bin')): - os.symlink(os.path.join(to_framework, fn), - os.path.join(usr_local_bin, fn)) - - os.chdir(curdir) - - - -def patchFile(inPath, outPath): - data = fileContents(inPath) - data = data.replace('$FULL_VERSION', getFullVersion()) - data = data.replace('$VERSION', getVersion()) - data = data.replace('$MACOSX_DEPLOYMENT_TARGET', '10.3 or later') - data = data.replace('$ARCHITECTURES', "i386, ppc") - data = data.replace('$INSTALL_SIZE', installSize()) - fp = open(outPath, 'wb') - fp.write(data) - fp.close() - -def patchScript(inPath, outPath): - data = fileContents(inPath) - data = data.replace('@PYVER@', getVersion()) - fp = open(outPath, 'wb') - fp.write(data) - fp.close() - os.chmod(outPath, 0755) - - - -def packageFromRecipe(targetDir, recipe): - curdir = os.getcwd() - try: - pkgname = recipe['name'] - srcdir = recipe.get('source') - pkgroot = recipe.get('topdir', srcdir) - postflight = recipe.get('postflight') - readme = textwrap.dedent(recipe['readme']) - isRequired = recipe.get('required', True) - - print "- building package %s"%(pkgname,) - - # Substitute some variables - textvars = dict( - VER=getVersion(), - FULLVER=getFullVersion(), - ) - readme = readme % textvars - - if pkgroot is not None: - pkgroot = pkgroot % textvars - else: - pkgroot = '/' - - if srcdir is not None: - srcdir = os.path.join(WORKDIR, '_root', srcdir[1:]) - srcdir = srcdir % textvars - - if postflight is not None: - postflight = os.path.abspath(postflight) - - packageContents = os.path.join(targetDir, pkgname + '.pkg', 'Contents') - os.makedirs(packageContents) - - if srcdir is not None: - os.chdir(srcdir) - runCommand("pax -wf %s . 2>&1"%(shellQuote(os.path.join(packageContents, 'Archive.pax')),)) - runCommand("gzip -9 %s 2>&1"%(shellQuote(os.path.join(packageContents, 'Archive.pax')),)) - runCommand("mkbom . %s 2>&1"%(shellQuote(os.path.join(packageContents, 'Archive.bom')),)) - - fn = os.path.join(packageContents, 'PkgInfo') - fp = open(fn, 'w') - fp.write('pmkrpkg1') - fp.close() - - rsrcDir = os.path.join(packageContents, "Resources") - os.mkdir(rsrcDir) - fp = open(os.path.join(rsrcDir, 'ReadMe.txt'), 'w') - fp.write(readme) - fp.close() - - if postflight is not None: - patchScript(postflight, os.path.join(rsrcDir, 'postflight')) - - vers = getFullVersion() - major, minor = map(int, getVersion().split('.', 2)) - pl = Plist( - CFBundleGetInfoString="MacPython.%s %s"%(pkgname, vers,), - CFBundleIdentifier='org.python.MacPython.%s'%(pkgname,), - CFBundleName='MacPython.%s'%(pkgname,), - CFBundleShortVersionString=vers, - IFMajorVersion=major, - IFMinorVersion=minor, - IFPkgFormatVersion=0.10000000149011612, - IFPkgFlagAllowBackRev=False, - IFPkgFlagAuthorizationAction="RootAuthorization", - IFPkgFlagDefaultLocation=pkgroot, - IFPkgFlagFollowLinks=True, - IFPkgFlagInstallFat=True, - IFPkgFlagIsRequired=isRequired, - IFPkgFlagOverwritePermissions=False, - IFPkgFlagRelocatable=False, - IFPkgFlagRestartAction="NoRestart", - IFPkgFlagRootVolumeOnly=True, - IFPkgFlagUpdateInstalledLangauges=False, - ) - writePlist(pl, os.path.join(packageContents, 'Info.plist')) - - pl = Plist( - IFPkgDescriptionDescription=readme, - IFPkgDescriptionTitle=recipe.get('long_name', "MacPython.%s"%(pkgname,)), - IFPkgDescriptionVersion=vers, - ) - writePlist(pl, os.path.join(packageContents, 'Resources', 'Description.plist')) - - finally: - os.chdir(curdir) - - -def makeMpkgPlist(path): - - vers = getFullVersion() - major, minor = map(int, getVersion().split('.', 2)) - - pl = Plist( - CFBundleGetInfoString="MacPython %s"%(vers,), - CFBundleIdentifier='org.python.MacPython', - CFBundleName='MacPython', - CFBundleShortVersionString=vers, - IFMajorVersion=major, - IFMinorVersion=minor, - IFPkgFlagComponentDirectory="Contents/Packages", - IFPkgFlagPackageList=[ - dict( - IFPkgFlagPackageLocation='%s.pkg'%(item['name']), - IFPkgFlagPackageSelection='selected' - ) - for item in PKG_RECIPES - ], - IFPkgFormatVersion=0.10000000149011612, - IFPkgFlagBackgroundScaling="proportional", - IFPkgFlagBackgroundAlignment="left", - ) - - writePlist(pl, path) - - -def buildInstaller(): - - # Zap all compiled files - for dirpath, _, filenames in os.walk(os.path.join(WORKDIR, '_root')): - for fn in filenames: - if fn.endswith('.pyc') or fn.endswith('.pyo'): - os.unlink(os.path.join(dirpath, fn)) - - outdir = os.path.join(WORKDIR, 'installer') - if os.path.exists(outdir): - shutil.rmtree(outdir) - os.mkdir(outdir) - - pkgroot = os.path.join(outdir, 'MacPython.mpkg', 'Contents') - pkgcontents = os.path.join(pkgroot, 'Packages') - os.makedirs(pkgcontents) - for recipe in PKG_RECIPES: - packageFromRecipe(pkgcontents, recipe) - - rsrcDir = os.path.join(pkgroot, 'Resources') - - fn = os.path.join(pkgroot, 'PkgInfo') - fp = open(fn, 'w') - fp.write('pmkrpkg1') - fp.close() - - os.mkdir(rsrcDir) - - makeMpkgPlist(os.path.join(pkgroot, 'Info.plist')) - pl = Plist( - IFPkgDescriptionTitle="Universal MacPython", - IFPkgDescriptionVersion=getVersion(), - ) - - 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: - patchFile(os.path.join('resources', fn), os.path.join(rsrcDir, fn)) - - shutil.copy("../../../LICENSE", os.path.join(rsrcDir, 'License.txt')) - - -def installSize(clear=False, _saved=[]): - if clear: - del _saved[:] - if not _saved: - data = captureCommand("du -ks %s"%( - shellQuote(os.path.join(WORKDIR, '_root')))) - _saved.append("%d"%((0.5 + (int(data.split()[0]) / 1024.0)),)) - return _saved[0] - - -def buildDMG(): - """ - Create DMG containing the rootDir - """ - outdir = os.path.join(WORKDIR, 'diskimage') - if os.path.exists(outdir): - shutil.rmtree(outdir) - - imagepath = os.path.join(outdir, - 'python-%s-macosx'%(getFullVersion(),)) - if INCLUDE_TIMESTAMP: - imagepath = imagepath + '%04d-%02d-%02d'%(time.localtime()[:3]) - imagepath = imagepath + '.dmg' - - os.mkdir(outdir) - runCommand("hdiutil create -volname 'Univeral MacPython %s' -srcfolder %s %s"%( - getFullVersion(), - shellQuote(os.path.join(WORKDIR, 'installer')), - shellQuote(imagepath))) - - return imagepath - - -def setIcon(filePath, icnsPath): - """ - Set the custom icon for the specified file or directory. - - For a directory the icon data is written in a file named 'Icon\r' inside - the directory. For both files and directories write the icon as an 'icns' - resource. Furthermore set kHasCustomIcon in the finder flags for filePath. - """ - ref, isDirectory = Carbon.File.FSPathMakeRef(icnsPath) - icon = Carbon.Icn.ReadIconFile(ref) - del ref - - # - # Open the resource fork of the target, to add the icon later on. - # For directories we use the file 'Icon\r' inside the directory. - # - - ref, isDirectory = Carbon.File.FSPathMakeRef(filePath) - - if isDirectory: - tmpPath = os.path.join(filePath, "Icon\r") - if not os.path.exists(tmpPath): - fp = open(tmpPath, 'w') - fp.close() - - tmpRef, _ = Carbon.File.FSPathMakeRef(tmpPath) - spec = Carbon.File.FSSpec(tmpRef) - - else: - spec = Carbon.File.FSSpec(ref) - - try: - Carbon.Res.HCreateResFile(*spec.as_tuple()) - except MacOS.Error: - pass - - # Try to create the resource fork again, this will avoid problems - # when adding an icon to a directory. I have no idea why this helps, - # but without this adding the icon to a directory will fail sometimes. - try: - Carbon.Res.HCreateResFile(*spec.as_tuple()) - except MacOS.Error: - pass - - refNum = Carbon.Res.FSpOpenResFile(spec, fsRdWrPerm) - - Carbon.Res.UseResFile(refNum) - - # Check if there already is an icon, remove it if there is. - try: - h = Carbon.Res.Get1Resource('icns', kCustomIconResource) - except MacOS.Error: - pass - - else: - h.RemoveResource() - del h - - # Add the icon to the resource for of the target - res = Carbon.Res.Resource(icon) - res.AddResource('icns', kCustomIconResource, '') - res.WriteResource() - res.DetachResource() - Carbon.Res.CloseResFile(refNum) - - # And now set the kHasCustomIcon property for the target. Annoyingly, - # python doesn't seem to have bindings for the API that is needed for - # this. Cop out and call SetFile - os.system("/Developer/Tools/SetFile -a C %s"%( - shellQuote(filePath),)) - - if isDirectory: - os.system('/Developer/Tools/SetFile -a V %s'%( - shellQuote(tmpPath), - )) - -def main(): - # First parse options and check if we can perform our work - parseOptions() - checkEnvironment() - - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' - - if os.path.exists(WORKDIR): - shutil.rmtree(WORKDIR) - os.mkdir(WORKDIR) - - # Then build third-party libraries such as sleepycat DB4. - buildLibraries() - - # Now build python itself - buildPython() - buildPythonDocs() - fn = os.path.join(WORKDIR, "_root", "Applications", - "MacPython %s"%(getVersion(),), "Update Shell Profile.command") - shutil.copy("scripts/postflight.patch-profile", fn) - os.chmod(fn, 0755) - - folder = os.path.join(WORKDIR, "_root", "Applications", "MacPython %s"%( - getVersion(),)) - os.chmod(folder, 0755) - setIcon(folder, "../Icons/Python Folder.icns") - - # Create the installer - buildInstaller() - - # And copy the readme into the directory containing the installer - patchFile('resources/ReadMe.txt', os.path.join(WORKDIR, 'installer', 'ReadMe.txt')) - - # Ditto for the license file. - shutil.copy('../../../LICENSE', os.path.join(WORKDIR, 'installer', 'License.txt')) - - fp = open(os.path.join(WORKDIR, 'installer', 'Build.txt'), 'w') - print >> fp, "# BUILD INFO" - print >> fp, "# Date:", time.ctime() - print >> fp, "# By:", pwd.getpwuid(os.getuid()).pw_gecos - fp.close() - - # Custom icon for the DMG, shown when the DMG is mounted. - shutil.copy("../Icons/Disk Image.icns", - os.path.join(WORKDIR, "installer", ".VolumeIcon.icns")) - os.system("/Developer/Tools/SetFile -a C %s"%( - os.path.join(WORKDIR, "installer", ".VolumeIcon.icns"))) - - - # And copy it to a DMG - buildDMG() - - -if __name__ == "__main__": - main() diff --git a/Mac/OSX/BuildScript/ncurses-5.5.patch b/Mac/OSX/BuildScript/ncurses-5.5.patch deleted file mode 100644 index 0eab3d366687..000000000000 --- a/Mac/OSX/BuildScript/ncurses-5.5.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -r -u ncurses-5.5-orig/test/Makefile.in ncurses-5.5/test/Makefile.in ---- ncurses-5.5-orig/test/Makefile.in 2006-03-24 12:47:40.000000000 +0100 -+++ ncurses-5.5/test/Makefile.in 2006-03-24 12:47:50.000000000 +0100 -@@ -75,7 +75,7 @@ - MATH_LIB = @MATH_LIB@ - - LD = @LD@ --LINK = @LINK_TESTS@ $(LIBTOOL_LINK) $(CC) $(CFLAGS) -+LINK = @LINK_TESTS@ $(LIBTOOL_LINK) $(CC) - - usFLAGS = @LD_MODEL@ @LOCAL_LDFLAGS@ @LDFLAGS@ - -diff -ru ncurses-5.5-orig/ncurses/tinfo/read_entry.c ncurses-5.5/ncurses/tinfo/read_entry.c ---- ncurses-5.5-orig/ncurses/tinfo/read_entry.c 2004-01-11 02:57:05.000000000 +0100 -+++ ncurses-5.5/ncurses/tinfo/read_entry.c 2006-03-25 22:49:39.000000000 +0100 -@@ -474,7 +474,7 @@ - } - - /* truncate the terminal name to prevent buffer overflow */ -- (void) sprintf(ttn, "%c/%.*s", *tn, (int) sizeof(ttn) - 3, tn); -+ (void) sprintf(ttn, "%x/%.*s", *tn, (int) sizeof(ttn) - 3, tn); - - /* This is System V behavior, in conjunction with our requirements for - * writing terminfo entries. -diff -ru ncurses-5.5-orig/configure ncurses-5.5/configure ---- ncurses-5.5-orig/configure 2005-09-24 23:50:50.000000000 +0200 -+++ ncurses-5.5/configure 2006-03-26 22:24:59.000000000 +0200 -@@ -5027,7 +5027,7 @@ - darwin*) - EXTRA_CFLAGS="-no-cpp-precomp" - CC_SHARED_OPTS="-dynamic" -- MK_SHARED_LIB='$(CC) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $@` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $@' -+ MK_SHARED_LIB='$(CC) $(CFLAGS) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $@` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $@' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi - cf_cv_shlib_version_infix=yes - ;; diff --git a/Mac/OSX/BuildScript/resources/ReadMe.txt b/Mac/OSX/BuildScript/resources/ReadMe.txt deleted file mode 100644 index 1a6e63764ff9..000000000000 --- a/Mac/OSX/BuildScript/resources/ReadMe.txt +++ /dev/null @@ -1,31 +0,0 @@ -This package will install MacPython $FULL_VERSION for Mac OS X -$MACOSX_DEPLOYMENT_TARGET for the following -architecture(s): $ARCHITECTURES. - -Separate installers are available for older versions -of Mac OS X, see the homepage, below. - -Installation requires approximately $INSTALL_SIZE 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, an applet builder), 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 $VERSION" -in your Applications folder, command-line tools in -/usr/local/bin and the underlying machinery in -$PYTHONFRAMEWORKINSTALLDIR. - -More information on MacPython can be found at -http://www.cwi.nl/~jack/macpython and -http://pythonmac.org/. More information on -Python in general can be found at -http://www.python.org. diff --git a/Mac/OSX/BuildScript/resources/Welcome.rtf b/Mac/OSX/BuildScript/resources/Welcome.rtf deleted file mode 100644 index cb65f0940971..000000000000 --- a/Mac/OSX/BuildScript/resources/Welcome.rtf +++ /dev/null @@ -1,15 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf330 -{\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 $FULL_VERSION -\f0\b0 for -\f1\b Mac OS X $MACOSX_DEPLOYMENT_TARGET -\f0\b0 .\ -\ -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, an applet builder), 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/BuildScript/resources/background.jpg b/Mac/OSX/BuildScript/resources/background.jpg deleted file mode 100644 index b3c76406cf4a264410e12d5af1c11380164f1e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 45421 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�nmK4 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 "${HOME}/.cshrc" - echo "# Setting PATH for MacPython ${PYVER}" >> "${HOME}/.cshrc" - echo "# The orginal version is saved in .cshrc.pysave" >> "${HOME}/.cshrc" - echo "set path=(${PYTHON_ROOT}/bin "'$path'")" >> "${HOME}/.cshrc" - exit 0 - ;; -bash) - if [ -e "${HOME}/.profile" ]; then - PR="${HOME}/.profile" - else - PR="${HOME}/.bash_profile" - fi - ;; -*sh) - PR="${HOME}/.profile" - ;; -esac - -# Create backup copy before patching -if [ -f "${PR}" ]; then - cp -fp "${PR}" "${PR}.pysave" -fi -echo "" >> "${PR}" -echo "# Setting PATH for MacPython ${PYVER}" >> "${PR}" -echo "# The orginal version is saved in `basename ${PR}`.pysave" >> "${PR}" -echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}" -echo 'export PATH' >> "${PR}" -if [ `id -ur` = 0 ]; then - chown "${LOGNAME}" "${PR}" -fi -exit 0 diff --git a/Mac/OSX/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py b/Mac/OSX/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py deleted file mode 100644 index 58d73076dfbd..000000000000 --- a/Mac/OSX/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py +++ /dev/null @@ -1,110 +0,0 @@ -"""Suite Help Indexing Tool Suite: Special events that just the Help Indexing Tool supports. -Level 0, version 0 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'HIT ' - -class Help_Indexing_Tool_Suite_Events: - - def turn_anchor_indexing(self, _object, _attributes={}, **_arguments): - """turn anchor indexing: Turns anchor indexing on or off. - Required argument: \xd2on\xd3 or \xd2off\xd3, to turn anchor indexing on or off - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'HIT ' - _subcode = 'tAnc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_turn_remote_root = { - 'with_root_url' : 'rURL', - } - - def turn_remote_root(self, _object, _attributes={}, **_arguments): - """turn remote root: Turn usage of remote root for content on the web on or off. If turning \xd2on\xd3, supply a string as second parameter. - Required argument: \xd2on\xd3 or \xd2off\xd3, to turn remote root on or off - Keyword argument with_root_url: The remote root to use, in the form of \xd2http://www.apple.com/help/\xd3. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'HIT ' - _subcode = 'tRem' - - aetools.keysubst(_arguments, self._argmap_turn_remote_root) - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def use_tokenizer(self, _object, _attributes={}, **_arguments): - """use tokenizer: Tells the indexing tool which tokenizer to use. - Required argument: Specify \xd2English\xd3, \xd2European\xd3, \xd2Japanese\xd3, \xd2Korean\xd3, or \xd2Simple\xd3. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'HIT ' - _subcode = 'uTok' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -class application(aetools.ComponentItem): - """application - Application class """ - want = 'capp' -class _Prop_idleStatus(aetools.NProperty): - """idleStatus - """ - which = 'sIdl' - want = 'bool' -application._superclassnames = [] -application._privpropdict = { - 'idleStatus' : _Prop_idleStatus, -} -application._privelemdict = { -} - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'capp' : application, -} - -_propdeclarations = { - 'sIdl' : _Prop_idleStatus, -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/Mac/OSX/Doc/HelpIndexingTool/Miscellaneous_Standards.py b/Mac/OSX/Doc/HelpIndexingTool/Miscellaneous_Standards.py deleted file mode 100644 index 3cf745f9860e..000000000000 --- a/Mac/OSX/Doc/HelpIndexingTool/Miscellaneous_Standards.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Suite Miscellaneous Standards: Useful events that aren\xd5t in any other suite -Level 0, version 0 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'misc' - -class Miscellaneous_Standards_Events: - - def revert(self, _object, _attributes={}, **_arguments): - """revert: Revert an object to the most recently saved version - Required argument: object to revert - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'misc' - _subcode = 'rvrt' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -# -# Indices of types declared in this module -# -_classdeclarations = { -} - -_propdeclarations = { -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/Mac/OSX/Doc/HelpIndexingTool/Required_Suite.py b/Mac/OSX/Doc/HelpIndexingTool/Required_Suite.py deleted file mode 100644 index eb9fee00172f..000000000000 --- a/Mac/OSX/Doc/HelpIndexingTool/Required_Suite.py +++ /dev/null @@ -1,32 +0,0 @@ -"""Suite Required Suite: Terms that every application should support -Level 1, version 1 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'reqd' - -from StdSuites.Required_Suite import * -class Required_Suite_Events(Required_Suite_Events): - - pass - - -# -# Indices of types declared in this module -# -_classdeclarations = { -} - -_propdeclarations = { -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/Mac/OSX/Doc/HelpIndexingTool/Standard_Suite.py b/Mac/OSX/Doc/HelpIndexingTool/Standard_Suite.py deleted file mode 100644 index 4f6604cfebec..000000000000 --- a/Mac/OSX/Doc/HelpIndexingTool/Standard_Suite.py +++ /dev/null @@ -1,343 +0,0 @@ -"""Suite Standard Suite: Common terms for most applications -Level 1, version 1 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'CoRe' - -from StdSuites.Standard_Suite import * -class Standard_Suite_Events(Standard_Suite_Events): - - _argmap_close = { - 'saving' : 'savo', - 'in_' : 'kfil', - } - - def close(self, _object, _attributes={}, **_arguments): - """close: Close an object - Required argument: the objects to close - Keyword argument saving: specifies whether or not changes should be saved before closing - Keyword argument in_: the file in which to save the object - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'core' - _subcode = 'clos' - - aetools.keysubst(_arguments, self._argmap_close) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'savo', _Enum_savo) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def data_size(self, _object, _attributes={}, **_arguments): - """data size: Return the size in bytes of an object - Required argument: the object whose data size is to be returned - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: the size of the object in bytes - """ - _code = 'core' - _subcode = 'dsiz' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def get(self, _object, _attributes={}, **_arguments): - """get: Get the data for an object - Required argument: the object whose data is to be returned - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: The data from the object - """ - _code = 'core' - _subcode = 'getd' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_make = { - 'new' : 'kocl', - 'at' : 'insh', - 'with_data' : 'data', - 'with_properties' : 'prdt', - } - - def make(self, _no_object=None, _attributes={}, **_arguments): - """make: Make a new element - Keyword argument new: the class of the new element - Keyword argument at: the location at which to insert the element - Keyword argument with_data: the initial data for the element - Keyword argument with_properties: the initial values for the properties of the element - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: Object specifier for the new element - """ - _code = 'core' - _subcode = 'crel' - - aetools.keysubst(_arguments, self._argmap_make) - if _no_object != None: raise TypeError, 'No direct arg expected' - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def open(self, _object, _attributes={}, **_arguments): - """open: Open the specified object(s) - Required argument: Objects to open. Can be a list of files or an object specifier. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'aevt' - _subcode = 'odoc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def print_(self, _object, _attributes={}, **_arguments): - """print: Print the specified object(s) - Required argument: Objects to print. Can be a list of files or an object specifier. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'aevt' - _subcode = 'pdoc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_save = { - 'in_' : 'kfil', - 'as' : 'fltp', - } - - def save(self, _object, _attributes={}, **_arguments): - """save: save a set of objects - Required argument: Objects to save. - Keyword argument in_: the file in which to save the object(s) - Keyword argument as: the file type of the document in which to save the data - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'core' - _subcode = 'save' - - aetools.keysubst(_arguments, self._argmap_save) - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_set = { - 'to' : 'data', - } - - def set(self, _object, _attributes={}, **_arguments): - """set: Set an object\xd5s data - Required argument: the object to change - Keyword argument to: the new value - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'core' - _subcode = 'setd' - - aetools.keysubst(_arguments, self._argmap_set) - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -class application(aetools.ComponentItem): - """application - An application program """ - want = 'capp' -# element 'cwin' as ['indx', 'name', 'rele'] -# element 'docu' as ['name'] - -class window(aetools.ComponentItem): - """window - A Window """ - want = 'cwin' -class _Prop_bounds(aetools.NProperty): - """bounds - the boundary rectangle for the window """ - which = 'pbnd' - want = 'qdrt' -class _Prop_closeable(aetools.NProperty): - """closeable - Does the window have a close box? """ - which = 'hclb' - want = 'bool' -class _Prop_floating(aetools.NProperty): - """floating - Does the window float? """ - which = 'isfl' - want = 'bool' -class _Prop_index(aetools.NProperty): - """index - the number of the window """ - which = 'pidx' - want = 'long' -class _Prop_modal(aetools.NProperty): - """modal - Is the window modal? """ - which = 'pmod' - want = 'bool' -class _Prop_name(aetools.NProperty): - """name - the title of the window """ - which = 'pnam' - want = 'itxt' -class _Prop_position(aetools.NProperty): - """position - upper left coordinates of window """ - which = 'ppos' - want = 'QDpt' -class _Prop_resizable(aetools.NProperty): - """resizable - Is the window resizable? """ - which = 'prsz' - want = 'bool' -class _Prop_titled(aetools.NProperty): - """titled - Does the window have a title bar? """ - which = 'ptit' - want = 'bool' -class _Prop_visible(aetools.NProperty): - """visible - is the window visible? """ - which = 'pvis' - want = 'bool' -class _Prop_zoomable(aetools.NProperty): - """zoomable - Is the window zoomable? """ - which = 'iszm' - want = 'bool' -class _Prop_zoomed(aetools.NProperty): - """zoomed - Is the window zoomed? """ - which = 'pzum' - want = 'bool' - -class document(aetools.ComponentItem): - """document - A Document """ - want = 'docu' -class _Prop_modified(aetools.NProperty): - """modified - Has the document been modified since the last save? """ - which = 'imod' - want = 'bool' -application._superclassnames = [] -application._privpropdict = { -} -application._privelemdict = { - 'document' : document, - 'window' : window, -} -window._superclassnames = [] -window._privpropdict = { - 'bounds' : _Prop_bounds, - 'closeable' : _Prop_closeable, - 'floating' : _Prop_floating, - 'index' : _Prop_index, - 'modal' : _Prop_modal, - 'name' : _Prop_name, - 'position' : _Prop_position, - 'resizable' : _Prop_resizable, - 'titled' : _Prop_titled, - 'visible' : _Prop_visible, - 'zoomable' : _Prop_zoomable, - 'zoomed' : _Prop_zoomed, -} -window._privelemdict = { -} -document._superclassnames = [] -document._privpropdict = { - 'modified' : _Prop_modified, - 'name' : _Prop_name, -} -document._privelemdict = { -} -_Enum_savo = { - 'yes' : 'yes ', # Save objects now - 'no' : 'no ', # Do not save objects - 'ask' : 'ask ', # Ask the user whether to save -} - - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'capp' : application, - 'cwin' : window, - 'docu' : document, -} - -_propdeclarations = { - 'hclb' : _Prop_closeable, - 'imod' : _Prop_modified, - 'isfl' : _Prop_floating, - 'iszm' : _Prop_zoomable, - 'pbnd' : _Prop_bounds, - 'pidx' : _Prop_index, - 'pmod' : _Prop_modal, - 'pnam' : _Prop_name, - 'ppos' : _Prop_position, - 'prsz' : _Prop_resizable, - 'ptit' : _Prop_titled, - 'pvis' : _Prop_visible, - 'pzum' : _Prop_zoomed, -} - -_compdeclarations = { -} - -_enumdeclarations = { - 'savo' : _Enum_savo, -} diff --git a/Mac/OSX/Doc/HelpIndexingTool/__init__.py b/Mac/OSX/Doc/HelpIndexingTool/__init__.py deleted file mode 100644 index 5359df53c49f..000000000000 --- a/Mac/OSX/Doc/HelpIndexingTool/__init__.py +++ /dev/null @@ -1,78 +0,0 @@ -""" -Package generated from /Developer/Applications/Apple Help Indexing Tool.app -""" -import aetools -Error = aetools.Error -import Standard_Suite -import Help_Indexing_Tool_Suite -import odds_and_ends -import Miscellaneous_Standards -import Required_Suite - - -_code_to_module = { - 'CoRe' : Standard_Suite, - 'HIT ' : Help_Indexing_Tool_Suite, - 'Odds' : odds_and_ends, - 'misc' : Miscellaneous_Standards, - 'reqd' : Required_Suite, -} - - - -_code_to_fullname = { - 'CoRe' : ('HelpIndexingTool.Standard_Suite', 'Standard_Suite'), - 'HIT ' : ('HelpIndexingTool.Help_Indexing_Tool_Suite', 'Help_Indexing_Tool_Suite'), - 'Odds' : ('HelpIndexingTool.odds_and_ends', 'odds_and_ends'), - 'misc' : ('HelpIndexingTool.Miscellaneous_Standards', 'Miscellaneous_Standards'), - 'reqd' : ('HelpIndexingTool.Required_Suite', 'Required_Suite'), -} - -from Standard_Suite import * -from Help_Indexing_Tool_Suite import * -from odds_and_ends import * -from Miscellaneous_Standards import * -from Required_Suite import * - -def getbaseclasses(v): - if not getattr(v, '_propdict', None): - v._propdict = {} - v._elemdict = {} - for superclassname in getattr(v, '_superclassnames', []): - superclass = eval(superclassname) - getbaseclasses(superclass) - v._propdict.update(getattr(superclass, '_propdict', {})) - v._elemdict.update(getattr(superclass, '_elemdict', {})) - v._propdict.update(getattr(v, '_privpropdict', {})) - v._elemdict.update(getattr(v, '_privelemdict', {})) - -import StdSuites - -# -# Set property and element dictionaries now that all classes have been defined -# -getbaseclasses(window) -getbaseclasses(application) -getbaseclasses(document) -getbaseclasses(application) - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'cwin' : window, - 'capp' : application, - 'docu' : document, - 'capp' : application, -} - - -class HelpIndexingTool(Standard_Suite_Events, - Help_Indexing_Tool_Suite_Events, - odds_and_ends_Events, - Miscellaneous_Standards_Events, - Required_Suite_Events, - aetools.TalkTo): - _signature = 'hiti' - - _moduleName = 'HelpIndexingTool' diff --git a/Mac/OSX/Doc/HelpIndexingTool/odds_and_ends.py b/Mac/OSX/Doc/HelpIndexingTool/odds_and_ends.py deleted file mode 100644 index 7ee46f35cc29..000000000000 --- a/Mac/OSX/Doc/HelpIndexingTool/odds_and_ends.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Suite odds and ends: Things that should be in some standard suite, but aren\xd5t -Level 1, version 1 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'Odds' - -class odds_and_ends_Events: - - def select(self, _object=None, _attributes={}, **_arguments): - """select: Select the specified object - Required argument: the object to select - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'misc' - _subcode = 'slct' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -# -# Indices of types declared in this module -# -_classdeclarations = { -} - -_propdeclarations = { -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/Mac/OSX/Doc/README b/Mac/OSX/Doc/README deleted file mode 100644 index 4f4d53d01eab..000000000000 --- a/Mac/OSX/Doc/README +++ /dev/null @@ -1,35 +0,0 @@ -In this directory you can build the Python documentation in a form that -is suitable for access with Apple Help Viewer. This will enable the -"Python Documentation" menu entries in the MacPython IDE Help menu. - -Unfortunately the procedure to build the docs is not very streamlined. - -First, edit setup.py. At the top, edit MAJOR_VERSION and MINOR_VERSION, -and check that DESTDIR makes sense. The documentation will be installed -inside PythonIDE.app. - -In DocBuild.initialize_options, set self.download to True if you want to -download the docs. Set it to False if you want to build the docs from -the source tree, but this requires LaTex and lots of other stuff. -Doable, but not easy. - -Second, if you want to download the docs you may need to do a couple -more edits. The way the docs are packaged will often change between -major releases. Fiddle DocBuild.downloadDocs to make it do the right -thing (download the docs from python.org, unpack them, rename the -directory to "build/html"). - -After these edits you should be ready to roll. "pythonw setup.py build" -should download and unpack (or build) the docs. Next, it will do some -magic to make the docs indexable. Finally, it will run the Apple Help -Indexing Tool. (This last step is the reason you must use "pythonw" as -opposed to "python"). Usually it will time out while waiting for AHIT to -do its work. Wait until AHIT is done. - -Now you're ready to install with "python setup.py install". - -After this is done test your work. Fire up PythonIDE, and check that -Help->Python Documentation brings up the documentation in the Help Viewer. -Also open an IDE edit window, type something like "import sys", select -"import", and use Help->Lookup in Python Documentation to check that the -index has been generated correctly. diff --git a/Mac/OSX/Doc/setup.py b/Mac/OSX/Doc/setup.py deleted file mode 100644 index bd86a20a8386..000000000000 --- a/Mac/OSX/Doc/setup.py +++ /dev/null @@ -1,214 +0,0 @@ -# Build and install an Apple Help Viewer compatible version of the Python -# documentation into the framework. -# Code by Bill Fancher, with some modifications by Jack Jansen. -# -# You must run this as a two-step process -# 1. python setupDocs.py build -# 2. Wait for Apple Help Indexing Tool to finish -# 3. python setupDocs.py install -# -# To do: -# - test whether the docs are available locally before downloading -# - fix buildDocsFromSource -# - Get documentation version from sys.version, fallback to 2.2.1 -# - See if we can somehow detect that Apple Help Indexing Tool is finished -# - data_files to setup() doesn't seem the right way to pass the arguments -# -import sys, os, re -from distutils.cmd import Command -from distutils.command.build import build -from distutils.core import setup -from distutils.file_util import copy_file -from distutils.dir_util import copy_tree -from distutils.log import log -from distutils.spawn import spawn -from distutils import sysconfig, dep_util -from distutils.util import change_root -import HelpIndexingTool -import Carbon.File -import time - -MAJOR_VERSION='2.4' -MINOR_VERSION='2.4.1' -DESTDIR='/Applications/MacPython-%s/PythonIDE.app/Contents/Resources/English.lproj/PythonDocumentation' % MAJOR_VERSION - -class DocBuild(build): - def initialize_options(self): - build.initialize_options(self) - self.build_html = None - self.build_dest = None - self.download = 1 - self.doc_version = MINOR_VERSION # Only needed if download is true - - def finalize_options(self): - build.finalize_options(self) - if self.build_html is None: - self.build_html = os.path.join(self.build_base, 'html') - if self.build_dest is None: - self.build_dest = os.path.join(self.build_base, 'PythonDocumentation') - - def spawn(self, *args): - spawn(args, 1, self.verbose, self.dry_run) - - def downloadDocs(self): - workdir = os.getcwd() - # XXX Note: the next strings may change from version to version - url = 'http://www.python.org/ftp/python/doc/%s/html-%s.tar.bz2' % \ - (self.doc_version,self.doc_version) - tarfile = 'html-%s.tar.bz2' % self.doc_version - dirname = 'Python-Docs-%s' % self.doc_version - - if os.path.exists(self.build_html): - raise RuntimeError, '%s: already exists, please remove and try again' % self.build_html - os.chdir(self.build_base) - self.spawn('curl','-O', url) - self.spawn('tar', '-xjf', tarfile) - os.rename(dirname, 'html') - os.chdir(workdir) -## print "** Please unpack %s" % os.path.join(self.build_base, tarfile) -## print "** Unpack the files into %s" % self.build_html -## raise RuntimeError, "You need to unpack the docs manually" - - def buildDocsFromSource(self): - srcdir = '../../..' - docdir = os.path.join(srcdir, 'Doc') - htmldir = os.path.join(docdir, 'html') - spawn(('make','--directory', docdir, 'html'), 1, self.verbose, self.dry_run) - self.mkpath(self.build_html) - copy_tree(htmldir, self.build_html) - - def ensureHtml(self): - if not os.path.exists(self.build_html): - if self.download: - self.downloadDocs() - else: - self.buildDocsFromSource() - - def hackIndex(self): - ind_html = 'index.html' - #print 'self.build_dest =', self.build_dest - hackedIndex = file(os.path.join(self.build_dest, ind_html),'w') - origIndex = file(os.path.join(self.build_html,ind_html)) - r = re.compile('', re.DOTALL) - hackedIndex.write(r.sub('',origIndex.read())) - - def hackFile(self,d,f): - origPath = os.path.join(d,f) - assert(origPath[:len(self.build_html)] == self.build_html) - outPath = os.path.join(self.build_dest, d[len(self.build_html)+1:], f) - (name, ext) = os.path.splitext(f) - if os.path.isdir(origPath): - self.mkpath(outPath) - elif ext == '.html': - if self.verbose: print 'hacking %s to %s' % (origPath,outPath) - hackedFile = file(outPath, 'w') - origFile = file(origPath,'r') - hackedFile.write(self.r.sub('
', origFile.read())) - else: - copy_file(origPath, outPath) - - def hackHtml(self): - self.r = re.compile('
') - os.path.walk(self.build_html, self.visit, None) - - def visit(self, dummy, dirname, filenames): - for f in filenames: - self.hackFile(dirname, f) - - def makeHelpIndex(self): - app = '/Developer/Applications/Apple Help Indexing Tool.app' - self.spawn('open', '-a', app , self.build_dest) - print "Please wait until Apple Help Indexing Tool finishes before installing" - - def makeHelpIndex(self): - app = HelpIndexingTool.HelpIndexingTool(start=1) - app.open(Carbon.File.FSSpec(self.build_dest)) - sys.stderr.write("Waiting for Help Indexing Tool to start...") - while 1: - # This is bad design in the suite generation code! - idle = app._get(HelpIndexingTool.Help_Indexing_Tool_Suite._Prop_idleStatus()) - time.sleep(10) - if not idle: break - sys.stderr.write(".") - sys.stderr.write("\n") - sys.stderr.write("Waiting for Help Indexing Tool to finish...") - while 1: - # This is bad design in the suite generation code! - idle = app._get(HelpIndexingTool.Help_Indexing_Tool_Suite._Prop_idleStatus()) - time.sleep(10) - if idle: break - sys.stderr.write(".") - sys.stderr.write("\n") - - - def run(self): - self.ensure_finalized() - self.mkpath(self.build_base) - self.ensureHtml() - if not os.path.isdir(self.build_html): - raise RuntimeError, \ - "Can't find source folder for documentation." - self.mkpath(self.build_dest) - if dep_util.newer(os.path.join(self.build_html,'index.html'), os.path.join(self.build_dest,'index.html')): - self.mkpath(self.build_dest) - self.hackHtml() - self.hackIndex() - self.makeHelpIndex() - -class AHVDocInstall(Command): - description = "install Apple Help Viewer html files" - user_options = [('install-doc=', 'd', - 'directory to install HTML tree'), - ('root=', None, - "install everything relative to this alternate root directory"), - ] - - def initialize_options(self): - self.build_dest = None - self.install_doc = None - self.prefix = None - self.root = None - - def finalize_options(self): - self.set_undefined_options('install', - ('prefix', 'prefix'), - ('root', 'root')) -# import pdb ; pdb.set_trace() - build_cmd = self.get_finalized_command('build') - if self.build_dest == None: - build_cmd = self.get_finalized_command('build') - self.build_dest = build_cmd.build_dest - if self.install_doc == None: - self.install_doc = os.path.join(self.prefix, DESTDIR) - print 'INSTALL', self.build_dest, '->', self.install_doc - - def run(self): - self.finalize_options() - self.ensure_finalized() - print "Running Installer" - instloc = self.install_doc - if self.root: - instloc = change_root(self.root, instloc) - self.mkpath(instloc) - copy_tree(self.build_dest, instloc) - print "Installation complete" - -def mungeVersion(infile, outfile): - i = file(infile,'r') - o = file(outfile,'w') - o.write(re.sub('\$\(VERSION\)',sysconfig.get_config_var('VERSION'),i.read())) - i.close() - o.close() - -def main(): - # turn off warnings when deprecated modules are imported -## import warnings -## warnings.filterwarnings("ignore",category=DeprecationWarning) - setup(name = 'Documentation', - version = '%d.%d' % sys.version_info[:2], - cmdclass = {'install_data':AHVDocInstall, 'build':DocBuild}, - data_files = ['dummy'], - ) - -if __name__ == '__main__': - main() diff --git a/Mac/OSX/IDLE/Info.plist b/Mac/OSX/IDLE/Info.plist deleted file mode 100644 index bbe2ea118294..000000000000 --- a/Mac/OSX/IDLE/Info.plist +++ /dev/null @@ -1,55 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - py - pyw - - CFBundleTypeIconFile - PythonSource.icns - CFBundleTypeName - Python Script - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - pyc - pyo - - CFBundleTypeIconFile - PythonCompiled.icns - CFBundleTypeName - Python Bytecode Document - CFBundleTypeRole - Editor - - - CFBundleExecutable - IDLE - CFBundleGetInfoString - 2.5, © 001-2006 Python Software Foundation - CFBundleIconFile - IDLE.icns - CFBundleIdentifier - org.python.IDLE - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - IDLE - CFBundlePackageType - APPL - CFBundleShortVersionString - 2.5 - CFBundleVersion - 2.5 - - diff --git a/Mac/OSX/IDLE/Makefile.in b/Mac/OSX/IDLE/Makefile.in deleted file mode 100644 index 5ed1d5a0eb41..000000000000 --- a/Mac/OSX/IDLE/Makefile.in +++ /dev/null @@ -1,54 +0,0 @@ -prefix=@prefix@ -CC=@CC@ -LD=@CC@ -BASECFLAGS=@BASECFLAGS@ -OPT=@OPT@ -CFLAGS=$(BASECFLAGS) $(OPT) -LDFLAGS=@LDFLAGS@ -srcdir= @srcdir@ -VERSION= @VERSION@ -UNIVERSALSDK=@UNIVERSALSDK@ -builddir= ../../.. - -RUNSHARED= @RUNSHARED@ -BUILDEXE= @BUILDEXEEXT@ -BUILDPYTHON= ../../../python$(BUILDEXE) - -# Deployment target selected during configure, to be checked -# by distutils -MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ -@EXPORT_MACOSX_DEPLOYMENT_TARGET@export MACOSX_DEPLOYMENT_TARGET - -BUNDLEBULDER=$(srcdir)/../../../Lib/plat-mac/bundlebuilder.py - -PYTHONAPPSDIR=/Applications/MacPython $(VERSION) - -all: IDLE.app - -install: IDLE.app $(srcdir)/config-main.def $(srcdir)/config-extensions.def - test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)" - -test -d "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" - cp -PR IDLE.app "$(DESTDIR)$(PYTHONAPPSDIR)" - touch "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" - cp $(srcdir)/config-main.def "$(DESTDIR)$(prefix)/lib/python$(VERSION)/idlelib/config-main.def" - cp $(srcdir)/config-extensions.def "$(DESTDIR)$(prefix)/lib/python$(VERSION)/idlelib/config-extensions.def" - -clean: - rm -rf IDLE.app - -IDLE.app: \ - $(srcdir)/../Icons/IDLE.icns $(srcdir)/idlemain.py \ - $(srcdir)/../Icons/PythonSource.icns \ - $(srcdir)/../Icons/PythonCompiled.icns - rm -fr IDLE.app - $(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \ - --builddir=. \ - --name=IDLE \ - --link-exec \ - --plist=$(srcdir)/Info.plist \ - --mainprogram=$(srcdir)/idlemain.py \ - --iconfile=$(srcdir)/../Icons/IDLE.icns \ - --resource=$(srcdir)/../Icons/PythonSource.icns \ - --resource=$(srcdir)/../Icons/PythonCompiled.icns \ - --python=$(prefix)/Resources/Python.app/Contents/MacOS/Python \ - build diff --git a/Mac/OSX/IDLE/config-extensions.def b/Mac/OSX/IDLE/config-extensions.def deleted file mode 100644 index c17f068e2d65..000000000000 --- a/Mac/OSX/IDLE/config-extensions.def +++ /dev/null @@ -1,88 +0,0 @@ -# config-extensions.def -# -# IDLE reads several config files to determine user preferences. This -# file is the default configuration file for IDLE extensions settings. -# -# Each extension must have at least one section, named after the extension -# module. This section must contain an 'enable' item (=1 to enable the -# extension, =0 to disable it), it may contain 'enable_editor' or 'enable_shell' -# items, to apply it only to editor/shell windows, and may also contain any -# other general configuration items for the extension. -# -# Each extension must define at least one section named ExtensionName_bindings -# or ExtensionName_cfgBindings. If present, ExtensionName_bindings defines -# virtual event bindings for the extension that are not user re-configurable. -# If present, ExtensionName_cfgBindings defines virtual event bindings for the -# extension that may be sensibly re-configured. -# -# If there are no keybindings for a menus' virtual events, include lines like -# <>= (See [CodeContext], below.) -# -# Currently it is necessary to manually modify this file to change extension -# key bindings and default values. To customize, create -# ~/.idlerc/config-extensions.cfg and append the appropriate customized -# section(s). Those sections will override the defaults in this file. -# -# Note: If a keybinding is already in use when the extension is -# loaded, the extension's virtual event's keybinding will be set to ''. -# -# See config-keys.def for notes on specifying keys and extend.txt for -# information on creating IDLE extensions. - -[FormatParagraph] -enable=1 -[FormatParagraph_cfgBindings] -format-paragraph= - -[AutoExpand] -enable=1 -[AutoExpand_cfgBindings] -expand-word= - -[ZoomHeight] -enable=1 -[ZoomHeight_cfgBindings] -zoom-height= - -[ScriptBinding] -enable=1 -[ScriptBinding_cfgBindings] -run-module= -check-module= - -[CallTips] -enable=1 -[CallTips_cfgBindings] -force-open-calltip= -[CallTips_bindings] -try-open-calltip= -refresh-calltip= - -[ParenMatch] -enable=1 -style= expression -flash-delay= 500 -bell= 1 -[ParenMatch_cfgBindings] -flash-paren= -[ParenMatch_bindings] -paren-closed= - -[AutoComplete] -enable=1 -popupwait=2000 -[AutoComplete_cfgBindings] -force-open-completions= -[AutoComplete_bindings] -autocomplete= -try-open-completions= - -[CodeContext] -enable=1 -enable_shell=0 -numlines=3 -visible=0 -bgcolor=LightGray -fgcolor=Black -[CodeContext_bindings] -toggle-code-context= diff --git a/Mac/OSX/IDLE/config-main.def b/Mac/OSX/IDLE/config-main.def deleted file mode 100644 index 1cdc0c541dd0..000000000000 --- a/Mac/OSX/IDLE/config-main.def +++ /dev/null @@ -1,79 +0,0 @@ -# IDLE reads several config files to determine user preferences. This -# file is the default config file for general idle settings. -# -# When IDLE starts, it will look in -# the following two sets of files, in order: -# -# default configuration -# --------------------- -# config-main.def the default general config file -# config-extensions.def the default extension config file -# config-highlight.def the default highlighting config file -# config-keys.def the default keybinding config file -# -# user configuration -# ------------------- -# ~/.idlerc/config-main.cfg the user general config file -# ~/.idlerc/config-extensions.cfg the user extension config file -# ~/.idlerc/config-highlight.cfg the user highlighting config file -# ~/.idlerc/config-keys.cfg the user keybinding config file -# -# On Windows2000 and Windows XP the .idlerc directory is at -# Documents and Settings\\.idlerc -# -# On Windows98 it is at c:\.idlerc -# -# Any options the user saves through the config dialog will be saved to -# the relevant user config file. Reverting any general setting to the -# default causes that entry to be wiped from the user file and re-read -# from the default file. User highlighting themes or keybinding sets are -# retained unless specifically deleted within the config dialog. Choosing -# one of the default themes or keysets just applies the relevant settings -# from the default file. -# -# Additional help sources are listed in the [HelpFiles] section and must be -# viewable by a web browser (or the Windows Help viewer in the case of .chm -# files). These sources will be listed on the Help menu. The pattern is -# -# You can't use a semi-colon in a menu item or path. The path will be platform -# specific because of path separators, drive specs etc. -# -# It is best to use the Configuration GUI to set up additional help sources! -# Example: -#1 = My Extra Help Source;/usr/share/doc/foo/index.html -#2 = Another Help Source;/path/to/another.pdf - -[General] -editor-on-startup= 0 -autosave= 0 -print-command-posix=lpr %s -print-command-win=start /min notepad /p %s -delete-exitfunc= 1 - -[EditorWindow] -width= 80 -height= 40 -font= courier -font-size= 10 -font-bold= 0 -encoding= none - -[FormatParagraph] -paragraph=70 - -[Indent] -use-spaces= 1 -num-spaces= 4 - -[Theme] -default= 1 -name= IDLE Classic - -[Keys] -default= 1 -name= IDLE Classic Mac - -[History] -cyclic=1 - -[HelpFiles] diff --git a/Mac/OSX/IDLE/idlemain.py b/Mac/OSX/IDLE/idlemain.py deleted file mode 100644 index aa75d4cb15e7..000000000000 --- a/Mac/OSX/IDLE/idlemain.py +++ /dev/null @@ -1,27 +0,0 @@ -""" -Bootstrap script for IDLE as an application bundle. -""" -import sys, os - -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.path.expanduser('~/Documents')) - - -# Make sure sys.executable points to the python interpreter inside the -# framework, instead of at the helper executable inside the application -# bundle (the latter works, but doesn't allow access to the window server) -sys.executable = os.path.join(sys.prefix, 'bin', 'python') - -# Look for the -psn argument that the launcher adds and remove it, it will -# only confuse the IDLE startup code. -for idx, value in enumerate(sys.argv): - if value.startswith('-psn_'): - del sys.argv[idx] - break - -#argvemulator.ArgvCollector().mainloop() -if __name__ == '__main__': - main() diff --git a/Mac/OSX/PythonLauncher/English.lproj/Credits.rtf b/Mac/OSX/PythonLauncher/English.lproj/Credits.rtf deleted file mode 100644 index 930ca221a128..000000000000 --- a/Mac/OSX/PythonLauncher/English.lproj/Credits.rtf +++ /dev/null @@ -1,30 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf100 -{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\b\fs24 \cf0 Engineering: -\f1\b0 \ - Jack Jansen\ -\ - -\f0\b Human Interface Design: -\f1\b0 \ - Jack Jansen\ -\ - -\f0\b Testing: -\f1\b0 \ - Jack Jansen\ - Pythonmac-SIG@python.org\ -\ - -\f0\b Documentation: -\f1\b0 \ - Missing\ -\ - -\f0\b With special thanks to: -\f1\b0 \ - Guido, of course\ -} \ No newline at end of file diff --git a/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/classes.nib b/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 47b40aba31c1..000000000000 --- a/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,12 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {showPreferences = id; }; - CLASS = MyAppDelegate; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/info.nib b/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/info.nib deleted file mode 100644 index b96759af1c23..000000000000 --- a/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/info.nib +++ /dev/null @@ -1,21 +0,0 @@ - - - - - IBDocumentLocation - 99 33 356 240 0 0 800 578 - IBEditorPositions - - 29 - 82 396 318 44 0 0 800 578 - - IBFramework Version - 263.2 - IBOpenObjects - - 29 - - IBSystem Version - 5S66 - - diff --git a/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/objects.nib b/Mac/OSX/PythonLauncher/English.lproj/MainMenu.nib/objects.nib deleted file mode 100644 index 532a5c828967455b622d4670969ba546ec4adf21..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 5016 zc-pO44Qv$06`nKLx!CxCnm|PjIwVRQSw$waKpa)IF?Dep|HPLl>W>sHcZ0ofw|m*! z#h5llL-w|W za$x_%hYv{-EicJ0u%9M$%LvnFMgehXzAL5-P{CR3y4NvC!@FaOvDAe8zeEodOsx zgvhwOiaYKJ+oRD>DQFEZTB`Xd z*I#>_>q5KeRrglVf^em!y@j1>l$PHB7lOgB6SS`a$2oi#9ZtXy>Y6EVdMC<6W;sU2HLy(&TX=uW!XuTP$G*5u zS9e79guJ!Bp~_2K7*h7Q;6!C`tpEqx6ZsH^DpP9u=^kpBkG|z;DbGMuN(7$%8Yu+!1}dE)vbhNMJltFznl<g}*1YPfuPAk(JLSaLXMuVn4YeaH)Rk{f|uV}<+G>RQfnTUQ4Be_6O8r`Isr{tsA zTFyZe$sr%eJ8Y>sKmU-MG z*XU=q8ZxBr;psH=N0h+A@)f`(x!&c=RvJ!bU|kwkH$rn0_-i0{3$ABjDh=nda6AJS zvT!>GRXIqH!KM~yNx|6+T+V_GqW!Gz9>zXl8y?yL(N!j$F{tyyy&Np{!~GnbI1bq< z$c)1ZKTK!gS{5!|fX0;&@WXf-?&RQR7H(wWR0ghO;Xw}0WZ+gB?&hF62gfo{lY>ha zVVNJUW?^k3G_8ZpEpRjgr!%lJ2P6mQvoM)~jVsl{helutlOxc{&m79n!ERf;y4xW*H7l3sXouC&uR-xL<4%C#e#hQh}t!fwX8q zXU+_4!k@%}mLyygR<<~BS&W+5r4%C@`GaI7^7RILA+ZkI3{Y~hG&so zQ_RMgOm)IlVHyLlwv^Z8&AoI^tX7tIkD~LPFewtoh7DpZWKIm$6ic=^;&HcV_N7Qo ze7IGMM}tZ5jo3vHa5%L}pq}ap^{6{K@Sb7D#zDhuts9K|TfY5Vl`C61YA?Vi-o_+) z-Vmn-7KNBd0g7oEm<3uz0v|lGS*RB)_(IeMXqP5$u&25yQ~|@%L`(I8GK|kKPtzV(Wi&n;y z+!2y$1KTi9P$dMl30Wu6s3*NGVU{)nyDtS{?4UdWk)~yQJjrSqdlAO3Su~L-T-fn`MTw4)+TXHt4)1iAWFqCP&Er11qqUMZWeh(AnU!Im+ii%I42Z~G&+>uAy0l@ z5_Ei{lqjxBMFQLU62SX`)R&qwyUP%SrPU!PaLq>HCP#6wIAL?A9Y?-H}eTE+hi zL|_UY@=|Bp%j7BVwah3r3(voLWK6L9k$f#ccrx{EyQ)py&&Y52x&eOib)IVACmDH* zH!^aH-(@7tZ!z)#|1Kj3`5H$4#8)%&NB)4344-7=hkW4k{BkePzR3NIyvM5<`3;Y~ z!l!%qn2#qId6VB^B&z_VaW7{7M%OF!CV^-(%z)KhDS-++yS>{QP#5 zy~)UFuJ7ZS=lF&1@s*66Vo1b9h0AI$)`@DvcBfN@{U-M1hLBdZNIm?eR!tncj zM*hXqt9a8cewL9jlq4BB!9PY6e*c(}GdPSf@>d*w&dA?zc$<+)9NuN*@B9oSz+Y$N z7zz$C@((`5$OtElOz_)``~syvV&o5ed<(zvb-t95aej}H!@Q1>6wfj85x?2ZkGAsr z$mW}?`K9mkVMgBJrxeTinlWIPu{HawT%3kuRve; sRES^e<1L>>1Y_hl-?$>h$R{Z>g6Doo*VYa_tSg;{5~D-9_(#(J07Jd4@&Et; diff --git a/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/classes.nib b/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/classes.nib deleted file mode 100644 index bcdc0cdf0888..000000000000 --- a/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/classes.nib +++ /dev/null @@ -1,26 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {"do_apply" = id; "do_cancel" = id; "do_reset" = id; "do_run" = id; }; - CLASS = MyDocument; - LANGUAGE = ObjC; - OUTLETS = { - commandline = NSTextField; - debug = NSButton; - honourhashbang = NSButton; - inspect = NSButton; - interpreter = NSTextField; - nosite = NSButton; - optimize = NSButton; - others = NSTextField; - scriptargs = NSTextField; - tabs = NSButton; - verbose = NSButton; - "with_terminal" = NSButton; - }; - SUPERCLASS = NSDocument; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/info.nib b/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/info.nib deleted file mode 100644 index e258c7220a47..000000000000 --- a/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBDocumentLocation - 398 60 356 240 0 0 1024 746 - IBFramework Version - 291.0 - IBOpenObjects - - 5 - - IBSystem Version - 6L60 - - diff --git a/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/objects.nib b/Mac/OSX/PythonLauncher/English.lproj/MyDocument.nib/objects.nib deleted file mode 100644 index 0473a31a21f113e527bc0c4f1aa9dd0a26653a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 4845 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 diff --git a/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib b/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib deleted file mode 100644 index 467aa8b26121..000000000000 --- a/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib +++ /dev/null @@ -1,26 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {"do_apply" = id; "do_filetype" = id; "do_reset" = id; }; - CLASS = PreferencesWindowController; - LANGUAGE = ObjC; - OUTLETS = { - commandline = NSTextField; - debug = NSButton; - filetype = NSPopUpButton; - honourhashbang = NSButton; - inspect = NSButton; - interpreter = NSTextField; - nosite = NSButton; - optimize = NSButton; - others = NSTextField; - tabs = NSButton; - verbose = NSButton; - "with_terminal" = NSButton; - }; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib b/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib deleted file mode 100644 index bc558f7e8285..000000000000 --- a/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBDocumentLocation - 565 235 519 534 0 0 1280 1002 - IBFramework Version - 364.0 - IBOpenObjects - - 5 - - IBSystem Version - 7H63 - - diff --git a/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/objects.nib b/Mac/OSX/PythonLauncher/English.lproj/PreferenceWindow.nib/objects.nib deleted file mode 100644 index 3dfed33cbdb5b263001bd8bc5a1fd7ec268d704c..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 5882 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 diff --git a/Mac/OSX/PythonLauncher/FileSettings.h b/Mac/OSX/PythonLauncher/FileSettings.h deleted file mode 100755 index d807bae59cc3..000000000000 --- a/Mac/OSX/PythonLauncher/FileSettings.h +++ /dev/null @@ -1,64 +0,0 @@ -// -// FileSettings.h -// PythonLauncher -// -// Created by Jack Jansen on Sun Jul 21 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import - -@protocol FileSettingsSource -- (NSString *) interpreter; -- (BOOL) honourhashbang; -- (BOOL) debug; -- (BOOL) verbose; -- (BOOL) inspect; -- (BOOL) optimize; -- (BOOL) nosite; -- (BOOL) tabs; -- (NSString *) others; -- (BOOL) with_terminal; -- (NSString *) scriptargs; -@end - -@interface FileSettings : NSObject -{ - NSString *interpreter; // The pathname of the interpreter to use - NSArray *interpreters; // List of known interpreters - BOOL honourhashbang; // #! line overrides interpreter - BOOL debug; // -d option: debug parser - BOOL verbose; // -v option: verbose import - BOOL inspect; // -i option: interactive mode after script - BOOL optimize; // -O option: optimize bytecode - BOOL nosite; // -S option: don't import site.py - BOOL tabs; // -t option: warn about inconsistent tabs - NSString *others; // other options - NSString *scriptargs; // script arguments (not for preferences) - BOOL with_terminal; // Run in terminal window - - FileSettings *origsource; - NSString *prefskey; -} - -+ (id)getDefaultsForFileType: (NSString *)filetype; -+ (id)getFactorySettingsForFileType: (NSString *)filetype; -+ (id)newSettingsForFileType: (NSString *)filetype; - -//- (id)init; -- (id)initForFileType: (NSString *)filetype; -- (id)initForFSDefaultFileType: (NSString *)filetype; -- (id)initForDefaultFileType: (NSString *)filetype; -//- (id)initWithFileSettings: (FileSettings *)source; - -- (void)updateFromSource: (id )source; -- (NSString *)commandLineForScript: (NSString *)script; - -//- (void)applyFactorySettingsForFileType: (NSString *)filetype; -//- (void)saveDefaults; -//- (void)applyUserDefaults: (NSString *)filetype; -- (void)applyValuesFromDict: (NSDictionary *)dict; -- (void)reset; -- (NSArray *) interpreters; - -@end diff --git a/Mac/OSX/PythonLauncher/FileSettings.m b/Mac/OSX/PythonLauncher/FileSettings.m deleted file mode 100755 index fc3937b3dcbd..000000000000 --- a/Mac/OSX/PythonLauncher/FileSettings.m +++ /dev/null @@ -1,298 +0,0 @@ -// -// FileSettings.m -// PythonLauncher -// -// Created by Jack Jansen on Sun Jul 21 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import "FileSettings.h" - -@implementation FileSettings - -+ (id)getFactorySettingsForFileType: (NSString *)filetype -{ - static FileSettings *fsdefault_py, *fsdefault_pyw, *fsdefault_pyc; - FileSettings **curdefault; - - if ([filetype isEqualToString: @"Python Script"]) { - curdefault = &fsdefault_py; - } else if ([filetype isEqualToString: @"Python GUI Script"]) { - curdefault = &fsdefault_pyw; - } else if ([filetype isEqualToString: @"Python Bytecode Document"]) { - curdefault = &fsdefault_pyc; - } else { - NSLog(@"Funny File Type: %@\n", filetype); - curdefault = &fsdefault_py; - filetype = @"Python Script"; - } - if (!*curdefault) { - *curdefault = [[FileSettings new] initForFSDefaultFileType: filetype]; - } - return *curdefault; -} - -+ (id)getDefaultsForFileType: (NSString *)filetype -{ - static FileSettings *default_py, *default_pyw, *default_pyc; - FileSettings **curdefault; - - if ([filetype isEqualToString: @"Python Script"]) { - curdefault = &default_py; - } else if ([filetype isEqualToString: @"Python GUI Script"]) { - curdefault = &default_pyw; - } else if ([filetype isEqualToString: @"Python Bytecode Document"]) { - curdefault = &default_pyc; - } else { - NSLog(@"Funny File Type: %@\n", filetype); - curdefault = &default_py; - filetype = @"Python Script"; - } - if (!*curdefault) { - *curdefault = [[FileSettings new] initForDefaultFileType: filetype]; - } - return *curdefault; -} - -+ (id)newSettingsForFileType: (NSString *)filetype -{ - FileSettings *cur; - - cur = [FileSettings new]; - [cur initForFileType: filetype]; - return [cur retain]; -} - -- (id)initWithFileSettings: (FileSettings *)source -{ - self = [super init]; - if (!self) return self; - - interpreter = [source->interpreter retain]; - honourhashbang = source->honourhashbang; - debug = source->debug; - verbose = source->verbose; - inspect = source->inspect; - optimize = source->optimize; - nosite = source->nosite; - tabs = source->tabs; - others = [source->others retain]; - scriptargs = [source->scriptargs retain]; - with_terminal = source->with_terminal; - prefskey = source->prefskey; - if (prefskey) [prefskey retain]; - - return self; -} - -- (id)initForFileType: (NSString *)filetype -{ - FileSettings *defaults; - - defaults = [FileSettings getDefaultsForFileType: filetype]; - self = [self initWithFileSettings: defaults]; - origsource = [defaults retain]; - return self; -} - -//- (id)init -//{ -// self = [self initForFileType: @"Python Script"]; -// return self; -//} - -- (id)initForFSDefaultFileType: (NSString *)filetype -{ - int i; - NSString *filename; - NSDictionary *dict; - static NSDictionary *factorySettings; - - self = [super init]; - if (!self) return self; - - if (factorySettings == NULL) { - NSBundle *bdl = [NSBundle mainBundle]; - NSString *path = [ bdl pathForResource: @"factorySettings" - ofType: @"plist"]; - factorySettings = [[NSDictionary dictionaryWithContentsOfFile: - path] retain]; - if (factorySettings == NULL) { - NSLog(@"Missing %@", path); - return NULL; - } - } - dict = [factorySettings objectForKey: filetype]; - if (dict == NULL) { - NSLog(@"factorySettings.plist misses file type \"%@\"", filetype); - interpreter = [@"no default found" retain]; - return NULL; - } - [self applyValuesFromDict: dict]; - interpreters = [dict objectForKey: @"interpreter_list"]; - interpreter = NULL; - for (i=0; i < [interpreters count]; i++) { - filename = [interpreters objectAtIndex: i]; - filename = [filename stringByExpandingTildeInPath]; - if ([[NSFileManager defaultManager] fileExistsAtPath: filename]) { - interpreter = [filename retain]; - break; - } - } - if (interpreter == NULL) - interpreter = [@"no default found" retain]; - origsource = NULL; - return self; -} - -- (void)applyUserDefaults: (NSString *)filetype -{ - NSUserDefaults *defaults; - NSDictionary *dict; - - defaults = [NSUserDefaults standardUserDefaults]; - dict = [defaults dictionaryForKey: filetype]; - if (!dict) - return; - [self applyValuesFromDict: dict]; -} - -- (id)initForDefaultFileType: (NSString *)filetype -{ - FileSettings *fsdefaults; - - fsdefaults = [FileSettings getFactorySettingsForFileType: filetype]; - self = [self initWithFileSettings: fsdefaults]; - if (!self) return self; - interpreters = [fsdefaults->interpreters retain]; - scriptargs = [@"" retain]; - [self applyUserDefaults: filetype]; - prefskey = [filetype retain]; - return self; -} - -- (void)reset -{ - if (origsource) { - [self updateFromSource: origsource]; - } else { - FileSettings *fsdefaults; - fsdefaults = [FileSettings getFactorySettingsForFileType: prefskey]; - [self updateFromSource: fsdefaults]; - } -} - -- (void)updateFromSource: (id )source -{ - interpreter = [[source interpreter] retain]; - honourhashbang = [source honourhashbang]; - debug = [source debug]; - verbose = [source verbose]; - inspect = [source inspect]; - optimize = [source optimize]; - nosite = [source nosite]; - tabs = [source tabs]; - others = [[source others] retain]; - scriptargs = [[source scriptargs] retain]; - with_terminal = [source with_terminal]; - // And if this is a user defaults object we also save the - // values - if (!origsource) { - NSUserDefaults *defaults; - NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: - interpreter, @"interpreter", - [NSNumber numberWithBool: honourhashbang], @"honourhashbang", - [NSNumber numberWithBool: debug], @"debug", - [NSNumber numberWithBool: verbose], @"verbose", - [NSNumber numberWithBool: inspect], @"inspect", - [NSNumber numberWithBool: optimize], @"optimize", - [NSNumber numberWithBool: nosite], @"nosite", - [NSNumber numberWithBool: nosite], @"nosite", - others, @"others", - scriptargs, @"scriptargs", - [NSNumber numberWithBool: with_terminal], @"with_terminal", - nil]; - defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject: dict forKey: prefskey]; - } -} - -- (void)applyValuesFromDict: (NSDictionary *)dict -{ - id value; - - value = [dict objectForKey: @"interpreter"]; - if (value) interpreter = [value retain]; - value = [dict objectForKey: @"honourhashbang"]; - if (value) honourhashbang = [value boolValue]; - value = [dict objectForKey: @"debug"]; - if (value) debug = [value boolValue]; - value = [dict objectForKey: @"verbose"]; - if (value) verbose = [value boolValue]; - value = [dict objectForKey: @"inspect"]; - if (value) inspect = [value boolValue]; - value = [dict objectForKey: @"optimize"]; - if (value) optimize = [value boolValue]; - value = [dict objectForKey: @"nosite"]; - if (value) nosite = [value boolValue]; - value = [dict objectForKey: @"nosite"]; - if (value) tabs = [value boolValue]; - value = [dict objectForKey: @"others"]; - if (value) others = [value retain]; - value = [dict objectForKey: @"scriptargs"]; - if (value) scriptargs = [value retain]; - value = [dict objectForKey: @"with_terminal"]; - if (value) with_terminal = [value boolValue]; -} - -- (NSString *)commandLineForScript: (NSString *)script -{ - NSString *cur_interp = NULL; - char hashbangbuf[1024]; - FILE *fp; - char *p; - - if (honourhashbang && - (fp=fopen([script cString], "r")) && - fgets(hashbangbuf, sizeof(hashbangbuf), fp) && - strncmp(hashbangbuf, "#!", 2) == 0 && - (p=strchr(hashbangbuf, '\n'))) { - *p = '\0'; - p = hashbangbuf + 2; - while (*p == ' ') p++; - cur_interp = [NSString stringWithCString: p]; - } - if (!cur_interp) - cur_interp = interpreter; - - return [NSString stringWithFormat: - @"\"%@\"%s%s%s%s%s%s %@ \"%@\" %@ %s", - cur_interp, - debug?" -d":"", - verbose?" -v":"", - inspect?" -i":"", - optimize?" -O":"", - nosite?" -S":"", - tabs?" -t":"", - others, - script, - scriptargs, - with_terminal? "&& echo Exit status: $? && exit 1" : " &"]; -} - -- (NSArray *) interpreters { return interpreters;}; - -// FileSettingsSource protocol -- (NSString *) interpreter { return interpreter;}; -- (BOOL) honourhashbang { return honourhashbang; }; -- (BOOL) debug { return debug;}; -- (BOOL) verbose { return verbose;}; -- (BOOL) inspect { return inspect;}; -- (BOOL) optimize { return optimize;}; -- (BOOL) nosite { return nosite;}; -- (BOOL) tabs { return tabs;}; -- (NSString *) others { return others;}; -- (NSString *) scriptargs { return scriptargs;}; -- (BOOL) with_terminal { return with_terminal;}; - -@end diff --git a/Mac/OSX/PythonLauncher/Info.plist b/Mac/OSX/PythonLauncher/Info.plist deleted file mode 100644 index 1dd795f77660..000000000000 --- a/Mac/OSX/PythonLauncher/Info.plist +++ /dev/null @@ -1,65 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - py - pyw - - CFBundleTypeIconFile - PythonSource.icns - CFBundleTypeName - Python Script - CFBundleTypeRole - Viewer - NSDocumentClass - MyDocument - - - CFBundleTypeExtensions - - pyc - pyo - - CFBundleTypeIconFile - PythonCompiled.icns - CFBundleTypeName - Python Bytecode Document - CFBundleTypeRole - Viewer - NSDocumentClass - MyDocument - - - CFBundleExecutable - PythonLauncher - CFBundleGetInfoString - 2.5, © 001-2006 Python Software Foundation - CFBundleIconFile - PythonLauncher.icns - CFBundleIdentifier - org.python.PythonLauncher - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Python Launcher - CFBundlePackageType - APPL - CFBundleShortVersionString - 2.5 - CFBundleSignature - PytL - CFBundleVersion - 2.5 - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/Mac/OSX/PythonLauncher/Makefile.in b/Mac/OSX/PythonLauncher/Makefile.in deleted file mode 100644 index e6dacb3c5e08..000000000000 --- a/Mac/OSX/PythonLauncher/Makefile.in +++ /dev/null @@ -1,78 +0,0 @@ -CC=@CC@ -LD=@CC@ -BASECFLAGS=@BASECFLAGS@ -OPT=@OPT@ -CFLAGS=$(BASECFLAGS) $(OPT) -LDFLAGS=@LDFLAGS@ -srcdir= @srcdir@ -VERSION= @VERSION@ -UNIVERSALSDK=@UNIVERSALSDK@ -builddir= ../../.. - -RUNSHARED= @RUNSHARED@ -BUILDEXE= @BUILDEXEEXT@ -BUILDPYTHON= ../../../python$(BUILDEXE) - -# Deployment target selected during configure, to be checked -# by distutils -MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ -@EXPORT_MACOSX_DEPLOYMENT_TARGET@export MACOSX_DEPLOYMENT_TARGET - -BUNDLEBULDER=$(srcdir)/../../../Lib/plat-mac/bundlebuilder.py - -PYTHONAPPSDIR=/Applications/MacPython $(VERSION) -OBJECTS=FileSettings.o MyAppDelegate.o MyDocument.o PreferencesWindowController.o doscript.o main.o - -all: Python\ Launcher.app - -install: Python\ Launcher.app - test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)" - -test -d "$(DESTDIR)$(PYTHONAPPSDIR)/Python Launcher.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/Python Launcher.app" - cp -r "Python Launcher.app" "$(DESTDIR)$(PYTHONAPPSDIR)" - touch "$(DESTDIR)$(PYTHONAPPSDIR)/Python Launcher.app" - -clean: - rm -f *.o "Python Launcher" - rm -rf "Python Launcher.app" - -Python\ Launcher.app: \ - Python\ Launcher $(srcdir)/../Icons/PythonLauncher.icns \ - $(srcdir)/../Icons/PythonSource.icns \ - $(srcdir)/../Icons/PythonCompiled.icns \ - $(srcdir)/factorySettings.plist - rm -fr "Python Launcher.app" - $(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \ - --builddir=. \ - --name="Python Launcher" \ - --executable="Python Launcher" \ - --iconfile=$(srcdir)/../Icons/PythonLauncher.icns \ - --bundle-id=org.python.PythonLauncher \ - --resource=$(srcdir)/../Icons/PythonSource.icns \ - --resource=$(srcdir)/../Icons/PythonCompiled.icns \ - --resource=$(srcdir)/English.lproj \ - --resource=$(srcdir)/factorySettings.plist \ - --plist=$(srcdir)/Info.plist \ - build - find "Python Launcher.app" -name '.svn' -print0 | xargs -0 rm -r - - -FileSettings.o: $(srcdir)/FileSettings.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/FileSettings.m - -MyAppDelegate.o: $(srcdir)/MyAppDelegate.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/MyAppDelegate.m - -MyDocument.o: $(srcdir)/MyDocument.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/MyDocument.m - -PreferencesWindowController.o: $(srcdir)/PreferencesWindowController.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/PreferencesWindowController.m - -doscript.o: $(srcdir)/doscript.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/doscript.m - -main.o: $(srcdir)/main.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/main.m - -Python\ Launcher: $(OBJECTS) - $(CC) $(LDFLAGS) -o "Python Launcher" $(OBJECTS) -framework AppKit -framework Carbon diff --git a/Mac/OSX/PythonLauncher/MyAppDelegate.h b/Mac/OSX/PythonLauncher/MyAppDelegate.h deleted file mode 100644 index 097b54177c88..000000000000 --- a/Mac/OSX/PythonLauncher/MyAppDelegate.h +++ /dev/null @@ -1,15 +0,0 @@ -/* MyAppDelegate */ - -#import - -@interface MyAppDelegate : NSObject -{ - BOOL initial_action_done; - BOOL should_terminate; -} -- (id)init; -- (IBAction)showPreferences:(id)sender; -- (BOOL)shouldShowUI; -- (BOOL)shouldTerminate; -- (void)testFileTypeBinding; -@end diff --git a/Mac/OSX/PythonLauncher/MyAppDelegate.m b/Mac/OSX/PythonLauncher/MyAppDelegate.m deleted file mode 100644 index a5ba7510784c..000000000000 --- a/Mac/OSX/PythonLauncher/MyAppDelegate.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "MyAppDelegate.h" -#import "PreferencesWindowController.h" -#import -#import - -@implementation MyAppDelegate - -- (id)init -{ - self = [super init]; - initial_action_done = NO; - should_terminate = NO; - return self; -} - -- (IBAction)showPreferences:(id)sender -{ - [PreferencesWindowController getPreferencesWindow]; -} - -- (void)applicationDidFinishLaunching:(NSNotification *)notification -{ - // Test that the file mappings are correct - [self testFileTypeBinding]; - // If we were opened because of a file drag or doubleclick - // we've set initial_action_done in shouldShowUI - // Otherwise we open a preferences dialog. - if (!initial_action_done) { - initial_action_done = YES; - [self showPreferences: self]; - } -} - -- (BOOL)shouldShowUI -{ - // if this call comes before applicationDidFinishLaunching: we - // should terminate immedeately after starting the script. - if (!initial_action_done) - should_terminate = YES; - initial_action_done = YES; - if( GetCurrentKeyModifiers() & optionKey ) - return YES; - return NO; -} - -- (BOOL)shouldTerminate -{ - return should_terminate; -} - -- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender -{ - return NO; -} - -- (void)testFileTypeBinding -{ - NSURL *ourUrl; - OSStatus err; - FSRef appRef; - NSURL *appUrl; - static NSString *extensions[] = { @"py", @"pyw", @"pyc", NULL}; - NSString **ext_p; - int i; - - if ([[NSUserDefaults standardUserDefaults] boolForKey: @"SkipFileBindingTest"]) - return; - ourUrl = [NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]; - for( ext_p = extensions; *ext_p; ext_p++ ) { - err = LSGetApplicationForInfo( - kLSUnknownType, - kLSUnknownCreator, - (CFStringRef)*ext_p, - kLSRolesViewer, - &appRef, - (CFURLRef *)&appUrl); - if (err || ![appUrl isEqual: ourUrl] ) { - i = NSRunAlertPanel(@"File type binding", - @"PythonLauncher is not the default application for all " \ - @"Python script types. You should fix this with the " \ - @"Finder's \"Get Info\" command.\n\n" \ - @"See \"Changing the application that opens a file\" in " \ - @"Mac Help for details.", - @"OK", - @"Don't show this warning again", - NULL); - if ( i == 0 ) { // Don't show again - [[NSUserDefaults standardUserDefaults] - setObject:@"YES" forKey:@"SkipFileBindingTest"]; - } - return; - } - } -} - -@end diff --git a/Mac/OSX/PythonLauncher/MyDocument.h b/Mac/OSX/PythonLauncher/MyDocument.h deleted file mode 100755 index 00c1bae54e24..000000000000 --- a/Mac/OSX/PythonLauncher/MyDocument.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// MyDocument.h -// PythonLauncher -// -// Created by Jack Jansen on Fri Jul 19 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - - -#import - -#import "FileSettings.h" - -@interface MyDocument : NSDocument -{ - IBOutlet NSTextField *interpreter; - IBOutlet NSButton *honourhashbang; - IBOutlet NSButton *debug; - IBOutlet NSButton *verbose; - IBOutlet NSButton *inspect; - IBOutlet NSButton *optimize; - IBOutlet NSButton *nosite; - IBOutlet NSButton *tabs; - IBOutlet NSTextField *others; - IBOutlet NSButton *with_terminal; - IBOutlet NSTextField *scriptargs; - IBOutlet NSTextField *commandline; - - NSString *script; - NSString *filetype; - FileSettings *settings; -} - -- (IBAction)do_run:(id)sender; -- (IBAction)do_cancel:(id)sender; -- (IBAction)do_reset:(id)sender; -- (IBAction)do_apply:(id)sender; - -- (void)controlTextDidChange:(NSNotification *)aNotification; - -@end diff --git a/Mac/OSX/PythonLauncher/MyDocument.m b/Mac/OSX/PythonLauncher/MyDocument.m deleted file mode 100755 index 5acc2dcc90c1..000000000000 --- a/Mac/OSX/PythonLauncher/MyDocument.m +++ /dev/null @@ -1,175 +0,0 @@ -// -// MyDocument.m -// PythonLauncher -// -// Created by Jack Jansen on Fri Jul 19 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import "MyDocument.h" -#import "MyAppDelegate.h" -#import "doscript.h" - -@implementation MyDocument - -- (id)init -{ - self = [super init]; - if (self) { - - // Add your subclass-specific initialization here. - // If an error occurs here, send a [self dealloc] message and return nil. - script = [@".py" retain]; - filetype = [@"Python Script" retain]; - settings = NULL; - } - return self; -} - -- (NSString *)windowNibName -{ - // Override returning the nib file name of the document - // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. - return @"MyDocument"; -} - -- (void)close -{ - NSApplication *app = [NSApplication sharedApplication]; - [super close]; - if ([[app delegate] shouldTerminate]) - [app terminate: self]; -} - -- (void)load_defaults -{ -// if (settings) [settings release]; - settings = [FileSettings newSettingsForFileType: filetype]; -} - -- (void)update_display -{ -// [[self window] setTitle: script]; - - [interpreter setStringValue: [settings interpreter]]; - [honourhashbang setState: [settings honourhashbang]]; - [debug setState: [settings debug]]; - [verbose setState: [settings verbose]]; - [inspect setState: [settings inspect]]; - [optimize setState: [settings optimize]]; - [nosite setState: [settings nosite]]; - [tabs setState: [settings tabs]]; - [others setStringValue: [settings others]]; - [scriptargs setStringValue: [settings scriptargs]]; - [with_terminal setState: [settings with_terminal]]; - - [commandline setStringValue: [settings commandLineForScript: script]]; -} - -- (void)update_settings -{ - [settings updateFromSource: self]; -} - -- (BOOL)run -{ - const char *cmdline; - int sts; - - cmdline = [[settings commandLineForScript: script] cString]; - if ([settings with_terminal]) { - sts = doscript(cmdline); - } else { - sts = system(cmdline); - } - if (sts) { - NSLog(@"Exit status: %d\n", sts); - return NO; - } - return YES; -} - -- (void)windowControllerDidLoadNib:(NSWindowController *) aController -{ - [super windowControllerDidLoadNib:aController]; - // Add any code here that need to be executed once the windowController has loaded the document's window. - [self load_defaults]; - [self update_display]; -} - -- (NSData *)dataRepresentationOfType:(NSString *)aType -{ - // Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. - return nil; -} - -- (BOOL)readFromFile:(NSString *)fileName ofType:(NSString *)type; -{ - // Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead. - BOOL show_ui; - - // ask the app delegate whether we should show the UI or not. - show_ui = [[[NSApplication sharedApplication] delegate] shouldShowUI]; - [script release]; - script = [fileName retain]; - [filetype release]; - filetype = [type retain]; -// if (settings) [settings release]; - settings = [FileSettings newSettingsForFileType: filetype]; - if (show_ui) { - [self update_display]; - return YES; - } else { - [self run]; - [self close]; - return NO; - } -} - -- (IBAction)do_run:(id)sender -{ - [self update_settings]; - [self update_display]; - if ([self run]) - [self close]; -} - -- (IBAction)do_cancel:(id)sender -{ - [self close]; -} - - -- (IBAction)do_reset:(id)sender -{ - [settings reset]; - [self update_display]; -} - -- (IBAction)do_apply:(id)sender -{ - [self update_settings]; - [self update_display]; -} - -// FileSettingsSource protocol -- (NSString *) interpreter { return [interpreter stringValue];}; -- (BOOL) honourhashbang { return [honourhashbang state];}; -- (BOOL) debug { return [debug state];}; -- (BOOL) verbose { return [verbose state];}; -- (BOOL) inspect { return [inspect state];}; -- (BOOL) optimize { return [optimize state];}; -- (BOOL) nosite { return [nosite state];}; -- (BOOL) tabs { return [tabs state];}; -- (NSString *) others { return [others stringValue];}; -- (NSString *) scriptargs { return [scriptargs stringValue];}; -- (BOOL) with_terminal { return [with_terminal state];}; - -// Delegates -- (void)controlTextDidChange:(NSNotification *)aNotification -{ - [self update_settings]; - [self update_display]; -}; - -@end diff --git a/Mac/OSX/PythonLauncher/PreferenceWindow.nib/classes.nib b/Mac/OSX/PythonLauncher/PreferenceWindow.nib/classes.nib deleted file mode 100644 index 467aa8b26121..000000000000 --- a/Mac/OSX/PythonLauncher/PreferenceWindow.nib/classes.nib +++ /dev/null @@ -1,26 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {"do_apply" = id; "do_filetype" = id; "do_reset" = id; }; - CLASS = PreferencesWindowController; - LANGUAGE = ObjC; - OUTLETS = { - commandline = NSTextField; - debug = NSButton; - filetype = NSPopUpButton; - honourhashbang = NSButton; - inspect = NSButton; - interpreter = NSTextField; - nosite = NSButton; - optimize = NSButton; - others = NSTextField; - tabs = NSButton; - verbose = NSButton; - "with_terminal" = NSButton; - }; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Mac/OSX/PythonLauncher/PreferenceWindow.nib/info.nib b/Mac/OSX/PythonLauncher/PreferenceWindow.nib/info.nib deleted file mode 100644 index bc558f7e8285..000000000000 --- a/Mac/OSX/PythonLauncher/PreferenceWindow.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBDocumentLocation - 565 235 519 534 0 0 1280 1002 - IBFramework Version - 364.0 - IBOpenObjects - - 5 - - IBSystem Version - 7H63 - - diff --git a/Mac/OSX/PythonLauncher/PreferenceWindow.nib/objects.nib b/Mac/OSX/PythonLauncher/PreferenceWindow.nib/objects.nib deleted file mode 100644 index 3dfed33cbdb5b263001bd8bc5a1fd7ec268d704c..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 5882 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 diff --git a/Mac/OSX/PythonLauncher/PreferencesWindowController.h b/Mac/OSX/PythonLauncher/PreferencesWindowController.h deleted file mode 100644 index 63469968c1e3..000000000000 --- a/Mac/OSX/PythonLauncher/PreferencesWindowController.h +++ /dev/null @@ -1,38 +0,0 @@ -/* PreferencesWindowController */ - -#import - -#import "FileSettings.h" - -@interface PreferencesWindowController : NSWindowController -{ - IBOutlet NSPopUpButton *filetype; - IBOutlet NSComboBox *interpreter; - IBOutlet NSButton *honourhashbang; - IBOutlet NSButton *debug; - IBOutlet NSButton *verbose; - IBOutlet NSButton *inspect; - IBOutlet NSButton *optimize; - IBOutlet NSButton *nosite; - IBOutlet NSButton *tabs; - IBOutlet NSTextField *others; - IBOutlet NSButton *with_terminal; - IBOutlet NSTextField *commandline; - - FileSettings *settings; -} - -+ getPreferencesWindow; - -- (IBAction)do_reset:(id)sender; -- (IBAction)do_apply:(id)sender; -- (IBAction)do_filetype:(id)sender; - -- (void)controlTextDidChange:(NSNotification *)aNotification; - -- (unsigned int)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)aString; -- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index; -- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox; - - -@end diff --git a/Mac/OSX/PythonLauncher/PreferencesWindowController.m b/Mac/OSX/PythonLauncher/PreferencesWindowController.m deleted file mode 100644 index 311c37502bb2..000000000000 --- a/Mac/OSX/PythonLauncher/PreferencesWindowController.m +++ /dev/null @@ -1,121 +0,0 @@ -#import "PreferencesWindowController.h" - -@implementation PreferencesWindowController - -+ getPreferencesWindow -{ - static PreferencesWindowController *_singleton; - - if (!_singleton) - _singleton = [[PreferencesWindowController alloc] init]; - [_singleton showWindow: _singleton]; - return _singleton; -} - -- (id) init -{ - self = [self initWithWindowNibName: @"PreferenceWindow"]; - return self; -} - -- (void)load_defaults -{ - NSString *title = [filetype titleOfSelectedItem]; - - settings = [FileSettings getDefaultsForFileType: title]; -} - -- (void)update_display -{ -// [[self window] setTitle: script]; - - [interpreter reloadData]; - [interpreter setStringValue: [settings interpreter]]; - [honourhashbang setState: [settings honourhashbang]]; - [debug setState: [settings debug]]; - [verbose setState: [settings verbose]]; - [inspect setState: [settings inspect]]; - [optimize setState: [settings optimize]]; - [nosite setState: [settings nosite]]; - [tabs setState: [settings tabs]]; - [others setStringValue: [settings others]]; - [with_terminal setState: [settings with_terminal]]; - // Not scriptargs, it isn't for preferences - - [commandline setStringValue: [settings commandLineForScript: @""]]; -} - -- (void) windowDidLoad -{ - [super windowDidLoad]; - [self load_defaults]; - [self update_display]; -} - -- (void)update_settings -{ - [settings updateFromSource: self]; -} - -- (IBAction)do_filetype:(id)sender -{ - [self load_defaults]; - [self update_display]; -} - -- (IBAction)do_reset:(id)sender -{ - [settings reset]; - [self update_display]; -} - -- (IBAction)do_apply:(id)sender -{ - [self update_settings]; - [self update_display]; -} - -// FileSettingsSource protocol -- (NSString *) interpreter { return [interpreter stringValue];}; -- (BOOL) honourhashbang { return [honourhashbang state]; }; -- (BOOL) debug { return [debug state];}; -- (BOOL) verbose { return [verbose state];}; -- (BOOL) inspect { return [inspect state];}; -- (BOOL) optimize { return [optimize state];}; -- (BOOL) nosite { return [nosite state];}; -- (BOOL) tabs { return [tabs state];}; -- (NSString *) others { return [others stringValue];}; -- (BOOL) with_terminal { return [with_terminal state];}; -- (NSString *) scriptargs { return @"";}; - -// Delegates -- (void)controlTextDidChange:(NSNotification *)aNotification -{ - [self update_settings]; - [self update_display]; -}; - -// NSComboBoxDataSource protocol -- (unsigned int)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)aString -{ - NSArray *interp_list = [settings interpreters]; - unsigned int rv = [interp_list indexOfObjectIdenticalTo: aString]; - return rv; -} - -- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index -{ - NSArray *interp_list = [settings interpreters]; - id rv = [interp_list objectAtIndex: index]; - return rv; -} - -- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox -{ - NSArray *interp_list = [settings interpreters]; - int rv = [interp_list count]; - return rv; -} - - -@end diff --git a/Mac/OSX/PythonLauncher/doscript.h b/Mac/OSX/PythonLauncher/doscript.h deleted file mode 100644 index eef0b5641f67..000000000000 --- a/Mac/OSX/PythonLauncher/doscript.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * doscript.h - * PythonLauncher - * - * Created by Jack Jansen on Wed Jul 31 2002. - * Copyright (c) 2002 __MyCompanyName__. All rights reserved. - * - */ - -#include - -extern int doscript(const char *command); \ No newline at end of file diff --git a/Mac/OSX/PythonLauncher/doscript.m b/Mac/OSX/PythonLauncher/doscript.m deleted file mode 100644 index 3e4e22393c04..000000000000 --- a/Mac/OSX/PythonLauncher/doscript.m +++ /dev/null @@ -1,118 +0,0 @@ -/* - * doscript.c - * PythonLauncher - * - * Created by Jack Jansen on Wed Jul 31 2002. - * Copyright (c) 2002 __MyCompanyName__. All rights reserved. - * - */ - -#import -#import -#import "doscript.h" - -/* I assume I could pick these up from somewhere, but where... */ -#define CREATOR 'trmx' - -#define ACTIVATE_CMD 'misc' -#define ACTIVATE_SUITE 'actv' - -#define DOSCRIPT_CMD 'dosc' -#define DOSCRIPT_SUITE 'core' -#define WITHCOMMAND 'cmnd' - -/* ... and there's probably also a better way to do this... */ -#define START_TERMINAL "/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal &" - -extern int -doscript(const char *command) -{ - OSErr err; - AppleEvent theAEvent, theReply; - AEAddressDesc terminalAddress; - AEDesc commandDesc; - OSType terminalCreator = CREATOR; - - /* set up locals */ - AECreateDesc(typeNull, NULL, 0, &theAEvent); - AECreateDesc(typeNull, NULL, 0, &terminalAddress); - AECreateDesc(typeNull, NULL, 0, &theReply); - AECreateDesc(typeNull, NULL, 0, &commandDesc); - - /* create the "activate" event for Terminal */ - err = AECreateDesc(typeApplSignature, (Ptr) &terminalCreator, - sizeof(terminalCreator), &terminalAddress); - if (err != noErr) { - NSLog(@"doscript: AECreateDesc: error %d\n", err); - goto bail; - } - err = AECreateAppleEvent(ACTIVATE_SUITE, ACTIVATE_CMD, - &terminalAddress, kAutoGenerateReturnID, - kAnyTransactionID, &theAEvent); - - if (err != noErr) { - NSLog(@"doscript: AECreateAppleEvent(activate): error %d\n", err); - goto bail; - } - /* send the event */ - err = AESend(&theAEvent, &theReply, kAEWaitReply, - kAENormalPriority, kAEDefaultTimeout, NULL, NULL); - if ( err == -600 ) { - int count=10; - /* If it failed with "no such process" try to start Terminal */ - err = system(START_TERMINAL); - if ( err ) { - NSLog(@"doscript: system(): %s\n", strerror(errno)); - goto bail; - } - do { - sleep(1); - /* send the event again */ - err = AESend(&theAEvent, &theReply, kAEWaitReply, - kAENormalPriority, kAEDefaultTimeout, NULL, NULL); - } while (err == -600 && --count > 0); - if ( err == -600 ) - NSLog(@"doscript: Could not activate Terminal\n"); - } - if (err != noErr) { - NSLog(@"doscript: AESend(activate): error %d\n", err); - goto bail; - } - - /* create the "doscript with command" event for Terminal */ - err = AECreateAppleEvent(DOSCRIPT_SUITE, DOSCRIPT_CMD, - &terminalAddress, kAutoGenerateReturnID, - kAnyTransactionID, &theAEvent); - if (err != noErr) { - NSLog(@"doscript: AECreateAppleEvent(doscript): error %d\n", err); - goto bail; - } - - /* add the command to the apple event */ - err = AECreateDesc(typeChar, command, strlen(command), &commandDesc); - if (err != noErr) { - NSLog(@"doscript: AECreateDesc(command): error %d\n", err); - goto bail; - } - err = AEPutParamDesc(&theAEvent, WITHCOMMAND, &commandDesc); - if (err != noErr) { - NSLog(@"doscript: AEPutParamDesc: error %d\n", err); - goto bail; - } - - /* send the command event to Terminal.app */ - err = AESend(&theAEvent, &theReply, kAEWaitReply, - kAENormalPriority, kAEDefaultTimeout, NULL, NULL); - - if (err != noErr) { - NSLog(@"doscript: AESend(docommand): error %d\n", err); - goto bail; - } - /* clean up and leave */ -bail: - AEDisposeDesc(&commandDesc); - AEDisposeDesc(&theAEvent); - AEDisposeDesc(&terminalAddress); - AEDisposeDesc(&theReply); - return err; -} diff --git a/Mac/OSX/PythonLauncher/factorySettings.plist b/Mac/OSX/PythonLauncher/factorySettings.plist deleted file mode 100644 index 120242135ce4..000000000000 --- a/Mac/OSX/PythonLauncher/factorySettings.plist +++ /dev/null @@ -1,87 +0,0 @@ - - - - - Python GUI Script - - debug - - inspect - - interpreter_list - - /usr/local/bin/pythonw - /usr/bin/pythonw - /sw/bin/pythonw - - honourhashbang - - nosite - - optimize - - others - - verbose - - with_terminal - - - Python Script - - debug - - inspect - - interpreter_list - - /usr/local/bin/pythonw - /usr/local/bin/python - /usr/bin/pythonw - /usr/bin/python - /sw/bin/pythonw - /sw/bin/python - - honourhashbang - - nosite - - optimize - - others - - verbose - - with_terminal - - - Python Bytecode Document - - debug - - inspect - - interpreter_list - - /usr/local/bin/pythonw - /usr/local/bin/python - /usr/bin/pythonw - /usr/bin/python - /sw/bin/pythonw - /sw/bin/python - - honourhashbang - - nosite - - optimize - - others - - verbose - - with_terminal - - - - diff --git a/Mac/OSX/PythonLauncher/main.m b/Mac/OSX/PythonLauncher/main.m deleted file mode 100755 index 6841433f429f..000000000000 --- a/Mac/OSX/PythonLauncher/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// PythonLauncher -// -// Created by Jack Jansen on Fri Jul 19 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import -#include - -int main(int argc, const char *argv[]) -{ - char *home = getenv("HOME"); - if (home) chdir(home); - return NSApplicationMain(argc, argv); -} diff --git a/Mac/OSX/Tools/pythonw.c b/Mac/OSX/Tools/pythonw.c deleted file mode 100644 index e70a76f846f5..000000000000 --- a/Mac/OSX/Tools/pythonw.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This wrapper program executes a python executable hidden inside an - * application bundle inside the Python framework. This is needed to run - * GUI code: some GUI API's don't work unless the program is inside an - * application bundle. - */ -#include -#include - -static char Python[] = PYTHONWEXECUTABLE; - -int main(int argc, char **argv) { - argv[0] = Python; - execv(Python, argv); - err(1, "execv: %s", Python); - /* NOTREACHED */ -} diff --git a/Mac/OSX/fixapplepython23.py b/Mac/OSX/fixapplepython23.py deleted file mode 100644 index 181181ea79fc..000000000000 --- a/Mac/OSX/fixapplepython23.py +++ /dev/null @@ -1,118 +0,0 @@ -"""fixapplepython23 - Fix Apple-installed Python 2.3 (on Mac OS X 10.3) - -Python 2.3 (and 2.3.X for X<5) have the problem that building an extension -for a framework installation may accidentally pick up the framework -of a newer Python, in stead of the one that was used to build the extension. - -This script modifies the Makefile (in .../lib/python2.3/config) to use -the newer method of linking extensions with "-undefined dynamic_lookup" -which fixes this problem. - -The script will first check all prerequisites, and return a zero exit -status also when nothing needs to be fixed. -""" -import sys -import os -import gestalt - -MAKEFILE='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/Makefile' -CHANGES=(( - 'LDSHARED=\t$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)\n', - 'LDSHARED=\t$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup\n' - ),( - 'BLDSHARED=\t$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)\n', - 'BLDSHARED=\t$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup\n' - ),( - 'CC=\t\tgcc\n', - 'CC=\t\t/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc\n' - ),( - 'CXX=\t\tc++\n', - 'CXX=\t\t/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++\n' -)) - -GCC_SCRIPT='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc' -GXX_SCRIPT='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++' -SCRIPT="""#!/bin/sh -export MACOSX_DEPLOYMENT_TARGET=10.3 -exec %s "${@}" -""" - -def findline(lines, start): - """return line starting with given string or -1""" - for i in range(len(lines)): - if lines[i][:len(start)] == start: - return i - return -1 - -def fix(makefile, do_apply): - """Fix the Makefile, if required.""" - fixed = False - lines = open(makefile).readlines() - - for old, new in CHANGES: - i = findline(lines, new) - if i >= 0: - # Already fixed - continue - i = findline(lines, old) - if i < 0: - print 'fixapplepython23: Python installation not fixed (appears broken)' - print 'fixapplepython23: missing line:', old - return 2 - lines[i] = new - fixed = True - - if fixed: - if do_apply: - print 'fixapplepython23: Fix to Apple-installed Python 2.3 applied' - os.rename(makefile, makefile + '~') - open(makefile, 'w').writelines(lines) - return 0 - else: - print 'fixapplepython23: Fix to Apple-installed Python 2.3 should be applied' - return 1 - else: - print 'fixapplepython23: No fix needed, appears to have been applied before' - return 0 - -def makescript(filename, compiler): - """Create a wrapper script for a compiler""" - dirname = os.path.split(filename)[0] - if not os.access(dirname, os.X_OK): - os.mkdir(dirname, 0755) - fp = open(filename, 'w') - fp.write(SCRIPT % compiler) - fp.close() - os.chmod(filename, 0755) - print 'fixapplepython23: Created', filename - -def main(): - # Check for -n option - if len(sys.argv) > 1 and sys.argv[1] == '-n': - do_apply = False - else: - do_apply = True - # First check OS version - if gestalt.gestalt('sysv') < 0x1030: - print 'fixapplepython23: no fix needed on MacOSX < 10.3' - sys.exit(0) - # Test that a framework Python is indeed installed - if not os.path.exists(MAKEFILE): - print 'fixapplepython23: Python framework does not appear to be installed (?), nothing fixed' - sys.exit(0) - # Check that we can actually write the file - if do_apply and not os.access(MAKEFILE, os.W_OK): - print 'fixapplepython23: No write permission, please run with "sudo"' - sys.exit(2) - # Create the shell scripts - if do_apply: - if not os.access(GCC_SCRIPT, os.X_OK): - makescript(GCC_SCRIPT, "gcc") - if not os.access(GXX_SCRIPT, os.X_OK): - makescript(GXX_SCRIPT, "g++") - # Finally fix the makefile - rv = fix(MAKEFILE, do_apply) - sys.exit(rv) - -if __name__ == '__main__': - main() diff --git a/Mac/OSX/README b/Mac/README similarity index 100% rename from Mac/OSX/README rename to Mac/README diff --git a/Mac/OSXResources/app/Info.plist b/Mac/Resources/app/Info.plist similarity index 100% rename from Mac/OSXResources/app/Info.plist rename to Mac/Resources/app/Info.plist diff --git a/Mac/OSXResources/app/PkgInfo b/Mac/Resources/app/PkgInfo similarity index 100% rename from Mac/OSXResources/app/PkgInfo rename to Mac/Resources/app/PkgInfo diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/PackageManager.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/PackageManager.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/PackageManager.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/PackageManager.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/community.html b/Mac/Resources/app/Resources/English.lproj/Documentation/community.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/community.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/community.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/doc/index.html b/Mac/Resources/app/Resources/English.lproj/Documentation/doc/index.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/doc/index.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/doc/index.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/finder.html b/Mac/Resources/app/Resources/English.lproj/Documentation/finder.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/finder.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/finder.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/gui.html b/Mac/Resources/app/Resources/English.lproj/Documentation/gui.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/gui.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/gui.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/IDE.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/IDE.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/IDE.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/IDE.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/hello_world.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/hello_world.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/hello_world.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/hello_world.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/index.html b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/index.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/index.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/index.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/loading_ide.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/loading_ide.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/loading_ide.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/loading_ide.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/making_new_window.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/making_new_window.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/making_new_window.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/making_new_window.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/new_ide_window.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/new_ide_window.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/new_ide_window.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/new_ide_window.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/new_window_made.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/new_window_made.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/new_window_made.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/new_window_made.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/output_window.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/output_window.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/output_window.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/output_window.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/simple_commands.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/simple_commands.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/simple_commands.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/simple_commands.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/syntax_error.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/ide/syntax_error.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/ide/syntax_error.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/ide/syntax_error.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/index.html b/Mac/Resources/app/Resources/English.lproj/Documentation/index.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/index.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/index.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/intro.html b/Mac/Resources/app/Resources/English.lproj/Documentation/intro.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/intro.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/intro.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/packman.html b/Mac/Resources/app/Resources/English.lproj/Documentation/packman.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/packman.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/packman.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/python.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/python.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/python.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/python.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/pythonsmall.gif b/Mac/Resources/app/Resources/English.lproj/Documentation/pythonsmall.gif similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/pythonsmall.gif rename to Mac/Resources/app/Resources/English.lproj/Documentation/pythonsmall.gif diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/scripting.html b/Mac/Resources/app/Resources/English.lproj/Documentation/scripting.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/scripting.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/scripting.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/shell.html b/Mac/Resources/app/Resources/English.lproj/Documentation/shell.html similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/Documentation/shell.html rename to Mac/Resources/app/Resources/English.lproj/Documentation/shell.html diff --git a/Mac/OSXResources/app/Resources/English.lproj/InfoPlist.strings b/Mac/Resources/app/Resources/English.lproj/InfoPlist.strings similarity index 100% rename from Mac/OSXResources/app/Resources/English.lproj/InfoPlist.strings rename to Mac/Resources/app/Resources/English.lproj/InfoPlist.strings diff --git a/Mac/OSXResources/app/Resources/PythonApplet.icns b/Mac/Resources/app/Resources/PythonApplet.icns similarity index 100% rename from Mac/OSXResources/app/Resources/PythonApplet.icns rename to Mac/Resources/app/Resources/PythonApplet.icns diff --git a/Mac/OSXResources/app/Resources/PythonInterpreter.icns b/Mac/Resources/app/Resources/PythonInterpreter.icns similarity index 100% rename from Mac/OSXResources/app/Resources/PythonInterpreter.icns rename to Mac/Resources/app/Resources/PythonInterpreter.icns diff --git a/Mac/OSXResources/framework/English.lproj/InfoPlist.strings b/Mac/Resources/framework/English.lproj/InfoPlist.strings similarity index 100% rename from Mac/OSXResources/framework/English.lproj/InfoPlist.strings rename to Mac/Resources/framework/English.lproj/InfoPlist.strings diff --git a/Mac/OSXResources/framework/Info.plist b/Mac/Resources/framework/Info.plist similarity index 100% rename from Mac/OSXResources/framework/Info.plist rename to Mac/Resources/framework/Info.plist diff --git a/Mac/OSXResources/framework/version.plist b/Mac/Resources/framework/version.plist similarity index 100% rename from Mac/OSXResources/framework/version.plist rename to Mac/Resources/framework/version.plist diff --git a/Mac/OSXResources/iconsrc/IDE.psd b/Mac/Resources/iconsrc/IDE.psd similarity index 100% rename from Mac/OSXResources/iconsrc/IDE.psd rename to Mac/Resources/iconsrc/IDE.psd diff --git a/Mac/OSXResources/iconsrc/PackageManager.psd b/Mac/Resources/iconsrc/PackageManager.psd similarity index 100% rename from Mac/OSXResources/iconsrc/PackageManager.psd rename to Mac/Resources/iconsrc/PackageManager.psd diff --git a/Mac/OSXResources/iconsrc/PythonApplet.psd b/Mac/Resources/iconsrc/PythonApplet.psd similarity index 100% rename from Mac/OSXResources/iconsrc/PythonApplet.psd rename to Mac/Resources/iconsrc/PythonApplet.psd diff --git a/Mac/OSXResources/iconsrc/PythonCompiled.psd b/Mac/Resources/iconsrc/PythonCompiled.psd similarity index 100% rename from Mac/OSXResources/iconsrc/PythonCompiled.psd rename to Mac/Resources/iconsrc/PythonCompiled.psd diff --git a/Mac/OSXResources/iconsrc/PythonIcon.psd b/Mac/Resources/iconsrc/PythonIcon.psd similarity index 100% rename from Mac/OSXResources/iconsrc/PythonIcon.psd rename to Mac/Resources/iconsrc/PythonIcon.psd diff --git a/Mac/OSXResources/iconsrc/PythonSource.psd b/Mac/Resources/iconsrc/PythonSource.psd similarity index 100% rename from Mac/OSXResources/iconsrc/PythonSource.psd rename to Mac/Resources/iconsrc/PythonSource.psd diff --git a/Mac/OSXResources/iconsrc/PythonWSource.psd b/Mac/Resources/iconsrc/PythonWSource.psd similarity index 100% rename from Mac/OSXResources/iconsrc/PythonWSource.psd rename to Mac/Resources/iconsrc/PythonWSource.psd -- 2.47.3