From 666b1e7e2f929af06fdfd074304a727f3dc5ed12 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Wed, 31 Oct 2001 12:11:48 +0000 Subject: [PATCH] Link the core with CoreServices, not with Carbon, and don't use any Carbon routines. As of 10.1 using Carbon will crash Python if no window server is available (ssh connection, console mode, MacOSX Server). This fixes bug #466907. A result of this mod is that the default 8bit encoding on OSX is now ASCII, for the time being. Also, the extension modules that need the Carbon framework now explicitly include it in setup.py. --- Python/mactoolboxglue.c | 8 ++++ configure | 88 ++++++++++++++++++++++++++++++++++++++--- configure.in | 2 +- setup.py | 70 ++++++++++++++++++++------------ 4 files changed, 137 insertions(+), 31 deletions(-) diff --git a/Python/mactoolboxglue.c b/Python/mactoolboxglue.c index 52ff00b470a..ef599006d57 100644 --- a/Python/mactoolboxglue.c +++ b/Python/mactoolboxglue.c @@ -37,6 +37,13 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ char *PyMac_getscript() { +#if TARGET_API_MAC_OSX + /* We cannot use GetSysFont because it requires the window manager + ** There are other APIs to query the default 8 bit encoding, but + ** I don't know about them (yet). + */ + return "ascii"; +#else int font, script, lang; font = 0; font = GetSysFont(); @@ -65,6 +72,7 @@ char *PyMac_getscript() default: return "ascii"; /* better than nothing */ } +#endif /* TARGET_API_MAC_OSX */ } /* Like strerror() but for Mac OS error numbers */ diff --git a/configure b/configure index 7e4b92cde17..cc9c3525a43 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh -# From configure.in Revision: 1.276 +# From configure.in Revision: 1.278 # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 @@ -3027,7 +3027,7 @@ then fi case "$enable_toolbox_glue" in yes) - extra_frameworks="-framework Carbon -framework Foundation" + extra_frameworks="-framework CoreServices -framework Foundation" extra_machdep_objs="Python/mactoolboxglue.o" extra_undefs="-u __dummy -u _PyMac_Error" cat >> confdefs.h <<\EOF @@ -7379,6 +7379,84 @@ EOF fi +# On HP/UX 11.0, mvwdelch is a block with a return statement +echo $ac_n "checking whether mvwdelch is an expression""... $ac_c" 1>&6 +echo "configure:7385: checking whether mvwdelch is an expression" >&5 +if eval "test \"`echo '$''{'ac_cv_mvwdelch_is_expression'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { + + int rtn; + rtn = mvwdelch(0,0,0); + +; return 0; } +EOF +if { (eval echo configure:7400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_mvwdelch_is_expression=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_mvwdelch_is_expression=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_mvwdelch_is_expression" 1>&6 + +if test "$ac_cv_mvwdelch_is_expression" = yes +then + cat >> confdefs.h <<\EOF +#define MVWDELCH_IS_EXPRESSION 1 +EOF + +fi + +echo $ac_n "checking whether WINDOW has _flags""... $ac_c" 1>&6 +echo "configure:7423: checking whether WINDOW has _flags" >&5 +if eval "test \"`echo '$''{'ac_cv_window_has_flags'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { + + WINDOW *w; + w->_flags = 0; + +; return 0; } +EOF +if { (eval echo configure:7438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_window_has_flags=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_window_has_flags=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_window_has_flags" 1>&6 + + +if test "$ac_cv_window_has_flags" = yes +then + cat >> confdefs.h <<\EOF +#define WINDOW_HAS_FLAGS 1 +EOF + +fi + # THIS MUST BE LAST, IT CAN BREAK OTHER TESTS! # Add sys/socket.h to confdefs.h cat >> confdefs.h <<\EOF @@ -7387,12 +7465,12 @@ cat >> confdefs.h <<\EOF #endif EOF echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:7391: checking for socklen_t" >&5 +echo "configure:7469: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7441,7 +7519,7 @@ done SRCDIRS="Parser Grammar Objects Python Modules" echo $ac_n "checking for build directories""... $ac_c" 1>&6 -echo "configure:7445: checking for build directories" >&5 +echo "configure:7523: checking for build directories" >&5 for dir in $SRCDIRS; do if test ! -d $dir; then mkdir $dir diff --git a/configure.in b/configure.in index dd724ae0969..f90b69238e1 100644 --- a/configure.in +++ b/configure.in @@ -655,7 +655,7 @@ then fi case "$enable_toolbox_glue" in yes) - extra_frameworks="-framework Carbon -framework Foundation" + extra_frameworks="-framework CoreServices -framework Foundation" extra_machdep_objs="Python/mactoolboxglue.o" extra_undefs="-u __dummy -u _PyMac_Error" AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE) diff --git a/setup.py b/setup.py index c525e03dd2a..f9903ef77d9 100644 --- a/setup.py +++ b/setup.py @@ -565,35 +565,55 @@ class PyBuildExt(build_ext): # procedure triggers on. frameworkdir = sysconfig.get_config_var('PYTHONFRAMEWORKDIR') exts.append( Extension('gestalt', ['gestaltmodule.c']) ) - exts.append( Extension('MacOS', ['macosmodule.c']) ) - exts.append( Extension('icglue', ['icgluemodule.c']) ) - exts.append( Extension('macfs', ['macfsmodule.c', '../Python/getapplbycreator.c']) ) - exts.append( Extension('_CF', ['cf/_CFmodule.c'], - extra_link_args=['-framework', 'CoreFoundation']) ) - exts.append( Extension('_Res', ['res/_Resmodule.c'] ) ) - exts.append( Extension('_Snd', ['snd/_Sndmodule.c']) ) + exts.append( Extension('MacOS', ['macosmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('icglue', ['icgluemodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('macfs', ['macfsmodule.c', '../Python/getapplbycreator.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_CF', ['cf/_CFmodule.c']) ) + exts.append( Extension('_Res', ['res/_Resmodule.c']) ) + exts.append( Extension('_Snd', ['snd/_Sndmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) if frameworkdir: - exts.append( Extension('Nav', ['Nav.c']) ) - exts.append( Extension('_AE', ['ae/_AEmodule.c']) ) - exts.append( Extension('_App', ['app/_Appmodule.c']) ) - exts.append( Extension('_Cm', ['cm/_Cmmodule.c']) ) - exts.append( Extension('_Ctl', ['ctl/_Ctlmodule.c']) ) - exts.append( Extension('_Dlg', ['dlg/_Dlgmodule.c']) ) - exts.append( Extension('_Drag', ['drag/_Dragmodule.c']) ) - exts.append( Extension('_Evt', ['evt/_Evtmodule.c']) ) - exts.append( Extension('_Fm', ['fm/_Fmmodule.c']) ) - exts.append( Extension('_Icn', ['icn/_Icnmodule.c']) ) - exts.append( Extension('_List', ['list/_Listmodule.c']) ) - exts.append( Extension('_Menu', ['menu/_Menumodule.c']) ) - exts.append( Extension('_Mlte', ['mlte/_Mltemodule.c']) ) - exts.append( Extension('_Qd', ['qd/_Qdmodule.c']) ) - exts.append( Extension('_Qdoffs', ['qdoffs/_Qdoffsmodule.c']) ) + exts.append( Extension('Nav', ['Nav.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_AE', ['ae/_AEmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_App', ['app/_Appmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Cm', ['cm/_Cmmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Ctl', ['ctl/_Ctlmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Dlg', ['dlg/_Dlgmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Drag', ['drag/_Dragmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Evt', ['evt/_Evtmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Fm', ['fm/_Fmmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Icn', ['icn/_Icnmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_List', ['list/_Listmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Menu', ['menu/_Menumodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Mlte', ['mlte/_Mltemodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Qd', ['qd/_Qdmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) + exts.append( Extension('_Qdoffs', ['qdoffs/_Qdoffsmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) exts.append( Extension('_Qt', ['qt/_Qtmodule.c'], - extra_link_args=['-framework', 'QuickTime']) ) + extra_link_args=['-framework', 'QuickTime', '-framework', 'Carbon']) ) ## exts.append( Extension('_Scrap', ['scrap/_Scrapmodule.c']) ) - exts.append( Extension('_TE', ['te/_TEmodule.c']) ) + exts.append( Extension('_TE', ['te/_TEmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) ## exts.append( Extension('waste', ['waste/wastemodule.c']) ) - exts.append( Extension('_Win', ['win/_Winmodule.c']) ) + exts.append( Extension('_Win', ['win/_Winmodule.c'], + extra_link_args=['-framework', 'Carbon']) ) self.extensions.extend(exts)