[Python-checkins] python/dist/src/Mac/OSX fixapplepython23.py, NONE, 1.3.4.1 Makefile, 1.54.4.1, 1.54.4.2

jackjansen at users.sourceforge.net jackjansen at users.sourceforge.net
Thu Jan 6 23:33:58 CET 2005


Update of /cvsroot/python/python/dist/src/Mac/OSX
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2094
Modified Files:
 Tag: release24-maint
	Makefile 
Added Files:
 Tag: release24-maint
	fixapplepython23.py 
Log Message:
Backported from the trunk:
- When doing a frameworkinstall test whether Apple's Python 2.3 may
 need fixing
- Added quotes around destroot arguments.
--- NEW FILE: fixapplepython23.py ---
"""fixapplepython23 - Fix Apple-installed Python 2.3 (on Mac OS X 10.3)
Python 2.3 (and 2.3.X for X<5) have the problem that building an extension
for a framework installation may accidentally pick up the framework
of a newer Python, in stead of the one that was used to build the extension.
This script modifies the Makefile (in .../lib/python2.3/config) to use
the newer method of linking extensions with "-undefined dynamic_lookup"
which fixes this problem.
The script will first check all prerequisites, and return a zero exit
status also when nothing needs to be fixed.
"""
import sys
import os
import gestalt
MAKEFILE='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/Makefile'
CHANGES=((
 'LDSHARED=\t$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)\n',
 'LDSHARED=\t$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup\n'
 ),(
 'BLDSHARED=\t$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)\n',
 'BLDSHARED=\t$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup\n'
 ),(
 'CC=\t\tgcc\n',
 'CC=\t\t/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc\n'
 ),(
 'CXX=\t\tc++\n',
 'CXX=\t\t/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++\n'
))
GCC_SCRIPT='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc'
GXX_SCRIPT='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++'
SCRIPT="""#!/bin/sh
export MACOSX_DEPLOYMENT_TARGET=10.3
exec %s "${@}"
"""
def findline(lines, start):
 """return line starting with given string or -1"""
 for i in range(len(lines)):
 if lines[i][:len(start)] == start:
 return i
 return -1
 
def fix(makefile, do_apply):
 """Fix the Makefile, if required."""
 fixed = False
 lines = open(makefile).readlines()
 
 for old, new in CHANGES:
 i = findline(lines, new)
 if i >= 0:
 # Already fixed
 continue
 i = findline(lines, old)
 if i < 0:
 print 'fixapplepython23: Python installation not fixed (appears broken)'
 print 'fixapplepython23: missing line:', old
 return 2
 lines[i] = new
 fixed = True
 
 if fixed:
 if do_apply:
 print 'fixapplepython23: Fix to Apple-installed Python 2.3 applied'
 os.rename(makefile, makefile + '~')
 open(makefile, 'w').writelines(lines)
 return 0
 else:
 print 'fixapplepython23: Fix to Apple-installed Python 2.3 should be applied'
 return 1
 else:
 print 'fixapplepython23: No fix needed, appears to have been applied before'
 return 0
 
def makescript(filename, compiler):
 """Create a wrapper script for a compiler"""
 dirname = os.path.split(filename)[0]
 if not os.access(dirname, os.X_OK):
 os.mkdir(dirname, 0755)
 fp = open(filename, 'w')
 fp.write(SCRIPT % compiler)
 fp.close()
 os.chmod(filename, 0755)
 print 'fixapplepython23: Created', filename
 
