From 392cafba4fb899f8a205f7962302b77db8c61980 Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Sun, 8 Oct 2006 17:41:25 +0000 Subject: [PATCH] Port of universal binary support for Mac OSX from python 2.5. This takes away the need for the out-of-tree universal binary support that was used to build the 2.4.3 installer. Missing here relative to that tree are some changes to IDLE, IMHO those patches aren't appropriate for the 2.4 branch and users are better of using 2.5's IDLE. --- Lib/distutils/sysconfig.py | 22 +- Lib/distutils/unixccompiler.py | 52 +- Lib/distutils/util.py | 49 + Lib/idlelib/EditorWindow.py | 7 + Lib/plat-mac/buildtools.py | 9 + Lib/platform.py | 3 +- Lib/test/test_applesingle.py | 4 +- Mac/BuildScript/README.txt | 35 + Mac/BuildScript/build-installer.py | 1050 +++++++++++++++++ Mac/BuildScript/ncurses-5.5.patch | 36 + Mac/BuildScript/resources/ReadMe.txt | 31 + Mac/BuildScript/resources/Welcome.rtf | 15 + Mac/BuildScript/resources/background.jpg | Bin 0 -> 45421 bytes .../scripts/postflight.documentation | 12 + Mac/BuildScript/scripts/postflight.framework | 33 + .../scripts/postflight.patch-profile | 71 ++ Mac/Modules/carbonevt/CarbonEvtsupport.py | 9 +- Mac/Modules/carbonevt/_CarbonEvtmodule.c | 9 +- Mac/Modules/cf/_CFmodule.c | 2 +- Mac/Modules/cf/cfsupport.py | 2 +- Mac/Modules/cf/pycfbridge.c | 2 +- Mac/Modules/gestaltmodule.c | 9 +- Mac/OSX/Extras.install.py | 1 + Mac/OSX/IDLE/IDLE.icns | Bin 0 -> 53456 bytes Mac/OSX/IDLE/Info.plist | 26 + Mac/OSX/IDLE/Makefile.in | 49 + Mac/OSX/IDLE/idlemain.py | 27 + Mac/OSX/Makefile | 273 ----- Mac/OSX/Makefile.in | 294 +++++ Mac/OSX/PythonLauncher/FileSettings.m | 25 +- Mac/OSX/PythonLauncher/Info.plist | 65 + Mac/OSX/PythonLauncher/Makefile.in | 81 ++ Mac/OSX/PythonLauncher/PythonCompiled.icns | Bin 57125 -> 60777 bytes Mac/OSX/PythonLauncher/PythonInterpreter.icns | Bin 45913 -> 42658 bytes Mac/OSX/PythonLauncher/PythonSource.icns | Bin 50112 -> 54522 bytes Mac/OSX/PythonLauncher/PythonWSource.icns | Bin 49891 -> 54522 bytes Mac/OSX/fixapplepython23.py | 14 +- Mac/OSX/pythonw.c | 17 + .../app/Resources/PythonApplet.icns | Bin 36565 -> 63136 bytes .../app/Resources/PythonInterpreter.icns | Bin 45913 -> 42658 bytes Mac/scripts/BuildApplet.icns | Bin 35833 -> 120107 bytes Makefile.pre.in | 62 +- Modules/expat/expat_config.h | 19 + Modules/posixmodule.c | 49 + Modules/socketmodule.c | 36 +- Modules/timemodule.c | 27 +- Python/mactoolboxglue.c | 13 +- README | 6 +- configure | 102 +- configure.in | 94 +- pyconfig.h.in | 17 +- setup.py | 64 +- 52 files changed, 2465 insertions(+), 358 deletions(-) create mode 100644 Mac/BuildScript/README.txt create mode 100755 Mac/BuildScript/build-installer.py create mode 100644 Mac/BuildScript/ncurses-5.5.patch create mode 100644 Mac/BuildScript/resources/ReadMe.txt create mode 100644 Mac/BuildScript/resources/Welcome.rtf create mode 100644 Mac/BuildScript/resources/background.jpg create mode 100755 Mac/BuildScript/scripts/postflight.documentation create mode 100755 Mac/BuildScript/scripts/postflight.framework create mode 100755 Mac/BuildScript/scripts/postflight.patch-profile create mode 100644 Mac/OSX/IDLE/IDLE.icns create mode 100644 Mac/OSX/IDLE/Info.plist create mode 100644 Mac/OSX/IDLE/Makefile.in create mode 100644 Mac/OSX/IDLE/idlemain.py delete mode 100644 Mac/OSX/Makefile create mode 100644 Mac/OSX/Makefile.in create mode 100644 Mac/OSX/PythonLauncher/Info.plist create mode 100644 Mac/OSX/PythonLauncher/Makefile.in create mode 100644 Mac/OSX/pythonw.c create mode 100644 Modules/expat/expat_config.h diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index d4eb368e9f37..6df342b8ad7f 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -361,8 +361,8 @@ def _init_posix(): # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so # it needs to be compatible. # If it isn't set we set it to the configure-time value - if sys.platform == 'darwin' and g.has_key('CONFIGURE_MACOSX_DEPLOYMENT_TARGET'): - cfg_target = g['CONFIGURE_MACOSX_DEPLOYMENT_TARGET'] + if sys.platform == 'darwin' and g.has_key('MACOSX_DEPLOYMENT_TARGET'): + cfg_target = g['MACOSX_DEPLOYMENT_TARGET'] cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '') if cur_target == '': cur_target = cfg_target @@ -495,6 +495,24 @@ def get_config_vars(*args): _config_vars['prefix'] = PREFIX _config_vars['exec_prefix'] = EXEC_PREFIX + if sys.platform == 'darwin': + kernel_version = os.uname()[2] # Kernel version (8.4.3) + major_version = int(kernel_version.split('.')[0]) + + if major_version < 8: + # On Mac OS X before 10.4, check if -arch and -isysroot + # are in CFLAGS or LDFLAGS and remove them if they are. + # This is needed when building extensions on a 10.3 system + # using a universal build of python. + for key in ('LDFLAGS', 'BASECFLAGS', + # The values below are derived from the earlier ones, + # but subsitution has been by now. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + flags = _config_vars[key] + flags = re.sub('-arch\s+\w+\s', ' ', flags) + flags = re.sub('-isysroot [^ \t]*', ' ', flags) + _config_vars[key] = flags + if args: vals = [] for name in args: diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index 56998c3507e9..fd0f4cf5712c 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -42,6 +42,49 @@ from distutils import log # should just happily stuff them into the preprocessor/compiler/linker # options and carry on. +def _darwin_compiler_fixup(compiler_so, cc_args): + """ + This function will strip '-isysroot PATH' and '-arch ARCH' from the + compile flag if the user has specified one of them in extra_compile_flags. + + This is needed because '-arch ARCH' adds another architecture to the + build, without a way to remove an architecture. Furthermore GCC will + barf if multiple '-isysroot' arguments are present. + """ + stripArch = stripSysroot = 0 + + compiler_so = list(compiler_so) + kernel_version = os.uname()[2] # 8.4.3 + major_version = int(kernel_version.split('.')[0]) + + if major_version < 8: + # OSX before 10.4.0, these don't support -arch and -isysroot at + # all. + stripArch = stripSysroot = True + else: + stripArch = '-arch' in cc_args + stripSysroot = '-isysroot' in cc_args + + if stripArch: + while 1: + try: + index = compiler_so.index('-arch') + # Strip this argument and the next one: + del compiler_so[index:index+2] + except ValueError: + break + + if stripSysroot: + try: + index = compiler_so.index('-isysroot') + # Strip this argument and the next one: + del compiler_so[index:index+2] + except ValueError: + pass + + return compiler_so + + class UnixCCompiler(CCompiler): compiler_type = 'unix' @@ -108,8 +151,11 @@ class UnixCCompiler(CCompiler): raise CompileError, msg def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + compiler_so = self.compiler_so + if sys.platform == 'darwin': + compiler_so = _darwin_compiler_fixup(compiler_so, cc_args + extra_postargs) try: - self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + + self.spawn(compiler_so + cc_args + [src, '-o', obj] + extra_postargs) except DistutilsExecError, msg: raise CompileError, msg @@ -173,6 +219,10 @@ class UnixCCompiler(CCompiler): linker = self.linker_so[:] if target_lang == "c++" and self.compiler_cxx: linker[0] = self.compiler_cxx[0] + + if sys.platform == 'darwin': + linker = _darwin_compiler_fixup(linker, ld_args) + self.spawn(linker + ld_args) except DistutilsExecError, msg: raise LinkError, msg diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py index 061092b6734b..135cf39d63bc 100644 --- a/Lib/distutils/util.py +++ b/Lib/distutils/util.py @@ -67,6 +67,55 @@ def get_platform (): m = rel_re.match(release) if m: release = m.group() + elif osname[:6] == "darwin": + # + # For our purposes, we'll assume that the system version from + # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set + # to. This makes the compatibility story a bit more sane because the + # machine is going to compile and link as if it were + # MACOSX_DEPLOYMENT_TARGET. + from distutils.sysconfig import get_config_vars + cfgvars = get_config_vars() + + macver = os.environ.get('MACOSX_DEPLOYMENT_TARGET') + if not macver: + macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') + + if not macver: + # Get the system version. Reading this plist is a documented + # way to get the system version (see the documentation for + # the Gestalt Manager) + try: + f = open('/System/Library/CoreServices/SystemVersion.plist') + except IOError: + # We're on a plain darwin box, fall back to the default + # behaviour. + pass + else: + m = re.search( + r'ProductUserVisibleVersion\s*' + + r'(.*?)', f.read()) + f.close() + if m is not None: + macver = '.'.join(m.group(1).split('.')[:2]) + # else: fall back to the default behaviour + + if macver: + from distutils.sysconfig import get_config_vars + release = macver + osname = 'macosx' + platver = os.uname()[2] + osmajor = int(platver.split('.')[0]) + + if osmajor >= 8 and \ + get_config_vars().get('UNIVERSALSDK', '').strip(): + # The universal build will build fat binaries, but not on + # systems before 10.4 + machine = 'fat' + + elif machine in ('PowerPC', 'Power_Macintosh'): + # Pick a sane name for the PPC architecture + machine = 'ppc' return "%s-%s-%s" % (osname, release, machine) diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py index c0b66a3aa06a..0ab148a90fe2 100644 --- a/Lib/idlelib/EditorWindow.py +++ b/Lib/idlelib/EditorWindow.py @@ -65,9 +65,16 @@ class EditorWindow: 'Python%d%d.chm' % sys.version_info[:2]) if os.path.isfile(chmfile): dochome = chmfile + + elif sys.platform == 'darwin': + dochome = os.path.join(sys.prefix, + 'Resources/English.lproj/Documentation/index.html') dochome = os.path.normpath(dochome) if os.path.isfile(dochome): EditorWindow.help_url = dochome + if sys.platform == 'darwin': + # Safari requires real file:-URLs + EditorWindow.help_url = 'file://' + EditorWindow.help_url else: EditorWindow.help_url = "http://www.python.org/doc/current" currentTheme=idleConf.CurrentTheme() diff --git a/Lib/plat-mac/buildtools.py b/Lib/plat-mac/buildtools.py index c83e2180242d..9a3936aa4488 100644 --- a/Lib/plat-mac/buildtools.py +++ b/Lib/plat-mac/buildtools.py @@ -293,6 +293,15 @@ def process_common_macho(template, progress, code, rsrcname, destname, is_update dft_icnsname = os.path.join(sys.prefix, 'Resources/Python.app/Contents/Resources/PythonApplet.icns') if os.path.exists(dft_icnsname): icnsname = dft_icnsname + else: + # This part will work when we're in the build environment + import __main__ + dft_icnsname = os.path.join( + os.path.dirname(__main__.__file__), + 'PythonApplet.icns') + if os.paht.exists(dft_icnsname): + icnsname = dft_icnsname + if not os.path.exists(rsrcname): rsrcname = None if progress: diff --git a/Lib/platform.py b/Lib/platform.py index 25b946a70b56..547897d42b0c 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -601,7 +601,8 @@ def mac_ver(release='',versioninfo=('','',''),machine=''): versioninfo = (version,stage,nonrel) if sysa: machine = {0x1: '68k', - 0x2: 'PowerPC'}.get(sysa,'') + 0x2: 'PowerPC', + 0xa: 'i386'}.get(sysa,'') return release,versioninfo,machine def _java_getprop(name,default): diff --git a/Lib/test/test_applesingle.py b/Lib/test/test_applesingle.py index 2a2d60ad32e3..d533f1abc04f 100644 --- a/Lib/test/test_applesingle.py +++ b/Lib/test/test_applesingle.py @@ -15,8 +15,8 @@ AS_VERSION=0x00020000 dataforkdata = 'hello\r\0world\n' resourceforkdata = 'goodbye\ncruel\0world\r' -applesingledata = struct.pack("ll16sh", AS_MAGIC, AS_VERSION, "foo", 2) + \ - struct.pack("llllll", 1, 50, len(dataforkdata), +applesingledata = struct.pack(">ll16sh", AS_MAGIC, AS_VERSION, "foo", 2) + \ + struct.pack(">llllll", 1, 50, len(dataforkdata), 2, 50+len(dataforkdata), len(resourceforkdata)) + \ dataforkdata + \ resourceforkdata diff --git a/Mac/BuildScript/README.txt b/Mac/BuildScript/README.txt new file mode 100644 index 000000000000..c556de8329d1 --- /dev/null +++ b/Mac/BuildScript/README.txt @@ -0,0 +1,35 @@ +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/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py new file mode 100755 index 000000000000..a88e526bf38f --- /dev/null +++ b/Mac/BuildScript/build-installer.py @@ -0,0 +1,1050 @@ +#!/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="/" + +ARCHLIST=('i386', 'ppc',) + +# Source directory (asume we're in Mac/BuildScript) +SRCDIR=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( + name="Bzip2 1.0.3", + url="http://www.bzip.org/1.0.3/bzip2-1.0.3.tar.gz", + configure=None, + install='make install PREFIX=%s/usr/local/ CFLAGS="-arch %s -isysroot %s"'%( + shellQuote(os.path.join(WORKDIR, 'libraries')), + ' -arch '.join(ARCHLIST), + SDKPATH, + ), + ), + dict( + name="ZLib 1.2.3", + url="http://www.gzip.org/zlib/zlib-1.2.3.tar.gz", + configure=None, + install='make install prefix=%s/usr/local/ CFLAGS="-arch %s -isysroot %s"'%( + shellQuote(os.path.join(WORKDIR, 'libraries')), + ' -arch '.join(ARCHLIST), + SDKPATH, + ), + ), + 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="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 IDLE (an interactive Python IDLE), + Python Launcher and Build Applet (create application bundles + from python scripts). + + It also installs a number of examples and demos. + """, + 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, + ), + dict( + name="PythonSystemFixes", + long_name="Fix system Python", + readme="""\ + This package updates the system python installation on + Mac OS X 10.3 to ensure that you can build new python extensions + using that copy of python after installing this version of + python. + """, + postflight="../OSX/fixapplepython23.py", + 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),)) + + if configure is not None: + 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, ARCHLIST) + + + +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()) + + # This one is not handy as a template variable + data = data.replace('$PYTHONFRAMEWORKINSTALLDIR', '/Library/Frameworks/Python.framework') + 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: + # The major version (such as 2.5) is included in the pacakge name + # because haveing two version of python installed at the same time is + # common. + pkgname = '%s-%s'%(recipe['name'], getVersion()) + 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-%s.pkg'%(item['name'], getVersion()), + IFPkgFlagPackageSelection='selected' + ) + for item in PKG_RECIPES + ], + IFPkgFormatVersion=0.10000000149011612, + IFPkgFlagBackgroundScaling="proportional", + IFPkgFlagBackgroundAlignment="left", + IFPkgFlagAuthorizationAction="RootAuthorization", + ) + + 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) + time.sleep(1) + 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: + # There is a problem with getting this into the pax(1) archive, + # just ignore directory icons for now. + return + + 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") + patchFile("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/BuildScript/ncurses-5.5.patch b/Mac/BuildScript/ncurses-5.5.patch new file mode 100644 index 000000000000..0eab3d366687 --- /dev/null +++ b/Mac/BuildScript/ncurses-5.5.patch @@ -0,0 +1,36 @@ +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/BuildScript/resources/ReadMe.txt b/Mac/BuildScript/resources/ReadMe.txt new file mode 100644 index 000000000000..1a6e63764ff9 --- /dev/null +++ b/Mac/BuildScript/resources/ReadMe.txt @@ -0,0 +1,31 @@ +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/BuildScript/resources/Welcome.rtf b/Mac/BuildScript/resources/Welcome.rtf new file mode 100644 index 000000000000..cb65f0940971 --- /dev/null +++ b/Mac/BuildScript/resources/Welcome.rtf @@ -0,0 +1,15 @@ +{\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/BuildScript/resources/background.jpg b/Mac/BuildScript/resources/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3c76406cf4a264410e12d5af1c11380164f1e66 GIT binary patch literal 45421 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�nmK4 zoMs>}29_fg&w&AIXWMecbQD!*FE%9$ox9# z&kf;0YT>cM*O-$cxkn^+Q*6Tq?m-o$8+>7L_y^E|=Rp!4YA1e=@bcfC27Z)PWm=E-y0|)buXJ`xvz@~I zP;R$pAfjTE!7dXCK<;QI%@R19wCwm=%j;=EqGsM1j61BeY`IVY}CHrmJM-lT4>J{a*4092~+kgY}J=E_?J~ZV%1P>Hv3dTzRSr zHdGxd9j7Cj(Mci7)pLlHT+Ww05QV%t8bQml(CYhad14wf7nDX<9tvVidEgcasaU*L z=fO0QTG*j*|NdoXzw|p^_0A4F4~9J6Wk3WUUL60iEnfcc0>j{CU41nig#@-T%cdAgySyYIl666Db%igNq*>|XHanO;Mc+Fn zYL=~*(G+ESt5B9oho{MS%$ZTWV+ffeX;i0`&P3)k8%Q4&LHzZQpnV{|L@Z15J0J(EFzMx_-M)W2V0X}bVlUtJgpopq`7rp zxX2l->r$8=u6v@0s#>XngYPKK-R)E)YR2}Ba{xI}A(#5qseRzqFBVi3OqMwkO$@nE z$miA754m%dcc=NKh_q6MiKue5?B*imlsA*f2|>XofCHpYsyveiW#y6^75^O0+sYbM7f!o)#yp)I3p_4 z|5OHa%Zj@~d=~|%J};G;`<)QPPN7tNZ<t6f={S&YHj&9tp^e|424x2L9R zb*St!x7VFKX;)h6+A1f`z*WksL9>;aW>%S%B;wM6%VK2BkQhjDRB+;|1|!NUd&{DV zNxn44NTrPkcbvcSt=Hqx5yQip>P++q0>b-uj@^3o#)Y@uKOT93G}2P#Af}VV$#}|o z5SkXGbYi$puS+o?6i{Mts2eO<7>RO=(*_N52TaAIIo<99Z^ZvaNT+42d%omWA?Jb1yv?*|l7&^v;{b*# zAeH-5M5`Ska%2tbb)zNzJ@+RN2WS7LNG~}%%FRVgqM&4%4zD#*fm=RTJ1zcV%j7g3s_Tgfj+oY` zmGbQpDd^}`km1zDT|c^~?}_7V zJwRzmL+*V-k@zb=6M|+vW;Nmja>xQXYkfB^hGlmZJE^dgV-Nf@V0ub+)*4yF{k1F&}V}P{?Wf zFApfws^t&CnLxRNIq3z61b1A#@D-!Z~;ljRhwoJ~U0S}yvWYM$R9l%-G{^n@oBH?o3K zC@X`7NXw);7@0qzp|-i5y=!Ymj;h3UkKg7q+-%@kLDFU#)gM8vcF6U_TaHI+>gv6@ zOLkJ)s+QfDc+fgjp}uY%0wu?TwNeJxLG75A0s{5RRZeNq{2)U{4l^yWnrFCf9rc><`noSsPHv#yzUO-$POXQ%s`~8ieR{3xhy7&A zM?nup^Z_D#ZQ$C^Gg*pS+@7B~uZg!w$@@{gxxRYQC1Kr8+cEiXOVHv3c{+W{mIKkC5Z#KK>~8ncu_UZ837d%wv!PfHmu>DJicstj&dW*_9M3iJ z^d;+XnblESG@QM6)qug`R;Y%Xt!=d7qbFmcO1tk5{fPni5+ zc7y#IC-J*J6sUyO!fsfGA~LuiOjJ&iYS#=Q_}5jn8(kl8jP|jl`HxIQU0Z$R=BE?)=qC4X-{R_jlyXpQCdSy5?12u@Lgy~-`}%yHF7voX77y0|4!%Y< zY@Rc=_ZN{xx{gSM_{El)2|0zVA=YgBq;*j9>c;%^Q-&Fvk4+zXIF<4R2Z_Bgx*NSd zTinm{^dOSt{CzZc{A(PHZkk&=tQ&g6!{^G8rQut4*j+Nz%z`HQ1pcVt>JX$ynW(Pc zX<(;kCHr%gaPHn6(Dy4NynK=G7klQ~hl~baqv)k^ZB0eGTo1G$^)$W|awTRhOG7j4 zr;uaGt~@(IcFpAPK+Vo6Dpt27WnAUPPQjm1AQ7p>q~Zut-lX>PpFZzT^`XP;uBZJs zygqYPq8AZlmf2>F7t7?m+t+pb64tB!6gqHl^hbijU@Iy9N!4^Enh(gjo6J=nBqDWc z=O`KHxU9$hm7-V0)xZh560#nhynC%>HMTY7)1gRNRkbdu@dMxs%&%Mtk2L%#AB6M9 z{OM^M__7VI?fm7Hz$@whbk?bpy*8tk~S`+%e6Yu@q@v+zSdmOe)%X#w0~$m%8~RHQUloVHlf zLaLpCA-dwlEDH*-GFja1S4*7Xem7 zqu=61imuDJ)f$b3g@F@$Gbu9sdBqOgavJru0_wK1Vp|sHN(+KPtR^UdjVYP_&yk_9TGKmRsG@Ut*Jm2kHtGZO&mgmW|_jTuiK|t0XIoR2nj$YRku4!EH z6JMl_zFrV~v5|O1LJm1B@~-+txBI?fFd0?BRfBJfv71R2V!I1I!uG*N(pK2Z{idOL zdYwf)tMmRxp4F4ZS0h0w;NJlb5S?MZ~2z{3_7PWL=z+D0)>`v-SI`Y8$* z_?ojp1l$DuIr{yZ^v|-8eEWovW5e-@`qrGDP32q#{yiRGf_vjakOslL)ovGbWsAQ0_)%q<$Z9~pgGgn? zP2}W+6zu${Fykx);i?ema>j1htCfUIHKc>an`k@?oA&Ny0mRYZ3j;Q$y}vK2j5#M6 zoftlo+Z3=9Q|&V-Pow=+T@x2{E7b&EGil)9ubJZI6TIlLph1jP(Mft( z{ng2qZn)(MijEwP>*n@dRn@C8_8{ou#j8tuUR8eof*F1oxTUPImebM1(n>^KFOO3I zJ8yMLyBdLkTHKgVWt_cmS6Ai`Mj080)C-znWnKd&SKye@)wRmLq zCm8-!vzt@%4hTTfDWz> z&zb`A@f|WqamsA-|g7Ukdza+{IP`}q3>|dT}5vN&qJBAhKr* z+^`8xZ6A3Pb141>nNRv|ZSKHO>T3&oG%Pb*s{iNMQSrXjM$odtyX%}5?x7o^$9-z7|n2<~T zl~g@0BBih!1hUAUQ4i08o~N(E7nrgeEoPb8oghlZs${l0=~(uT>mSCSsiX+^Ie4C$ zc5g(t1Sxb-RS#LuKGM&ftTMHkrO#_<%`>IzB8oI!80sWKZl-f^4(g!SjH-+=BC@C0 z-x)IcK&atRc|XRvGsj#&$!f;vz>nz=B3p-I?)vnaDsZE%nDu6BZYHVsPRR=vRJ9gO z8bL-CSE!)lFK5xsL~`hKfKf!n9fE6Cb<2LHlg3G7;PA>mvZiZt5&Gtfl>fI&u3TKi ze7c(y4kQYNv@l23hy$GF-@h25A8^f#vk1bis!u)A3Y+VM4Gg>juT=H>FpD!D^~82I zYu|alD~qED2$t>D%G3z)0Z^HSY*hqm+Ml2FjpgF_%Qmv$ zjVXtFNBC-7P)Vmr`RpJF91gNVqTI0M=8FVr)-s!IR+`mErS6r_ExjHdz9w0`xQZ+8 z{C276V#v>}-_QjJ&6r>jz+G&qRG@Zkd0mejXvu3ziSmST&2L5!%A*8yN5dxCf?n|o zac#S7*?=Adtog|inxGdiczU<+^=ZuX0zCYM!2m_&%ngIDQ&nMFwx?y6U(=(#52z{` zRcOCXJPecihzR7Nz3Q$_PId9|#aNfg*qtqyun;y8-}h$AbihV4FBBNCbQnM|*O`Pa zXmda6%;*57BBpl{njj02C$X|-v{Mc z*^)9U3))x2<8pPt&s=BkSTd5Ad#Q33bP?|XpTw6&*1qkljLzbKZN38Q_zNg6QL9W< zLaJPaZG}%w|2mek3IJQ}gjMq2o1WYCOjHH_=-fv>)w+vfsd5^9 z`bg_K8EYwH%JXxQiX>tW#F^CSFZn|@|Cy4_*##a zYa^Z`QGNTzW~^Y7v3{#&b0c)7wu_bUFJnQ&&DD9Dv%PjxDmH;V0eMz@B8bZKQggaKC6GV%8xBBgM7&T8JcM!aqts)oHlrdK;Mp0}EwYK*?kVxY_mLF^OR`)@fK?!)QLzTJID!B93 z6^q+0@51hT1z22DOHoS%ii?UADk;Vqa%=WL7bC8XZzwA|3-fQHrIb7A+B?V{GzOSB zZ9I2Hd={`z(j`{8xV<=?x?x2L-&xsAwbE2#rJL45CS(&@taY&&e8SaL{yNN+!cWP~ zo0-6-3H;jnaK1|PgN`ht_BeS|af;QT?qq!Wb0DJT));<7*&0=GAdRos9Q3jrPfAz5 zOl|PQBK^gx4^B{(13ij`j=QQhRDhRL%3#~_VXJgMmZwMh1ZO7V5FbWb0Qu*@g9b%1 zf5uQfS9B$%*qSa|Z`}E6UmcR|$2ylzawnC!+c5nYHg#EmEd7u55h?2&vObL4LN&@a01gJSdtYPbeEpvb2up*i zO);`2vfbGO3z#!5F98k;lSVEQZky@;3#Cy^2yN*z(HN=$8KWe6zbgZ8|0yqRATp)# zZk$|}aI(pdB*^G=B2xuwuVwF>=D;&r7cZ)tld&hw@EuNWju#*YnY~61J!f2B33KGo za$=j5cF^d8xorInnn~N}B`zWPrgxFnQ^V-@jw$S+fsQdzOR|`*$S$8`oN=&qesK|p zidAg<&2-SeARMx)4P#?p<{VnrfKlYKzX9vo6kHRMOVy~wWG(Zx?ZRL zSa=9dl9fr^{c3sT=Gi3dNXP^%-fl4bGk%$E#jIf znhxmr!TwlhcT*!WM_{9EZpcx<)?fCmrQhG|#j)k;_6dJ2thM?k8Mk$v;4N+vYEYyZ zj*5g?HRtJvL)Xa!3dL3gBiBsJ0~i!*1_a$%N=XJMCe2GTlUfS_)Qn~G7c^>B`LE2a zTGUdlIfd9TyhAVZ`lU7iT!B0b=5H9nEtj|S?YEj_SL`n31|4+xR9H2?+G^Ht@0^A@ zqVON!kNW5S6-TmIi@NN}*W(yTXdH3sDmz54ZUIkmv9>VBM%%Wl;xVW)u%P2$h*JpUbO7Bo1ss@lO*HUnC3V~u(c7A2ZhCS)hnVOD?P!&P%dN9^Fc_c0GM zXIUxbYp>?3Nx^UfJE=rnq18u`m?sZss&{V;6T`?~zP+5-7ap&H#CTvQVNhTOH*)WTUF7W&D~K3Dx;FwQ^e=j!mzyRphmD8(1HU;Gwx zvUBGwBo19-=LFBD|0aDyie%6z-)Sp3sE{#AWeqy~!K$?XkopwuIXMNeaz@3+#X)qY z2*49;tsmb`xu+qK_VC_o7A48dKJFXKEz=%>PX#YlogOK`S9fYzmeiw-Oa^xvuCHS! zFn0CsAjHB`8zY;;3~j6}HCq2WcENBUDnEhrW4s!l8eI-*j~0Lv2@7V&8V|*e8vk&p za2Ta$!om1rI+MK;K+M!RORad(lk!b~XqrDS$v9CNTGEaoWI%)7F|LNpo}+AjLOd@u zM6DTwC4UPfzLc`u6qQ34ZgQ7@Pl-S?{`t=bUKP7=mw8Ivn{%7IP4cmY)cXH{$s~4@ zbDQ(o4)B*o9@-j>$K)oIBKhX?r*e@JxB#vMgl``R)>y2i3Tyl7k_Kjd^Xw+ z4ls}ig<={AB5F94uDO2StJQRh%hau92t01Jg#-_vUxc9h>;fM#oDq2Z^pmz~sMg7A zNK-jx&hoFqlw^t?@fN(SGY_@og>o~cjG95UppdIvEpac^aae~ANa%-hCFH`s&%PZR z&P?QNdFDa}nkRe~8{UhC5~T6)#pI%QNcuhtyh3(I8swCd;~V0s8`dAgO4+z-&ri>) z=vDM_awc5Y+ldV7W-?AykcHd-SpG>Jj*8)&Ai|BcB5U`PBFhlR~sC?2TsGTDHdt|3NP;IR`#Zr!6J7;H8_yai7bC zu@JgQuVpB7RPqBuSxx%>W)~{^+oy7$>~qI{RW*CP6~Iwv(uUBH8IBe5?|lc!%@^bW}g@qh%m)41H1MlF2TR zEVqp@6s8^~Z}SI-jj2BcoO;>WfwLRLg_GOY2YI%JoOgMCHXt5o^h8PM(^`)t91ke( zNias2aXi5zZhSk26w;c6Wq!>V(?^SQ228@pj0dg6tqY=tY|S>U$5dK+x;}Z`e<&v% zdVMx*?E05sE&VFn&VtsSBwu%Zwt%%WQ%6_!G!9ii)8V6D&5M(IMiQNZ8BazMjSj|3 z!O!6!M?&Q}&{z*jP>2h$7`&$V zz+_a}6QJb2ug}t1V0Fu#Ns3vPU{ov5NzeATpjdduYvqJ=RJF*LQv<06D#@DXhu%YmIw$O(g32M`gv z8&cWqs9)-^!?im0Ia9?Qk;CH|%EjG~GTn5T8x|tVSeHh30ItUyx4j<1pA^KxbVHM+ zVO%rGqcdF}hyw^Wp=a*v>(>KuaHS7@|{XOp@WL`9+kDJZW2o((!9 zH0F3~EUD=@1c===(MJqqDBY=a?fcleeO$8=s+s95a@6(3JI+Q}VdK^wk)vRJQV3kR z-re4Y85@M7J+l-X=fQv%MnJ9{ox_3k)E;BGvnK*}TcZI9lm^=6$+9{Z=sV*4;cj4d z!f^y~?M${U;nn3FO7Ww+Rda||>N^;+kQ7BfkYhKj_x1hX#nDWz_7l!pE0haoH6Q-~ z4)tRN5`6C@6RB}!MR4nEH3o7N(O3*f8VCiV^>&8t;asV^9?gs>o4p0}b0a~`(0Bm69RzZ%VAeHo;H zJkgE|VMWAj_?YNaotuOP< zKa$_g{S#W?k0}uaZ5Y0hF^AMi(zrt(aO5<2Cew*q$gq_!)g?cMnA}l?j&uMa;E6&O zuA+Oj!nJ%_KqBJQ6Nxe^nbnqub-_-|yV^+@XXBp((ysXUX{+-uyT`5G8}YRJ=lzf( z>i651x67?4^sxKV<*w7E2GcY8uWI0Z$pdn)al5?SD~w!Q&SvyXYA@3>>&qSZyAI#4 z74TD~ta>FG0I%j<9J~GPfvCk9OS1(Kr<#a~c?0TIyA1Tt3wnf_MJ$e4@I5{hxfrZOSsl(5!8-(F7^t$x15}$z5{rV;p z>(@QL)Xp=tV1579)T80D@SS-6b1AjFD(Z7W2>1hCS?mf=cmTj(d z)^593vdKC$bRl#bZ}O}syGOB%6=!Q{TL2kk~&e2TNXTF944O0F>5RZhY?HUthC!XHIS@xyW_mrh2 z?YhJ^nxtq~A1eEi*VJ#;#Ercz@8(t>jwM3R+~-$WS%EZ%GAlZqkDFa-Jd)^&+SW4zz*bXcNjx-pGNYUfZ}=na`@@t-H8ErU>`5YV}Jw+Coh1Ewmf#< z>NxQ_sQRBU)d4tK`oIM%DDA5E#@;|jYjeH^PFFT?8B&&O{051n);H!y8jGizD%%*| z;#Qy1bm+$Aqks_UbnH95Y2~eO)R^p2Q{?+)x;%839*xTx<36<#)J7@?jgaWI+*$cf z6`_gr1ng&7`ku{6eV?*E{p&U~=~54C_M#0C=}B+I`-8Nu{!P9!YMfvv1YHriP)VnX z@q-SLR>d6o^W=8s`99R?$G7vFVjEF#zuf9^^@Ea6k@&|R+yx7#JTlu5Zf7?G$a!0! zbQy^ccxBGToUChIVnv;4<_f%vIFR?Qjw1#$3LB1&?+ zmsDOW)&;YzVLsnL&JDVhS$TjuUm=65*_qmCaG_E3T+ZXkGD>8IQ;A^NK$I`oGl-fM zmg2^%l-F%^8zGe!{Yn?;4u`X_Q;OAv2Fl$qoZ0do7--f&2p6h{a}&RyeNsQDknHo` zja~PaY8iStu$52e7c1X1yzIX@k}2#A3)Y1LPTz?95R^_OfS_{Cqt`M_DZwk9Q`;BxN)xM^_W|0)HSUk|Enkzig@eN zx{%2rf(#6;#7{Qjc~9QSSmMdILKj~Q;bC?r!dzwvs^YgCp0mHb#9*p*Vz8h_35Ppm z#vQ`x;^U@7Vmv=ZoHs(hI%GmzPT3|7yu_hrR}V>3l#m$np(2SuF4hk%BLlAP+@gg0J6_YChF1{3vWZijO{X zx&fZ*2I=~f^%ToO#FW*^_w_F(4rvjp%=>_pwJRBZTG+^N-Re@@0pn0yhCvKTJX#L` z(;4eWc!N{~OCfGMr@XqZ%z+7@1aN)Loq$!Lz|7DcYmv_$htYletXBpG5}ti|s^s}E zB=XyK#!${%4y8976mDhFvdO3%?Z)`~4{1DMWVyE1oRizuC2br;-a*yz!(H>yAw#EN z{rPeIVE*(jTo{4^Vk5S`sqhT`Ob!%%JP{AUXPqAGvT%9&aHH-{98!*xxU?X^vHQgU(b(=sGAQQ} zTcIv-c0qT#xruGCcE31VD2@&`U#+Ir>MM+bJB_lwISU@pN7vl5#yIOs=EkWYrkkmn zd2+tVal%~RdrBx-!i~^jG*Fa0v#lH{7Tk?BV={q9i;+k>?RLA{{;%)U&U>2k;==@P z@?QoW7GOJHnEBc?F4VrzM;?(xF~G%qGpp5>iGf2gC0bZ;Kytkg5s@o|4(ZB}hAcEy zC%UG4a$d?4Yvw#yP6VdVh&!5y?-ft;I6730Vdh9X0J_~l+8eL7jGuK0b;)RL5j9SG z+k@WScAH|3AS8a5Kih-+LJRUa1&kuE9Wxx5d?e7vm#OXho=LaQh#Oc*(RXr{*8!5bT&(}j}m42rI zKl1BegiQ;Ez6se|j`CkoYy(<9?2AZyX=lsv%oR<+QeEF`Q>AyeT&!cr^M|}~7BRY- zu<#$^G240uAKqI8C` zzloQ~JFjc$QX*5;^{4jk%}9lHUX9y>vEM@gcVlRhL-c?pHue5$whByn;6aYt4(UH5 zgLZT6gH-z>wsR(|TniLN#F@GYBY>fzA?VK+;Z$*CvfG*q=f8a2lDbHy<>cNzLpJ~N z^xMfhmAVEVd|Wc`&JiS9J!UP;P4HF}isSdMJL8X^GikF&7d|+&Z3Le747&oGHAf0# zx!_9#Pxlz#(k%68rQ$_p`a6@*(+UXdJOW{vmlnBq2DN2SW%!F><@s@@76Ly+q0M{~ zo5yTMQMXeYrO7>gfXHTg@sP?Oty?qf z$^JF1$_b)J!h6iBe`;#WKOT1bcNAR~^|VeF(cs|LgM4oo6H>|EeLTojyjs($Splj( zMP2F#efeqKBddeCSf2B_z3W#9!6O-z`T`0*v3yz9B6H9j+#6GgWG|!vFeBZ56T9D5 zyN%4Y2;4+JZ4~ibI4uGqJWUcYuaqa{-nO}E`_soT$?1Tl2dniS#2fl0%k`eF$!?u# zS0bk%38%6Tdg58YHwP(yu|ML0Iu#!549#Q15mV32U0WWfAxiJ$&ho|IzPRL%yo112 zCaEGRdy5QR5|=fh7ld<*&SqTC3(WYxIX^X_nw%`@W8*i?U@daQ#&p-EA#0D=66tVt z2?MQ0TursL`{A&o@vW$6Jg}c1`pC(Z>VLgS^u;}gULvOq6(r}X_nt5H;Uyq%MxBop zMeI*fl3-5~!r1UfAHovMhsv{bu|$Tw>}7So9)!O5{u4DnHF={S5^i{4QGQgI`)%D! znPy)SPhfa6ss3QfOI4!W8OPr*S<&jP7d3KFJkPe1)m@@VkfS34@lK$aL56- zg3hAf&)=7lH)FU1#a?MqIkUot79l>H^y|S>soWynJ{K+!0G+lz7TrGV1i?+D=zw~+ zs$i^^tj`*-ZJFl_i^^{HZ#4<>5U>Lw3i*b*s6;~n)4M_Eccf|>=!S8rXpf~!MH8< zn0NWf%)&vEtc9=Jr}~HP35_l`l6&UD&<1SH>whV_*Q|(p`8W}Xa1Vq*s3F)lr1Tph z=ezOy$i2RpW@p|Z_&oj($o0?V_7Ybw>@XX#(sHhV8;Wn3;X>)%6LO^`UxD(bNgJm~ zQZE6RlCZXwD2zlh#bDmN%CYQVpTV z)B9&JJ;%(6i~|)1JdhI#o*VkS$Q;%uZW?IAe_=$x`DfD-d}R*0!9mpp^@Z#py1ih( zR{o2b1nLi7v0O+uvVAub`~J3RLjA6%74mYS#%IA7H4U?a87@c=exQ(Oe`D4vS5WEF zSbBz8Z!XSmb6pl*zJauOtv|@MFy*x}q5%9fZc%|tr}p4Bzj0jk_yB{;YAfJz6?H$+FSEM}WNkMoMI=-l?38=)NAr_0r zYm|FA)I*Go^v5gjNfssD4!X-JId{EZN*oqJZ)XWdz+dhn^^LD4;=Ll^w9OWc zGwnZ(TYt)r4pE1VRnx|ZC6G>+VOIerqRVs4pDJzX&;fbs6)(i+uj57hW|SrT5r~Od zUv|^D{WXva3a`Y6_zGta3PpLRyaKy2VXK9Xc2t<)c5Cm zDEQw$%o%p7C`5zPc;Gm$qRurMt#29&$2oYl9uDU1Na#JrPyA|h|M2HPV7E?35uchZ zoYZI3a1$OPbs9Ci!3W`>UH1~u#KjiDn9KE<{(N5o zTj9S~?!I!QJgaZ5Pd+dnQRV)Zp>^=6SZ{WR_n#qUsh-3a?E2u}HPlB+4%{tNUY3)i zoYTU(3I_4tTY~Z>UlZOgr=HI(UN_&5SM{#m!_M5-8AL{ih#6MPH4%faF)|CoCz_qWU!{=1o;SGxF%HJPs z`quo1>c6iaQuiJQh23?s?_{}Pz@wThsVNb!&$nq9nLs}p&~|Br?Zvs~j)!XeHSgs% z?6d|gW?3N0dwr2Lz$)46Oh!GCy47;#3!zNhQ9H`5xi7S8&T zk4dNd8~C^j)?mAmNvgr4$Wbb{IQUxaH%GP(#_%EAF%n=y_~3A5eI3TTj(!b#3?zT; zz5-&2O6)#?;|7aDeG=FdKcsy-xsJzgELG!6>$*x@k~(^QZ(DkeV$NUw%H6la_xG$$ z15M<{qgP^(WHWt8vGuR%kiG1DW~?oo`B+sGlKAq%_L4f5Jm4nb6RFkmjlWVU+l%wVAjFS%K9QrXtL3mq zH&mvggIP@X^@LTAKdTYvS?Gi#CnB+`z+@U~oAqYq3CN7db^KzShszF~byHU57Q0?I z?Cquwq4bxGi#V*InEsYd+mc^`^tt?ofP5M66Mlj@38cJpQB+-ZeK6JFSixj`HqUjA z0TFsH;IH0yCk$+5GQ4MGTQt6Ag&ufIorwPN-oEPJ?XAouVJ#aSJx5r6ycG&IO@6;$ z3f;PC6S~?M#v0_72u;_TM54PEB;GztrO$-Y> "${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/Modules/carbonevt/CarbonEvtsupport.py b/Mac/Modules/carbonevt/CarbonEvtsupport.py index 77d12b62990b..885998418d98 100644 --- a/Mac/Modules/carbonevt/CarbonEvtsupport.py +++ b/Mac/Modules/carbonevt/CarbonEvtsupport.py @@ -86,11 +86,13 @@ PyObject *EventHandlerCallRef_New(EventHandlerCallRef itself); PyObject *EventRef_New(EventRef itself); /********** EventTypeSpec *******/ +#if 0 static PyObject* EventTypeSpec_New(EventTypeSpec *in) { return Py_BuildValue("ll", in->eventClass, in->eventKind); } +#endif static int EventTypeSpec_Convert(PyObject *v, EventTypeSpec *out) @@ -99,7 +101,7 @@ EventTypeSpec_Convert(PyObject *v, EventTypeSpec *out) PyMac_GetOSType, &(out->eventClass), &(out->eventKind))) return 1; - return NULL; + return 0; } /********** end EventTypeSpec *******/ @@ -118,19 +120,20 @@ HIPoint_Convert(PyObject *v, HIPoint *out) { if (PyArg_ParseTuple(v, "ff", &(out->x), &(out->y))) return 1; - return NULL; + return 0; } #endif /********** end HIPoint *******/ /********** EventHotKeyID *******/ - +#if 0 static PyObject* EventHotKeyID_New(EventHotKeyID *in) { return Py_BuildValue("ll", in->signature, in->id); } +#endif static int EventHotKeyID_Convert(PyObject *v, EventHotKeyID *out) diff --git a/Mac/Modules/carbonevt/_CarbonEvtmodule.c b/Mac/Modules/carbonevt/_CarbonEvtmodule.c index 560b470c8069..6761beff62de 100755 --- a/Mac/Modules/carbonevt/_CarbonEvtmodule.c +++ b/Mac/Modules/carbonevt/_CarbonEvtmodule.c @@ -27,11 +27,13 @@ PyObject *EventHandlerCallRef_New(EventHandlerCallRef itself); PyObject *EventRef_New(EventRef itself); /********** EventTypeSpec *******/ +#if 0 static PyObject* EventTypeSpec_New(EventTypeSpec *in) { return Py_BuildValue("ll", in->eventClass, in->eventKind); } +#endif static int EventTypeSpec_Convert(PyObject *v, EventTypeSpec *out) @@ -40,7 +42,7 @@ EventTypeSpec_Convert(PyObject *v, EventTypeSpec *out) PyMac_GetOSType, &(out->eventClass), &(out->eventKind))) return 1; - return NULL; + return 0; } /********** end EventTypeSpec *******/ @@ -66,19 +68,20 @@ HIPoint_Convert(PyObject *v, HIPoint *out) /********** end HIPoint *******/ /********** EventHotKeyID *******/ - +#if 0 static PyObject* EventHotKeyID_New(EventHotKeyID *in) { return Py_BuildValue("ll", in->signature, in->id); } +#endif static int EventHotKeyID_Convert(PyObject *v, EventHotKeyID *out) { if (PyArg_ParseTuple(v, "ll", &out->signature, &out->id)) return 1; - return NULL; + return 0; } /********** end EventHotKeyID *******/ diff --git a/Mac/Modules/cf/_CFmodule.c b/Mac/Modules/cf/_CFmodule.c index 04e162444326..cafc6552b781 100644 --- a/Mac/Modules/cf/_CFmodule.c +++ b/Mac/Modules/cf/_CFmodule.c @@ -1818,7 +1818,7 @@ int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself) if (PyString_Check(v)) { char *cStr; if (!PyArg_Parse(v, "es", "ascii", &cStr)) - return NULL; + return 0; *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); return 1; } diff --git a/Mac/Modules/cf/cfsupport.py b/Mac/Modules/cf/cfsupport.py index 87b9a6ff275e..f387b2ba5e0c 100644 --- a/Mac/Modules/cf/cfsupport.py +++ b/Mac/Modules/cf/cfsupport.py @@ -427,7 +427,7 @@ class CFStringRefObjectDefinition(MyGlobalObjectDefinition): if (PyString_Check(v)) { char *cStr; if (!PyArg_Parse(v, "es", "ascii", &cStr)) - return NULL; + return 0; *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); return 1; } diff --git a/Mac/Modules/cf/pycfbridge.c b/Mac/Modules/cf/pycfbridge.c index 30122dcdd06f..ae9e128eac7c 100644 --- a/Mac/Modules/cf/pycfbridge.c +++ b/Mac/Modules/cf/pycfbridge.c @@ -283,7 +283,7 @@ PyCF_Python2CF_string(PyObject *src, CFStringRef *dst) { if (PyString_Check(src)) { if (!PyArg_Parse(src, "es", "ascii", &chars)) - return NULL; /* This error is more descriptive than the general one below */ + return 0; /* This error is more descriptive than the general one below */ *dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, kCFStringEncodingASCII); return 1; } diff --git a/Mac/Modules/gestaltmodule.c b/Mac/Modules/gestaltmodule.c index f82687e21610..6d8673f8f7ec 100644 --- a/Mac/Modules/gestaltmodule.c +++ b/Mac/Modules/gestaltmodule.c @@ -33,17 +33,10 @@ static PyObject * gestalt_gestalt(PyObject *self, PyObject *args) { OSErr iErr; - char *str; - int size; OSType selector; long response; - if (!PyArg_Parse(args, "s#", &str, &size)) + if (!PyArg_Parse(args, "O&", PyMac_GetOSType, &selector)) return NULL; - if (size != 4) { - PyErr_SetString(PyExc_TypeError, "gestalt arg must be 4-char string"); - return NULL; - } - selector = *(OSType*)str; iErr = Gestalt ( selector, &response ); if (iErr != 0) return PyMac_Error(iErr); diff --git a/Mac/OSX/Extras.install.py b/Mac/OSX/Extras.install.py index 2521f06a655a..b68d3e7b7c79 100644 --- a/Mac/OSX/Extras.install.py +++ b/Mac/OSX/Extras.install.py @@ -9,6 +9,7 @@ verbose = 1 debug = 0 def isclean(name): + if name == '.svn': return 0 if name == 'CVS': return 0 if name == '.cvsignore': return 0 if name == '.DS_store': return 0 diff --git a/Mac/OSX/IDLE/IDLE.icns b/Mac/OSX/IDLE/IDLE.icns new file mode 100644 index 0000000000000000000000000000000000000000..c12c9da52aa655ab1fd49786bfb880d456c31899 GIT binary patch literal 53456 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�&ZFTqH+# zf&2oZvsUeX&I<$VqbtrBH3;Do5S}h=miL7R^825e&k-BV1@fWCPL-q?=r z0>S*Bv}i5vEidHvM9Yls0?~pK<|^C1=7s$J`?|BlMl%3tfO30yVt}mIhv!cmbpQl} zr%9XL;)MaSKKd*l)deC3s7K_52V{L=s*dUc*#>x{iznX_U9o-cs4fsOz*F@+k^k0l z$*3+68sO?(B|I^}UaG?M(Oe*6fa@~*crpV^Oh*kupaDu^qIqI~AP*bW1wsQ{sP4ua z1MJ32Pa7={155B6B_0{zm%BRO%flAzG7uhWfD)^A^2PvJ_153IK(r!*)$c4Z+yI$8 zF+kRbo8RVPighqSGaqJvI^myqBEK(PhWzKLH$cJe_ z2F7r}ED-~=so{Jum>m z)0Ug2@x}oA9}O=>jbW?bd{%DCpnRdJOSHp2@@4>9jt}HvB4!qrw^|YPZ*5;ad5HXp z^Hq6efPVRyXkJuBHt5XvP6`B zSPUjMTj5Y8kK`kzD1n4jr4){ZRoiIJ9>X_02Ad(f`96;f5SF4uv}!GPv~XM!)k=Qq zAH!pyapKE(W`M91HHku#iQ;(JmP_lT#Q498!FXtZtk*{t>Al>tm6K%l)Ay;*6yp0j z37D^9-^wHTp8{o4bL65pKQ*~+SUv&$brK*pTYi5TkK}*Jwf^vz33q{K9Mt^tEAt1~+cgcMfCbjpP4L7RpNlWOY5_CS;!6 zm5=Wm16*m5&npA`%&o9y9p$ckeBT(Lls=`0R~^7ntjmA9y!iL>LAC+%rVcmcDmtdO zK!pE4uEPyk2?MsuP5pj4%*#65!1dtRu(;XIc1QnKAy?%aNQ<7 z5j}Dt7(?jhnfw+PlLh0@BiG^9@~94nI3F+V*&|iM`2{ENtPY1{9YnR6Bg%&;j8}Cy zxCGt7jJPL*mxW;Ds@OJnq%8sLI$SjG46y6+h{a%b9nQ6rXYxne5`fgJ=V2pm34nFD6}+m$vGcGIw*)`~*V|oAA&8N7)jTqxd7U+z$ z2J*HLj3nX*=1&wHVE}kpheIkMxTPb^KpxlO;0#Px9LWH9TL=ad@N>TQNG_O%h2Z`# zJ?~yWrC*RAaS1>Q!3DoP3;puBqvkO)*5iz&rqr|%Js>bZ!{1tm>+k#2QTH@A#O>1Q zBYP|`tLBXogH2wd>G#{}aDAWJEAP|8+#Svyw%)PXR997IzPRW}J3@YM9qxTuZnW!# zzm8b%++w1;R%z9;g|nst@%$t02Kn_m+<^P~aEIV}YR|R}Cc2u+GE$4?NKBh7HV%mA z8*w+tFBO9O`#yGZN3ZW$xYK?!9aRO{WsBy{5T7(bbexc&z=-01r4an3_e0z37k3ls zT=&&UaWy(Cg~?(|5V|^T^3cZPE0p z6UBsq-pJtoz`-cQ053NGo2mW2wcBsflo|G%1oG~wf2=kB{Dw@ph%~>v3)HqhYjePgJ+)U$OD>!(0c>1UWZbyv zbfoM0J461l)cTVfGQre_iwM!%>HG<(_IjW;GPP$-12&G#Z9%l4I1X;4`TRKKi0;p* z|NTNRvUY;04HuDPY_-=auU^5K+M>wZMk9tMARZ2*r}}_%KdC;u46=T3LuP;P$2ZkQ z83Zu3PryZFy@8ghybM=uIJE`1HV#ZpKOtKFB0qHiiM<~#wwvu%-oAcu zhZb_(?$pu!R$Dh9i^!nboT)uv<9z%mAxH4Rl5nSEW->pgK06ClacKu`rSf4aQ2X5R zLwhYZt<%?1k!LR=U#mUjqkLj9!0$#}K4vZ_G43bNUx6fG)~a3c41%xAMYh^T757d``P!W1%=(_@|Hmfh=soEGZ=|eO+xeC0VHU^r@4O`6W22GaVDiDsix}P?#<9 z^M}v)_yxvJlvpUWeA$wrYNLN(5#f`(Q|o54ZOv?vKYr!x8(Ltj*kti(;vBUFes~Q* zYZb*D*r_>B^w-Wl!XrsS}*q&jf` literal 0 Hc-jL100001 diff --git a/Mac/OSX/IDLE/Info.plist b/Mac/OSX/IDLE/Info.plist new file mode 100644 index 000000000000..b475b1b0753c --- /dev/null +++ b/Mac/OSX/IDLE/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + IDLE + CFBundleGetInfoString + 2.5, © 001-2006 Python Software Foundation + CFBundleIconFile + PythonApplet.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 new file mode 100644 index 000000000000..6f675a2d1676 --- /dev/null +++ b/Mac/OSX/IDLE/Makefile.in @@ -0,0 +1,49 @@ +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 + 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" + +clean: + rm -rf IDLE.app + +IDLE.app: \ + $(srcdir)/../../OSXResources/app/Resources/PythonApplet.icns \ + $(srcdir)/idlemain.py + rm -fr PythonLauncher.app + $(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \ + --builddir=. \ + --name=IDLE \ + --link-exec \ + --plist=$(srcdir)/Info.plist \ + --mainprogram=$(srcdir)/idlemain.py \ + --iconfile=$(srcdir)/IDLE.icns \ + --python=$(prefix)/Resources/Python.app/Contents/MacOS/Python \ + build diff --git a/Mac/OSX/IDLE/idlemain.py b/Mac/OSX/IDLE/idlemain.py new file mode 100644 index 000000000000..aa75d4cb15e7 --- /dev/null +++ b/Mac/OSX/IDLE/idlemain.py @@ -0,0 +1,27 @@ +""" +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/Makefile b/Mac/OSX/Makefile deleted file mode 100644 index 6b0f2ed5adb0..000000000000 --- a/Mac/OSX/Makefile +++ /dev/null @@ -1,273 +0,0 @@ -# This file can be invoked from the various frameworkinstall... targets in the -# main Makefile. The next couple of variables are overridden on the -# commandline in that case. - -VERSION=2.4 -builddir = ../.. -srcdir = ../.. -prefix=/Library/Frameworks/Python.framework/Versions/$(VERSION) -LIBDEST=$(prefix)/lib/python$(VERSION) -BUILDPYTHON=$(builddir)/python.exe -DESTDIR= -# Test whether to use xcodebuild (preferred) or pbxbuild: -ifeq ($(shell ls /usr/bin/xcodebuild),/usr/bin/xcodebuild) -PBXBUILD=xcodebuild -else -PBXBUILD=pbxbuild -endif - -# These are normally glimpsed from the previous set -bindir=/usr/local/bin -PYTHONAPPSPATH=/Applications/MacPython-$(VERSION) -PYTHONAPPSDIR=$(PYTHONAPPSPATH) -APPINSTALLDIR=$(prefix)/Resources/Python.app - -# Variables for installing the "normal" unix binaries -INSTALLED_PYTHON=$(prefix)/bin/python -INSTALLED_PYTHONW=$(APPINSTALLDIR)/Contents/MacOS/Python - -# Items more-or-less copied from the main Makefile -DIRMODE=755 -FILEMODE=644 -INSTALL=/usr/bin/install -c -INSTALL_SYMLINK=ln -fsn -INSTALL_PROGRAM=${INSTALL} -INSTALL_SCRIPT= ${INSTALL_PROGRAM} -INSTALL_DATA= ${INSTALL} -m ${FILEMODE} -LN=ln -STRIPFLAG=-s -##OPT=-g -O3 -Wall -Wstrict-prototypes -Wno-long-double -no-cpp-precomp \ -## -fno-common -dynamic -##INCLUDES=-I$(builddir) -I$(srcdir)/Include -I$(srcdir)/Mac/Include -##DEFINES= -## -##CFLAGS=$(OPT) $(DEFINES) $(INCLUDES) -##LDFLAGS=-F$(builddir) -framework System -framework Python -framework Carbon \ -## -framework Foundation -##CC=cc -##LD=cc -CPMAC=/Developer/Tools/CpMac - -APPTEMPLATE=$(srcdir)/Mac/OSXResources/app -APPSUBDIRS=MacOS Resources Resources/English.lproj \ - Resources/English.lproj/Documentation \ - Resources/English.lproj/Documentation/doc \ - Resources/English.lproj/Documentation/ide -DOCDIR=$(srcdir)/Mac/OSXResources/app/Resources/English.lproj/Documentation -DOCINDEX=$(DOCDIR)/"Documentation idx" -CACHERSRC=$(srcdir)/Mac/scripts/cachersrc.py -compileall=$(srcdir)/Lib/compileall.py -bundlebuilder=$(srcdir)/Lib/plat-mac/bundlebuilder.py - -installapps: install_PythonLauncher install_Python install_BuildApplet install_IDE \ - install_IDLE install_PackageManager checkapplepython - -install_PythonLauncher: - cd $(srcdir)/Mac/OSX/PythonLauncher/PythonLauncher.pbproj ; \ - $(PBXBUILD) -target PythonLauncher -buildstyle Deployment install \ - DSTROOT=$(DESTDIR)/ INSTALL_PATH=$(PYTHONAPPSPATH) - -install_Python: - @if test ! -f $(DOCINDEX); then \ - echo WARNING: you should run Apple Help Indexing Tool on $(DOCDIR); \ - fi - @for i in $(PYTHONAPPSDIR) $(APPINSTALLDIR) $(APPINSTALLDIR)/Contents; do \ - if test ! -d $(DESTDIR)$$i; then \ - echo "Creating directory $(DESTDIR)$$i"; \ - $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ - fi;\ - done - @for i in $(APPSUBDIRS); do \ - if test ! -d $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i; then \ - echo "Creating directory $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \ - $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i; \ - else true; \ - fi; \ - done - @for d in . $(APPSUBDIRS); \ - do \ - a=$(APPTEMPLATE)/$$d; \ - if test ! -d $$a; then continue; else true; fi; \ - b=$(DESTDIR)$(APPINSTALLDIR)/Contents/$$d; \ - for i in $$a/*; \ - do \ - case $$i in \ - *CVS) ;; \ - *.py[co]) ;; \ - *.orig) ;; \ - *~) ;; \ - *idx) \ - echo $(CPMAC) "$$i" $$b; \ - $(CPMAC) "$$i" $$b; \ - ;; \ - *) \ - if test -d $$i; then continue; fi; \ - if test -x $$i; then \ - echo $(INSTALL_SCRIPT) $$i $$b; \ - $(INSTALL_SCRIPT) $$i $$b; \ - else \ - echo $(INSTALL_DATA) $$i $$b; \ - $(INSTALL_DATA) $$i $$b; \ - fi;; \ - esac; \ - done; \ - done - $(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) $(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/Python - -install_IDE: - @if ! $(BUILDPYTHON) -c "import waste"; then \ - echo PythonIDE needs the \"waste\" extension module; \ - echo See Mac/OSX/README for details; \ - else \ - echo $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \ - --destroot "$(DESTDIR)" \ - --python $(INSTALLED_PYTHONW) \ - --output $(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app --noargv \ - $(srcdir)/Mac/Tools/IDE/PythonIDE.py ; \ - $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \ - --destroot "$(DESTDIR)" \ - --python $(INSTALLED_PYTHONW) \ - --output $(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app --noargv \ - $(srcdir)/Mac/Tools/IDE/PythonIDE.py; \ - fi - -install_PackageManager: - @if ! $(BUILDPYTHON) -c "import waste"; then \ - echo PackageManager needs the \"waste\" extension module; \ - echo See Mac/OSX/README for details; \ - else \ - echo $(BUILDPYTHON) $(bundlebuilder) \ - --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \ - --destroot "$(DESTDIR)" \ - --python $(INSTALLED_PYTHONW) \ - --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \ - --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \ - --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \ - --creator Pimp build; \ - $(BUILDPYTHON) $(bundlebuilder) \ - --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \ - --destroot "$(DESTDIR)" \ - --python $(INSTALLED_PYTHONW) \ - --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \ - --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \ - --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \ - --creator Pimp build; \ - fi - -install_IDLE: - @if ! $(BUILDPYTHON) -c "import _tkinter"; then \ - echo IDLE needs the \"Tkinter\" extension module; \ - echo See Mac/OSX/README for details; \ - else \ - echo $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \ - --python $(INSTALLED_PYTHONW) \ - --destroot "$(DESTDIR)" \ - --output $(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app \ - --extra $(srcdir)/Lib/idlelib \ - $(srcdir)/Tools/scripts/idle ; \ - $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \ - --python $(INSTALLED_PYTHONW) \ - --destroot "$(DESTDIR)" \ - --output $(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app \ - --extra $(srcdir)/Lib/idlelib:Contents/Resources/idlelib \ - $(srcdir)/Tools/scripts/idle ; \ - fi - - -install_BuildApplet: - $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \ - --destroot "$(DESTDIR)" \ - --python $(INSTALLED_PYTHONW) \ - --output $(DESTDIR)$(PYTHONAPPSDIR)/BuildApplet.app \ - $(srcdir)/Mac/scripts/BuildApplet.py - -MACLIBDEST=$(LIBDEST)/plat-mac -MACTOOLSDEST=$(prefix)/Mac/Tools -MACTOOLSSRC=$(srcdir)/Mac/Tools -MACTOOLSSUBDIRS=IDE -installmacsubtree: - @for i in $(MACTOOLSDEST); \ - do \ - if test ! -d $(DESTDIR)$$i; then \ - echo "Creating directory $(DESTDIR)$$i"; \ - $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ - else true; \ - fi; \ - done - @for d in $(MACTOOLSSUBDIRS); \ - do \ - a=$(MACTOOLSSRC)/$$d; \ - if test ! -d $$a; then continue; else true; fi; \ - b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \ - if test ! -d $$b; then \ - echo "Creating directory $$b"; \ - $(INSTALL) -d -m $(DIRMODE) $$b; \ - else true; \ - fi; \ - done - @for d in $(MACTOOLSSUBDIRS); \ - do \ - a=$(MACTOOLSSRC)/$$d; \ - if test ! -d $$a; then continue; else true; fi; \ - b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \ - for i in $$a/*; \ - do \ - case $$i in \ - *CVS) ;; \ - *.py[co]) ;; \ - *.orig) ;; \ - *~) ;; \ - *.rsrc) \ - echo $(CPMAC) $$i $$b ; \ - $(CPMAC) $$i $$b ; \ - ;; \ - *) \ - if test -d $$i; then continue; fi; \ - if test -x $$i; then \ - echo $(INSTALL_SCRIPT) $$i $$b; \ - $(INSTALL_SCRIPT) $$i $$b; \ - else \ - echo $(INSTALL_DATA) $$i $$b; \ - $(INSTALL_DATA) $$i $$b; \ - fi;; \ - esac; \ - done; \ - 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) - -# -# We use the full name here in stead of $(INSTALLED_PYTHONW), because -# the latter may be overridden by Makefile.jaguar when building for a pre-installed -# /usr/bin/python -$(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. - -installunixtools: - $(INSTALL) -d $(DESTDIR)$(bindir) - $(INSTALL_SYMLINK) $(INSTALLED_PYTHON) $(DESTDIR)$(bindir)/python$(VERSION) - $(INSTALL_SYMLINK) python$(VERSION) $(DESTDIR)$(bindir)/python - echo "#!/bin/sh" > pythonw.sh - echo "exec \"$(INSTALLED_PYTHONW)\" \"\$$@\"" >> pythonw.sh - $(INSTALL) pythonw.sh $(DESTDIR)$(bindir)/pythonw$(VERSION) - $(INSTALL_SYMLINK) pythonw$(VERSION) $(DESTDIR)$(bindir)/pythonw - -installextras: - $(INSTALL) -d $(DESTDIR)$(PYTHONAPPSDIR)/Extras - $(INSTALL) $(srcdir)/Mac/OSX/Extras.ReadMe.txt $(DESTDIR)$(PYTHONAPPSDIR)/Extras/ReadMe - $(BUILDPYTHON) $(srcdir)/Mac/OSX/Extras.install.py $(srcdir)/Demo \ - $(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo - $(BUILDPYTHON) $(srcdir)/Mac/OSX/Extras.install.py $(srcdir)/Tools \ - $(DESTDIR)$(PYTHONAPPSDIR)/Extras/Tools - -checkapplepython: - @if ! $(BUILDPYTHON) $(srcdir)/Mac/OSX/fixapplepython23.py -n; then \ - echo "* WARNING: Apple-installed Python 2.3 will have trouble building extensions from now on."; \ - echo "* WARNING: Run $(srcdir)/Mac/OSX/fixapplepython23.py with \"sudo\" to fix this."; \ - fi - diff --git a/Mac/OSX/Makefile.in b/Mac/OSX/Makefile.in new file mode 100644 index 000000000000..8ec7c263e52e --- /dev/null +++ b/Mac/OSX/Makefile.in @@ -0,0 +1,294 @@ +# This file can be invoked from the various frameworkinstall... targets in the +# main Makefile. The next couple of variables are overridden on the +# commandline in that case. + +VERSION=@VERSION@ +builddir = ../.. +srcdir = @srcdir@ +prefix=/Library/Frameworks/Python.framework/Versions/$(VERSION) +LIBDEST=$(prefix)/lib/python$(VERSION) +BUILDPYTHON=$(builddir)/python.exe +RUNSHARED= @RUNSHARED@ +DESTDIR= +LDFLAGS=@LDFLAGS@ +FRAMEWORKUNIXTOOLSPREFIX=@FRAMEWORKUNIXTOOLSPREFIX@ + + +# These are normally glimpsed from the previous set +bindir=@exec_prefix@/bin +PYTHONAPPSPATH=/Applications/MacPython $(VERSION) +PYTHONAPPSDIR=$(PYTHONAPPSPATH) +APPINSTALLDIR=$(prefix)/Resources/Python.app + +# Variables for installing the "normal" unix binaries +INSTALLED_PYDOC=$(prefix)/bin/pydoc +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 +DIRMODE=755 +FILEMODE=644 +INSTALL=@INSTALL@ +INSTALL_SYMLINK=ln -fsn +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +INSTALL_SCRIPT=@INSTALL_SCRIPT@ +INSTALL_DATA=@INSTALL_DATA@ +LN=@LN@ +STRIPFLAG=-s +CPMAC=/Developer/Tools/CpMac + +APPTEMPLATE=$(srcdir)/../OSXResources/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 +DOCINDEX=$(DOCDIR)/"Documentation idx" +CACHERSRC=$(srcdir)/../scripts/cachersrc.py +compileall=$(srcdir)/../../Lib/compileall.py + +installapps: install_PythonLauncher install_Python install_BuildApplet install_IDE \ + install_IDLE install_PackageManager checkapplepython install_pythonw \ + install_versionedtools + +install_pythonw: pythonw + $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)" + $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/python$(VERSION)" + ln -sf python$(VERSION) "$(DESTDIR)$(prefix)/bin/python" + ln -sf pythonw$(VERSION) "$(DESTDIR)$(prefix)/bin/pythonw" + +pythonw: $(srcdir)/pythonw.c + $(CC) $(LDFLAGS) -o $@ $(srcdir)/pythonw.c \ + -DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/Python"' + +install_PythonLauncher: + cd PythonLauncher && make install + +install_Python: + @if test ! -f $(DOCINDEX); then \ + echo WARNING: you should run Apple Help Indexing Tool on $(DOCDIR); \ + fi + @for i in "$(PYTHONAPPSDIR)" "$(APPINSTALLDIR)" "$(APPINSTALLDIR)/Contents"; do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $(DESTDIR)$$i"; \ + $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$$i"; \ + fi;\ + done + @for i in $(APPSUBDIRS); do \ + if test ! -d $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i; then \ + echo "Creating directory $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \ + $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \ + else true; \ + fi; \ + done + @for d in . $(APPSUBDIRS); \ + do \ + a=$(APPTEMPLATE)/$$d; \ + if test ! -d $$a; then continue; else true; fi; \ + b="$(DESTDIR)$(APPINSTALLDIR)/Contents/$$d"; \ + for i in $$a/*; \ + do \ + case $$i in \ + *CVS) ;; \ + *.py[co]) ;; \ + *.orig) ;; \ + *~) ;; \ + *idx) \ + echo $(CPMAC) "$$i" $$b; \ + $(CPMAC) "$$i" $$b; \ + ;; \ + *) \ + if test -d "$$i"; then continue; fi; \ + if test -x "$$i"; then \ + echo $(INSTALL_SCRIPT) "$$i" "$$b"; \ + $(INSTALL_SCRIPT) "$$i" "$$b"; \ + else \ + echo $(INSTALL_DATA) "$$i" "$$b"; \ + $(INSTALL_DATA) "$$i" "$$b"; \ + fi;; \ + esac; \ + done; \ + done + $(INSTALL_PROGRAM) $(STRIPFLAG) "$(BUILDPYTHON)" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/Python" + +install_IDE: + @if ! $(RUNSHARED) $(BUILDPYTHON) -c "import waste"; then \ + echo PythonIDE needs the \"waste\" extension module; \ + echo See Mac/OSX/README for details; \ + else \ + echo $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/../scripts/BuildApplet.py \ + --destroot "$(DESTDIR)" \ + --python "$(INSTALLED_PYTHONAPP)" \ + --output "$(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app" --noargv \ + $(srcdir)/Mac/Tools/IDE/PythonIDE.py ; \ + $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/../scripts/BuildApplet.py \ + --destroot "$(DESTDIR)" \ + --python "$(INSTALLED_PYTHONAPP)" \ + --output "$(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app" --noargv \ + $(srcdir)/Mac/Tools/IDE/PythonIDE.py; \ + fi + +install_PackageManager: + @if ! $(RUNSHARED) $(BUILDPYTHON) -c "import waste"; then \ + echo PackageManager needs the \"waste\" extension module; \ + echo See Mac/OSX/README for details; \ + else \ + echo $(RUNSHARED) $(BUILDPYTHON) $(bundlebuilder) \ + --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \ + --destroot "$(DESTDIR)" \ + --python $(INSTALLED_PYTHONAPP) \ + --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \ + --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \ + --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \ + --creator Pimp build; \ + $(RUNSHARED) $(BUILDPYTHON) $(bundlebuilder) \ + --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \ + --destroot "$(DESTDIR)" \ + --python $(INSTALLED_PYTHONAPP) \ + --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \ + --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \ + --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \ + --creator Pimp build; \ + fi + +install_IDLE: + @if ! $(RUNSHARED) $(BUILDPYTHON) -c "import _tkinter"; then \ + echo IDLE needs the \"Tkinter\" extension module; \ + echo See Mac/OSX/README for details; \ + else \ + cd IDLE && make install ;\ + fi + + +install_BuildApplet: + $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/../scripts/BuildApplet.py \ + --destroot "$(DESTDIR)" \ + --python "$(INSTALLED_PYTHONAPP)" \ + --output "$(DESTDIR)$(PYTHONAPPSDIR)/BuildApplet.app" \ + "$(srcdir)/../scripts/BuildApplet.py" + +MACLIBDEST=$(LIBDEST)/plat-mac +MACTOOLSDEST=$(prefix)/Mac/Tools +MACTOOLSSRC=$(srcdir)/Mac/Tools +MACTOOLSSUBDIRS=IDE +installmacsubtree: + @for i in $(MACTOOLSDEST); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $(DESTDIR)$$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + @for d in $(MACTOOLSSUBDIRS); \ + do \ + a=$(MACTOOLSSRC)/$$d; \ + if test ! -d $$a; then continue; else true; fi; \ + b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \ + if test ! -d $$b; then \ + echo "Creating directory $$b"; \ + $(INSTALL) -d -m $(DIRMODE) $$b; \ + else true; \ + fi; \ + done + @for d in $(MACTOOLSSUBDIRS); \ + do \ + a=$(MACTOOLSSRC)/$$d; \ + if test ! -d $$a; then continue; else true; fi; \ + b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \ + for i in $$a/*; \ + do \ + case $$i in \ + *CVS) ;; \ + *.py[co]) ;; \ + *.orig) ;; \ + *~) ;; \ + *.rsrc) \ + echo $(CPMAC) $$i $$b ; \ + $(CPMAC) $$i $$b ; \ + ;; \ + *) \ + if test -d $$i; then continue; fi; \ + if test -x $$i; then \ + echo $(INSTALL_SCRIPT) $$i $$b; \ + $(INSTALL_SCRIPT) $$i $$b; \ + else \ + echo $(INSTALL_DATA) $$i $$b; \ + $(INSTALL_DATA) $$i $$b; \ + fi;; \ + esac; \ + done; \ + done + + + $(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 +# /usr/bin/python +$(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. + +installunixtools: + if [ ! -d "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ]; then \ + $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\ + fi + for fn in python pythonw idle pydoc smtpd.py \ + python$(VERSION) pythonw$(VERSION) idle$(VERSION) \ + pydoc$(VERSION) smtpd$(VERSION).py ;\ + do \ + ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\ + done + +# +# Like installunixtools, but only install links to the versioned binaries. + +altinstallunixtools: + if [ ! -d "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ]; then \ + $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\ + fi + for fn in python$(VERSION) pythonw$(VERSION) idle$(VERSION) \ + pydoc$(VERSION) smtpd$(VERSION).py ;\ + do \ + ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\ + done + + + +installextras:$(srcdir)/Extras.ReadMe.txt $(srcdir)/Extras.install.py + $(INSTALL) -d "$(DESTDIR)$(PYTHONAPPSDIR)/Extras" + $(INSTALL) $(srcdir)/Extras.ReadMe.txt "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/ReadMe" + $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Extras.install.py $(srcdir)/../Demo \ + "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo.Mac" + $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Extras.install.py $(srcdir)/../../Demo \ + "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo" + +checkapplepython: + @if ! $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/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."; \ + fi + +# By default most tools are installed without a version in their basename, to +# make it easier to install (and use) several python versions side-by-side move +# the tools to a version-specific name and add the non-versioned name as an +# alias. +install_versionedtools: + for fn in idle pydoc ;\ + do \ + if [ -h "$(DESTDIR)$(prefix)/bin/$${fn}" ]; then \ + continue ;\ + fi ;\ + mv "$(DESTDIR)$(prefix)/bin/$${fn}" "$(DESTDIR)$(prefix)/bin/$${fn}$(VERSION)" ;\ + ln -sf "$${fn}$(VERSION)" "$(DESTDIR)$(prefix)/bin/$${fn}" ;\ + done + if [ ! -h "$(DESTDIR)$(prefix)/bin/smtpd.py" ]; then \ + mv "$(DESTDIR)$(prefix)/bin/smtpd.py" "$(DESTDIR)$(prefix)/bin/smtpd$(VERSION).py" ;\ + ln -sf "smtpd$(VERSION).py" "$(DESTDIR)$(prefix)/bin/smtpd.py" ;\ + fi diff --git a/Mac/OSX/PythonLauncher/FileSettings.m b/Mac/OSX/PythonLauncher/FileSettings.m index fc3937b3dcbd..5722223498e2 100755 --- a/Mac/OSX/PythonLauncher/FileSettings.m +++ b/Mac/OSX/PythonLauncher/FileSettings.m @@ -207,7 +207,7 @@ [NSNumber numberWithBool: inspect], @"inspect", [NSNumber numberWithBool: optimize], @"optimize", [NSNumber numberWithBool: nosite], @"nosite", - [NSNumber numberWithBool: nosite], @"nosite", + [NSNumber numberWithBool: tabs], @"tabs", others, @"others", scriptargs, @"scriptargs", [NSNumber numberWithBool: with_terminal], @"with_terminal", @@ -235,7 +235,7 @@ if (value) optimize = [value boolValue]; value = [dict objectForKey: @"nosite"]; if (value) nosite = [value boolValue]; - value = [dict objectForKey: @"nosite"]; + value = [dict objectForKey: @"tabs"]; if (value) tabs = [value boolValue]; value = [dict objectForKey: @"others"]; if (value) others = [value retain]; @@ -245,12 +245,26 @@ if (value) with_terminal = [value boolValue]; } +- (NSString*)_replaceSingleQuotes: (NSString*)string +{ + /* Replace all single-quotes by '"'"', that way shellquoting will + * be correct when the result value is delimited using single quotes. + */ + NSArray* components = [string componentsSeparatedByString:@"'"]; + + return [components componentsJoinedByString:@"'\"'\"'"]; +} + - (NSString *)commandLineForScript: (NSString *)script { NSString *cur_interp = NULL; + NSString* script_dir = NULL; char hashbangbuf[1024]; FILE *fp; char *p; + + script_dir = [script substringToIndex: + [script length]-[[script lastPathComponent] length]]; if (honourhashbang && (fp=fopen([script cString], "r")) && @@ -266,8 +280,9 @@ cur_interp = interpreter; return [NSString stringWithFormat: - @"\"%@\"%s%s%s%s%s%s %@ \"%@\" %@ %s", - cur_interp, + @"cd '%@' && '%@'%s%s%s%s%s%s %@ '%@' %@ %s", + [self _replaceSingleQuotes:script_dir], + [self _replaceSingleQuotes:cur_interp], debug?" -d":"", verbose?" -v":"", inspect?" -i":"", @@ -275,7 +290,7 @@ nosite?" -S":"", tabs?" -t":"", others, - script, + [self _replaceSingleQuotes:script], scriptargs, with_terminal? "&& echo Exit status: $? && exit 1" : " &"]; } diff --git a/Mac/OSX/PythonLauncher/Info.plist b/Mac/OSX/PythonLauncher/Info.plist new file mode 100644 index 000000000000..6537f322989c --- /dev/null +++ b/Mac/OSX/PythonLauncher/Info.plist @@ -0,0 +1,65 @@ + + + + + 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.4, © 2001-2006 Python Software Foundation + CFBundleIconFile + PythonInterpreter.icns + CFBundleIdentifier + org.python.PythonLauncher + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Python Launcher + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.4 + CFBundleSignature + PytL + CFBundleVersion + 2.4 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Mac/OSX/PythonLauncher/Makefile.in b/Mac/OSX/PythonLauncher/Makefile.in new file mode 100644 index 000000000000..5f155be8a57c --- /dev/null +++ b/Mac/OSX/PythonLauncher/Makefile.in @@ -0,0 +1,81 @@ +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: PythonLauncher.app + +install: PythonLauncher.app + test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)" + -test -d "$(DESTDIR)$(PYTHONAPPSDIR)/PythonLauncher.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/PythonLauncher.app" + cp -r "PythonLauncher.app" "$(DESTDIR)$(PYTHONAPPSDIR)" + touch "$(DESTDIR)$(PYTHONAPPSDIR)/PythonLauncher.app" + +clean: + rm -f *.o "PythonLauncher" + rm -rf "PythonLauncher.app" + +PythonLauncher.app: \ + PythonLauncher $(srcdir)/PythonInterpreter.icns \ + $(srcdir)/PythonSource.icns \ + $(srcdir)/PythonWSource.icns \ + $(srcdir)/PythonCompiled.icns \ + $(srcdir)/factorySettings.plist + rm -fr "PythonLauncher.app" + $(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \ + --builddir=. \ + --name="PythonLauncher" \ + --executable="PythonLauncher" \ + --iconfile=$(srcdir)/PythonInterpreter.icns \ + --bundle-id=org.python.PythonLauncher \ + --resource=$(srcdir)/PythonSource.icns \ + --resource=$(srcdir)/PythonWSource.icns \ + --resource=$(srcdir)/PythonCompiled.icns \ + --resource=$(srcdir)/English.lproj \ + --resource=$(srcdir)/PreferenceWindow.nib \ + --resource=$(srcdir)/factorySettings.plist \ + --plist=$(srcdir)/Info.plist \ + build + find "PythonLauncher.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 + +PythonLauncher: $(OBJECTS) + $(CC) $(LDFLAGS) -o "PythonLauncher" $(OBJECTS) -framework AppKit -framework Carbon diff --git a/Mac/OSX/PythonLauncher/PythonCompiled.icns b/Mac/OSX/PythonLauncher/PythonCompiled.icns index afead3e42e883b95c6aba56e816e63fa8f2cff16..7d9f3202c7e5344ce32a6eb5146780bf09b4d0b9 100644 GIT binary patch literal 60777 zc-rlK2Y4IDmH(2Wnnj9|EV;z>V*66)%az>!%9p#?S8^9SzRMRUp&dK!wj@fTL{h~j z)ph|Ev5UR;-g|Fg0V@g{02cHPuz>{~ApbK9P$DIY79}#WE*N4Ln3?x}@9mrRu=B8V z`{L|*1etMj`{Mj72!i~Qf1U5l-^>32IQ~P>DgTe@UDLbxxBgaE-r&EXdPDby>0W;T z=kEc|jg@H%hqD3_+mS+nAEqf33W;ZV=WyXWn@Z*2?;Hvhyi+-|@SV-!aH#k@o6WJj zQ}8^6L&56-KmJa-^^Q1FEVwXlO+b%-LJ+%sD=Q|gPUq_CYFMqoTr?Vui;LFP)si=A zK}HLR5KDp4113IqOgOA{}TCdTl!4<%h4%Y`> zjs`zjE@1gqf_6Cn)4xLy`?@C(b8}KvM2IKI{&9dwiz^899pGD!k@!MK4?px|0nm;aQGs~@7rPOr~#Lary%Pvo_*Pp_g)>> z%g?XRugrXJeSW3*jy(B}e9ayC>Yd1=xAQG9fBAO49_F8U<6nP+x&!C7lYCdsvS*t#r2z z^p5=cV^y`6R!ktX3=80af`bGOJ~&k1(Cy^m3=X$1&VXgb9!%#m97~$BYQ{#u^iQ#@ zF|Zea^#RYbdAIU-VpH$PJMvcZBs`B$*YG=1s1yosU7mxlXUlAaf>20sQM2YLAa9j0 zhu0&>AeBvptI?d5AFOFy(rO+7?{y;$tGZ^&P?Ru*lV7*2_px3+J zx=P5eh5W!V0TQ5p0URNn&R|;4uQsSP23J?D!Qy7PV8yrVU7&t?oht?s@Oz+Jw6RUR2mL*b+U1UVwHn$VI(r5!qSqjryXq|#*0?|&)d*xz-_?G2 z2h#!B8}cJ+$b_E|*jw)AS6fea@vB$)tqHMom%I7Z7LfJ)7DxN;v}*sAV&jIX_|^zn z-Y{9_fiuvp-7m$EUGLwBib5my-wX>0x^W{Q@cPFg$l(ivB9TzY=dveRqr;T8Tlqv(w-khA`UN6KUv{U{2gv>0VG6l%fY#BFnNU*acLO>0vil%o zXpq6kAv`2(cR!I74x=G1(>tjfu3jD6RPkEDoa*^Fy9_*@H1k@9PtdjnFz7!d6OEUf5|jFYll)eDOLypT|>( zc|5LAGCoFc&I=C>j|@5Qi#+?X2Xm;CLJ^B|vwFuym<@ULJ$ZSlnUx-I5@97vBo+y$ zrRU}*z0xuoeMZ@I8l}Jc%uiwEg$V|oOp}je#c9XSx_$m`kEE%+t#;_FrE+q9UZolt zY0XG0y!iR2pD~BWMSLF1(^AP9>l+Cg8LZ1m40r$Z#HE6f`jVFZ$@7*7N z_c!N#!h;EUnFW#DG44gY@@oN`a{bFMPGYf9Q3=_B5y{C>zJnbCYo%~zCiuL&cWhp6 zNohuLYkfj;7+Wa*+FHq_2DzW|N-HDxbTrh{%Oc{#7~Qhf%GsH?YsAQc!n%T-oXqIR z%+yG}OyTpNmP+yXKuBhMNy^QnlG^(Emj2?3Vea%5OQlF55p|Tb6{nI~wO0i^Iq>~mVq(_ug*3@toNBKO)+%-^n1XL=e67kY(Wqp0&^(Ip|M~ez}302pu zoJy%usa8{ZnWN=pofT4@P$m`5TPwwq2|iDy=F*#*yDFNPA{~p(X5p2)K&29u9nsED zDaF(CGKE;77mH=$1uLgS!k(O5n3f3`Q}a?DLt+>o=T0nG6_P1uCiy5~r$*s+l$-gG1xY$NG` z)}#j;Ndr5xCe7JK(w|}^i5`cMbOyf*Z zZqxdyup@Sx)UW6Vf3|zG`epeSj+@o5D9<@>TCcFx+v+X#Z1V;MFk;b;RJ5Zmr z28U}ch4Kw-@o$%tNY-*-XA*^a+nyu@-(H}?^0hel z0HBhnmZrExk68Kxo4uZ%;%F(SQtrlqNY)S3we9W*upr(#917l_9UZCLXiFYR_}xAE%(6JC%x$&+?eaS`>8IL zcm!8J8!|dSoSmS!C=zkB$i!?)!h%R4(^Yb?nS@4)q(GqXz`5#SG{&)hPCvX z)jbxRUb7*Cm0n|^*I2hi0Jv7|vJnHIw`}RS+{TCZ*!4POLk7$BTDF32Z@IWY`VARO zuGT#lwdLJ<9a>jcHDJ(aT}^k><5q;X@?ESpf573!_Z%Z4|x1 z)nK}V{*JV|ALMFHdhBj|4X%$`tAo2!aAyX-@HiE4+L#{b1NU?AE6}*=03W_{;;Oxi z{#J4|!2Khbw1(TAPiMT#o)8x3qsI`n5yShxQEO>u(3$R{SFhT~RgcHo!0oA3dT1)+ zz4QSLdRJEizMr+)ej1I|xKaCB_l0zp-7O4*gFtJE#My}6Rj*cCw(%_Z2AzvqhTQh=Nr+xLfs9JOp6;v3yN@h*q9sXkHKrzx@vFDS+4h{x8MWy z0lj5!?p9ZZTUZ;=t6dCGbFJ%|q=RD~uiHQ$HMm4q3;pWu9neXSZ_&Bj)t_M@G>U~D z@6WJzxN70x+<<;{6l(EZMc65|S{KW1nR;VI0>9v*)0mwBt zy~~F5Yt~zQ&_KhiDceXN7wZP)>PDmG-31rAk$tT6E>?P%TlAaSXXCU%`&#x^AsF6n z_+nt)0M*=0Z{0*iEDeX#TMm4S^bUIC>U;%^W7+aWEb^?ab(j8n&9|iW^TYBzHePQh zlX+|Y%<{^ECAX7s7x&43CnCH4`S%#=cNz7zyL1UX?{MM5HNQ8bkzFSv1Ok+Igv()1 zjE^yyqr>!p&ZesTSoF;(ft-GZvGbQlNNaVTy4i${E zsKYD@pGO<%9;9^)jdr%ylw}50guNMo?0P#)B*AD$sY3ohU+*ND+{qxd)U_mrw^xS0 zc@ud7R8P=oBQ)BWaEL*s_K-(eJ>7K;siCdo<>7CJBQL%kCY~InkB*Oyi)n%Z2CbJl z(bwD7mKRdLFajvTfP|ZpAtL>lgf6C12Ks@F^7i`to2AC7(X#M2Ly?z3J)1!Xe-je= zc;E2Qzyy~<=_HqhXPS&NqZPq#h9H0Oc7#kMUj5sUbfw8q?cG-`Kr zOkzUF7lFttZ%0irX}!GBUZtW((Nt8^NgF1&WVdz{x7H?>Wu&A;6~>&z$)?BXT@!tM z{Hfmlu>M}gFqJ+oNXxDopp~{1R8*!_Cx09Ww2GOTB}}7JPsjLZgjjxQaZy>b7idn{ z+{3i4tlvYZm|4l#zz}O-W@gC$Q{(J!Px)NAdhNn{ts+5pS4ZPmJ*n6glEuzRDU^|c z0nzMmY*2)+U%xN5exZT&Sbq6OE|&cPZVa?mY3%j!(P1Uy^LQc0 zy*xcG1jMJLrlh21W<`0GB_yOK-6W1GM~1pS3Pc=#lQ_RH#Sim1?|JT8BpUT(Saftq z@Qvcq#KbTawe<;z~ab#cw* z1-Y5&X(`DuF^TcO*~ae1GWY-whu?@~l!Kx$KZa$Ia|d{RnkYFc_uP07t{>6A=G z!O3Fhg+lgh$jzMS7*a+;Tw+dbV{=x} zx2UADqPn7~q9~z?&JhmH(5z(YCHc~#h$j}-B_-vi#a5BXO`R;R^wYjCm1*t*awep%Pw0RAW zH$0{oR}6jz`*-ZTiD*1%Fp!&Qz1?laSNm4#ud6XFrmt(Ph#eZSt>D8u4l73b3&%vz@{@8I)-$W zOll?LNq}6I(!}Kq&9PW=180!Im|;qxJbOS!SoSv)fk4dQ0NfB*dIXd%O!KAF(rL3~ ziZ>8AZTma*lS@Hp@h*{jyYwNp_pf60sPN*_*^vOk{6S_P4RB`KhV- zsd=q=UMp6q#2OPgsgz2SNu^P$G-B1@mw|}GF9TQtK@k52598WTHoXs^o&N6KcVmBp z{o4MwZ@(CfAbXSc*zMh4jS!LDaGkk)jdQXcGU0-T)Hdtzi)6Y&#?eJ35u&qnY(0wj7H0x3m`*6>x>rDqqcR%vd)~uBjon)v)rfL|I_zA{^ZW|!5dFIYdUP8{PIZtD1kj5re~DCT~c;Vm7sIB;lU)E6d9* z8!+6P9&l{Huo?YE44cxgEI0qiVJq}2<~uL?Tj-bd4eKR*3q5FutXCYiK)+&^`W&&_ z0{x1%@pXr-&>M$;zHdwPBfogUZVU9L;r~9c6?)^)e{G50H2B|+HhLSqjowE89iV?L zd474*WE}j(+WGC}8)H)0W=UB0uWRPpT}S`@l=tP$l9%iE_ui(r+xOI~F0XHve(=1L z{aS~^VekG;)4ttSa<>a`C-Hb9{JaAGLJ^Gb&m(XV4$9s?IWaLlJ~jrvYom-~qa!23 zLqmf!YJV@eqphW(wyL3}=~@?J#~1kV9e8~3N8s+^aMOgOIJGiv+!raWNw$rT$QHU^6q1_M%g&zcV48ZKn z<@Nw>CIi@%I>s96wsN=i_V;wvHrG{V=VqidyMQ^6T_a$YrSb_p z=Zu~VPE8_tqARs@jFQomi?e6fCw11|Om5912InSz9p6DZ-HZ@L&S@f1j)>AEqST6n z!ZaZ;*AMBH+)65^ynAw@t8}8OV=S2k8z*6;xsY0u+TN5Mn(rT)P})yA-2?#s1puT$ zZtxNT0HJ`-@2lcf_HZk@*^>aEv~w(;1rcIKn)7INXAlw=dg2=fx zrTm8SQ_swsbCHk!}s@bck~>fHa&Y5)M}P^Gg|wl8zQ`IzB2>#_F4M`+76e zTk66K6Hf;xtyqy-PgWtAfH(Y;B!eLN8*#c=EUFn0rtyE=93i&LE@ZC%av627LSj&6pxM<_f`@luh9~z zyph5tW_L|>7bCy37~T%og4ET*{sGkxu~&G z#0D9H+A(V{2~|eQy_9o5e;}TDFRrJSy;K8N!AFJ+*(tVog5Pp8iWR-Hx2{_ z28D#)jEIhl%OvF@LCP3~oeZ$qNkpg^0TyrueC)B&!M={h%EFwqq&O@FjolR!6B~=h z?M_TePA;j*K?q8;>437ma9BB9)}-Xt6c821YEl%6?#3DsJvFW zl#sHhxS}fs1z+dp<>uCBXCvs8BLIV#w_#Bwrf|wu$g@)2s@XE`D4j|rQhqc*q0mMq zgfz^fh&4KRv!{#H($v@xo!8Ki7t;`(U4vGXUoI^!E-GyXx=tP7L0zYsZ-Ek&2NjBJ zxeWWXUD{h%PN8%XyNI2yc91BO*!y7GkD>vepsTYZxvaCZEV&~)zcr|-4y&oED6449 zMhMeri{n&ZZu!Vac}_2{IiZ;_<=hn4*!{o3+@$NN$$n)6jg4p%0uHS4m4-S}@5g7T z#lZz5bSh<_Bs{*hHX*#YD=96vJ@HChd0ll?T{aRt9W>>vlqUZ=Jn6SPJhCC;-~k$?zqhLkcx8=s03dYw#?&5#1pDZdx5mNT zS^i&1HO2Y)1qEpSQ+dF=Iax)Czq-Z--3)+$B^39697jio2Wi0H>LRr^)n_AiGc#e+ zzEgXYa`DAaetm+l^1S3%9|xsnW@MzNr=_MOCnYAtWrhCg(@8E5&V1-30zAcoaBXD* zAd6?&1PnfVXhzUKGb8I{%*-&rF-e~xOz-72vb;X|;CB*i#i{@8Pmf=??&}|LBP295 z9KE?GGVH|LAM|vhf~UbEJYGizZc5kqcy9}n*_Yon(AV8T0%o5**p)FeQz>tqWVE&d z3AxzJ(dp?zd6wsACw?7oTv<_E{_V+gXHK0$Pyf*U+}U#;XFWVV`t@)ASet_HED7=_ zDyZER<&*S=_%T-UXgr_GrOPG0;(IT(*I_rJmTwX_0 z$S0>Retpr)eHQCAYf*I1OM`Enyb6(5d}B zYeB)w0{WMX7DbKE^^mY@-dDUYeN7DTCtUs7>)crYd*;-MuRiunxT*cw2%;j)IpxpIRVmsybF8*GAb~jhm&M9#zZr%;&b`3_cxb)e7^Sa_CE3MM<-66Lfu|DdE%=tKK*t?&k){tpny!Z9?kUQI3n;YwEt13#1 z^Rptq{Nx1c_Ug%#Cysyl`6plH#}hkgeSQ6X)r8dUn%W*#L3b&?Bm$@n++EN#3%}#H z&$sjD+sEe1=2ba9Z+Wq`vr-|SJ2}oA8KS|l(bimFT~Sg{SmO2J3Aa;jrvUO-Uwn3g z8FPJf3YtJVM7R$8dC*3{c}wBphQ*P`I~Ll<7COe}3sllC|L2ntB@KQT>S~AIzADR# z^RqKj5@I651O2={JMMPsw7Wa#PyqVWaOBr@qd?`}Zf285sVJ?M3OcMHg^wFM8~MA1 z#f63GnuVI_g^uxsMj^rVEx++DV1tG_@cpr*AUi!dE-Eb0@A~D7p6(|;KY7OeoF{tz z`=0KnPJDTa9)2;cueGhExv8Ne)SXrVJz^nrUm-Y{1eSiw=wvJn*0oGb=e+;HJO153 z(Za&q)VPRXKf?8^K9|mWxPuOH((TMSPp^yL_*}Vq#rxt}x8tXCB7OWStINwvONuHY z&cyPhE%l>f@V$fyJ6kpqxb&9`s;lq)@po?7*+~h}0hhhbg3*5J^yxG1U?%bOI)CBf zrLVm&gT);6{XTZ(qWg){^mg=WR9<#=Rz`Yepcf{R%A``z_beR`bPKiGf9cu9dEOuY z@W+qdKkHAtdj9k&2V1hKkwH|61r_vRHDT%bMOD-LAAI=n=bxN7>webjycbaJk`K_#*VoV27xQ}s%&Wm+ z5itn~(ZR$kUZ*Y$HWGtwM#m?_$J`9Su6#Oe-LuAm!)PFHoudbgHb&bz>|KXD_Pr6%hJn~(&o5OXug_gVmFB1%EI`y8@{%+YjBOrQGr zixX!&yr3C8y)Jm8{y{(`;QOQ`6H;DJOG{7BNKZ?S1#a9oXT!5fgCk;ru#}|4*r-r{ z0?LwQDTf;64Rl~)5tv`KsOGR3Ad3O=l-uzWr$Hw=?}d6EIREukzo45j2}xiL#Nvpt zKZ=QtjtmEFcG=5|To@J>6Aw^RlM~~jZwC7l`=r^*u|`EB6Hbo6z*^@@PNha%*ULF~ z>hxJpPcJXb)A522b|Wk*HV)u~hM>V{5EgjwMu5LB;ku94)ri*UD})FvR49L20!=p`fEE7E3(}U}K}ggKpH(hDWB9Lkb1N%|-&WPiPht7tWpo zke;5Xhok4EtHc{YK{o2ys z!X7{YTWb8Zd(;bxi|5XHK;1k5!#xXrTJv^{;2fZ%&T)C25LMrsX5K`FK zL})x*4`vzQF_l)dkMSpm>72$$H1$YIG7cIZ5>zSW&CE=XKvYDYjX2}K+^FJKX$OiY z6z9*L#XSBE_zq{!p7T6^Au*;T$Q!NW$YDFer`Yg-{{-Eq;r^c99%^q&Txx2H1v)xB zIIyxRXJ)o|v0O+Zkr_Xx8sqf->&vR!^yZ4ic{z26pjR3E5wlHy{B1$@@*tgOroG<`SpJQI@96ng-SCLK5 z4NPV>my+g&S_fxm&}pc(ziyv)X}0~02k5Y<-!bBK@AGFXnF+x$$zWaqSip%*OTm)- zlb;1`29!)nPRq#5NCDOj4Xl++&&|)z0YAllW*VX`VS0k@8LfJbWy=+QJJ9ZR!M1;wd{($cf?3X2PJk|V-Gf|!a~6*_OH0=RZF zI4n``qSNX1nt5r2=T-lZs5mfj`dz#BcPd|G;PR1nc8fSH+` znu;c)iOvZSFgvfHsJNuGtgO5oEqk#Pyj4`!x3qVXDl+530@Ee3rViSCQ`Wpn1>8yi zynyPTn{L;)PwRVl>bX8&Z@-Y3l=RftP`}H;%p8b}B%z6pNh#@>`Nd_G)ireujc7B{ zf;B(i(%RPE+0|)*jw(@5MiR;gZ=zI9!rCl7#C!jY%p(%oW0d!s( zXdNu^AhbblNo8GATYFb`PY>2h=sDU=20gmHu_!Gjq^f$FG_hE;xKM!3+XLKed}T>^$iVGXn|v1etuz1*Qj`U zesO8ZcX8Lk!u&i$3^aTng3Uy6FLbU4xPZL zy;#rQKI#ZZHmzD9ED;y&0SvBF%*6tsZpForqsx7Ew z9Cc5znhjCWB?N~h826VO49&mOqJ8^k)pUUoSd}q@_7V)wOp}GV*~L|$ z{u%5JQXshG+De z*`oZ?hE9Av0^_W{vM47d_U4swY-R6qxLBl>2#>p znKag*ey{WpiFefJbW_UtQYkJ3|rW(~90e*^>JD}xuYc-k@4fIn*sMP|f>5#A=fSRnh z;H{i!bS%>^O_x`f6g9SYk-=PdgxpDLtSK)k%*##-Badgbv$drJ-O&;V30_(a>}}Am zR;w4RsG1g2i^kM1#8KHyV=dA6O1VL|)Y40D%SiIkWrOCT2^QP}tebG}8Oz1moep+P;~Q`bHW# zJu*E%HYzQ@5G{7jPfDz)P0k+Wwsxqr)NUz3=Pd1}=(wbYVP$t!w}wS#VHyOVwL(on z#^()s&El+#$D;SaTY^o^E$!s~K^9LkJ-?*Uq52!T04+g-PrtJ_O*f3+Gl2PWX?{i_ z7I1)LH$KS`h~?9&#U+haM+DUVTFgrAXR1F zdsXubYPCkEBj^zWL67MWJyB;5yi20iUZaJ}-W+B=%<1QtmHmTeZGXSkJlL-^14!H$ z!Y+krt{+U7v|cgzz98Zf~|#@SxHNQN1X>7}4-v8QKokwzr1=@k7!(;U0s1e*>F3g;RFlRe7@J(}HXm}D4g2!=y7`q7E@ z>FM^x=`tPe_@O%7wSc&yesjO5(k$w)G@C2?MdnHjmVy2NUnU{`sRA<{GM2;s0bcOv z6&S!AcL>aQJ!N`5{^CPl)q;C;Zh0Blz}&B_H;V@A&F1<+5!Ck(US_u94hl_m1e0@} zQ9xgXr3)CJNd03(}VaPF9FnwjkFnONlK^Yu0S8qj>uU!5Z?BVu%U|CG*b zR;kQpt)Iv^Dhq2}FMEmQ+F+o{Y% zlbu3?nm{9&9Pla6*XSfyL!n^Bl|fGk^g|`?y(}Ll=PWOixvlf!`hn&7RxWvY88sh- zh8e6BnQ>cnRidyb0?W(^>-tUbn1hxv9_(Z{&rbICPR=wDC>zBnt z%i@9MA@OoOFu%10L35hntCC2VsL+8x_oU2Wvs2)*1~pz%i%+3nSsyRYS;1 zhzDK+;^j&JDIS1$u;-ca7twsE5<*!KVfQnE$r^UQa-*>fc0IV(V(T#Lm&dpelRJj1 zscT(s)j>=+Sa8h4VCb+{G1*L@v6908rFmuh&mmOzJ#PKQKQv04|=~ zI<`DCFhy8)<_>U|$6CoEIJQ;&_5Gmp!J#hdYGDe&VH)gLV5VbW{-+z&eSK;p9W33w zHNBw0EU0PAH_gFdQt~%gbk6|!AX6Y%4Po9+wUV_Q4hn7%D%WniNd`^Lt{S@?E5I{G9Y zCvuyuyu=zOV#mk#Sho}=;wu0r!sg)~cL$1~Fi-@u1&Y`LMQnj0wm^|b5-5Vm{2wk* zMEY=nBF?u0Me1RoNQR8?pphc4u8$Ov$)vJ}3>9%&A1Z>%kIJ?`R76xF{|<(V#L4Ys za_k|ZMeJqrb@3v+`-m3_QAXmo;{OBzBSkP^q!9*;Wc|4Yj8Gm)z=-U=14ghxC;H&} zkdd(Ifcpp;;rwYrMh@QbVv8EtfvAxwJZePq*hG!A?_AUfsweJ5)CfV3>V9O48hOm3Mo&eZg-@m3V>X%1`15HIGtqR!Xf%NrIAH9EW^q9^ z3s(Bwmgo^ww_gwcDFQyf2ZA1f=uoY_M)RQIBQt&fH^N7Fw(yaM2p^f+JbYx%7C!Qj z;UkCc3Ln9CB6eox;Uo5{l@&`s$+pCgZ1piC{`_469t_IB zxKFUz9JoafgGW%NJ%cfdjvN6@_(Mk8@rR6*-G0aje~S+pL4&va>Pz1OZculUnJwZ^L&v%QP9Z4JYVFfLava@cO+_rC_|;F z#2#1Y$*n|;M9Fu_@X(K~g^UC#qaQwGL~;KiBbz>B1erqrL_s6=*-9nhu?QMz{`R1e z;cW;SVLcX48F}cCk?wnijHGYZV@Advn~;%jeay(u?=xfsEIsQ&M$*31AtSsyLq-U* zdmfjF5#csOjIdWDMtF}~#0a|Z*NfA&3pFz^WTffgLPmOTKV*b!3mMt|$BaCV0VB4@ zjMxH3Yyl&-$Bb#PMYjByk=t=1+x3`{3;2KNdvo7i|9sEhVbA^pP6wTx58Z!qc6L7K zw(@umAtFTVJ~3(r6I%(25xPwaKDe;5Vq>>TzT zJht*6$)G6x_h+AU+P`PlLnvUkYmd{hmscJzncM&InL`I2MgcpA{YPGSedU3Z-tD;~ z52JwH?gLM~_74v(f5mj+g(n|E0lPg;&;I!54Dbz|MZp!RLPRiZ{K<-`75U1KmVW#*xB!Oe(|TjT6t6o0QrYr`sq6>53Rs+N1k{P1-42411n&W z|351auYl_VDX?wwA5ekqlmB1}Y@_@Y(|cQ2U_0eMhyvRx{{a-(Uin*BV4LM{S%K}A zzhd5+0^2Tsix${^`CFR@c0m4?6xa#*TTx&~*xy zWAayw_ocwj$zRdn3Vh3#(;bw*qW#5lhxhN^T!EdGzcTlOXPx&sJUaO+t*<`ixOofg ztbEZdP0Qu*&ZdijU;K2rHF z{aMTZADeuee4Bime4Bime4Bime4Bime4Bime4Bime4Bime4Bime4Bime4Bime4Bim ze4Bime4Bime4Bime4Bim{6C5OcXmwvJKufz+wl9VdnXuww7L9k`2E=?>D%MK9{%@t zo26g;MVM#eaYM`ak^q7jOOQop=6cyV5)F{OYY= z{QMtYfBBfx<}v7&-ygs5+K+$ow?Ez9^tV6x@oO&}JGjrm&TiX(e|XJJyKp+?cp~N&xriEfcNFbqxkOau%B@he-Lkuo}DW1D(wq+Y6 z7im?jYBkG}t?r`Yrrvwo-g{p)oBht*-IZ2d^20daKUsDc?cO_Q&di*dbLQUP9&dQ} zlg$Y6?%43|=GzcL&plQC6#psxQv*+3n(RM>W;(uMv;P`|m`8jN`dA>~bhTVO9Ef~< zR(&QG@VMP=Wo<#oXN&mQxvtaY)zxiqXtR{t+tbxj%ieYYqkC7a4wQ_$k%tPzFsDgR0?HMK_7+uKDV^BX)_zXR+cNo6k7IWzuBly z_g~{*qS7L?>X(65lhGi?{!Fn>N6sFoQ7FTI^|*hX$pjy_T8$=)e{k*>0ahz~+-}xs z^v{9hxzXmKFEZX> zIGU%QOY?;M=|-=ty2iD6QCr6}uXz@u*Xta;{q>Q`w9(P~mL1JbbTp5QUJqt7xuc_Z zdVe@uFxou!+mF4+wpwO0dfJiZZGPnAj}T&bBZO`C2cjQ0tq!z}`2vl6c6`CIxqh)a zAbj+58A2;pVw>v;*Iz&O^JsmJ&y2C3SFhbO_P85s>}Tfq^1;)~pYVC?Yy8aCt$)e@`1q;pJ{Kb~dpMJ7o!~5^Q z_wHNIe1|BJuaM8}?doW4swhs|hZc$@LLQgL=k|1Wwl$s4%HIiQPN78-u}Hv$1ART6 zZOwK0-?!~Si=}WXr?020tD~)@zOM9pQ`>HI-9nkPg3sl2mvx;v)sml=9%(bR?L;2S zmdV6oKIYEr>n3$IoKMhSHnr_SOBM1K4!5Kv?cBx6(WYfrmR{d0lgmnTF4Q-RPURdG$s{5^ zrza5Mh0BpaFHnj*&z86Igq?Mz7v&0&AmD}~4~yAk&}y)Ho>JMXIF+wdNfe+`2tq#C zvZSN6McLFOR-dhSCV(&HOB6~u3;8ZYzR2IwZ?PElST~Qajr{b5mp2u(HYrr9P~FzOW@r;?M3TNGw%e?J_!)Nj;l)f%m`weY35MBl`?x;EV2N%Z+=T5H|;os-j4Q!J-2Dk zyH6I3HRuJ%ZP^0%TURW2cEq3!lN+?fG|r$o23LdDOk&U$+Mu~p7&H?MI;h{x#h8Z% zEH1{(*!%_F>^%!(=8rdKciNc23LM59KGB#+Zk~F1b}{DMtb$V`#;gXz z;d8m1NsU?JV$5BAy*-l~Gw;gQXT|vSS)poHG`6TzLKkChZ*5UDHF4F)YxlAxvL4}N z#@wYnSCDWdzvW{2IAgBhBv5RR^zz(EjJZ(}$aZfl(x^4A>vK;9`8L~b%!5v2Zj6R+ zle-P}_1WrJpLO4+yt zw*F}A^X1X?**al;9_qJP2OK87k&Z*%z3Ct%cxP~Ma3CfRc%K-o*~UI*I_`SHN_e^3 zY|~4yO?|>rceHe+ZR!&ixqIJ!yKR~iCYL{Q!sPmmlQ7M3&=1`-&2i9g>En|h_n1Mx z{rJk2E8YJO<)Qwm^rMfjTzdUf`Z=XDrfdI7#9&O{e+ zH=lmj({0it4;wj^eDj0LyUqTNUEk?Gz<-$V{n`oN_|fnF6Tbf`->2-*|Mt%m{j=c% zvX5P|Cm%63@+sjWh=U-&>4fcPQ{9D+()5lW| zA&*bQ5{VF^i-ml0s2hs4Hl8m`%X)Diy2S^fRcPU-Qi(_aLV2)T;KI(a6H3>VWgTpN zVGmmQ@IvtR2o1%*(Al~l{p=HnqG0>X>4U=ET|}|Q`ueKk zgDslYKZK*3Hp^s^GX616-}&OAuI$d!Z7pSWN2*hzYAz{Sf4>{8x&xs*(8Jqg5=lG% z0!L8Z)Z6D2Qd1Il(Ke)L-HmQ1dOVEw$Z0)zyk0K17wQ648yoA&603f&UDmX|u@Cuf zmCK>MpiFNs?paI=YHF-0JHihAV(Xr)3vcd4w|u6MLyOOIIpy`eJ)m-DRcmuyMM>sC zymiZ#uLJjnpgZrdH+!E-COs-Vz)P)4J5rI-liZzn`e;n){*xK82M-=P7#R~6jPCMX zh0toWFi0hlN=4*?p#UO4i10|&FbbuGdHMM#jvdX|7>0bdtCbLtiC~mi9N#|sa6m`a z;TreKbEQSOVd&P+)M}MnS}7D<;Bn7!IcGV2>EccX(g#vzGUocv+@ZpDHv<~WYdN@<1RLJErnN$L2OMPWZ zr9wtbj>m;+w_&rpQLodgv1*x8r4TBb6!Mbh5(qz)JP2N;B0(6sX&VHJ4aPQoQ(INF zwn=eR9oJC&$FH7I!b#-{EN4hX!D!LFXyHp}{TC)H#E=G~u7!)W3wuwh^UtQ<{jdAF zyX1;ao&qb8JP6%&2T>19ZeYM-w3tjrgHEs0HD_uXV`JZc^}Xn5iM%{rp;W6hVaWH3 z0f=ZJcr_XgSbtq>hW0yu|9~|C{{ANwB~?n5TCEL3i@z8g?3Y_0{8knSTlGzux-~)m z-cKq^(^M+CQWu0)5PMpIP`JfnEi@LI^No>_tp&{~ieP{50993iTBA^F;WV(Ng}($_ zGQ)<@WHjrbQoXTJTpHr<-XTuVYOy{Hd2fTtXq8wdW~=V$5Pz>PbV+(WoJ%ZhXb_Hd zn$7K$nW1b9_4f);)*E5-XbeNkK8J&ymKt-1yrV`s&Rtw9FE!SE9)V28RZx&E%fBE380pFO-7N|1}-MnRpt{mcX2+*y4{sF&}zI^`{ z)uWVKbb!Kwt;iCF+_ykYmO#^TI3>dW!AF9l{ZD+i=Zl9A1yougVuv#pY#$yVZ8R7_ zIkWkB9I)_~fVHdE-UeN}Hr{d4&D)3jVM{|odx-7fT#caheD1LmXPdYxqZxv5QrE59 zhhev1(7`Sq%uS~ew-&HjpMCu4j)OUkBAumwV8BfJ<m4 z@+)tAKxI_(_2z*AXuQ{!%Y(4})qpK7SF6R1x#1tb@yd%Yy!i58KiHk!pfL3hKqp?e zL!Nv~6r-Gid1G#;;i^UwHo-#@?c&Q~#KI9ltVk(LCS8+BT&_SPu-Do@0R@7;^{ z`0m{o5r3jeptlS{b>48&pw$doVVxJWkL)Wf6ts#tFffRR$Z#y&@&nl}_v`2$F!%T4 z0ctRKh&eoDBAslzeEAX{_897iMh*rJ<4e>qf)``RWJ3{%_7_-)`3qeAMLzKt%RhlV zws?%csI&Wv>+SvmR@f1L(K60oY^GO)x%dlMxY}Bq>MuI{#U`h}=ymvuW?1U0iw-tV z<}W%6j5rPQQERnN*_RE+T#`{a^|{-U-tscP8iFE&r=FG^FRgTMTI#9t^T@fT+@ z4^mq;&%$4n>_3?qckqzIUwDuB3oN~9g1=~}C5O+~ay9;3$`Wfvm%*0((gS!yDtDe_T{J=kNA@1Tc z3cQ7Qa&K{6NwE5bk|gvJYHO1#@){IS@s!>oZjB}{B;&R|gicSh?XYhokUvItpx=H|i)Ne{|N zt2IiMZZby!)fppdPJ|%$rsfr{j>2Mh6tUXHA;{~my5+htj-tcvDB3G_B2UF$r=R$8 zjGs_{g^=G3Xg&)u&$UeS6JFL|Hlm#6=p#7(H#2;JCVGi>gl^#8hBk_p{~hgMNGI_U zUm)nb9Vlb#=Wlv^%{V=|m$;ci9(g3XgI&cyi zt!A8);JG-7esYa;qLbK_-5_^y5@sR^hJ7k0aUF3I7H|@zKH5n{OyMM;eZ)z)>kTH8 zB?y}23G4mf5OD&F9Uj8q^bi9BtVuk?AlT&~YnYneL$r?WC?@d`_2WDQe@YMWsl!9? zC-D&8BOU^am(m_WFybK^E>5+hXtwVtruGoE6FtP1S$c@ccN7d*MEw{K;R`zo@DQLsmrFUe6zy%3xd_Pw7tzsUcPJBF zgmX)AesoLWbP@GaY$;f$+i?8MtT-w)l#L51A7ETcXcOO{=1w$ zV)@uDg)Bm|v7tCAG90Uziqz@06xTJUtHZ0a6F0^Qg>pr0H*pfO$()21oJ2WG(_B@R z&pKXFA(N->AWlL(x}`ALw-o2U)t-xDM@2`oquUfod6PSeQmhMN`$Q)w6TeZZ6iWRh zTM7g56s19$V77O(DsMk5De5Ub#p#}&5Vn_yyIHG+b#vUF;;b7GJ&Ix2eqZgvEV&E)ePzJjrRh^+U-S1hz<-jsX)p8U6?;$u>yPEX-2 zlx+5{>w;oGSa9Hf&b$z1n8aIDuwxFs{Rj4AumAbILoc)WlY5I4%wCut6?G&s1-h4A zKgT_V#dS|1nbKX@_Y@P|h3lTedX@GR5i{;7$UT(tdkUXXkAd~>X6vLLgE0hK4Ky@i zPw@eLZ^Osid2Py%JUsnIFIM?Ydr5T1q*q&a%<+8NT+g56s@hH7u*9xpO>zDNmDa7K z?`I@Wb-rzG`b>2plr{DF<5YTJ5j@ugPjmiQm5Bc9Q0#Q)PoffQ+Vdw4+>YtbA64lA zdw<5-W?A6+)!vH&yjOld)A?m%^$E7kwu0H|KYBi`|GL?q|H`73&n?=tK65?)kwq*2ie}$G4-oz5(*IYWKVuH(6MMcDp~%^u5B9uxt@p~X zIp_l$pV{fd7(G9Dj_0$kviu!a`TXEHj_*}HA2gcd`or9Db3?|m&gy*T z6`${gX7d=;$8C=1&;GGt3%MuvuQN0vfWAk2KvBxZK(=sl%Nk)@9m0GsAzvgEiG^ZH zxQGYaB7(V*-C-AOTU%>u3vQm*&`?uVaki}VWZ{V;pH(0RUx4{Yhy`9kfq)O2 zW7t~VZpVro*GoIv+uK@OTAG_08|teoE}ShrbFv^e=jgTz2n&LROo0#zg9skxGGX6{ zdvEF?rAVRHmS$3_w({b+($mESC$ck+#+^efVW0@?6=O z;)3H@Y3b2t5vV5$5mO?D&{1p^y*=)6DF#(FHr7;EKt)Bl*_kOBk>$u!NG>W!Bv{Op zh{ae$L1~KbM%spZJe>WqgcNS9udRZzC-ZYM(~|Nc%aEHGieibMR6<{t5DH*l$bx3N z^PqUIqj={?@rK&!i)YUi=N?N*fpyAiFao*V5&?X7KW ztgSjv$f`M2J(e{ z5#kw42$^*ldB8TwCI*fC=&PbavXvHyFn6Iq0BQ*ZTpkbp0=c;7XAZS!u}$^0mFG(f zvr^&??B{^oG~{OHArl0Bj@L31;#tLF*nmq!(8Xc_Uj&kgx&kid+zrx61%0FA?6i)i z`kISn#o0$<5A5v($#JR3&4gSfFD0rI$uhA>0`ma|50oVRz^6F(@Hrgvbdl>cZ!m(& zv!_m^#U2Q&mJrEDCe>LYA)9}pgw~lz26Y*H4({{h_i;dBF4cp(Zl(v=A-AEvuIj>> zy!6BS_myfKl5eDY88&@LXE5;)>1BzOT!j`(z*LtC1w6ix=m~wx;R!fBeOzu2?w(H+ z9_ivn+_1PFhOe|BGycHtJhNSPA!2|9$tbax(}XaG)yIV9vbq^vT~y~vTD4aDjIOJz zudAszTbz}6aCgR#Lqq{$NI}GW+WH+rI3NVUC^NddSzV0IPTaAQ?m05W>+5Q3>*`>@ zPaaP?v?t~Vr<{DmkVz@oGayHlkx|HN-kr+fgoLWL z!`ndAK3rFGW(T{rDsxY8bmYG1%QmO1Tv+-j*^P2A7;$l%Af3T6*riJzP zf@;ZRjwE$~unrJ**e!` z$mgf?IeqDZzTPAJrV~BAsT?pqr~Ed%e5&3L6y9HwzauU@(sX%L{>gZ-J_@}^%$z)l z6-woDnG}p$EIOJ|C~VI7<{Yp5tF(r`6UnJPJ*nG|b83^nETKELJ!@NBb5qQgw1%_M zn{%tP_JzhDJ`iX8ff|*6n3jLvsC;CW%Lud#^T%%G0xnFMJ}#LwTzGbObGo~6m+#0r z*4%`_8hz_(z!;AvM5m~KV2z58qs7m6RbM8~RCxYvso-_y;p+q%>H zz^tbl=Qq^XRFoBFCB_{U5B=b(e+*h;GB~G`v;P%Xj$~MhBv{0RMGNy6aQa{-_4aZ3 zePlZIVrYS%OADY0H`=Q>mYk4L!I zh`QUcB$F9ICOz~;Sy6V%;kcy32X^lX4P@<3$|-9Wfv8g;N-4*R1#&r=86y+SDQmTh zgP=Vqc&GEFMLDT)2fqvcYRkqA>)(6tgAE^V+7gjfU2`e}VgMCLdx@47yH~((2}|X2 z&ZZt|=*vq1b3U}Qr>AZwSafMpQcY)e0vPo7tmdY3II6lLbKmYG>G6m5vbJyA^zla@ zezftEPd9Jdz9TTcv>*c^HKn)#%nWqQBub`n$&@<+bFMzOw>O3Axt*RVT}fcZRmWh? zfitR$thyLpQXHI_#QuIK{_69sn>XVvKHI+h`dcb!*WQ$4X=tTQN#E#iJfHrjR-D18Je9MANl>RAZiEojo*$Pm=zSdYtQ%LaYql1 zb6kHQHej!btk>c!;>3?aO#*%zCsoj#*UQNu=4`Ji85&WY-A-m=V|`S0<^J+ByYsS+ z9FE$*FKqX&ovd9xyZ7w-KKwvrWKzQZ@owQcV$mw4N=dFyOC?8fv9L8`$9dj`wA2<( z-jTGvz9Zk{_SUC-Ro+vUoLt+TlSHQd=SN%4$85>1$=)A+;$&V{YGQ2EA?hIG&>?)# z`%qM5WK2w4+_C-Ro!dP4XwlGhi6v4j@uhfT6%17X-H z65%8#QHeOoFEKG8fjkqFlJ`c8Z_~VyHc3Phm_|#8or?GnA%b5fE)=FK3+xs5csc9A zZMTweq^`R1Liw5E{1Z9Z$Bt#^WM}7OWgX2-&qzy4Pfg9=kA6PU^U>{*(EbnnjtGJ; zJ|7Ewxjcc8%i#(j<|0#r(F1eC%^tO_Y9n{1>uakk&X<>*K6SFV_~gk`@V~->yxikC z*-&HlUsBLg4Y|T8lSt_c{q+4M0b$=Mh^kN@=8%r^c8QVa(E$-mx9ZA@3+Gwq7M?$U zuDrbT%xRFDdm`rqI~mphEu~%nMn#(y?H&an5z`VOR_p5nsSI-OW~pnON0x+!dhnA} z&7#`cni^8U+49oUr;76Pj;A1`q10G)i&CC_?6jm~AIyrPO|U5Br@}-|P0iyprly_+ z$BFwErhG+gHaQ0zXF_{>)&|_dXl;eJ=H}ogzlJ&(W7tQx@B3Q zXr_?(Ihe$}ru_USPAWa+KsveEbELO7w~kDME-=jY__nro=#5TBM+eo;YV(EYn2hP! z(o@ALh@sI0s&7%{$Yoj3{7kUE4CvBy9xp8wRtK(KVk*VC{s=8L1$r0UTt`AjM`u@e z51DXet(;HR%2pC2f>D;8jzGR6{*%mI9}|4isnuGI2CHu=?U5goN~BpZd`BVt%n-E} z6ts#+UG^vDTu;J^22vk1q6-!csH%@cmQ>ug$Pq7-`oK0T&Xw<{-I3kUDfBz2Q>)dG zCs<2P&KX%(7F8*#+>y~PC`t#FDYxfXm0 zxj6|Yu!xS&yB)XnV6$|7Y*japR%O4ZMB6*DA>vO&WFNMh7YOaaeO{!eh^t}=mfF38 zBVeWPE7nxoBF0Ew zCIbyy$`zx&l%Ak4Dte7ttJ7hP2dGU8rzE~4XqSitLa|7&mru4AnBxXBR>Tr76^)7} zN`vI4CR;M1^ptKP=ts+-+wRzx?G*&`19?ooP|T7n6+24v>}@8cTcL2E9_#!xj>2R< zV+lhHo5G#KFhL-nDG-SRCD%Eo_(-EV+uNaNh<=eadB0lK8<8WIpV-+}P7bJZ zjI<_;H0LNhMWRgj&+#m7C$}O6>6q`4PGmw@xR`D^y{&YPE$%@elwmXm8Rmgp4G7Lr zDiqn!)pur*(?K{9P0OdBL^`bepewwDLRdVpe3{drL@qtp2Sd7=o?a%?Xn2H-I<3*D zrxBRrWK43PUrAGB$6&Qz3KK4iRO+l&e6mAy6pK(M7I{F;u%cp!uiWVMT0GA=-q7hB zu*{cT0!cdDGaHRM@-*o5`N3zk+!H|!s`|j39>p0}woG=6bz0h$l~paR%F61LoWi8y ztW%QCELb7xJA(PRhv)5+OYjiLhRB9Ea#1OazLc7S$ zh`jBQGGq$!HG&Ra=o}8(a%iy&$F~5R7a7cEc2LWt0%o)TIfnSB<@%rKd- z(aoUOY4>UTxJtFC4;1XGQ9vnQS#J92#+vN(dL<}@l}v6cZ6K7)liuKqh;dsi*h*Of z%xO_3qo|;uMc0&@%hjIE&DCm?4`{W#+}w-G^3Vj0`o#BfQuXoUWwQOBQc0ORUMp8B z16A%y<+)ffr3kclr&tVL(-LI$w^+cZbSfJ0-YIAjYTHaasKm9za(B!ninvoPI zEALYs=Rf8D>}#(+;U5~RWS%9m7;-tK@RZX5BGJ%lW%WN~wOTAiW^<9rRA9*0>+|(_ zIvsh^5@Wix*-bDzlj1lqVRHH&z2k$3(8uo$Bx@o|;n7|$QwW8Wf~9mPhyaYVJt!q3 zO&r^5;@JA(tA4A&2=x@|%|%9izOex0>+?0-b2^xeq@MU*O;!a~FHX(x0>_rx^2ptP z`E28(_ig8a^JMU#Z#}v%$`w2Tv_T2>?FQR5+xN(i#Bj)AyA)bS+^KcIG|=B~vRaFG zUNB1v3R{dV`2~E#`TShHE-&~T>Glj>-bM^Bo80rS8Bsm^3JV)Fu{fu4>AgPz>_ z*HAh?ZFIBtOdJe~pe~=v^~w3d7*ddX|G?nDARd_C-(Or@Wsw#awVN+~2@`&4L4myB^U_`Sd1IyP6KERGT?j%3ku-VIhPeG0ml7DNcJYPq%8QtX(XFy${47!5)L zNYm%DoAQfd^K`uT*M$4~Jb6K^JPFN8J4UG(O5#?OYAvX=)asOUvfo;4r6rjQvB|5z zSO5zfguMoz0+4j_aK5hf?Fj$nkL3teXV_xp`AP`;A-;m8N1@T^BV2ce8jMzv-&WFYLP~Jg)|cTEAhOhh|7>wsl&&;k>ozp%K@C#b0>WLle%ITDBa>y&DIDgQ(PDu~=4%3D)Z3jN zHu@M0>;?nB+0ga3{r)~{{F4N{I+Zdh18cC>lMds?>3zLZ?+KzQvk#GMqNgy+=*4a{ zh&*z9nmf6P^*$ML8u#HR2-QrEJB%qpePHB)M4u^ z^DdK*(HPxq)G4_eA3o^s^>l(*p@pK9&d0&q=ykRj#K_zMMUAXM#sEw=d(kkHC%e^T zQdK>D$lrU-7d<+iCMjJ<>5+i~Cuh(*i!qD?)Zp!4g#9OrtE^IXvDsX)-E1~pECizl zS7s6y7Dl(V7iMQX73uH!Ngc#f$(gYJ7z}|%c#9=cSZKb@FgP?cGA*zL6=O3h!saDK zChFT-wbW?BDfPwLu0J7JDhT=W#i;XDx7k%G)1DgHEe&6*INz7J}w4b zC^HkJIJCKEv{{a2V;30vt|E!KqKHV?RbiGE7griO(l!w(zdxrniX<#kAc-X$dU!e{ z(90lY2{Q*;mMRU#i|_ldef9MR{rzA6{D0v6rN2G6+u!2}w$!LnLw}f=7PE!$UJgBc zY=(g$8at&&H_RMlx!z=vhXnZly!zD558qQ}t6%NEGP(Pnwf_DOQU1Pb*OKM%*?PUv z#4=M5+c@O-*$l%&1pKo06J>UT9BjR!UACOX_h=40^_w;R3l8_)`M}!yfBwq= z|NBxLfF&D9S-T~>_(bGmnU-U@M_#}8p${4iENBA50JuKD8{fBy%ovtPOVTV}NCZh!v_-fcGuQ|^BLhu5;2 zAHQ33@a}+zBKZ~z%ZljninGscP|S0X{G^`<+XafTEWa?H`U9x-V0F$*1JCb&sXigu>N`+u=MSt3C}G2=lQ7Hf4=RThwcx1XZ6~EfOr;!mQL-6o#`(P z580b)Ci6Q8RzV_=seFD7E5PI40RKCeKZFC8tqoYQI$-VEWw-eUJa}tBz%Bj{xC%=~ z3&CKCAgdi{G#YopRHsbWnazq<{U3Ym;fEi3=n;55{OBW(K87E`k1lxl;YS{Mh`iPY z{OZxQ$&@vyp9#TQGV-+Ph@^gOaW@lK6dQu|6llc)t!^^GW=bg+@q5~v>uaj2s_PnB zJNpFS19h;X2U|n>k%{P{2MI&{Fg1xP1_PyM!GelGqhG>DLegp!QbAuwQ}y|hqFi!y z@I=9>vz7I&-CU7O1ulW+F^M!|3i8m?>QH76vWwB{cY=?h46te$7U{KWxro=@Tzmdh zUS@J!b0Gte)|3@w9*zk4>eCJH z{?D6#{WE_3#y`LDx4*CdWE&M0dE`V%RZEXhuGW(uclDES4(XH7l1v*db+F%#tAcV` ztO-<8nib?altL!tb~ar+m7REC=hvUU|BpBS{Mswj%QwFA>Yv{D+q)lcrS`>U6rOMB z=F3!ilbOJ%M650uUFVc)wK%0}G@)vLjYg|hDkXy6w(8QnRCd_6n>YOZ&Da0<%F8dl z_|i)+zWnNIe|h`8Pre8aPslz~)kZqj2ut~ZJA`@zx+HX6CNf;U>=aA7fW8RGQc>#1 zG#VALpZ11x1?jPSSzAAR=dC~g@f8sI!V4h!)Y%9wLSD;N^W^wCr=9cTKef| zbO1u_>p<+K;XykJZ5OLn2Sd=m94uSR?P@%K@@QOm@aG@D_qV^i_R7mIy-2-q%Zo(c z*Wdj62cLekJ1VWQBv#&!U5{{h) z1x28swVxV9nnbiba|bfg^5|SbP6c7`m%>(y*WFT8nwNg~z#i5&Uu^ko)24sz{ABsR z{`J}BZQF6^_tB|f_^o|nTHFvGMCwGe0_4&9IXlwPlbRrihZkw-C8M&e;8!CD3f@eqTET2WV6<`hL1ZHvXx zSgZ}!xxqqYAQ2XVPy#%oWv4Y5wujUpHRMiChw>hoWpz*O6b!-~FZfH622IKUcY4WVIb2$5D~R?7A!IIb?L<8M;Fnov__85YoX9xzsi!N*X z;Rot6r7A<#8tq(9oXYkV~P%_|i^?s_un#ZO9S?(J{idNR(|u<^;qnENdD<%*?_H zc!xnGfA6RpCZUTBk^jU~!Bq430=_`V7ZTt_Ai#VEk4JHQTxlxQhFcdlH#d=6vlmBc zDi)s-5SWTdb5!nJat{Lc;_e%rce3r&h5dHQnUjTiIa%8-ASP52EMy31K56zK6%tWG zNQR7gP4G!;m_BAUv> zPE%p&B3GJ<+*=z%Q#t2`)5yuq*~)V>(^OK4Og5gTLVSwARDHa@UM|(M(rJ@+eH&pO zIB2RpGtpF%aWoarg{Fd8$ppc;!^_EOxzbc&E;JQEq5Q<8TSs^*s?Uw|WMDV$TGi=L z&VGxR@Km)GusXClIRa4_$TvvPM zTf$R?1;<40iTYt2Pxad=c&g(Bi2(Z><*Ax!1gf^CHmbHN{7mjQ?0w-sjOVHDb>*p? z!lve_aILSCrwTtbmZw@gk*8wGel;hYiVQ_`Z57Q^MI5qH)8bV0&-)1TIToktodr&{ zGyZVoVf_p^l}rW|(DLm#6^AAT$Kh1-9HvAYK_k`RQ*XzqVpG+D<7ukvT(wuoK!1sN z0!_8TNmDu3DCZ)_YFyAz52jw2l@yyT92&m-19qjU7Eh$9s9C^NzApMxgr%ykC@ngc z5}#hjlWNSvV^}I=V@-upjRU`MtN-8%z=!>)*>qFGE>JqSw` zd+586FF*U_!}aUmdw&c|rLeP9ve~m#O^s*mEY&W;Qtb)azU5yZe>k3{QnD1+%cn-E zR*grgAWDd=yzu>*qTtM==%!D zB_~6()9fhKw=R4)g)c(C;yRHUG)lN{V3o$Sm?I_i; zw8S`eBtD2|K~g!ZlFgE&YHcAQABl=i6&ydBmXd@MsToMBRU=K3iY4R*{gfot>TZ|t zi^P@?ikvMOC8=^|CaKg=k5W29QY|JV70j>6NUG(IpoflH2=a8nPEz5M3#TBdlro9T zK~f2)A*niDNUFM;s)`HesdJ0YpFc-XsuCBJ3YGx%0_YYyNhKOXQbCY40#YGZTD(VA z7Tn}cJ4jZ|!igMJp!!y5|7wsA+y<(|C$X6R3Vzr7G!`Ix(vB z@fa1y1*7Vw2_z>*MS)*;Yj5vprwB*YFv?Lebs7z8T9Ars2dS=0od{C(z@7p|5Ov{B zKj@a(aa0e@#8GkSW{l&gdN~B_S<*N1bC4-8s$aWeRLZF^s@5MZ!c$-92Io!q#PCfoQb0n z{1_Zn^>iH7f^i%bxH_n6kFE zVuvw~f^9RBRC*^#MJWl{gJq1K1}t;$ZjciE2#Etl?qY&cQL1H1WnZJro`u6nxX~!p zJ=366CWD4l;Y6uaEM*`;o4RYTd`UyGgqGG=-_Y35P}d8!5Xh*dNH&qCa>7M7Ez za(7&t3|6_fNtC^HSh?hEqJ+Ry(o=b54K;-)niPc1@>D7ta%5v*Dv(FRRM_l8(stM{ zO77G6RY=tBWuRl>9tokTq{-1aRps$f7aZVIb&7P9rV>w}sZ36qibrTFoi6!+R>#ZD z&6Jcsv0S4*@sM9Pp{XR_{Oyy2F(3RYp9u92$eTEf#1ZkHG5j`+41jr{XMjzv;o%^O+xoD!sRQ_bOyE#VAlEaROCqCj+W-iD&{k zdFN{OvtgP(@7qlSRX*s~+cz#i{{&k=V6Pt8n?#ECP6tsXn;lVQ(C1Ags%|gQ?8aEV z=))Hpa%#GgYQ52YuRZUJ-sl6*+$WbS6vdQS(a>bCNiLI5#HpT|0;eh%hg1EkvhgoZ zan$7-KRI<~@80PApD(%Lm$xtX{cS!z<#)1%;8ZyqMe>Fw7o18lJDkeb1*gJ#q@i>k zT69?Zjvv-6uTM@+N={0Of8qH%SKsmY(_4}g65`{F2~U;!ccHxSqzg}_xMH3P#cAL2 z2IKF^+ZBvMd;*{Q-R<|>{^+{*LU0f>@Q4`8{XSmMDOvsGl>t@yaX=M{)BV{C<{IbV z@@3QtuZ4@|Et)@n;Sy@aqQ$>ygb{nsyV2Rj8~n~ob!|MDR6-rnAvrIOunFG$5YWFY92etLAuLeMF* z9i7sTL#NPwBdG-X4XcbQ1pD5H|!{X0)6yL2~~ zua#eSmkT*H7J(WqOtVuc)?`wYERICpf9=re6wB{{z;+ULYRJJ((UXE*M6*+-G3*pd zY%e?-wIC9CK7U@XSN`mQ3G9>$^5j63iX7}zp`D#F5s$@4FEV!j-52CMl%dnB?tFAM z>{QVt?9?mmMT#U}HuC(9K(E^yH3>R3&p5(zjnQY3D>}7RSi}p7Mjoqc^@jXY6UZqq zo6*TV{k*uiatd-PNzsw;ClGRTzSdAxKNg%K0GIm+@GvUxhOZQx%6&Y((RXSN4vxr zEsyB(M!n(a=F4|Qp7%iVuRzkbeY3%$n5LsYr$w!@-jBk1K&kLvchnw^ZX5W;h^P%6 zL00A%C~6+vS(89f%4gj`T*)!?+(mWt?I7-3Tg9TKk?NY?qx6d&NbxoF;)=uxOq8Ef zo+}dt!Ls~j7V>=KHRSir@s}WwS$k;LeDsIo(3Dr-VxmtT1G8Z4W?9K{;=)8NumeaA z<;ZUh0%?|sWoF24-ia^+GZ~0}gTI6AB1SPNofCtyxL{E3X0z-Ui1MI3Jv=--y}Z1G ze6Sb813qI9raStM-1BzQPc*wU;7UJXT1KFqep1Or{9ZyoRaaHlHIC3v=IQ7sN(Zkg z=%<|V^pk!J{j`W?i~7yxk?gJ^G)hI5v=IQRWh?*{?*c$+CkLR0h-dPm`2}z?L0SqH z?fVR~MW8g3AyAiwhFlRSN{eX(>VEQJgn=rWEd$j*mVvShwPPFC>qa4{@|hqgfn2RO zP6j~{6EQi66|7;YDUiHOqf*FcfS_V%2#P0D>5WrCP)-0y69SRQqazSh8G)d7OaVc~ z69}qLtkfFpQYS)CBU};rg($o}NkJ_hM=Onp{h3B17hf3$rAb1|C&Qp%uSg^>(`cju0zwsB zDF`*nfnhZTJ$s#okWkH)XHHBYq5eKs5{g*B5-G2zrK*f3p#o<^LV>(x4id_al#K|q z8|oshR7gmuaytnXF@}UXFa-&9y@Q0hJW4`2xWZsN3MD2eRIMF_Di}qf&d!WNSx2OW z!i1ksCXrag=k(Gj)UFm5jY4(I4u$HsuiG>V6$Fct8_B9k(J0hD8iQg%!I?3rK)r`O z8>gLviWmqSq-H>%Oa@ZS-C%^ZmI8+oG7vEsIK&v98iMixZS^{`qJyH|uzJ$T^!r($ zV+b6M7{U`cD4UamVh{n|R+1;vY%oAX=3%1O6AVQ|hl7V$!-4RcnuMYt6c`}mF+h@R z4i1G4hhEw_45F_R3FX1(3xomzC0ZsF3;9C6K)~hnaYjiY+SEi+@v7v_CgK&~i zNPzj|iaAM|MDaX19Qsl+?na%sgW2BRhFcajH#N~2rOL-P2&?wd5>UFSb`jhr5rHRI1H+FN({=&kyeUsu9JiM+2~#Rw#hgs(O3?O zFlK?X<)FwfQzc&Hsy4ZDN^#v_NVu4XXHP=Shc??U@Y2^_$(;)Pe+QwkpRl^Tmd*#V|{l2)p$csvFrBP^9G21RZiPk})>(n`@7RPv#)7~34vO1WTA z`*3XyjX@o?V^HJMO3fRCL1B*Xlxd}C463$BcQo>uC+oe78c$4rt|>ejJorQ~wE zeAl#6xYuVo4$8N__F`F4RzlPf^<~z~Ak-vjrKSO){OFWV#m5q3Gx>vobEKdakE5V^ zx+lS)=tNM*QVyqA3uOBKOP7AI4Z5V1l2LQwpe~lf8WkUxc=$kQ*iIHTCa08QjvN%7 zQ|j=c??S)+^j{zT^SyB#l$_?E$WP<1kb?^RYU`$r<8w;=T&ZvpAHs~ekWk??3B?W% zWqtL<)(IrkN}Jl5RB8$m3isSLJqfjMS1|SM*LW5vltO`(H^@e_N@b2kp>XdVJt@

