diff options
Diffstat (limited to 'upstream/fedora-rawhide/man1/perlmacosx.1')
-rw-r--r-- | upstream/fedora-rawhide/man1/perlmacosx.1 | 337 |
1 files changed, 337 insertions, 0 deletions
diff --git a/upstream/fedora-rawhide/man1/perlmacosx.1 b/upstream/fedora-rawhide/man1/perlmacosx.1 new file mode 100644 index 00000000..95b17718 --- /dev/null +++ b/upstream/fedora-rawhide/man1/perlmacosx.1 @@ -0,0 +1,337 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "PERLMACOSX 1" +.TH PERLMACOSX 1 2024-01-25 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +perlmacosx \- Perl under Mac OS X +.SH SYNOPSIS +.IX Header "SYNOPSIS" +This document briefly describes Perl under Mac OS X. +.PP +.Vb 7 +\& curl \-O https://www.cpan.org/src/perl\-5.38.2.tar.gz +\& tar \-xzf perl\-5.38.2.tar.gz +\& cd perl\-5.38.2 +\& ./Configure \-des \-Dprefix=/usr/local/ +\& make +\& make test +\& sudo make install +.Ve +.SH DESCRIPTION +.IX Header "DESCRIPTION" +The latest Perl release (5.38.2 as of this writing) builds without changes +under all versions of Mac OS X from 10.3 "Panther" onwards. +.PP +In order to build your own version of Perl you will need 'make', +which is part of Apple's developer tools \- also known as Xcode. From +Mac OS X 10.7 "Lion" onwards, it can be downloaded separately as the +\&'Command Line Tools' bundle directly from <https://developer.apple.com/downloads/> +(you will need a free account to log in), or as a part of the Xcode suite, +freely available at the App Store. Xcode is a pretty big app, so +unless you already have it or really want it, you are advised to get the +\&'Command Line Tools' bundle separately from the link above. If you want +to do it from within Xcode, go to Xcode \-> Preferences \-> Downloads and +select the 'Command Line Tools' option. +.PP +Between Mac OS X 10.3 "Panther" and 10.6 "Snow Leopard", the 'Command +Line Tools' bundle was called 'unix tools', and was usually supplied +with Mac OS install DVDs. +.PP +Earlier Mac OS X releases (10.2 "Jaguar" and older) did not include a +completely thread-safe libc, so threading is not fully supported. Also, +earlier releases included a buggy libdb, so some of the DB_File tests +are known to fail on those releases. +.SS "Installation Prefix" +.IX Subsection "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. +.PP +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 \f(CW@INC\fR for modules that are stored +on a file server and used by many Macs. +.SS "SDK support" +.IX Subsection "SDK support" +First, export the path to the SDK into the build environment: +.PP +.Vb 1 +\& export SDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk +.Ve +.PP +Please make sure the SDK version (i.e. the numbers right before '.sdk') +matches your system's (in this case, Mac OS X 10.8 "Mountain Lion"), as it is +possible to have more than one SDK installed. Also make sure the path exists +in your system, and if it doesn't please make sure the SDK is properly +installed, as it should come with the 'Command Line Tools' bundle mentioned +above. Finally, if you have an older Mac OS X (10.6 "Snow Leopard" and below) +running Xcode 4.2 or lower, the SDK path might be something like +\&\f(CW\*(Aq/Developer/SDKs/MacOSX10.3.9.sdk\*(Aq\fR. +.PP +You can use the SDK by exporting some additions to Perl's 'ccflags' and '..flags' +config variables: +.PP +.Vb 5 +\& ./Configure \-Accflags="\-nostdinc \-B$SDK/usr/include/gcc \e +\& \-B$SDK/usr/lib/gcc \-isystem$SDK/usr/include \e +\& \-F$SDK/System/Library/Frameworks" \e +\& \-Aldflags="\-Wl,\-syslibroot,$SDK" \e +\& \-de +.Ve +.SS "Universal Binary support" +.IX Subsection "Universal Binary support" +Note: From Mac OS X 10.6 "Snow Leopard" onwards, Apple only supports +Intel-based hardware. This means you can safely skip this section unless +you have an older Apple computer running on ppc or wish to create a perl +binary with backwards compatibility. +.PP +You can compile perl as a universal binary (built for both ppc and intel). +In Mac OS X 10.4 "Tiger", you must export the 'u' variant of the SDK: +.PP +.Vb 1 +\& export SDK=/Developer/SDKs/MacOSX10.4u.sdk +.Ve +.PP +Mac OS X 10.5 "Leopard" and above do not require the 'u' variant. +.PP +In addition to the compiler flags used to select the SDK, also add the flags +for creating a universal binary: +.PP +.Vb 6 +\& ./Configure \-Accflags="\-arch i686 \-arch ppc \-nostdinc \e +\& \-B$SDK/usr/include/gcc \e +\& \-B$SDK/usr/lib/gcc \-isystem$SDK/usr/include \e +\& \-F$SDK/System/Library/Frameworks" \e +\& \-Aldflags="\-arch i686 \-arch ppc \-Wl,\-syslibroot,$SDK" \e +\& \-de +.Ve +.PP +Keep in mind that these compiler and linker settings will also be used when +building CPAN modules. For XS modules to be compiled as a universal binary, any +libraries it links to must also be universal binaries. The system libraries that +Apple includes with the 10.4u SDK are all universal, but user-installed libraries +may need to be re-installed as universal binaries. +.SS "64\-bit PPC support" +.IX Subsection "64-bit PPC support" +Follow the instructions in \fIINSTALL\fR to build perl with support for 64\-bit +integers (\f(CW\*(C`use64bitint\*(C'\fR) or both 64\-bit integers and 64\-bit addressing +(\f(CW\*(C`use64bitall\*(C'\fR). In the latter case, the resulting binary will run only +on G5\-based hosts. +.PP +Support for 64\-bit addressing is experimental: some aspects of Perl may be +omitted or buggy. Note the messages output by \fIConfigure\fR for further +information. Please use <https://github.com/Perl/perl5/issues> to submit a +problem report in the event that you encounter difficulties. +.PP +When building 64\-bit modules, it is your responsibility to ensure that linked +external libraries and frameworks provide 64\-bit support: if they do not, +module building may appear to succeed, but attempts to use the module will +result in run-time dynamic linking errors, and subsequent test failures. +You can use \f(CW\*(C`file\*(C'\fR to discover the architectures supported by a library: +.PP +.Vb 4 +\& $ file libgdbm.3.0.0.dylib +\& libgdbm.3.0.0.dylib: Mach\-O fat file with 2 architectures +\& libgdbm.3.0.0.dylib (for architecture ppc): Mach\-O dynamically linked shared library ppc +\& libgdbm.3.0.0.dylib (for architecture ppc64): Mach\-O 64\-bit dynamically linked shared library ppc64 +.Ve +.PP +Note that this issue precludes the building of many Macintosh-specific CPAN +modules (\f(CW\*(C`Mac::*\*(C'\fR), as the required Apple frameworks do not provide PPC64 +support. Similarly, downloads from Fink or Darwinports are unlikely to provide +64\-bit support; the libraries must be rebuilt from source with the appropriate +compiler and linker flags. For further information, see Apple's +\&\fI64\-Bit Transition Guide\fR at +<https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/64bitPorting/transition/transition.html>. +.SS "libperl and Prebinding" +.IX Subsection "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. +.PP +You can override the default and build a shared libperl if you wish +(Configure\ ...\ \-Duseshrplib). +.PP +With Mac OS X 10.4 "Tiger" and newer, there is almost no performance +penalty for non-prebound libraries. Earlier releases will suffer a greater +load time than either the static library, or Apple's pre-bound dynamic library. +.SS "Updating Apple's Perl" +.IX Subsection "Updating Apple's Perl" +In a word \- don't, at least not without a *very* good reason. Your scripts +can just as easily begin with "#!/usr/local/bin/perl" as with +"#!/usr/bin/perl". Scripts supplied by Apple and other third parties as +part of installation packages and such have generally only been tested +with the /usr/bin/perl that's installed by Apple. +.PP +If you find that you do need to update the system Perl, one issue worth +keeping in mind is the question of static vs. dynamic libraries. 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. +.SS "Known problems" +.IX Subsection "Known problems" +If you have installed extra libraries such as GDBM through Fink +(in other words, you have libraries under \fI/sw/lib\fR), or libdlcompat +to \fI/usr/local/lib\fR, 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 +.PP +.Vb 1 +\& Configure ... \-Uloclibpth \-Dlibpth=/usr/lib +.Ve +.PP +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: +.PP +.Vb 1 +\& Configure ... \-Uloclibpth \-Dlibpth=\*(Aq/usr/lib /opt/lib\*(Aq +.Ve +.PP +The default of building Perl statically may cause problems with complex +applications like Tk: in that case consider building shared Perl +.PP +.Vb 1 +\& Configure ... \-Duseshrplib +.Ve +.PP +but remember that there's a startup cost to pay in that case (see above +"libperl and Prebinding"). +.PP +Starting with Tiger (Mac OS X 10.4), Apple shipped broken locale files for +the eu_ES locale (Basque-Spain). In previous releases of Perl, this resulted in +failures in the \fIlib/locale\fR test. These failures have been suppressed +in the current release of Perl by making the test ignore the broken locale. +If you need to use the eu_ES locale, you should contact Apple support. +.SS Cocoa +.IX Subsection "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. +.PP +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 +<https://www.sourceforge.net/projects/camelbones/>. +.SH "Starting From Scratch" +.IX Header "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, \fBREALLY\fR, start from scratch and remove even your Apple Perl +installation (which has become corrupted somehow), the following +instructions should do it. \fBPlease think twice before following +these instructions: they are much like conducting brain surgery to +yourself. Without anesthesia.\fR We will \fBnot\fR come to fix your system +if you do this. +.PP +First, get rid of the libperl.dylib: +.PP +.Vb 2 +\& # cd /System/Library/Perl/darwin/CORE +\& # rm libperl.dylib +.Ve +.PP +Then delete every .bundle file found anywhere in the folders: +.PP +.Vb 2 +\& /System/Library/Perl +\& /Library/Perl +.Ve +.PP +You can find them for example by +.PP +.Vb 1 +\& # find /System/Library/Perl /Library/Perl \-name \*(Aq*.bundle\*(Aq \-print +.Ve +.PP +After this you can either copy Perl from your operating system media +(you will need at least the /System/Library/Perl and /usr/bin/perl), +or rebuild Perl from the source code with \f(CW\*(C`Configure \-Dprefix=/usr +\&\-Duseshrplib\*(C'\fR NOTE: the \f(CW\*(C`\-Dprefix=/usr\*(C'\fR 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. +.PP +"Pacifist" from CharlesSoft (<https://www.charlessoft.com/>) is a nice +way to extract the Perl binaries from the OS media, without having to +reinstall the entire OS. +.SH AUTHOR +.IX Header "AUTHOR" +This README was written by Sherm Pendley <sherm@dot\-app.org>, +and subsequently updated by Dominic Dunlop <domo@computer.org> +and Breno G. de Oliveira <garu@cpan.org>. The "Starting From Scratch" +recipe was contributed by John Montbriand <montbriand@apple.com>. +.SH DATE +.IX Header "DATE" +Last modified 2013\-04\-29. |