Fix for issue #2573: Can't change the framework name on OS X builds

This introduces a new configure option: --with-framework-name=NAME
(defaulting to 'Python'). This allows you to install several copies
of the Python framework with different names (such as a normal build
and a debug build).
This commit is contained in:
Ronald Oussoren 2008-05-02 19:45:11 +00:00
parent ee340e501d
commit 580c7fec67
13 changed files with 77 additions and 57 deletions

View File

@ -199,7 +199,7 @@ PKG_RECIPES = [
dict(
name="PythonApplications",
long_name="GUI Applications",
source="/Applications/MacPython %(VER)s",
source="/Applications/Python %(VER)s",
readme="""\
This package installs IDLE (an interactive Python IDE),
Python Launcher and Build Applet (create application bundles

View File

@ -19,7 +19,7 @@ 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"
The installer puts the applications in "Python $VERSION"
in your Applications folder, command-line tools in
/usr/local/bin and the underlying machinery in
$PYTHONFRAMEWORKINSTALLDIR.

View File

@ -9,6 +9,7 @@ srcdir= @srcdir@
VERSION= @VERSION@
UNIVERSALSDK=@UNIVERSALSDK@
builddir= ../..
PYTHONFRAMEWORK=@PYTHONFRAMEWORK@
RUNSHARED= @RUNSHARED@
BUILDEXE= @BUILDEXEEXT@
@ -21,7 +22,7 @@ MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@
BUNDLEBULDER=$(srcdir)/../../Lib/plat-mac/bundlebuilder.py
PYTHONAPPSDIR=/Applications/MacPython $(VERSION)
PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION)
all: IDLE.app

View File

@ -13,14 +13,16 @@ BUILDPYTHON=$(builddir)/python$(BUILDEXE)
DESTDIR=
LDFLAGS=@LDFLAGS@
FRAMEWORKUNIXTOOLSPREFIX=@FRAMEWORKUNIXTOOLSPREFIX@
PYTHONFRAMEWORK=@PYTHONFRAMEWORK@
# These are normally glimpsed from the previous set
bindir=$(prefix)/bin
PYTHONAPPSDIR=/Applications/MacPython $(VERSION)
PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION)
APPINSTALLDIR=$(prefix)/Resources/Python.app
# Variables for installing the "normal" unix binaries
INSTALLED_PYTHONAPP=$(APPINSTALLDIR)/Contents/MacOS/Python
INSTALLED_PYTHONAPP=$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)
# Items more-or-less copied from the main Makefile
DIRMODE=755
@ -103,7 +105,7 @@ install_versionedtools:
pythonw: $(srcdir)/Tools/pythonw.c Makefile
$(CC) $(LDFLAGS) -o $@ $(srcdir)/Tools/pythonw.c \
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/Python"'
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"'
install_PythonLauncher:
@ -155,7 +157,7 @@ install_Python:
esac; \
done; \
done
$(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/Python"
$(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
install_IDLE:
cd IDLE && make install

View File

@ -20,7 +20,7 @@
<key>CFBundleExecutable</key>
<string>Python</string>
<key>CFBundleGetInfoString</key>
<string>2.5alpha0, (c) 2004 Python Software Foundation.</string>
<string>@VERSION@, (c) 2004 Python Software Foundation.</string>
<key>CFBundleHelpBookFolder</key>
<array>
<string>Documentation</string>
@ -33,21 +33,21 @@
<key>CFBundleIconFile</key>
<string>PythonInterpreter.icns</string>
<key>CFBundleIdentifier</key>
<string>org.python.python</string>
<string>@PYTHONFRAMEWORKIDENTIFIER@.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string>2.5alpha0, (c) 2004 Python Software Foundation.</string>
<string>@VERSION@, (c) 2004-2008 Python Software Foundation.</string>
<key>CFBundleName</key>
<string>Python</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.5alpha0</string>
<string>@VERSION@</string>
<key>CFBundleSignature</key>
<string>PytX</string>
<key>CFBundleVersion</key>
<string>2.5alpha0</string>
<string>@VERSION@</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>LSRequiresCarbon</key>

View File

@ -9,7 +9,7 @@
<key>CFBundleGetInfoString</key>
<string>Python Runtime and Library</string>
<key>CFBundleIdentifier</key>
<string>org.python.python</string>
<string>@PYTHONFRAMEWORKIDENTIFIER@</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@ -17,10 +17,12 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>2.5</string>
<string>%VERSION%, (c) 2004-2008 Python Software Foundation.</string>
<key>CFBundleLongVersionString</key>
<string>%VERSION%, (c) 2004-2008 Python Software Foundation.</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2.5</string>
<string>%VERSION%</string>
</dict>
</plist>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>2.5alpha0</string>
<key>CFBundleVersion</key>
<string>2.5alpha0</string>
<key>ProjectName</key>
<string>Python</string>
<key>ReleaseStatus</key>
<string>alfa</string>
<key>SourceVersion</key>
<string>2.4a0</string>
</dict>
</plist>

View File

@ -418,18 +418,16 @@ libpython$(VERSION).sl: $(LIBRARY_OBJS)
# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
# minimal framework (not including the Lib directory and such) in the current
# directory.
RESSRCDIR=$(srcdir)/Mac/Resources/framework
RESSRCDIR=Mac/Resources/framework
$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
$(LIBRARY) \
$(RESSRCDIR)/Info.plist \
$(RESSRCDIR)/version.plist \
$(RESSRCDIR)/English.lproj/InfoPlist.strings
$(RESSRCDIR)/Info.plist
$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
if test "${UNIVERSALSDK}"; then \
$(CC) -o $(LDLIBRARY) -arch i386 -arch ppc -dynamiclib \
-isysroot "${UNIVERSALSDK}" \
-all_load $(LIBRARY) -Wl,-single_module \
-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python \
-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
-compatibility_version $(VERSION) \
-current_version $(VERSION); \
else \
@ -440,10 +438,6 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
$(INSTALL_DATA) $(RESSRCDIR)/version.plist \
$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/version.plist
$(INSTALL_DATA) $(RESSRCDIR)/English.lproj/InfoPlist.strings \
$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj/InfoPlist.strings
$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
$(LN) -fsn Versions/Current/Headers $(PYTHONFRAMEWORKDIR)/Headers
@ -1030,12 +1024,9 @@ frameworkinstallstructure: $(LDLIBRARY)
fi; \
done
$(LN) -fsn include/python$(VERSION) $(DESTDIR)$(prefix)/Headers
$(INSTALL_DATA) $(RESSRCDIR)/Info.plist $(DESTDIR)$(prefix)/Resources/Info.plist
$(INSTALL_DATA) $(RESSRCDIR)/version.plist $(DESTDIR)$(prefix)/Resources/version.plist
$(INSTALL_DATA) $(RESSRCDIR)/English.lproj/InfoPlist.strings \
$(DESTDIR)$(prefix)/Resources/English.lproj/InfoPlist.strings
sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print platform.python_version()'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
$(LN) -fsn Versions/Current/Python $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Python
$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
@ -1044,7 +1035,7 @@ frameworkinstallstructure: $(LDLIBRARY)
# Install a number of symlinks to keep software that expects a normal unix
# install (which includes python-config) happy.
frameworkinstallmaclib:
ln -fs "../../../Python" "$(DESTDIR)$(prefix)/lib/python$(VERSION)/config/libpython$(VERSION).a"
ln -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/python$(VERSION)/config/libpython$(VERSION).a"
cd Mac && $(MAKE) installmacsubtree DESTDIR="$(DESTDIR)"
# This installs the IDE, the Launcher and other apps into /Applications

View File

@ -141,6 +141,9 @@ Build
- Issue #2544: On HP-UX systems, use 'gcc -shared' for linking when
gcc is used as compiler.
- Issue #2573: On MacOS X it is now possible to install the framework
with a different name using --with-framework-name=NAME.
C API
-----

38
configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in Revision: 62451 .
# From configure.in Revision: 62499 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for python 2.6.
#
@ -658,6 +658,7 @@ SOVERSION
CONFIG_ARGS
UNIVERSALSDK
PYTHONFRAMEWORK
PYTHONFRAMEWORKIDENTIFIER
PYTHONFRAMEWORKDIR
PYTHONFRAMEWORKPREFIX
PYTHONFRAMEWORKINSTALLDIR
@ -1327,6 +1328,9 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-framework-name=FRAMEWORK
specify an alternate name of the framework built
with --enable-framework
--without-gcc never use gcc
--with-cxx-main=<compiler>
compile main() and link python executable with C++
@ -1879,6 +1883,22 @@ fi
# Check whether --with-framework-name was given.
if test "${with_framework_name+set}" = set; then
withval=$with_framework_name;
PYTHONFRAMEWORK=${withval}
PYTHONFRAMEWORKDIR=${withval}.framework
PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr 'A-Z' 'a-z'`
else
PYTHONFRAMEWORK=Python
PYTHONFRAMEWORKDIR=Python.framework
PYTHONFRAMEWORKIDENTIFIER=org.python.python
fi
# Check whether --enable-framework was given.
if test "${enable_framework+set}" = set; then
enableval=$enable_framework;
@ -1904,8 +1924,6 @@ if test "${enable_framework+set}" = set; then
enable_framework=
;;
*)
PYTHONFRAMEWORK=Python
PYTHONFRAMEWORKDIR=Python.framework
PYTHONFRAMEWORKPREFIX=$enableval
PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
@ -1919,7 +1937,7 @@ if test "${enable_framework+set}" = set; then
fi
prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
# Add makefiles for Mac specific code to the list of output
# Add files for Mac specific code to the list of output
# files:
ac_config_files="$ac_config_files Mac/Makefile"
@ -1927,6 +1945,10 @@ if test "${enable_framework+set}" = set; then
ac_config_files="$ac_config_files Mac/IDLE/Makefile"
ac_config_files="$ac_config_files Mac/Resources/framework/Info.plist"
ac_config_files="$ac_config_files Mac/Resources/app/Info.plist"
esac
else
@ -1958,6 +1980,7 @@ fi
##AC_ARG_WITH(dyld,
## AC_HELP_STRING(--with-dyld,
## Use (OpenStep|Rhapsody) dynamic linker))
@ -24579,6 +24602,8 @@ do
"Mac/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/Makefile" ;;
"Mac/PythonLauncher/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;;
"Mac/IDLE/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/IDLE/Makefile" ;;
"Mac/Resources/framework/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/framework/Info.plist" ;;
"Mac/Resources/app/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/app/Info.plist" ;;
"Makefile.pre") CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;;
"Modules/Setup.config") CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;;
@ -24684,6 +24709,7 @@ SOVERSION!$SOVERSION$ac_delim
CONFIG_ARGS!$CONFIG_ARGS$ac_delim
UNIVERSALSDK!$UNIVERSALSDK$ac_delim
PYTHONFRAMEWORK!$PYTHONFRAMEWORK$ac_delim
PYTHONFRAMEWORKIDENTIFIER!$PYTHONFRAMEWORKIDENTIFIER$ac_delim
PYTHONFRAMEWORKDIR!$PYTHONFRAMEWORKDIR$ac_delim
PYTHONFRAMEWORKPREFIX!$PYTHONFRAMEWORKPREFIX$ac_delim
PYTHONFRAMEWORKINSTALLDIR!$PYTHONFRAMEWORKINSTALLDIR$ac_delim
@ -24738,7 +24764,6 @@ LINKFORSHARED!$LINKFORSHARED$ac_delim
CFLAGSFORSHARED!$CFLAGSFORSHARED$ac_delim
SHLIBS!$SHLIBS$ac_delim
USE_SIGNAL_MODULE!$USE_SIGNAL_MODULE$ac_delim
SIGNAL_OBJS!$SIGNAL_OBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@ -24780,6 +24805,7 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
SIGNAL_OBJS!$SIGNAL_OBJS$ac_delim
USE_THREAD_MODULE!$USE_THREAD_MODULE$ac_delim
LDLAST!$LDLAST$ac_delim
THREADOBJ!$THREADOBJ$ac_delim
@ -24801,7 +24827,7 @@ SRCDIRS!$SRCDIRS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 19; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 20; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View File

@ -83,6 +83,18 @@ AC_ARG_ENABLE(universalsdk,
])
AC_SUBST(UNIVERSALSDK)
AC_ARG_WITH(framework-name,
AC_HELP_STRING(--with-framework-name=FRAMEWORK,
specify an alternate name of the framework built with --enable-framework),
[
PYTHONFRAMEWORK=${withval}
PYTHONFRAMEWORKDIR=${withval}.framework
PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
],[
PYTHONFRAMEWORK=Python
PYTHONFRAMEWORKDIR=Python.framework
PYTHONFRAMEWORKIDENTIFIER=org.python.python
])
dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
AC_ARG_ENABLE(framework,
AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
@ -109,8 +121,6 @@ AC_ARG_ENABLE(framework,
enable_framework=
;;
*)
PYTHONFRAMEWORK=Python
PYTHONFRAMEWORKDIR=Python.framework
PYTHONFRAMEWORKPREFIX=$enableval
PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
@ -124,11 +134,13 @@ AC_ARG_ENABLE(framework,
fi
prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
# Add makefiles for Mac specific code to the list of output
# Add files for Mac specific code to the list of output
# files:
AC_CONFIG_FILES(Mac/Makefile)
AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
AC_CONFIG_FILES(Mac/IDLE/Makefile)
AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
esac
],[
PYTHONFRAMEWORK=
@ -147,6 +159,7 @@ AC_ARG_ENABLE(framework,
enable_framework=
])
AC_SUBST(PYTHONFRAMEWORK)
AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
AC_SUBST(PYTHONFRAMEWORKDIR)
AC_SUBST(PYTHONFRAMEWORKPREFIX)
AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)