home *** CD-ROM | disk | FTP | other *** search
- If you read this file _as_is_, just ignore the funny characters you see.
- It is written in the POD format (see pod/perlpod.pod) which is specially
- designed to be readable as is.
-
- =head1 NAME
-
- README.macosx - Perl under Mac OS X
-
- =head1 SYNOPSIS
-
- This document briefly describes perl under Mac OS X.
-
-
- =head1 DESCRIPTION
-
- The latest Perl (5.8.1-RC3 as of this writing) builds without changes
- under Mac OS X. Under the 10.3 "Panther" release, all self-tests pass,
- and all standard features are supported.
-
- Earlier Mac OS X releases did not include a completely thread-safe libc,
- so threading is not fully supported. Also, earlier releases included a
- somewhat buggy libdb, so some of the DB_File tests are known to fail on
- those releases.
-
-
- =head2 Installation Prefix
-
- The default installation location for this release uses the traditional
- UNIX directory layout under /usr/local. This is the recommended location
- for most users, and will leave the Apple-supplied Perl and its modules
- undisturbed.
-
- Using an installation prefix of '/usr' will result in a directory layout
- that mirrors that of Apple's default Perl, with core modules stored in
- '/System/Library/Perl/${version}', CPAN modules stored in
- '/Library/Perl/${version}', and the addition of
- '/Network/Library/Perl/${version}' to @INC for modules that are stored
- on a file server and used by many Macs.
-
-
- =head2 libperl and Prebinding
-
- Mac OS X ships with a dynamically-loaded libperl, but the default for
- this release is to compile a static libperl. The reason for this is
- pre-binding. Dynamic libraries can be pre-bound to a specific address in
- memory in order to decrease load time. To do this, one needs to be aware
- of the location and size of all previously-loaded libraries. Apple
- collects this information as part of their overall OS build process, and
- thus has easy access to it when building Perl, but ordinary users would
- need to go to a great deal of effort to obtain the information needed
- for pre-binding.
-
- You can override the default and build a shared libperl if you wish
- (S<Configure ... -Duseshrlib>), but the load time will be
- significantly greater than either the static library, or Apple's
- pre-bound dynamic library.
-
-
- =head2 Updating Panther
-
- As of this writing, the latest Perl release that has been tested and
- approved for inclusion in the 10.3 "Panther" release of Mac OS X is
- 5.8.1 RC3. It is currently unknown whether the final 5.8.1 release will
- be made in time to be tested and included with Panther.
-
- If the final release of Perl 5.8.1 is not made in time to be included
- with Panther, it is recommended that you wait for an official Apple
- update to the OS, rather than attempting to update it yourself. In most
- cases, if you need a newer Perl, it is preferable to install it in some
- other location, such as /usr/local or /opt, rather than overwriting the
- system Perl. The default location (no -Dprefix=... specified when running
- Configure) is /usr/local.
-
- If you find that you do need to update the system Perl, there is one
- potential issue. If you upgrade using the default static libperl, you
- will find that the dynamic libperl supplied by Apple will not be
- deleted. If both libraries are present when an application that links
- against libperl is built, ld will link against the dynamic library by
- default. So, if you need to replace Apple's dynamic libperl with a
- static libperl, you need to be sure to delete the older dynamic library
- after you've installed the update.
-
- Note that this is only an issue when updating from an older build of the
- same Perl version. If you're updating from (for example) 5.8.1 to 5.8.2,
- this issue won't affect you.
-
-
- =head2 Known problems
-
- If you have installed extra libraries such as GDBM through Fink
- (in other words, you have libraries under F</sw/lib>), or libdlcompat
- to F</usr/local/lib>, you may need to be extra careful when running
- Configure to not to confuse Configure and Perl about which libraries
- to use. Being confused will show up for example as "dyld" errors about
- symbol problems, for example during "make test". The safest bet is to run
- Configure as
-
- Configure ... -Uloclibpth -Dlibpth=/usr/lib
-
- to make Configure look only into the system libraries. If you have some
- extra library directories that you really want to use (such as newer
- Berkeley DB libraries in pre-Panther systems), add those to the libpth:
-
- Configure ... -Uloclibpth -Dlibpth='/usr/lib /opt/lib'
-
- The default of building Perl statically may cause problems with complex
- applications like Tk: in that case consider building shared Perl
-
- Configure ... -Duseshrplib
-
- but remember that there's a startup cost to pay in that case (see above
- "libperl and Prebinding").
-
-
- =head2 MacPerl
-
- Quite a bit has been written about MacPerl, the Perl distribution for
- "Classic MacOS" - that is, versions 9 and earlier of MacOS. Because it
- runs in environment that's very different from that of UNIX, many things
- are done differently in MacPerl. Modules are installed using a different
- procedure, Perl itself is built differently, path names are different,
- etc.
-
- From the perspective of a Perl programmer, Mac OS X is more like a
- traditional UNIX than Classic MacOS. If you find documentation that
- refers to a special procedure that's needed for MacOS that's drastically
- different from the instructions provided for UNIX, the MacOS
- instructions are quite often intended for MacPerl on Classic MacOS. In
- that case, the correct procedure on Mac OS X is usually to follow the
- UNIX instructions, rather than the MacPerl instructions.
-
-
- =head2 Carbon
-
- MacPerl ships with a number of modules that are used to access the
- classic MacOS toolbox. Many of these modules have been updated to use
- Mac OS X's newer "Carbon" toolbox, and are available from CPAN in the
- "Mac::Carbon" module.
-
-
- =head2 Cocoa
-
- There are two ways to use Cocoa from Perl. Apple's PerlObjCBridge
- module, included with Mac OS X, can be used by standalone scripts to
- access Foundation (i.e. non-GUI) classes and objects.
-
- An alternative is CamelBones, a framework that allows access to both
- Foundation and AppKit classes and objects, so that full GUI applications
- can be built in Perl. CamelBones can be found on SourceForge, at
- L<http://www.sourceforge.net/projects/camelbones/>.
-
-
- =head1 Starting From Scratch
-
- Unfortunately it is not that difficult somehow manage to break one's
- Mac OS X Perl rather severely. If all else fails and you want to
- really, B<REALLY>, start from scratch and remove even your Apple Perl
- installation (which has become corrupted somehow), the following
- instructions should do it. B<Please think twice before following
- these instructions: they are much like conducting brain surgery to
- yourself. Without anesthesia.> We will B<not> come to fix your system
- if you do this.
-
- First, get rid of the libperl.dylib:
-
- # cd /System/Library/Perl/darwin/CORE
- # rm libperl.dylib
-
- Then delete every .bundle file found anywhere in the folders:
-
- /System/Library/Perl
- /Library/Perl
-
- You can find them for example by
-
- # find /System/Library/Perl /Library/Perl -name '*.bundle' -print
-
- After this you can either copy Perl from your operating system CDs
- (you will need at least the /System/Library/Perl and /usr/bin/perl),
- or rebuild Perl from the source code with C<Configure -Dprefix=/usr
- -Dusershrplib> NOTE: the C<-Dprefix=/usr> to replace the system Perl
- works much better with Perl 5.8.1 and later, in Perl 5.8.0 the
- settings were not quite right.
-
-
- =head1 AUTHOR
-
- This README was written by Sherm Pendley E<lt>sherm@dot-app.orgE<gt>.
- The "Starting From Scratch" recipe was contributed by John Montbriand
- E<lt>montbriand@apple.comE<gt>.
-
- =head1 DATE
-
- Last modified 2003-09-08.
-