t~Nh(F4lj~iaF&*4MlrdWricTs; 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 X?^@RH=I(J#>mRuY^54gQ#N+=1qZ=A> diff --git a/Mac/OSX/PythonLauncher/PythonInterpreter.icns b/Mac/OSX/PythonLauncher/PythonInterpreter.icns index d5dd12fde30166370e04a79d567066734f483b93..e09fd381e4dfb842e2e7861c9104c70a7b175647 100644 GIT binary patch literal 42658 zc-rl~1zc3k7e9P=X#>ITj^|Oa6@!uz44Nf3*`m7bG|z}S69c#9D3aQb(K>FJ}RBjfUqj*fzp zG0~xGzIzwYLzF9on9Y3}LY%~TK}fF32VM}HM$>ySPlzq}(OWMMh(pPnW)#Ke4sqZu zP@A$2x{5yRx9JcwXyglE;+u<^k_@qJ59QZ5%Ed!s;5G4Bbd=EiRU(f#EoL|yKzn)*?hkvDm({}8Dbaf1X zf|1<65wGi~aPg19ky$^6hoR>`ggcgxJA{GDJFgvN(KYkX*~!bx$@ilsmT-WMvQtesmw@V@m;s#*Mts`@kUnt@ z(rLD~w$XM8D4vN0NKZ(xg%5!l=+D1NM{V7@m7C{x=`=e5HXisGoG^WO&`w|mj{rCK zR{F&0LxTc5GX%I%0~5;+CLFtwJUrY#%tFSe4+9PCQX3eg|E2+k=wrvwZ(4W=CV*!( zzp)T7!+|q{Y0kvfGXzTjCl60(qv`bF^bv5RgK5%)`RPMo#x%kh{Y`$x&@cl|XN(L_ zEMPh)b_67i{HFe+=?vx!Z1gve(AW6U(SPzp>l(n5H}*&{Q{hBLLI}*d2ne~j%sK*M z)9HG+Gz?kd`N01xoGk*OLHjj!TgB;;&}~ znc)QjAs$sCflATVCn{*e0Zo#Dp%xl_fvtDZ#%s|MmAlG4UNBxDczbXu+B_oP0tOt3ePcCl2whTZx3$AD$5a@$3?Wpyj*} zv|=aVu>?$(7Vv=+2N&#}?&xG5k^r}Yrs3J-qySx9bhHAe>kIKt0F7V}aiWl%hhy>*-<)NeXCYD-b~| zV8^$D`uA3l`Lz}P`hQU?ylx5k(h5~=?fGM^kaX!zY29t+vv4-8skQxSt{>bA!Pube zqMVD#Nr`YPkPMRw?_Z7xiU?HzdfyscfA4BmTG}a+3IbGRS9oUrl}p$1P4=qJfSVyA z!y_odKgjTa+AKI2a$ZhTT~$#|1q}y}+Qi6YX)6|Q=V2d8)h@85ebGyBopG7W*`|FfMz&8;lm*FuRII}OxJ~-`$vyu z1rPMcBS-d+$r6l?> zd92em|4q8mmrnieZ_?wx4n^B1OrFvBbyP5&Fn#a0ktJ)wbmMQMN;T(1>EYkfyO&Lr zp7brfXX8ZavES4Gnke1-Tl$C96Qz^B`z13btlzivoC)j4Q};F9Y-0Tee4R;do;Y3k zYku{K)3d*(w@)a))c0XKbfR>pF%JO7k?v1aK`et2Q_o;nnvHkL$9w-h?=gjpK3nNJ zhUi4;bBo_t+t+7V8CNt;s6T}ND>CVtKVIu`%x~(SKY!_#_48)ZH4qb~&;EiX%;Fj! ztE)o=t~*lZr|J0EtdV)`AG<~iRvz8C#JanJrwjxk(e3|aVkh0%qtR~TXVc5Q~QqGQ+h zOye1MW%Q4`4#O=w!F3b{GX5{Fh%eWlONPE&$5I(g`afMKl7vC~dWG7T!=*KIGwo;( z7*9M{P-XXT;!A!r^`8A3mvGj^1$F!cn|wXWpa~g_7C^-ldZYzV(L@Y73ZPjNF=!|% zm{mGK@o@YEj7N(=`~-|)lx8Bvokj35L40G;Pq@xkbY`}7aYNGt@x_fz4J8xAH-PxY zUm&Z7qGFKri=d;`jo>I>@r(G4%=l&9zlaILMTIMVjjspd{~F)bSk4dQM-#^v6;Bio z3Tm7vemSVZFY%qA9K?-Z>O0!mP*hmd_^aMJ8ykumCyH-^Yu5FP9zZztsyKy25q z?by}X2m@5Vi~l*pXjj*S@grSdj$h+JS--}QHg%77fzrAsjA#5RXxG^PMDg9fBAmaE zADs{p{lD+VK|iz~OeVOerq>_&XXK;(>Hmm+sCVF>72mVvpD-Bi?fFLxP=LOV^(qhd z0s7uSmgxt!^!^hD>HSRlEp!&?VT2K6*wW9M35}ro`g)lH4YSr({eT|EIQv*r=>QC9 zGU@wSsc|~0zrVk)AI3oYhgcB@g|d^ElarH|@9Sqlppik;fNc*G!$kF?CKo7u0A&}Y z8l3 zAY?+u+&qKnlj?KO4yG5_3LmJ+>4)iqOnLzUZWL;eJ~Ao&5Pgs-Jc37UfIcZbr~sWV z0Mx_7Eif=h9~xzaeh{^FtH5p`4Sn)X4u+FKjzRdJJ~X*~4vf*$nK<__3th@M`XN?2 zh;$esAA}+B--6&j0oKD`>4(#YSkNb+`brOu$rMUwQZX;gV-g0VFg+82XJYV^(ldrY z1{jftG5K^BPiY#{L_S|HlU&?gYo^8R^3#EEojyIb+H(GCcVZkj|tZTaz)u z!k{`bzI+xs^wA%dcd#%r-_PW^-TKTv5#r`Jb?;?sd&8yG2@v<*jQcNI+Fun> z6CfVTy!(w!t?$au&5eg$aNOtlU6iNh;%c@ zpV%$5*`x1)1wV+JuXzL~Dk3R$R7+3NZJ^(48Hih>xp{{aQP04{#^TudzRyuxLEJ{I zy$4Yyo~P)pZdsrDhT?a?aq9baE8guL80a4aGqmCOoo6AgHLCLBw7$_n+5ksC7@@;< z1G;_cRIGo0XLmnr(TsN2eIV|roRvXX&&U2(#WhWhPg8C8fH(~0a}H{d4IhKn@9VD%HX|x6ih_7|DUpfh=S!+f zE```r2#0`1#H6WYjJ~~vo{5bC4lM*?oWx0bSc*AGn`}V9O5Hbera{Qwq_T+xv#cZavZ?HP+=GWyLbuKL|_(J#wrnQH8pGu|K znVMj{vtwavKXA&)Cn_%GjJ^@pC-Dr^+V?6t-??)sHPYR{lo-)=%@Vfu#oF{Zx`Ttg zgS)?VM0K_EauBzQU})wT7#bQL72%Xo^2ld9h+9jvvhfOziUj@TS z4i{VBw!ds?Z!UV`2V3lFEt>u5`Zq02b=6OwJbB=?7sMSzo$?E-e_CGC)KFL3be9HO z`!PA&QxVnAsvqBcP+U|PX9t%jCP6Uqsi>|fxOS&J+1JqkwsuJ&w9d(<=hctzysrv& zG-O))K6SFu)wi#kpVVFTv(RB$`xa#i$>Q9N+n3J;IgDAmsI)E_W9VRMU}kHGLj%+0 zbv{he!|9rnw8%y}SShBp>re?)OR5%@fYAWf&bw0uMIl@2YN)~1E`*5sYVPJ#HKmEn zUGe|7=3f6hbN|}8=Q2C@>TBQ3{n?AI#&71HQ}FajefM{Bk4?UsUriS( zv$x&vUfs*f95Z*zh=78=JJmH!PZBdDU~}K&9(?xFqs;ROasF}HW1YJzJuEl>W>$1` zKuo|HBiP)f z^Jd|Vi|&H^(1NgO8>XjS&QD5;PfSnsI3|QU1jp&7B*kg_#D)5K`O?J>V1(d-0h^j* zDQSSyP?9@x=!iH$7{m#pVs2YYNk}MSNK^wl#p(cvJ8}GEthJ=?~zZBTu0d=Z@eR#O5ycgBgdaQHb zs!SzYxO;ipnff@B$IShRE*Wb^voW=||6=a05@Y7BO)&)KP5|aEt^;@ORBgUtjA8Ll$Pt$q&GY^Ny$G0I z+Wv#$FMuiDtA#AnA7IX2tyrcX`?9cc4vXXhyYD zlW()&^Q@3_Jo-leaXkz4LgS|Y<}A>AkDHd?p4>`#s>adxZ<~~U-w)o%pj>y4D=nwydUJ)jtC;#N=xJ^QD`xAZGB=n9y(ML@}Z}Ss<^d$6@ ze^|c4PxRiC&~N`qpN5mr^S$_yUVJip$ocW>utk&6oBlw5ZBl#N(*Muw8F_mgdC%I( zpGU*-xRA=^^pQW<|D-*H#EBsdbav8~3*F3w$OTE_5wm zXlDnr-5Fp0av_Ai-XO#_FFBEa0AeHFx<>7XI98o|bSGhHAH+eqS^nsjK`+F$EV`(w z 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 z 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 z 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

=v^^fLI59eMYISVn}@KMVZ%qrcArUx@K{1|pp1 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 diff --git a/Mac/OSX/fixapplepython23.py b/Mac/OSX/fixapplepython23.py index 181181ea79fc..6ba54019f077 100644 --- a/Mac/OSX/fixapplepython23.py +++ b/Mac/OSX/fixapplepython23.py @@ -1,3 +1,4 @@ +#!/usr/bin/python """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 @@ -93,9 +94,19 @@ def main(): else: do_apply = True # First check OS version + if sys.byteorder == 'little': + # All intel macs are fine + print "fixapplypython23: no fix is needed on MacOSX on Intel" + sys.exit(0) + if gestalt.gestalt('sysv') < 0x1030: print 'fixapplepython23: no fix needed on MacOSX < 10.3' sys.exit(0) + + if gestalt.gestalt('sysv') >= 0x1040: + print 'fixapplepython23: no fix needed on MacOSX >= 10.4' + 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' @@ -112,7 +123,8 @@ def main(): makescript(GXX_SCRIPT, "g++") # Finally fix the makefile rv = fix(MAKEFILE, do_apply) - sys.exit(rv) + #sys.exit(rv) + sys.exit(0) if __name__ == '__main__': main() diff --git a/Mac/OSX/pythonw.c b/Mac/OSX/pythonw.c new file mode 100644 index 000000000000..e70a76f846f5 --- /dev/null +++ b/Mac/OSX/pythonw.c @@ -0,0 +1,17 @@ +/* + * 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/OSXResources/app/Resources/PythonApplet.icns b/Mac/OSXResources/app/Resources/PythonApplet.icns index ffe7ef0ff12063973438b1dec190060a1b017f6f..c8aad9fc37a27872bae18af78b1623bfb8f9a9f7 100644 GIT binary patch literal 63136 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�F;+?>lPDb3{cSkQ3< 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 z z&@%~pIO_Iq@6Z~062MZ`HvGJ8)a^eAHy%0wOmM)#-$uO$)=V2Z0BGi~W%ydjs5_wV zhoJ)iOD|oMUv7>15O~^P$N1IDI|b_zbqAE&_{VhBWQPd0ME4~o%tK<8YoA)i6W z0VK+gE#rok`>X&aAq7~REybdJt&>k!z0 z(6gA9J*rc&yZiKq4FDR1w2a1Vx;d(okVMPjrong+(lwtHKbn2;k?0+r;kIH>A5_sa z8uy)aG##K=uEpW}l>;oMo*B(Pc<+>frrNMO0ZfjT@%WF$qnQ9%%EwWXbjXaea-XUzhOT| zjrHQAh>nJ!SJwCa8}Fa_oBjp!zb`gWV-7I}ap@ zO{Yfw3!B1~Qw-IHn2OL@>V}iJ|3U&DpPRHd?GBtw65pkYJ~(vv z@d#u%$??uVm}TF)dGGfJ4}QBlC~L0HO9}P$IYzx>>)f(>^}5Y_k0l6hKfM2))sW$* z5^&r~`9H|FM~@!dzcbiTel_gq!Cf2ItXaL@2X8Mv+BtX5my4ILTDRH8=Y7 zU=(pDXIA%f;WuO9e&3Hazvd&QNr?z=bqv}D0&AHVbF8&f8Y9b;}{V4$m|si|o= z_KRkW?w{3Qv)CLp4NXmT6&7RIbr>1}m&^XDgFXK!lcb$L?6iB+%5Ud=`p)#p6UUFW zHZwBR)74N{;~;}7TBg&p?!yrkg#nw6mN`roi^cq_b)e3eS+zqa;O{SP)82349dg~f zW!1M|eEjCLSH_wf8S3k5>u9K|Alt|elgUvxoZy4cO+1=SJ@SD!|0@_q%i`^8FC^e^ zx9<2genM{_dp7oY)e0U;AeIz_6Tf=PH zndgiRJtch9pXO$>Va38(?@XIuVWg*pTFqv&7)%EG{6W?;SlVU_#rTX+w+VX$Kr&3i z_l@M0%&!$kwya(<|HGM+tc>-v)K%GR6jlZUH5oUP{^V4Fy3zY3x9>lC^!VXY6~@c$ zqXeAzgY4x4ZQHr^KQ5Z{?&}lH4Yk!(z&7?caygUv)T$Zc+@TeSZOJxE+ zdU*eKcgGO#Chq3hEnE26yRS_!*Vk0#Jk_0^93puppql1HH@5$Hiz;Iz31~Xi=huh7 z-;s;6d8a(M`7iW%@zG@qXTSHxMBMggkD3k9xtQuEKX?3w3rW>rz1#ul5j^3?%)Hp+ z_8V8N{Bg}j$7i?ZAIc-vE}ZlJ43u>`>d5-DC*2_Hp0}@N^jRZytVChK9tjYwWAXau z^A~*m)fcm8efs%=Wx-GP#ydF`_o^sL|yI$*AE|1Ez8-|9N@6ICTm1TBGk2X zbak|~G}JV-4adIz$#vWvZ>8;AH20(bOdd00*DC|6ZZd6S`@LU(FM4kz_Q3-zjtV?N z&~U1vX*}_*ooGgOU*Pubm!JMU*FQ-By$K(zKN8^k?dv8l_dnH%7}Su$fY*cOQ{F#+ zTXufMg4yrC@%LP>EDlz6pDzA>!Mo%2U!H%@4kPex#9-_j^AGO)a?Xb{|E}x*e5PAW zdF#EI6HPSPfAdrxyc*ClnefKDAHMhI)Ny~?^-nTTRma%U+QLwi^S6&?!|OR6({Yoh zzB=B*5D#~M|7a~LgQKpkt)>3=%~LzmI!0#ZriMBiDlF!Ib+8u-QBhM<;rth;LQyKB s?x?G$qlun#|K+h_=us>*A!Gh`m1nX!s%UNlPn!SsQ0a@$MH=n@0GpF*z5oCK literal 36565 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 b+ESr;0shtWNA$mI9|Z6yJxY(#1E>E75oerK diff --git a/Mac/OSXResources/app/Resources/PythonInterpreter.icns b/Mac/OSXResources/app/Resources/PythonInterpreter.icns index d5dd12fde30166370e04a79d567066734f483b93..e09fd381e4dfb842e2e7861c9104c70a7b175647 100644 GIT binary patch literal 42658 zc-rl~1zc3k7e9P=X#>ITj^|Oa6@!uz44Nf3*`m7bG|z}S69c#9D3aQb(K>FJ}RBjfUqj*fzp zG0~xGzIzwYLzF9on9Y3}LY%~TK}fF32VM}HM$>ySPlzq}(OWMMh(pPnW)#Ke4sqZu zP@A$2x{5yRx9JcwXyglE;+u<^k_@qJ59QZ5%Ed!s;5G4Bbd=EiRU(f#EoL|yKzn)*?hkvDm({}8Dbaf1X zf|1<65wGi~aPg19ky$^6hoR>`ggcgxJA{GDJFgvN(KYkX*~!bx$@ilsmT-WMvQtesmw@V@m;s#*Mts`@kUnt@ z(rLD~w$XM8D4vN0NKZ(xg%5!l=+D1NM{V7@m7C{x=`=e5HXisGoG^WO&`w|mj{rCK zR{F&0LxTc5GX%I%0~5;+CLFtwJUrY#%tFSe4+9PCQX3eg|E2+k=wrvwZ(4W=CV*!( zzp)T7!+|q{Y0kvfGXzTjCl60(qv`bF^bv5RgK5%)`RPMo#x%kh{Y`$x&@cl|XN(L_ zEMPh)b_67i{HFe+=?vx!Z1gve(AW6U(SPzp>l(n5H}*&{Q{hBLLI}*d2ne~j%sK*M z)9HG+Gz?kd`N01xoGk*OLHjj!TgB;;&}~ znc)QjAs$sCflATVCn{*e0Zo#Dp%xl_fvtDZ#%s|MmAlG4UNBxDczbXu+B_oP0tOt3ePcCl2whTZx3$AD$5a@$3?Wpyj*} zv|=aVu>?$(7Vv=+2N&#}?&xG5k^r}Yrs3J-qySx9bhHAe>kIKt0F7V}aiWl%hhy>*-<)NeXCYD-b~| zV8^$D`uA3l`Lz}P`hQU?ylx5k(h5~=?fGM^kaX!zY29t+vv4-8skQxSt{>bA!Pube zqMVD#Nr`YPkPMRw?_Z7xiU?HzdfyscfA4BmTG}a+3IbGRS9oUrl}p$1P4=qJfSVyA z!y_odKgjTa+AKI2a$ZhTT~$#|1q}y}+Qi6YX)6|Q=V2d8)h@85ebGyBopG7W*`|FfMz&8;lm*FuRII}OxJ~-`$vyu z1rPMcBS-d+$r6l?> zd92em|4q8mmrnieZ_?wx4n^B1OrFvBbyP5&Fn#a0ktJ)wbmMQMN;T(1>EYkfyO&Lr zp7brfXX8ZavES4Gnke1-Tl$C96Qz^B`z13btlzivoC)j4Q};F9Y-0Tee4R;do;Y3k zYku{K)3d*(w@)a))c0XKbfR>pF%JO7k?v1aK`et2Q_o;nnvHkL$9w-h?=gjpK3nNJ zhUi4;bBo_t+t+7V8CNt;s6T}ND>CVtKVIu`%x~(SKY!_#_48)ZH4qb~&;EiX%;Fj! ztE)o=t~*lZr|J0EtdV)`AG<~iRvz8C#JanJrwjxk(e3|aVkh0%qtR~TXVc5Q~QqGQ+h zOye1MW%Q4`4#O=w!F3b{GX5{Fh%eWlONPE&$5I(g`afMKl7vC~dWG7T!=*KIGwo;( z7*9M{P-XXT;!A!r^`8A3mvGj^1$F!cn|wXWpa~g_7C^-ldZYzV(L@Y73ZPjNF=!|% zm{mGK@o@YEj7N(=`~-|)lx8Bvokj35L40G;Pq@xkbY`}7aYNGt@x_fz4J8xAH-PxY zUm&Z7qGFKri=d;`jo>I>@r(G4%=l&9zlaILMTIMVjjspd{~F)bSk4dQM-#^v6;Bio z3Tm7vemSVZFY%qA9K?-Z>O0!mP*hmd_^aMJ8ykumCyH-^Yu5FP9zZztsyKy25q z?by}X2m@5Vi~l*pXjj*S@grSdj$h+JS--}QHg%77fzrAsjA#5RXxG^PMDg9fBAmaE zADs{p{lD+VK|iz~OeVOerq>_&XXK;(>Hmm+sCVF>72mVvpD-Bi?fFLxP=LOV^(qhd z0s7uSmgxt!^!^hD>HSRlEp!&?VT2K6*wW9M35}ro`g)lH4YSr({eT|EIQv*r=>QC9 zGU@wSsc|~0zrVk)AI3oYhgcB@g|d^ElarH|@9Sqlppik;fNc*G!$kF?CKo7u0A&}Y z8l3 zAY?+u+&qKnlj?KO4yG5_3LmJ+>4)iqOnLzUZWL;eJ~Ao&5Pgs-Jc37UfIcZbr~sWV z0Mx_7Eif=h9~xzaeh{^FtH5p`4Sn)X4u+FKjzRdJJ~X*~4vf*$nK<__3th@M`XN?2 zh;$esAA}+B--6&j0oKD`>4(#YSkNb+`brOu$rMUwQZX;gV-g0VFg+82XJYV^(ldrY z1{jftG5K^BPiY#{L_S|HlU&?gYo^8R^3#EEojyIb+H(GCcVZkj|tZTaz)u z!k{`bzI+xs^wA%dcd#%r-_PW^-TKTv5#r`Jb?;?sd&8yG2@v<*jQcNI+Fun> z6CfVTy!(w!t?$au&5eg$aNOtlU6iNh;%c@ zpV%$5*`x1)1wV+JuXzL~Dk3R$R7+3NZJ^(48Hih>xp{{aQP04{#^TudzRyuxLEJ{I zy$4Yyo~P)pZdsrDhT?a?aq9baE8guL80a4aGqmCOoo6AgHLCLBw7$_n+5ksC7@@;< z1G;_cRIGo0XLmnr(TsN2eIV|roRvXX&&U2(#WhWhPg8C8fH(~0a}H{d4IhKn@9VD%HX|x6ih_7|DUpfh=S!+f zE```r2#0`1#H6WYjJ~~vo{5bC4lM*?oWx0bSc*AGn`}V9O5Hbera{Qwq_T+xv#cZavZ?HP+=GWyLbuKL|_(J#wrnQH8pGu|K znVMj{vtwavKXA&)Cn_%GjJ^@pC-Dr^+V?6t-??)sHPYR{lo-)=%@Vfu#oF{Zx`Ttg zgS)?VM0K_EauBzQU})wT7#bQL72%Xo^2ld9h+9jvvhfOziUj@TS z4i{VBw!ds?Z!UV`2V3lFEt>u5`Zq02b=6OwJbB=?7sMSzo$?E-e_CGC)KFL3be9HO z`!PA&QxVnAsvqBcP+U|PX9t%jCP6Uqsi>|fxOS&J+1JqkwsuJ&w9d(<=hctzysrv& zG-O))K6SFu)wi#kpVVFTv(RB$`xa#i$>Q9N+n3J;IgDAmsI)E_W9VRMU}kHGLj%+0 zbv{he!|9rnw8%y}SShBp>re?)OR5%@fYAWf&bw0uMIl@2YN)~1E`*5sYVPJ#HKmEn zUGe|7=3f6hbN|}8=Q2C@>TBQ3{n?AI#&71HQ}FajefM{Bk4?UsUriS( zv$x&vUfs*f95Z*zh=78=JJmH!PZBdDU~}K&9(?xFqs;ROasF}HW1YJzJuEl>W>$1` zKuo|HBiP)f z^Jd|Vi|&H^(1NgO8>XjS&QD5;PfSnsI3|QU1jp&7B*kg_#D)5K`O?J>V1(d-0h^j* zDQSSyP?9@x=!iH$7{m#pVs2YYNk}MSNK^wl#p(cvJ8}GEthJ=?~zZBTu0d=Z@eR#O5ycgBgdaQHb zs!SzYxO;ipnff@B$IShRE*Wb^voW=||6=a05@Y7BO)&)KP5|aEt^;@ORBgUtjA8Ll$Pt$q&GY^Ny$G0I z+Wv#$FMuiDtA#AnA7IX2tyrcX`?9cc4vXXhyYD zlW()&^Q@3_Jo-leaXkz4LgS|Y<}A>AkDHd?p4>`#s>adxZ<~~U-w)o%pj>y4D=nwydUJ)jtC;#N=xJ^QD`xAZGB=n9y(ML@}Z}Ss<^d$6@ ze^|c4PxRiC&~N`qpN5mr^S$_yUVJip$ocW>utk&6oBlw5ZBl#N(*Muw8F_mgdC%I( zpGU*-xRA=^^pQW<|D-*H#EBsdbav8~3*F3w$OTE_5wm zXlDnr-5Fp0av_Ai-XO#_FFBEa0AeHFx<>7XI98o|bSGhHAH+eqS^nsjK`+F$EV`(w z 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 literal 35833 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 +#ifdef WORDS_BIGENDIAN +#define BYTEORDER 4321 +#else +#define BYTEORDER 1234 +#endif + +#define XML_NS 1 +#define XML_DTD 1 +#define XML_CONTEXT_BYTES 1024 + +#endif /* EXPAT_CONFIG_H */ diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 74ab2866e985..5919e44c2208 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -13,6 +13,18 @@ /* See also ../Dos/dosmodule.c */ +#ifdef __APPLE__ + /* + * Step 1 of support for weak-linking a number of symbols existing on + * OSX 10.4 and later, see the comment in the #ifdef __APPLE__ block + * at the end of this file for more information. + */ +# pragma weak lchown +# pragma weak statvfs +# pragma weak fstatvfs + +#endif /* __APPLE__ */ + #include "Python.h" #include "structseq.h" @@ -7978,4 +7990,41 @@ INITFUNC(void) Py_INCREF((PyObject*) &StatVFSResultType); PyModule_AddObject(m, "statvfs_result", (PyObject*) &StatVFSResultType); + +#ifdef __APPLE__ + /* + * Step 2 of weak-linking support on Mac OS X. + * + * The code below removes functions that are not available on the + * currently active platform. + * + * This block allow one to use a python binary that was build on + * OSX 10.4 on OSX 10.3, without loosing access to new APIs on + * OSX 10.4. + */ +#ifdef HAVE_FSTATVFS + if (fstatvfs == NULL) { + if (PyObject_DelAttrString(m, "fstatvfs") == -1) { + return; + } + } +#endif /* HAVE_FSTATVFS */ + +#ifdef HAVE_STATVFS + if (statvfs == NULL) { + if (PyObject_DelAttrString(m, "statvfs") == -1) { + return; + } + } +#endif /* HAVE_STATVFS */ + +# ifdef HAVE_LCHOWN + if (lchown == NULL) { + if (PyObject_DelAttrString(m, "lchown") == -1) { + return; + } + } +#endif /* HAVE_LCHOWN */ + +#endif /* __APPLE__ */ } diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index a63c882740f9..1fafb7ef2670 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -61,6 +61,15 @@ Local naming conventions: */ +#ifdef __APPLE__ + /* + * inet_aton is not available on OSX 10.3, yet we want to use a binary + * that was build on 10.4 or later to work on that release, weak linking + * comes to the rescue. + */ +# pragma weak inet_aton +#endif + #include "Python.h" #undef MAX @@ -300,6 +309,11 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); older releases don't have */ #undef HAVE_GETADDRINFO #endif + +#ifdef HAVE_INET_ATON +#define USE_INET_ATON_WEAKLINK +#endif + #endif /* I know this is a bad practice, but it is the easiest... */ @@ -3261,7 +3275,9 @@ socket_inet_aton(PyObject *self, PyObject *args) #endif #ifdef HAVE_INET_ATON struct in_addr buf; -#else +#endif + +#if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK) /* Have to use inet_addr() instead */ unsigned long packed_addr; #endif @@ -3272,6 +3288,10 @@ socket_inet_aton(PyObject *self, PyObject *args) #ifdef HAVE_INET_ATON + +#ifdef USE_INET_ATON_WEAKLINK + if (inet_aton != NULL) { +#endif if (inet_aton(ip_addr, &buf)) return PyString_FromStringAndSize((char *)(&buf), sizeof(buf)); @@ -3280,7 +3300,14 @@ socket_inet_aton(PyObject *self, PyObject *args) "illegal IP address string passed to inet_aton"); return NULL; -#else /* ! HAVE_INET_ATON */ +#ifdef USE_INET_ATON_WEAKLINK + } else { +#endif + +#endif + +#if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK) + /* special-case this address as inet_addr might return INADDR_NONE * for this */ if (strcmp(ip_addr, "255.255.255.255") == 0) { @@ -3297,6 +3324,11 @@ socket_inet_aton(PyObject *self, PyObject *args) } return PyString_FromStringAndSize((char *) &packed_addr, sizeof(packed_addr)); + +#ifdef USE_INET_ATON_WEAKLINK + } +#endif + #endif } diff --git a/Modules/timemodule.c b/Modules/timemodule.c index ba93957b8856..915c8210396e 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -5,6 +5,19 @@ #include "structseq.h" #include "timefuncs.h" +#ifdef __APPLE__ +#if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_FTIME) + /* + * floattime falls back to ftime when getttimeofday fails because the latter + * might fail on some platforms. This fallback is unwanted on MacOSX because + * that makes it impossible to use a binary build on OSX 10.4 on earlier + * releases of the OS. Therefore claim we don't support ftime. + */ +# undef HAVE_FTIME +#endif +#endif + + #include #include @@ -830,14 +843,16 @@ floattime(void) { struct timeval t; #ifdef GETTIMEOFDAY_NO_TZ - if (gettimeofday(&t) == 0) - return (double)t.tv_sec + t.tv_usec*0.000001; + gettimeofday(&t); + return (double)t.tv_sec + t.tv_usec*0.000001; #else /* !GETTIMEOFDAY_NO_TZ */ - if (gettimeofday(&t, (struct timezone *)NULL) == 0) - return (double)t.tv_sec + t.tv_usec*0.000001; + gettimeofday(&t, (struct timezone *)NULL); + return (double)t.tv_sec + t.tv_usec*0.000001; #endif /* !GETTIMEOFDAY_NO_TZ */ } -#endif /* !HAVE_GETTIMEOFDAY */ + +#else /* !HAVE_GETTIMEOFDAY */ + { #if defined(HAVE_FTIME) struct timeb t; @@ -849,6 +864,8 @@ floattime(void) return (double)secs; #endif /* !HAVE_FTIME */ } + +#endif /* !HAVE_GETTIMEOFDAY */ } diff --git a/Python/mactoolboxglue.c b/Python/mactoolboxglue.c index 406b00238f0c..c75154392645 100644 --- a/Python/mactoolboxglue.c +++ b/Python/mactoolboxglue.c @@ -25,7 +25,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "Python.h" #include "pymactoolbox.h" - +#include /* for ntohl, htonl */ /* Like strerror() but for Mac OS error numbers */ char * @@ -156,12 +156,14 @@ PyMac_GetFullPathname(FSSpec *fss, char *path, int len) int PyMac_GetOSType(PyObject *v, OSType *pr) { + int32_t tmp; if (!PyString_Check(v) || PyString_Size(v) != 4) { PyErr_SetString(PyExc_TypeError, "OSType arg must be string of 4 chars"); return 0; } - memcpy((char *)pr, PyString_AsString(v), 4); + memcpy((char *)&tmp, PyString_AsString(v), 4); + *pr = (OSType)ntohl(tmp); return 1; } @@ -169,7 +171,8 @@ PyMac_GetOSType(PyObject *v, OSType *pr) PyObject * PyMac_BuildOSType(OSType t) { - return PyString_FromStringAndSize((char *)&t, 4); + uint32_t tmp = htonl((uint32_t)t); + return PyString_FromStringAndSize((char *)&tmp, 4); } /* Convert an NumVersion value to a 4-element tuple */ @@ -363,10 +366,10 @@ int (*PyMacGluePtr_##routinename)(PyObject *, object *); \ \ int routinename(PyObject *pyobj, object *cobj) { \ if (!PyMacGluePtr_##routinename) { \ - if (!PyImport_ImportModule(module)) return NULL; \ + if (!PyImport_ImportModule(module)) return 0; \ if (!PyMacGluePtr_##routinename) { \ PyErr_SetString(PyExc_ImportError, "Module did not provide routine: " module ": " #routinename); \ - return NULL; \ + return 0; \ } \ } \ return (*PyMacGluePtr_##routinename)(pyobj, cobj); \ diff --git a/README b/README index d325bde213f1..0d1defa842f6 100644 --- a/README +++ b/README @@ -595,7 +595,11 @@ MacOSX: The tests will crash on both 10.1 and 10.2 with SEGV in /Library/Frameworks). A framework install is probably needed if you want to use any Aqua-based GUI toolkit (whether Tkinter, wxPython, Carbon, Cocoa or anything else). - + + You may also want to try the configure option "--enable-universalsdk" + which builds Python as a universal binary with support for the + i386 and PPC architetures. This requires Xcode 2.1 or later to build. + See Mac/OSX/README for more information on framework builds. Cygwin: With recent (relative to the time of writing, 2001-12-19) diff --git a/configure b/configure index 4f25e0941d0a..2f3332322f94 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 52088 . +# From configure.in Revision: 52098 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for python 2.4. # @@ -312,7 +312,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS VERSION SOVERSION CONFIG_ARGS PYTHONFRAMEWORK PYTHONFRAMEWORKDIR PYTHONFRAMEWORKPREFIX PYTHONFRAMEWORKINSTALLDIR MACHDEP SGI_ABI EXTRAPLATDIR EXTRAMACHDEPPATH CONFIGURE_MACOSX_DEPLOYMENT_TARGET CXX MAINOBJ EXEEXT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT CPP EGREP BUILDEXEEXT LIBRARY LDLIBRARY DLLLIBRARY BLDLIBRARY LDLIBRARYDIR INSTSONAME RUNSHARED LINKCC RANLIB ac_ct_RANLIB AR INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN OPT BASECFLAGS OTHER_LIBTOOL_OPT LIBTOOL_CRUFT SO LDSHARED BLDSHARED CCSHARED LINKFORSHARED CFLAGSFORSHARED SHLIBS USE_SIGNAL_MODULE SIGNAL_OBJS USE_THREAD_MODULE LDLAST THREADOBJ DLINCLDIR DYNLOADFILE MACHDEP_OBJS TRUE LIBOBJS HAVE_GETHOSTBYNAME_R_6_ARG HAVE_GETHOSTBYNAME_R_5_ARG HAVE_GETHOSTBYNAME_R_3_ARG HAVE_GETHOSTBYNAME_R HAVE_GETHOSTBYNAME LIBM LIBC UNICODE_OBJS THREADHEADERS SRCDIRS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS VERSION SOVERSION CONFIG_ARGS UNIVERSALSDK PYTHONFRAMEWORK PYTHONFRAMEWORKDIR PYTHONFRAMEWORKPREFIX PYTHONFRAMEWORKINSTALLDIR FRAMEWORKINSTALLFIRST FRAMEWORKINSTALLLAST FRAMEWORKALTINSTALLFIRST FRAMEWORKALTINSTALLLAST FRAMEWORKUNIXTOOLSPREFIX MACHDEP SGI_ABI EXTRAPLATDIR EXTRAMACHDEPPATH CONFIGURE_MACOSX_DEPLOYMENT_TARGET EXPORT_MACOSX_DEPLOYMENT_TARGET CXX MAINOBJ EXEEXT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT CPP EGREP BUILDEXEEXT LIBRARY LDLIBRARY DLLLIBRARY BLDLIBRARY LDLIBRARYDIR INSTSONAME RUNSHARED LINKCC RANLIB ac_ct_RANLIB AR INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN OPT BASECFLAGS OTHER_LIBTOOL_OPT LIBTOOL_CRUFT SO LDSHARED BLDSHARED CCSHARED LINKFORSHARED CFLAGSFORSHARED SHLIBS USE_SIGNAL_MODULE SIGNAL_OBJS USE_THREAD_MODULE LDLAST THREADOBJ DLINCLDIR DYNLOADFILE MACHDEP_OBJS TRUE LIBOBJS HAVE_GETHOSTBYNAME_R_6_ARG HAVE_GETHOSTBYNAME_R_5_ARG HAVE_GETHOSTBYNAME_R_3_ARG HAVE_GETHOSTBYNAME_R HAVE_GETHOSTBYNAME LIBM LIBC UNICODE_OBJS THREADHEADERS SRCDIRS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -845,6 +845,8 @@ if test -n "$ac_init_help"; then Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-universalsdk[=SDKDIR] + Build agains Mac OS X 10.4u SDK (ppc/i386) --enable-framework[=INSTALLDIR] Build (MacOSX|Darwin) framework --enable-shared disable/enable building shared python library @@ -1397,6 +1399,33 @@ define_xopen_source=yes CONFIG_ARGS="$ac_configure_args" +# Check whether --enable-universalsdk or --disable-universalsdk was given. +if test "${enable_universalsdk+set}" = set; then + enableval="$enable_universalsdk" + + case $enableval in + yes) + enableval=/Developer/SDKs/MacOSX10.4u.sdk + ;; + esac + case $enableval in + no) + UNIVERSALSDK= + enable_universalsdk= + ;; + *) + UNIVERSALSDK=$enableval + ;; + esac + +else + + UNIVERSALSDK= + enable_universalsdk= + +fi; + + # Check whether --enable-framework or --disable-framework was given. if test "${enable_framework+set}" = set; then enableval="$enable_framework" @@ -1411,6 +1440,10 @@ if test "${enable_framework+set}" = set; then PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= + FRAMEWORKINSTALLFIRST= + FRAMEWORKINSTALLLAST= + FRAMEWORKALTINSTALLFIRST= + FRAMEWORKALTINSTALLLAST= enable_framework= ;; *) @@ -1418,7 +1451,26 @@ if test "${enable_framework+set}" = set; then PYTHONFRAMEWORKDIR=Python.framework PYTHONFRAMEWORKPREFIX=$enableval PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR + FRAMEWORKINSTALLFIRST="frameworkinstallstructure" + FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" + FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall" + FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" + if test "x${prefix}" = "xNONE" ; then + FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" + else + FRAMEWORKUNIXTOOLSPREFIX="${prefix}" + fi + prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION + + # Add makefiles for Mac specific code to the list of output + # files: + ac_config_files="$ac_config_files Mac/OSX/Makefile" + + ac_config_files="$ac_config_files Mac/OSX/PythonLauncher/Makefile" + + ac_config_files="$ac_config_files Mac/OSX/IDLE/Makefile" + esac else @@ -1427,6 +1479,15 @@ else PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= + FRAMEWORKINSTALLFIRST= + FRAMEWORKINSTALLLAST= + FRAMEWORKALTINSTALLFIRST= + FRAMEWORKALTINSTALLLAST= + if test "x${prefix}" = "xNONE" ; then + FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" + else + FRAMEWORKUNIXTOOLSPREFIX="${prefix}" + fi enable_framework= fi; @@ -1435,6 +1496,11 @@ fi; + + + + + ##AC_ARG_WITH(dyld, ## AC_HELP_STRING(--with-dyld, ## Use (OpenStep|Rhapsody) dynamic linker)) @@ -1515,7 +1581,7 @@ case $ac_sys_system/$ac_sys_release in # disables platform specific features beyond repair. # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE # has no effect, don't bother defining them - Darwin/[78].*) + Darwin/[789].*) define_xopen_source=no ;; @@ -1614,7 +1680,9 @@ echo "${ECHO_T}$EXTRAPLATDIR" >&6 # it may influence the way we can build extensions, so distutils # needs to check it + CONFIGURE_MACOSX_DEPLOYMENT_TARGET= +EXPORT_MACOSX_DEPLOYMENT_TARGET='#' # checks for alternative programs @@ -3840,6 +3908,10 @@ echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6 # is there any other compiler on Darwin besides gcc? Darwin*) BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd" + if test "${enable_universalsdk}"; then + BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}" + fi + ;; OSF*) BASECFLAGS="$BASECFLAGS -mieee" @@ -10242,7 +10314,10 @@ esac case $ac_sys_system/$ac_sys_release in Darwin/[01234567].*) - LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only ppc" + LIBTOOL_CRUFT="-framework System -lcc_dynamic" + if test -z "${enable_universalsdk}"; then + LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`" + fi LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; Darwin/*) @@ -10377,9 +10452,16 @@ then # Use -undefined dynamic_lookup whenever possible (10.3 and later). # This allows an extension to be used in any Python cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'` + if test ${cur_target} '>' 10.2; then + cur_target=10.3 + fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then + if test "${enable_universalsdk}"; then + LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}" + fi LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup' BLDSHARED="$LDSHARED" else @@ -19368,6 +19450,8 @@ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} esac + + # Check whether right shifting a negative integer extends the sign bit # or fills with zeros (like the Cray J90, according to Tim Peters). echo "$as_me:$LINENO: checking whether right shift extends the sign bit" >&5 @@ -21152,6 +21236,9 @@ for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. + "Mac/OSX/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/OSX/Makefile" ;; + "Mac/OSX/PythonLauncher/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/OSX/PythonLauncher/Makefile" ;; + "Mac/OSX/IDLE/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/OSX/IDLE/Makefile" ;; "Makefile.pre" ) CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;; "Modules/Setup.config" ) CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;; "pyconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS pyconfig.h" ;; @@ -21242,15 +21329,22 @@ s,@LIBS@,$LIBS,;t t s,@VERSION@,$VERSION,;t t s,@SOVERSION@,$SOVERSION,;t t s,@CONFIG_ARGS@,$CONFIG_ARGS,;t t +s,@UNIVERSALSDK@,$UNIVERSALSDK,;t t s,@PYTHONFRAMEWORK@,$PYTHONFRAMEWORK,;t t s,@PYTHONFRAMEWORKDIR@,$PYTHONFRAMEWORKDIR,;t t s,@PYTHONFRAMEWORKPREFIX@,$PYTHONFRAMEWORKPREFIX,;t t s,@PYTHONFRAMEWORKINSTALLDIR@,$PYTHONFRAMEWORKINSTALLDIR,;t t +s,@FRAMEWORKINSTALLFIRST@,$FRAMEWORKINSTALLFIRST,;t t +s,@FRAMEWORKINSTALLLAST@,$FRAMEWORKINSTALLLAST,;t t +s,@FRAMEWORKALTINSTALLFIRST@,$FRAMEWORKALTINSTALLFIRST,;t t +s,@FRAMEWORKALTINSTALLLAST@,$FRAMEWORKALTINSTALLLAST,;t t +s,@FRAMEWORKUNIXTOOLSPREFIX@,$FRAMEWORKUNIXTOOLSPREFIX,;t t s,@MACHDEP@,$MACHDEP,;t t s,@SGI_ABI@,$SGI_ABI,;t t s,@EXTRAPLATDIR@,$EXTRAPLATDIR,;t t s,@EXTRAMACHDEPPATH@,$EXTRAMACHDEPPATH,;t t s,@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@,$CONFIGURE_MACOSX_DEPLOYMENT_TARGET,;t t +s,@EXPORT_MACOSX_DEPLOYMENT_TARGET@,$EXPORT_MACOSX_DEPLOYMENT_TARGET,;t t s,@CXX@,$CXX,;t t s,@MAINOBJ@,$MAINOBJ,;t t s,@EXEEXT@,$EXEEXT,;t t diff --git a/configure.in b/configure.in index f66f43db2fc8..2c67b9a1ec57 100644 --- a/configure.in +++ b/configure.in @@ -60,6 +60,29 @@ define_xopen_source=yes AC_SUBST(CONFIG_ARGS) CONFIG_ARGS="$ac_configure_args" +AC_ARG_ENABLE(universalsdk, + AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)), +[ + case $enableval in + yes) + enableval=/Developer/SDKs/MacOSX10.4u.sdk + ;; + esac + case $enableval in + no) + UNIVERSALSDK= + enable_universalsdk= + ;; + *) + UNIVERSALSDK=$enableval + ;; + esac +],[ + UNIVERSALSDK= + enable_universalsdk= +]) +AC_SUBST(UNIVERSALSDK) + dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output AC_ARG_ENABLE(framework, AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework), @@ -74,6 +97,10 @@ AC_ARG_ENABLE(framework, PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= + FRAMEWORKINSTALLFIRST= + FRAMEWORKINSTALLLAST= + FRAMEWORKALTINSTALLFIRST= + FRAMEWORKALTINSTALLLAST= enable_framework= ;; *) @@ -81,19 +108,49 @@ AC_ARG_ENABLE(framework, PYTHONFRAMEWORKDIR=Python.framework PYTHONFRAMEWORKPREFIX=$enableval PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR + FRAMEWORKINSTALLFIRST="frameworkinstallstructure" + FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" + FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall" + FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" + if test "x${prefix}" = "xNONE" ; then + FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" + else + FRAMEWORKUNIXTOOLSPREFIX="${prefix}" + fi + prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION + + # Add makefiles for Mac specific code to the list of output + # files: + AC_CONFIG_FILES(Mac/OSX/Makefile) + AC_CONFIG_FILES(Mac/OSX/PythonLauncher/Makefile) + AC_CONFIG_FILES(Mac/OSX/IDLE/Makefile) esac ],[ PYTHONFRAMEWORK= PYTHONFRAMEWORKDIR=no-framework PYTHONFRAMEWORKPREFIX= PYTHONFRAMEWORKINSTALLDIR= + FRAMEWORKINSTALLFIRST= + FRAMEWORKINSTALLLAST= + FRAMEWORKALTINSTALLFIRST= + FRAMEWORKALTINSTALLLAST= + if test "x${prefix}" = "xNONE" ; then + FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" + else + FRAMEWORKUNIXTOOLSPREFIX="${prefix}" + fi enable_framework= ]) AC_SUBST(PYTHONFRAMEWORK) AC_SUBST(PYTHONFRAMEWORKDIR) AC_SUBST(PYTHONFRAMEWORKPREFIX) AC_SUBST(PYTHONFRAMEWORKINSTALLDIR) +AC_SUBST(FRAMEWORKINSTALLFIRST) +AC_SUBST(FRAMEWORKINSTALLLAST) +AC_SUBST(FRAMEWORKALTINSTALLFIRST) +AC_SUBST(FRAMEWORKALTINSTALLLAST) +AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX) ##AC_ARG_WITH(dyld, ## AC_HELP_STRING(--with-dyld, @@ -175,7 +232,7 @@ case $ac_sys_system/$ac_sys_release in # disables platform specific features beyond repair. # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE # has no effect, don't bother defining them - Darwin/@<:@78@:>@.*) + Darwin/@<:@789@:>@.*) define_xopen_source=no ;; @@ -258,7 +315,9 @@ AC_MSG_RESULT($EXTRAPLATDIR) # it may influence the way we can build extensions, so distutils # needs to check it AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET) +AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET) CONFIGURE_MACOSX_DEPLOYMENT_TARGET= +EXPORT_MACOSX_DEPLOYMENT_TARGET='#' # checks for alternative programs @@ -738,6 +797,10 @@ yes) # is there any other compiler on Darwin besides gcc? Darwin*) BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd" + if test "${enable_universalsdk}"; then + BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}" + fi + ;; OSF*) BASECFLAGS="$BASECFLAGS -mieee" @@ -1238,7 +1301,10 @@ esac AC_SUBST(LIBTOOL_CRUFT) case $ac_sys_system/$ac_sys_release in Darwin/@<:@01234567@:>@.*) - LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only ppc" + LIBTOOL_CRUFT="-framework System -lcc_dynamic" + if test -z "${enable_universalsdk}"; then + LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`" + fi LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; Darwin/*) @@ -1361,9 +1427,16 @@ then # Use -undefined dynamic_lookup whenever possible (10.3 and later). # This allows an extension to be used in any Python cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'` + if test ${cur_target} '>' 10.2; then + cur_target=10.3 + fi CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2 then + if test "${enable_universalsdk}"; then + LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}" + fi LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup' BLDSHARED="$LDSHARED" else @@ -2847,6 +2920,23 @@ fi # check for endianness AC_C_BIGENDIAN +AH_VERBATIM([WORDS_BIGENDIAN], +[ + /* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). + + The block below does compile-time checking for endianness on platforms + that use GCC and therefore allows compiling fat binaries on OSX by using + '-arch ppc -arch i386' as the compile flags. The phrasing was choosen + such that the configure-result is used on systems that don't use GCC. + */ +#ifdef __BIG_ENDIAN__ +#define WORDS_BIGENDIAN 1 +#else +#ifndef __LITTLE_ENDIAN__ +#undef WORDS_BIGENDIAN +#endif +#endif]) # Check whether right shifting a negative integer extends the sign bit # or fills with zeros (like the Cray J90, according to Tim Peters). diff --git a/pyconfig.h.in b/pyconfig.h.in index 4103369b8214..a099cde71f86 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -804,9 +804,22 @@ /* Define to profile with the Pentium timestamp counter */ #undef WITH_TSC -/* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). */ + + /* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). + + The block below does compile-time checking for endianness on platforms + that use GCC and therefore allows compiling fat binaries on OSX by using + '-arch ppc -arch i386' as the compile flags. The phrasing was choosen + such that the configure-result is used on systems that don't use GCC. + */ +#ifdef __BIG_ENDIAN__ +#define WORDS_BIGENDIAN 1 +#else +#ifndef __LITTLE_ENDIAN__ #undef WORDS_BIGENDIAN +#endif +#endif /* Define to 1 if on AIX 3. System headers sometimes define this. diff --git a/setup.py b/setup.py index 0a0f723606e3..28092e5b3e36 100644 --- a/setup.py +++ b/setup.py @@ -249,8 +249,8 @@ class PyBuildExt(build_ext): add_dir_to_list(self.compiler.library_dirs, '/sw/lib') add_dir_to_list(self.compiler.include_dirs, '/sw/include') # DarwinPorts installs into /opt/local by default - add_dir_to_list(self.compiler.library_dirs, '/opt/local/lib') - add_dir_to_list(self.compiler.include_dirs, '/opt/local/include') + #add_dir_to_list(self.compiler.library_dirs, '/opt/local/lib') + #add_dir_to_list(self.compiler.include_dirs, '/opt/local/include') if os.path.normpath(sys.prefix) != '/usr': add_dir_to_list(self.compiler.library_dirs, @@ -287,6 +287,23 @@ class PyBuildExt(build_ext): if platform in ['osf1', 'unixware7', 'openunix8']: lib_dirs += ['/usr/ccs/lib'] + if platform == 'darwin': + # This should work on any unixy platform ;-) + # If the user has bothered specifying additional -I and -L flags + # in OPT and LDFLAGS we might as well use them here. + # NOTE: using shlex.split would technically be more correct, but + # also gives a bootstrap problem. Let's hope nobody uses directories + # with whitespace in the name to store libraries. + cflags, ldflags = sysconfig.get_config_vars( + 'CFLAGS', 'LDFLAGS') + for item in cflags.split(): + if item.startswith('-I'): + inc_dirs.append(item[2:]) + + for item in ldflags.split(): + if item.startswith('-L'): + lib_dirs.append(item[2:]) + # Check for MacOS X, which doesn't need libm.a at all math_libs = ['m'] if platform in ['darwin', 'beos', 'mac']: @@ -436,8 +453,20 @@ class PyBuildExt(build_ext): ['/usr/lib/termcap'], 'termcap'): readline_libs.append('termcap') + + if sys.platform == 'darwin': + # In every directory on the search path search for a dynamic + # library and then a static library, instead of first looking + # for dynamic libraries on the entiry path. + # This way a staticly linked custom readline gets picked up + # before the (broken) dynamic library in /usr/lib. + readline_extra_link_args = ('-Wl,-search_paths_first',) + else: + readline_extra_link_args = () + exts.append( Extension('readline', ['readline.c'], library_dirs=['/usr/lib/termcap'], + extra_link_args=readline_extra_link_args, libraries=readline_libs) ) if platform not in ['mac']: # crypt module. @@ -525,6 +554,23 @@ class PyBuildExt(build_ext): db_inc_paths.append('/pkg/db-3.%d/include' % x) db_inc_paths.append('/opt/db-3.%d/include' % x) + # Add some common subdirectories for Sleepycat DB to the list, + # based on the standard include directories. This way DB3/4 gets + # picked up when it is installed in a non-standard prefix and + # the user has added that prefix into inc_dirs. + std_variants = [] + for dn in inc_dirs: + std_variants.append(os.path.join(dn, 'db3')) + std_variants.append(os.path.join(dn, 'db4')) + for x in (0,1,2,3,4): + std_variants.append(os.path.join(dn, "db4%d"%x)) + std_variants.append(os.path.join(dn, "db4.%d"%x)) + for x in (2,3): + std_variants.append(os.path.join(dn, "db3%d"%x)) + std_variants.append(os.path.join(dn, "db3.%d"%x)) + + db_inc_paths = std_variants + db_inc_paths + db_ver_inc_map = {} class db_found(Exception): pass @@ -760,22 +806,10 @@ class PyBuildExt(build_ext): # # More information on Expat can be found at www.libexpat.org. # - if sys.byteorder == "little": - xmlbo = "1234" - else: - xmlbo = "4321" expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat') define_macros = [ - ('XML_NS', '1'), - ('XML_DTD', '1'), - ('BYTEORDER', xmlbo), - ('XML_CONTEXT_BYTES','1024'), + ('HAVE_EXPAT_CONFIG_H', '1'), ] - config_h = sysconfig.get_config_h_filename() - config_h_vars = sysconfig.parse_config_h(open(config_h)) - for feature_macro in ['HAVE_MEMMOVE', 'HAVE_BCOPY']: - if config_h_vars.has_key(feature_macro): - define_macros.append((feature_macro, '1')) exts.append(Extension('pyexpat', define_macros = define_macros, include_dirs = [expatinc], -- 2.47.3