[Pythonmac-SIG] Re: Python on Mac OS X w/shared modules

Tony Lownds tony@metanet.com
Wed, 04 Oct 2000 14:35:55 -0700

> > b) made it so that just specifying --with-dyld= will make working shared
> > modules (basically, adds "-undefined suppress" to ld step)
>In bug report 115641
>the reporter claims that this will result in undefined symbols
>__eprintf and _environ when libtools is invoked. Can you see what his
>error was? How did you address this problem?

His error is caused by the fact that the system is recognized by configure 
as "next/" without my patch; I have found out that if it was recognized as 
"next/5" then --with-next framework will compile almost correctly, and will 
take care of the __eprintf and _environ symbols

I never got errors on the "restFP" and "saveFP" symbols.

I addressed it by making the system recognizable as something sane, and 
using the same LIBTOOL_CRUFT and LDSHARED as next/5

When I get back to my Mac I can  get some more details for you... 
essentially _environ should be left undefined (via ld's -U option), 
___eprintf is found using -lcc_dynamic

 > These changes to configure are pretty straightforward because they just
> > modify existing steps of the configure process. Its at
> > http://tony.lownds.com/macosx/ page.
>These patches look pretty good to me(*) - especially as they
>apparently don't interfere with any other configuration, so they can
>only improve things. Would you like to submit them to

Let me add some stuff to make --with-next-framework build correctly as well.

> > How do you think the FCNTL.py / fcntlmodule.so problem can be solved?


>On the case-insensitive case-preserving variants of DOS file systems
>(i.e. VFAT), opening a module involves reading the directory to see if
>the case on disk is the same as the expected case, see
>import.c:case_check. So if HFS is also case-preserving, a similar
>approach might work.

HFS+ is case-preserving. As long as fcntlmodule.so can't be imported 
*again* as FCNTLmodule.so, thereby causing a crash! The check_case stuff 
uses the Win32 api, but something like that will be necessary!