def main():
 # Check for -n option
 if len(sys.argv) > 1 and sys.argv[1] == '-n':
 do_apply = False
 else:
 do_apply = True
 # First check OS version
 if gestalt.gestalt('sysv') < 0x1030:
 print 'fixapplepython23: no fix needed on MacOSX < 10.3'
 sys.exit(0)
 # Test that a framework Python is indeed installed
 if not os.path.exists(MAKEFILE):
 print 'fixapplepython23: Python framework does not appear to be installed (?), nothing fixed'
 sys.exit(0)
 # Check that we can actually write the file
 if do_apply and not os.access(MAKEFILE, os.W_OK):
 print 'fixapplepython23: No write permission, please run with "sudo"'
 sys.exit(2)
 # Create the shell scripts
 if do_apply:
 if not os.access(GCC_SCRIPT, os.X_OK):
 makescript(GCC_SCRIPT, "gcc")
 if not os.access(GXX_SCRIPT, os.X_OK):
 makescript(GXX_SCRIPT, "g++")
 # Finally fix the makefile
 rv = fix(MAKEFILE, do_apply)
 sys.exit(rv)
 
if __name__ == '__main__':
 main()
 
Index: Makefile
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/OSX/Makefile,v
retrieving revision 1.54.4.1
retrieving revision 1.54.4.2
diff -u -d -r1.54.4.1 -r1.54.4.2
--- Makefile	31 Dec 2004 11:23:20 -0000	1.54.4.1
+++ Makefile	6 Jan 2005 22:33:55 -0000	1.54.4.2
@@ -2,7 +2,7 @@
 # main Makefile. The next couple of variables are overridden on the 
 # commandline in that case.
 
-VERSION=2.5
+VERSION=2.4
 builddir = ../..
 srcdir = ../..
 prefix=/Library/Frameworks/Python.framework/Versions/$(VERSION)
@@ -60,7 +60,7 @@
 bundlebuilder=$(srcdir)/Lib/plat-mac/bundlebuilder.py
 
 installapps: install_PythonLauncher install_Python install_BuildApplet install_IDE \
-	install_IDLE install_PackageManager
+	install_IDLE install_PackageManager checkapplepython
 
 install_PythonLauncher:
 	cd $(srcdir)/Mac/OSX/PythonLauncher/PythonLauncher.pbproj ; \
@@ -120,12 +120,12 @@
 		echo See Mac/OSX/README for details; \
 	else \
 		echo $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
-		 --destroot $(DESTDIR) \
+		 --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) \
+		 --destroot "$(DESTDIR)" \
 			--python $(INSTALLED_PYTHONW) \
 			--output $(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app --noargv \
 			$(srcdir)/Mac/Tools/IDE/PythonIDE.py; \
@@ -138,7 +138,7 @@
 	else \
 		echo $(BUILDPYTHON) $(bundlebuilder) \
 			--builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \
-		 --destroot $(DESTDIR) \
+		 --destroot "$(DESTDIR)" \
 			--python $(INSTALLED_PYTHONW) \
 			--resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \
 			--mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \
@@ -146,7 +146,7 @@
 			--creator Pimp build; \
 		$(BUILDPYTHON) $(bundlebuilder) \
 			--builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \
-		 --destroot $(DESTDIR) \
+		 --destroot "$(DESTDIR)" \
 			--python $(INSTALLED_PYTHONW) \
 			--resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \
 			--mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \
@@ -161,13 +161,13 @@
 	else \
 		echo $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
 			--python $(INSTALLED_PYTHONW) \
-		 --destroot $(DESTDIR) \
+		 --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) \
+		 --destroot "$(DESTDIR)" \
 			--output $(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app \
 			--extra $(srcdir)/Lib/idlelib:Contents/Resources/idlelib \
 			$(srcdir)/Tools/scripts/idle ; \
@@ -176,7 +176,7 @@
 
 install_BuildApplet:
 	$(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
-		--destroot $(DESTDIR) \
+		--destroot "$(DESTDIR)" \
 		--python $(INSTALLED_PYTHONW) \
 		--output $(DESTDIR)$(PYTHONAPPSDIR)/BuildApplet.app \
 		$(srcdir)/Mac/scripts/BuildApplet.py
@@ -264,3 +264,10 @@
 		$(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
+ 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /