xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/pod/perlsolaris.pod (revision 0:68f95e015346)
1*0Sstevel@tonic-gateIf you read this file _as_is_, just ignore the funny characters you
2*0Sstevel@tonic-gatesee.  It is written in the POD format (see pod/perlpod.pod) which is
3*0Sstevel@tonic-gatespecifically designed to be readable as is.
4*0Sstevel@tonic-gate
5*0Sstevel@tonic-gate=head1 NAME
6*0Sstevel@tonic-gate
7*0Sstevel@tonic-gateREADME.solaris - Perl version 5 on Solaris systems
8*0Sstevel@tonic-gate
9*0Sstevel@tonic-gate=head1 DESCRIPTION
10*0Sstevel@tonic-gate
11*0Sstevel@tonic-gateThis document describes various features of Sun's Solaris operating system
12*0Sstevel@tonic-gatethat will affect how Perl version 5 (hereafter just perl) is
13*0Sstevel@tonic-gatecompiled and/or runs.  Some issues relating to the older SunOS 4.x are
14*0Sstevel@tonic-gatealso discussed, though they may be out of date.
15*0Sstevel@tonic-gate
16*0Sstevel@tonic-gateFor the most part, everything should just work.
17*0Sstevel@tonic-gate
18*0Sstevel@tonic-gateStarting with Solaris 8, perl5.00503 (or higher) is supplied with the
19*0Sstevel@tonic-gateoperating system, so you might not even need to build a newer version
20*0Sstevel@tonic-gateof perl at all.  The Sun-supplied version is installed in /usr/perl5
21*0Sstevel@tonic-gatewith /usr/bin/perl pointing to /usr/perl5/bin/perl.  Do not disturb
22*0Sstevel@tonic-gatethat installation unless you really know what you are doing.  If you
23*0Sstevel@tonic-gateremove the perl supplied with the OS, you will render some bits of
24*0Sstevel@tonic-gateyour system inoperable.  If you wish to install a newer version of perl,
25*0Sstevel@tonic-gateinstall it under a different prefix from /usr/perl5.  Common prefixes
26*0Sstevel@tonic-gateto use are /usr/local and /opt/perl.
27*0Sstevel@tonic-gate
28*0Sstevel@tonic-gateYou may wish to put your version of perl in the PATH of all users by
29*0Sstevel@tonic-gatechanging the link /usr/bin/perl.  This is OK, as all perl scripts
30*0Sstevel@tonic-gateshipped with Solaris use an explicit path.  Solaris ships with a
31*0Sstevel@tonic-gaterange of Solaris-specific modules.  If you choose to install your own
32*0Sstevel@tonic-gateversion of perl you will find the source of many of these modules is
33*0Sstevel@tonic-gateavailable on CPAN under the Sun::Solaris:: namespace.
34*0Sstevel@tonic-gate
35*0Sstevel@tonic-gateSolaris may include two versions of perl, e.g. Solaris 9 includes
36*0Sstevel@tonic-gateboth 5.005_03 and 5.6.1 and Solaris 10 includes both 5.6.1 and 5.8.3.
37*0Sstevel@tonic-gateThis is to provide stability across Solaris releases, in cases where
38*0Sstevel@tonic-gatea later perl version has incompatibilities with the version included
39*0Sstevel@tonic-gatein the preceeding Solaris release.  The default perl version will always
40*0Sstevel@tonic-gatebe the most recent, and in general the old version will only be
41*0Sstevel@tonic-gateretained for one Solaris release.  Note also that the default perl will
42*0Sstevel@tonic-gateNOT be configured to search for modules in the older version, again due
43*0Sstevel@tonic-gateto compatibility/stability concerns.  As a consequence if you upgrade
44*0Sstevel@tonic-gateSolaris, you will have to rebuild/reinstall any additional CPAN modules
45*0Sstevel@tonic-gatethat you installed for the previous Solaris version.  See the CPAN manpage
46*0Sstevel@tonic-gateunder 'autobundle' for a quick way of doing this.
47*0Sstevel@tonic-gate
48*0Sstevel@tonic-gateAs an interim measure, you may either change the #! line of your
49*0Sstevel@tonic-gatescripts to specifically refer to the old perl version, e.g. on
50*0Sstevel@tonic-gateSolaris 10 use #!/usr/perl5/5.6.1/bin/perl to use the perl version
51*0Sstevel@tonic-gatethat was the default for Solaris 9, or if you have a large number of
52*0Sstevel@tonic-gatescripts it may be more convenient to make the old version of perl the
53*0Sstevel@tonic-gatedefault on your system.  You can do this by changing the appropriate
54*0Sstevel@tonic-gatesymlinks under /usr/perl5 as follows (example for Solaris 10):
55*0Sstevel@tonic-gate
56*0Sstevel@tonic-gate # cd /usr/perl5
57*0Sstevel@tonic-gate # rm bin man pod
58*0Sstevel@tonic-gate # ln -s ./5.6.1/bin
59*0Sstevel@tonic-gate # ln -s ./5.6.1/man
60*0Sstevel@tonic-gate # ln -s ./5.6.1/lib/pod
61*0Sstevel@tonic-gate # rm /usr/bin/perl
62*0Sstevel@tonic-gate # ln -s ../perl5/5.6.1/bin/perl /usr/bin/perl
63*0Sstevel@tonic-gate
64*0Sstevel@tonic-gateIn both cases this should only be considered to be a temporary
65*0Sstevel@tonic-gatemeasure - you should upgrade to the later version of perl as soon as
66*0Sstevel@tonic-gateis practicable.
67*0Sstevel@tonic-gate
68*0Sstevel@tonic-gateNote also that the perl command-line utilities (e.g. perldoc) and any
69*0Sstevel@tonic-gatethat are added by modules that you install will be under
70*0Sstevel@tonic-gate/usr/perl5/bin, so that directory should be added to your PATH.
71*0Sstevel@tonic-gate
72*0Sstevel@tonic-gateIf you wish to build and install add-on modules from CPAN using gcc, you can do
73*0Sstevel@tonic-gateso using the /usr/perl5/5.8.4/bin/perlgcc script - see C<perlgcc(1)> for
74*0Sstevel@tonic-gatedetails.
75*0Sstevel@tonic-gate
76*0Sstevel@tonic-gate=head2 Solaris Version Numbers.
77*0Sstevel@tonic-gate
78*0Sstevel@tonic-gateFor consistency with common usage, perl's Configure script performs
79*0Sstevel@tonic-gatesome minor manipulations on the operating system name and version
80*0Sstevel@tonic-gatenumber as reported by uname.  Here's a partial translation table:
81*0Sstevel@tonic-gate
82*0Sstevel@tonic-gate          Sun:                      perl's Configure:
83*0Sstevel@tonic-gate uname    uname -r   Name           osname     osvers
84*0Sstevel@tonic-gate SunOS    4.1.3     Solaris 1.1     sunos      4.1.3
85*0Sstevel@tonic-gate SunOS    5.6       Solaris 2.6     solaris    2.6
86*0Sstevel@tonic-gate SunOS    5.8       Solaris 8       solaris    2.8
87*0Sstevel@tonic-gate SunOS    5.9       Solaris 9       solaris    2.9
88*0Sstevel@tonic-gate SunOS    5.10      Solaris 10      solaris    2.10
89*0Sstevel@tonic-gate
90*0Sstevel@tonic-gateThe complete table can be found in the Sun Managers' FAQ
91*0Sstevel@tonic-gateL<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq> under
92*0Sstevel@tonic-gate"9.1) Which Sun models run which versions of SunOS?".
93*0Sstevel@tonic-gate
94*0Sstevel@tonic-gate=head1 RESOURCES
95*0Sstevel@tonic-gate
96*0Sstevel@tonic-gateThere are many, many sources for Solaris information.  A few of the
97*0Sstevel@tonic-gateimportant ones for perl:
98*0Sstevel@tonic-gate
99*0Sstevel@tonic-gate=over 4
100*0Sstevel@tonic-gate
101*0Sstevel@tonic-gate=item Solaris FAQ
102*0Sstevel@tonic-gate
103*0Sstevel@tonic-gateThe Solaris FAQ is available at
104*0Sstevel@tonic-gateL<http://www.science.uva.nl/pub/solaris/solaris2.html>.
105*0Sstevel@tonic-gate
106*0Sstevel@tonic-gateThe Sun Managers' FAQ is available at
107*0Sstevel@tonic-gateL<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq>
108*0Sstevel@tonic-gate
109*0Sstevel@tonic-gate=item Precompiled Binaries
110*0Sstevel@tonic-gate
111*0Sstevel@tonic-gatePrecompiled binaries, links to many sites, and much, much more are
112*0Sstevel@tonic-gateavailable at L<http://www.sunfreeware.com/> and
113*0Sstevel@tonic-gateL<http://www.blastwave.org/>.
114*0Sstevel@tonic-gate
115*0Sstevel@tonic-gate=item Solaris Documentation
116*0Sstevel@tonic-gate
117*0Sstevel@tonic-gateAll Solaris documentation is available on-line at L<http://docs.sun.com/>.
118*0Sstevel@tonic-gate
119*0Sstevel@tonic-gate=back
120*0Sstevel@tonic-gate
121*0Sstevel@tonic-gate=head1 SETTING UP
122*0Sstevel@tonic-gate
123*0Sstevel@tonic-gate=head2 File Extraction Problems on Solaris.
124*0Sstevel@tonic-gate
125*0Sstevel@tonic-gateBe sure to use a tar program compiled under Solaris (not SunOS 4.x)
126*0Sstevel@tonic-gateto extract the perl-5.x.x.tar.gz file.  Do not use GNU tar compiled
127*0Sstevel@tonic-gatefor SunOS4 on Solaris.  (GNU tar compiled for Solaris should be fine.)
128*0Sstevel@tonic-gateWhen you run SunOS4 binaries on Solaris, the run-time system magically
129*0Sstevel@tonic-gatealters pathnames matching m#lib/locale# so that when tar tries to create
130*0Sstevel@tonic-gatelib/locale.pm, a file named lib/oldlocale.pm gets created instead.
131*0Sstevel@tonic-gateIf you found this advice too late and used a SunOS4-compiled tar
132*0Sstevel@tonic-gateanyway, you must find the incorrectly renamed file and move it back
133*0Sstevel@tonic-gateto lib/locale.pm.
134*0Sstevel@tonic-gate
135*0Sstevel@tonic-gate=head2 Compiler and Related Tools on Solaris.
136*0Sstevel@tonic-gate
137*0Sstevel@tonic-gateYou must use an ANSI C compiler to build perl.  Perl can be compiled
138*0Sstevel@tonic-gatewith either Sun's add-on C compiler or with gcc.  The C compiler that
139*0Sstevel@tonic-gateshipped with SunOS4 will not do.
140*0Sstevel@tonic-gate
141*0Sstevel@tonic-gate=head3 Include /usr/ccs/bin/ in your PATH.
142*0Sstevel@tonic-gate
143*0Sstevel@tonic-gateSeveral tools needed to build perl are located in /usr/ccs/bin/:  ar,
144*0Sstevel@tonic-gateas, ld, and make.  Make sure that /usr/ccs/bin/ is in your PATH.
145*0Sstevel@tonic-gate
146*0Sstevel@tonic-gateYou need to make sure the following packages are installed
147*0Sstevel@tonic-gate(this info is extracted from the Solaris FAQ):
148*0Sstevel@tonic-gate
149*0Sstevel@tonic-gatefor tools (sccs, lex, yacc, make, nm, truss, ld, as): SUNWbtool,
150*0Sstevel@tonic-gateSUNWsprot, SUNWtoo
151*0Sstevel@tonic-gate
152*0Sstevel@tonic-gatefor libraries & headers: SUNWhea, SUNWarc, SUNWlibm, SUNWlibms, SUNWdfbh,
153*0Sstevel@tonic-gateSUNWcg6h, SUNWxwinc, SUNWolinc
154*0Sstevel@tonic-gate
155*0Sstevel@tonic-gatefor 64 bit development: SUNWarcx, SUNWbtoox, SUNWdplx, SUNWscpux,
156*0Sstevel@tonic-gateSUNWsprox, SUNWtoox, SUNWlmsx, SUNWlmx, SUNWlibCx
157*0Sstevel@tonic-gate
158*0Sstevel@tonic-gateIf you are in doubt which package contains a file you are missing,
159*0Sstevel@tonic-gatetry to find an installation that has that file. Then do a
160*0Sstevel@tonic-gate
161*0Sstevel@tonic-gate $ grep /my/missing/file /var/sadm/install/contents
162*0Sstevel@tonic-gate
163*0Sstevel@tonic-gateThis will display a line like this:
164*0Sstevel@tonic-gate
165*0Sstevel@tonic-gate/usr/include/sys/errno.h f none 0644 root bin 7471 37605 956241356 SUNWhea
166*0Sstevel@tonic-gate
167*0Sstevel@tonic-gateThe last item listed (SUNWhea in this example) is the package you need.
168*0Sstevel@tonic-gate
169*0Sstevel@tonic-gate=head3 Avoid /usr/ucb/cc.
170*0Sstevel@tonic-gate
171*0Sstevel@tonic-gateYou don't need to have /usr/ucb/ in your PATH to build perl.  If you
172*0Sstevel@tonic-gatewant /usr/ucb/ in your PATH anyway, make sure that /usr/ucb/ is NOT
173*0Sstevel@tonic-gatein your PATH before the directory containing the right C compiler.
174*0Sstevel@tonic-gate
175*0Sstevel@tonic-gate=head3 Sun's C Compiler
176*0Sstevel@tonic-gate
177*0Sstevel@tonic-gateIf you use Sun's C compiler, make sure the correct directory
178*0Sstevel@tonic-gate(usually /opt/SUNWspro/bin/) is in your PATH (before /usr/ucb/).
179*0Sstevel@tonic-gate
180*0Sstevel@tonic-gate=head3 GCC
181*0Sstevel@tonic-gate
182*0Sstevel@tonic-gateIf you use gcc, make sure your installation is recent and complete.
183*0Sstevel@tonic-gateperl versions since 5.6.0 build fine with gcc > 2.8.1 on Solaris >=
184*0Sstevel@tonic-gate2.6.
185*0Sstevel@tonic-gate
186*0Sstevel@tonic-gateYou must Configure perl with
187*0Sstevel@tonic-gate
188*0Sstevel@tonic-gate $ sh Configure -Dcc=gcc
189*0Sstevel@tonic-gate
190*0Sstevel@tonic-gateIf you don't, you may experience strange build errors.
191*0Sstevel@tonic-gate
192*0Sstevel@tonic-gateIf you have updated your Solaris version, you may also have to update
193*0Sstevel@tonic-gateyour gcc.  For example, if you are running Solaris 2.6 and your gcc is
194*0Sstevel@tonic-gateinstalled under /usr/local, check in /usr/local/lib/gcc-lib and make
195*0Sstevel@tonic-gatesure you have the appropriate directory, sparc-sun-solaris2.6/ or
196*0Sstevel@tonic-gatei386-pc-solaris2.6/.  If gcc's directory is for a different version of
197*0Sstevel@tonic-gateSolaris than you are running, then you will need to rebuild gcc for
198*0Sstevel@tonic-gateyour new version of Solaris.
199*0Sstevel@tonic-gate
200*0Sstevel@tonic-gateYou can get a precompiled version of gcc from
201*0Sstevel@tonic-gateL<http://www.sunfreeware.com/> or L<http://www.blastwave.org/>. Make
202*0Sstevel@tonic-gatesure you pick up the package for your Solaris release.
203*0Sstevel@tonic-gate
204*0Sstevel@tonic-gateIf you wish to use gcc to build add-on modules for use with the perl
205*0Sstevel@tonic-gateshipped with Solaris, you should use the Solaris::PerlGcc module
206*0Sstevel@tonic-gatewhich is available from CPAN.  The perl shipped with Solaris
207*0Sstevel@tonic-gateis configured and built with the Sun compilers, and the compiler
208*0Sstevel@tonic-gateconfiguration information stored in Config.pm is therefore only
209*0Sstevel@tonic-gaterelevant to the Sun compilers.  The Solaris:PerlGcc module contains a
210*0Sstevel@tonic-gatereplacement Config.pm that is correct for gcc - see the module for
211*0Sstevel@tonic-gatedetails.
212*0Sstevel@tonic-gate
213*0Sstevel@tonic-gate=head3 GNU as and GNU ld
214*0Sstevel@tonic-gate
215*0Sstevel@tonic-gateThe following information applies to gcc version 2.  Volunteers to
216*0Sstevel@tonic-gateupdate it as appropropriate for gcc version 3 would be appreciated.
217*0Sstevel@tonic-gate
218*0Sstevel@tonic-gateThe versions of as and ld supplied with Solaris work fine for building
219*0Sstevel@tonic-gateperl.  There is normally no need to install the GNU versions to
220*0Sstevel@tonic-gatecompile perl.
221*0Sstevel@tonic-gate
222*0Sstevel@tonic-gateIf you decide to ignore this advice and use the GNU versions anyway,
223*0Sstevel@tonic-gatethen be sure that they are relatively recent.  Versions newer than 2.7
224*0Sstevel@tonic-gateare apparently new enough.  Older versions may have trouble with
225*0Sstevel@tonic-gatedynamic loading.
226*0Sstevel@tonic-gate
227*0Sstevel@tonic-gateIf you wish to use GNU ld, then you need to pass it the -Wl,-E flag.
228*0Sstevel@tonic-gateThe hints/solaris_2.sh file tries to do this automatically by setting
229*0Sstevel@tonic-gatethe following Configure variables:
230*0Sstevel@tonic-gate
231*0Sstevel@tonic-gate ccdlflags="$ccdlflags -Wl,-E"
232*0Sstevel@tonic-gate lddlflags="$lddlflags -Wl,-E -G"
233*0Sstevel@tonic-gate
234*0Sstevel@tonic-gateHowever, over the years, changes in gcc, GNU ld, and Solaris ld have made
235*0Sstevel@tonic-gateit difficult to automatically detect which ld ultimately gets called.
236*0Sstevel@tonic-gateYou may have to manually edit config.sh and add the -Wl,-E flags
237*0Sstevel@tonic-gateyourself, or else run Configure interactively and add the flags at the
238*0Sstevel@tonic-gateappropriate prompts.
239*0Sstevel@tonic-gate
240*0Sstevel@tonic-gateIf your gcc is configured to use GNU as and ld but you want to use the
241*0Sstevel@tonic-gateSolaris ones instead to build perl, then you'll need to add
242*0Sstevel@tonic-gate-B/usr/ccs/bin/ to the gcc command line.  One convenient way to do
243*0Sstevel@tonic-gatethat is with
244*0Sstevel@tonic-gate
245*0Sstevel@tonic-gate $ sh Configure -Dcc='gcc -B/usr/ccs/bin/'
246*0Sstevel@tonic-gate
247*0Sstevel@tonic-gateNote that the trailing slash is required.  This will result in some
248*0Sstevel@tonic-gateharmless warnings as Configure is run:
249*0Sstevel@tonic-gate
250*0Sstevel@tonic-gate gcc: file path prefix `/usr/ccs/bin/' never used
251*0Sstevel@tonic-gate
252*0Sstevel@tonic-gateThese messages may safely be ignored.
253*0Sstevel@tonic-gate(Note that for a SunOS4 system, you must use -B/bin/ instead.)
254*0Sstevel@tonic-gate
255*0Sstevel@tonic-gateAlternatively, you can use the GCC_EXEC_PREFIX environment variable to
256*0Sstevel@tonic-gateensure that Sun's as and ld are used.  Consult your gcc documentation
257*0Sstevel@tonic-gatefor further information on the -B option and the GCC_EXEC_PREFIX variable.
258*0Sstevel@tonic-gate
259*0Sstevel@tonic-gate=head3 Sun and GNU make
260*0Sstevel@tonic-gate
261*0Sstevel@tonic-gateThe make under /usr/ccs/bin works fine for building perl.  If you
262*0Sstevel@tonic-gatehave the Sun C compilers, you will also have a parallel version of
263*0Sstevel@tonic-gatemake (dmake).  This works fine to build perl, but can sometimes cause
264*0Sstevel@tonic-gateproblems when running 'make test' due to underspecified dependencies
265*0Sstevel@tonic-gatebetween the different test harness files.  The same problem can also
266*0Sstevel@tonic-gateaffect the building of some add-on modules, so in those cases either
267*0Sstevel@tonic-gatespecify '-m serial' on the dmake command line, or use
268*0Sstevel@tonic-gate/usr/ccs/bin/make instead.  If you wish to use GNU make, be sure that
269*0Sstevel@tonic-gatethe set-group-id bit is not set.  If it is, then arrange your PATH so
270*0Sstevel@tonic-gatethat /usr/ccs/bin/make is before GNU make or else have the system
271*0Sstevel@tonic-gateadministrator disable the set-group-id bit on GNU make.
272*0Sstevel@tonic-gate
273*0Sstevel@tonic-gate=head3 Avoid libucb.
274*0Sstevel@tonic-gate
275*0Sstevel@tonic-gateSolaris provides some BSD-compatibility functions in /usr/ucblib/libucb.a.
276*0Sstevel@tonic-gatePerl will not build and run correctly if linked against -lucb since it
277*0Sstevel@tonic-gatecontains routines that are incompatible with the standard Solaris libc.
278*0Sstevel@tonic-gateNormally this is not a problem since the solaris hints file prevents
279*0Sstevel@tonic-gateConfigure from even looking in /usr/ucblib for libraries, and also
280*0Sstevel@tonic-gateexplicitly omits -lucb.
281*0Sstevel@tonic-gate
282*0Sstevel@tonic-gate=head2 Environment for Compiling perl on Solaris
283*0Sstevel@tonic-gate
284*0Sstevel@tonic-gate=head3 PATH
285*0Sstevel@tonic-gate
286*0Sstevel@tonic-gateMake sure your PATH includes the compiler (/opt/SUNWspro/bin/ if you're
287*0Sstevel@tonic-gateusing Sun's compiler) as well as /usr/ccs/bin/ to pick up the other
288*0Sstevel@tonic-gatedevelopment tools (such as make, ar, as, and ld).  Make sure your path
289*0Sstevel@tonic-gateeither doesn't include /usr/ucb or that it includes it after the
290*0Sstevel@tonic-gatecompiler and compiler tools and other standard Solaris directories.
291*0Sstevel@tonic-gateYou definitely don't want /usr/ucb/cc.
292*0Sstevel@tonic-gate
293*0Sstevel@tonic-gate=head3 LD_LIBRARY_PATH
294*0Sstevel@tonic-gate
295*0Sstevel@tonic-gateIf you have the LD_LIBRARY_PATH environment variable set, be sure that
296*0Sstevel@tonic-gateit does NOT include /lib or /usr/lib.  If you will be building
297*0Sstevel@tonic-gateextensions that call third-party shared libraries (e.g. Berkeley DB)
298*0Sstevel@tonic-gatethen make sure that your LD_LIBRARY_PATH environment variable includes
299*0Sstevel@tonic-gatethe directory with that library (e.g. /usr/local/lib).
300*0Sstevel@tonic-gate
301*0Sstevel@tonic-gateIf you get an error message
302*0Sstevel@tonic-gate
303*0Sstevel@tonic-gate dlopen: stub interception failed
304*0Sstevel@tonic-gate
305*0Sstevel@tonic-gateit is probably because your LD_LIBRARY_PATH environment variable
306*0Sstevel@tonic-gateincludes a directory which is a symlink to /usr/lib (such as /lib).
307*0Sstevel@tonic-gateThe reason this causes a problem is quite subtle.  The file
308*0Sstevel@tonic-gatelibdl.so.1.0 actually *only* contains functions which generate 'stub
309*0Sstevel@tonic-gateinterception failed' errors!  The runtime linker intercepts links to
310*0Sstevel@tonic-gate"/usr/lib/libdl.so.1.0" and links in internal implementations of those
311*0Sstevel@tonic-gatefunctions instead.  [Thanks to Tim Bunce for this explanation.]
312*0Sstevel@tonic-gate
313*0Sstevel@tonic-gate=head1 RUN CONFIGURE.
314*0Sstevel@tonic-gate
315*0Sstevel@tonic-gateSee the INSTALL file for general information regarding Configure.
316*0Sstevel@tonic-gateOnly Solaris-specific issues are discussed here.  Usually, the
317*0Sstevel@tonic-gatedefaults should be fine.
318*0Sstevel@tonic-gate
319*0Sstevel@tonic-gate=head2 64-bit perl on Solaris.
320*0Sstevel@tonic-gate
321*0Sstevel@tonic-gateSee the INSTALL file for general information regarding 64-bit compiles.
322*0Sstevel@tonic-gateIn general, the defaults should be fine for most people.
323*0Sstevel@tonic-gate
324*0Sstevel@tonic-gateBy default, perl-5.6.0 (or later) is compiled as a 32-bit application
325*0Sstevel@tonic-gatewith largefile and long-long support.
326*0Sstevel@tonic-gate
327*0Sstevel@tonic-gate=head3 General 32-bit vs. 64-bit issues.
328*0Sstevel@tonic-gate
329*0Sstevel@tonic-gateSolaris 7 and above will run in either 32 bit or 64 bit mode on SPARC
330*0Sstevel@tonic-gateCPUs, via a reboot. You can build 64 bit apps whilst running 32 bit
331*0Sstevel@tonic-gatemode and vice-versa. 32 bit apps will run under Solaris running in
332*0Sstevel@tonic-gateeither 32 or 64 bit mode.  64 bit apps require Solaris to be running
333*0Sstevel@tonic-gate64 bit mode.
334*0Sstevel@tonic-gate
335*0Sstevel@tonic-gateExisting 32 bit apps are properly known as LP32, i.e. Longs and
336*0Sstevel@tonic-gatePointers are 32 bit.  64-bit apps are more properly known as LP64.
337*0Sstevel@tonic-gateThe discriminating feature of a LP64 bit app is its ability to utilise a
338*0Sstevel@tonic-gate64-bit address space.  It is perfectly possible to have a LP32 bit app
339*0Sstevel@tonic-gatethat supports both 64-bit integers (long long) and largefiles (> 2GB),
340*0Sstevel@tonic-gateand this is the default for perl-5.6.0.
341*0Sstevel@tonic-gate
342*0Sstevel@tonic-gateFor a more complete explanation of 64-bit issues, see the
343*0Sstevel@tonic-gate"Solaris 64-bit Developer's Guide" at L<http://docs.sun.com/>
344*0Sstevel@tonic-gate
345*0Sstevel@tonic-gateYou can detect the OS mode using "isainfo -v", e.g.
346*0Sstevel@tonic-gate
347*0Sstevel@tonic-gate $ isainfo -v   # Ultra 30 in 64 bit mode
348*0Sstevel@tonic-gate 64-bit sparcv9 applications
349*0Sstevel@tonic-gate 32-bit sparc applications
350*0Sstevel@tonic-gate
351*0Sstevel@tonic-gateBy default, perl will be compiled as a 32-bit application.  Unless
352*0Sstevel@tonic-gateyou want to allocate more than ~ 4GB of memory inside perl, or unless
353*0Sstevel@tonic-gateyou need more than 255 open file descriptors, you probably don't need
354*0Sstevel@tonic-gateperl to be a 64-bit app.
355*0Sstevel@tonic-gate
356*0Sstevel@tonic-gate=head3 Large File Support
357*0Sstevel@tonic-gate
358*0Sstevel@tonic-gateFor Solaris 2.6 and onwards, there are two different ways for 32-bit
359*0Sstevel@tonic-gateapplications to manipulate large files (files whose size is > 2GByte).
360*0Sstevel@tonic-gate(A 64-bit application automatically has largefile support built in
361*0Sstevel@tonic-gateby default.)
362*0Sstevel@tonic-gate
363*0Sstevel@tonic-gateFirst is the "transitional compilation environment", described in
364*0Sstevel@tonic-gatelfcompile64(5).  According to the man page,
365*0Sstevel@tonic-gate
366*0Sstevel@tonic-gate The transitional compilation  environment  exports  all  the
367*0Sstevel@tonic-gate explicit 64-bit functions (xxx64()) and types in addition to
368*0Sstevel@tonic-gate all the regular functions (xxx()) and types. Both xxx()  and
369*0Sstevel@tonic-gate xxx64()  functions  are  available to the program source.  A
370*0Sstevel@tonic-gate 32-bit application must use the xxx64() functions in  order
371*0Sstevel@tonic-gate to  access  large  files.  See the lf64(5) manual page for a
372*0Sstevel@tonic-gate complete listing of the 64-bit transitional interfaces.
373*0Sstevel@tonic-gate
374*0Sstevel@tonic-gateThe transitional compilation environment is obtained with the
375*0Sstevel@tonic-gatefollowing compiler and linker flags:
376*0Sstevel@tonic-gate
377*0Sstevel@tonic-gate getconf LFS64_CFLAGS        -D_LARGEFILE64_SOURCE
378*0Sstevel@tonic-gate getconf LFS64_LDFLAG        # nothing special needed
379*0Sstevel@tonic-gate getconf LFS64_LIBS          # nothing special needed
380*0Sstevel@tonic-gate
381*0Sstevel@tonic-gateSecond is the "large file compilation environment", described in
382*0Sstevel@tonic-gatelfcompile(5).  According to the man page,
383*0Sstevel@tonic-gate
384*0Sstevel@tonic-gate Each interface named xxx() that needs to access 64-bit entities
385*0Sstevel@tonic-gate to  access  large  files maps to a xxx64() call in the
386*0Sstevel@tonic-gate resulting binary. All relevant data types are defined to  be
387*0Sstevel@tonic-gate of correct size (for example, off_t has a typedef definition
388*0Sstevel@tonic-gate for a 64-bit entity).
389*0Sstevel@tonic-gate
390*0Sstevel@tonic-gate An application compiled in this environment is able  to  use
391*0Sstevel@tonic-gate the  xxx()  source interfaces to access both large and small
392*0Sstevel@tonic-gate files, rather than having to explicitly utilize the  transitional
393*0Sstevel@tonic-gate xxx64()  interface  calls to access large files.
394*0Sstevel@tonic-gate
395*0Sstevel@tonic-gateTwo exceptions are fseek() and ftell().  32-bit applications should
396*0Sstevel@tonic-gateuse fseeko(3C) and ftello(3C).  These will get automatically mapped
397*0Sstevel@tonic-gateto fseeko64() and ftello64().
398*0Sstevel@tonic-gate
399*0Sstevel@tonic-gateThe large file compilation environment is obtained with
400*0Sstevel@tonic-gate
401*0Sstevel@tonic-gate getconf LFS_CFLAGS      -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
402*0Sstevel@tonic-gate getconf LFS_LDFLAGS     # nothing special needed
403*0Sstevel@tonic-gate getconf LFS_LIBS        # nothing special needed
404*0Sstevel@tonic-gate
405*0Sstevel@tonic-gateBy default, perl uses the large file compilation environment and
406*0Sstevel@tonic-gaterelies on Solaris to do the underlying mapping of interfaces.
407*0Sstevel@tonic-gate
408*0Sstevel@tonic-gate=head3 Building an LP64 perl
409*0Sstevel@tonic-gate
410*0Sstevel@tonic-gateTo compile a 64-bit application on an UltraSparc with a recent Sun Compiler,
411*0Sstevel@tonic-gateyou need to use the flag "-xarch=v9".  getconf(1) will tell you this, e.g.
412*0Sstevel@tonic-gate
413*0Sstevel@tonic-gate $ getconf -a | grep v9
414*0Sstevel@tonic-gate XBS5_LP64_OFF64_CFLAGS:         -xarch=v9
415*0Sstevel@tonic-gate XBS5_LP64_OFF64_LDFLAGS:        -xarch=v9
416*0Sstevel@tonic-gate XBS5_LP64_OFF64_LINTFLAGS:      -xarch=v9
417*0Sstevel@tonic-gate XBS5_LPBIG_OFFBIG_CFLAGS:       -xarch=v9
418*0Sstevel@tonic-gate XBS5_LPBIG_OFFBIG_LDFLAGS:      -xarch=v9
419*0Sstevel@tonic-gate XBS5_LPBIG_OFFBIG_LINTFLAGS:    -xarch=v9
420*0Sstevel@tonic-gate _XBS5_LP64_OFF64_CFLAGS:        -xarch=v9
421*0Sstevel@tonic-gate _XBS5_LP64_OFF64_LDFLAGS:       -xarch=v9
422*0Sstevel@tonic-gate _XBS5_LP64_OFF64_LINTFLAGS:     -xarch=v9
423*0Sstevel@tonic-gate _XBS5_LPBIG_OFFBIG_CFLAGS:      -xarch=v9
424*0Sstevel@tonic-gate _XBS5_LPBIG_OFFBIG_LDFLAGS:     -xarch=v9
425*0Sstevel@tonic-gate _XBS5_LPBIG_OFFBIG_LINTFLAGS:   -xarch=v9
426*0Sstevel@tonic-gate
427*0Sstevel@tonic-gateThis flag is supported in Sun WorkShop Compilers 5.0 and onwards
428*0Sstevel@tonic-gate(now marketed under the name Forte) when used on Solaris 7 or later on
429*0Sstevel@tonic-gateUltraSparc systems.
430*0Sstevel@tonic-gate
431*0Sstevel@tonic-gateIf you are using gcc, you would need to use -mcpu=v9 -m64 instead.  This
432*0Sstevel@tonic-gateoption is not yet supported as of gcc 2.95.2; from install/SPECIFIC
433*0Sstevel@tonic-gatein that release:
434*0Sstevel@tonic-gate
435*0Sstevel@tonic-gate GCC version 2.95 is not able to compile code correctly for sparc64
436*0Sstevel@tonic-gate targets. Users of the Linux kernel, at least, can use the sparc32
437*0Sstevel@tonic-gate program to start up a new shell invocation with an environment that
438*0Sstevel@tonic-gate causes configure to recognize (via uname -a) the system as sparc-*-*
439*0Sstevel@tonic-gate instead.
440*0Sstevel@tonic-gate
441*0Sstevel@tonic-gateAll this should be handled automatically by the hints file, if
442*0Sstevel@tonic-gaterequested.
443*0Sstevel@tonic-gate
444*0Sstevel@tonic-gate=head3 Long Doubles.
445*0Sstevel@tonic-gate
446*0Sstevel@tonic-gateAs of 5.8.1, long doubles are working if you use the Sun compilers
447*0Sstevel@tonic-gate(needed for additional math routines not included in libm).
448*0Sstevel@tonic-gate
449*0Sstevel@tonic-gate=head2 Threads in perl on Solaris.
450*0Sstevel@tonic-gate
451*0Sstevel@tonic-gateIt is possible to build a threaded version of perl on Solaris.  The entire
452*0Sstevel@tonic-gateperl thread implementation is still experimental, however, so beware.
453*0Sstevel@tonic-gate
454*0Sstevel@tonic-gate=head2 Malloc Issues with perl on Solaris.
455*0Sstevel@tonic-gate
456*0Sstevel@tonic-gateStarting from perl 5.7.1 perl uses the Solaris malloc, since the perl
457*0Sstevel@tonic-gatemalloc breaks when dealing with more than 2GB of memory, and the Solaris
458*0Sstevel@tonic-gatemalloc also seems to be faster.
459*0Sstevel@tonic-gate
460*0Sstevel@tonic-gateIf you for some reason (such as binary backward compatibility) really
461*0Sstevel@tonic-gateneed to use perl's malloc, you can rebuild perl from the sources
462*0Sstevel@tonic-gateand Configure the build with
463*0Sstevel@tonic-gate
464*0Sstevel@tonic-gate $ sh Configure -Dusemymalloc
465*0Sstevel@tonic-gate
466*0Sstevel@tonic-gateYou should not use perl's malloc if you are building with gcc.  There
467*0Sstevel@tonic-gateare reports of core dumps, especially in the PDL module.  The problem
468*0Sstevel@tonic-gateappears to go away under -DDEBUGGING, so it has been difficult to
469*0Sstevel@tonic-gatetrack down.  Sun's compiler appears to be okay with or without perl's
470*0Sstevel@tonic-gatemalloc. [XXX further investigation is needed here.]
471*0Sstevel@tonic-gate
472*0Sstevel@tonic-gate=head1 MAKE PROBLEMS.
473*0Sstevel@tonic-gate
474*0Sstevel@tonic-gate=over 4
475*0Sstevel@tonic-gate
476*0Sstevel@tonic-gate=item Dynamic Loading Problems With GNU as and GNU ld
477*0Sstevel@tonic-gate
478*0Sstevel@tonic-gateIf you have problems with dynamic loading using gcc on SunOS or
479*0Sstevel@tonic-gateSolaris, and you are using GNU as and GNU ld, see the section
480*0Sstevel@tonic-gateL<"GNU as and GNU ld"> above.
481*0Sstevel@tonic-gate
482*0Sstevel@tonic-gate=item ld.so.1: ./perl: fatal: relocation error:
483*0Sstevel@tonic-gate
484*0Sstevel@tonic-gateIf you get this message on SunOS or Solaris, and you're using gcc,
485*0Sstevel@tonic-gateit's probably the GNU as or GNU ld problem in the previous item
486*0Sstevel@tonic-gateL<"GNU as and GNU ld">.
487*0Sstevel@tonic-gate
488*0Sstevel@tonic-gate=item dlopen: stub interception failed
489*0Sstevel@tonic-gate
490*0Sstevel@tonic-gateThe primary cause of the 'dlopen: stub interception failed' message is
491*0Sstevel@tonic-gatethat the LD_LIBRARY_PATH environment variable includes a directory
492*0Sstevel@tonic-gatewhich is a symlink to /usr/lib (such as /lib).  See
493*0Sstevel@tonic-gateL<"LD_LIBRARY_PATH"> above.
494*0Sstevel@tonic-gate
495*0Sstevel@tonic-gate=item #error "No DATAMODEL_NATIVE specified"
496*0Sstevel@tonic-gate
497*0Sstevel@tonic-gateThis is a common error when trying to build perl on Solaris 2.6 with a
498*0Sstevel@tonic-gategcc installation from Solaris 2.5 or 2.5.1.  The Solaris header files
499*0Sstevel@tonic-gatechanged, so you need to update your gcc installation.  You can either
500*0Sstevel@tonic-gatererun the fixincludes script from gcc or take the opportunity to
501*0Sstevel@tonic-gateupdate your gcc installation.
502*0Sstevel@tonic-gate
503*0Sstevel@tonic-gate=item sh: ar: not found
504*0Sstevel@tonic-gate
505*0Sstevel@tonic-gateThis is a message from your shell telling you that the command 'ar'
506*0Sstevel@tonic-gatewas not found.  You need to check your PATH environment variable to
507*0Sstevel@tonic-gatemake sure that it includes the directory with the 'ar' command.  This
508*0Sstevel@tonic-gateis a common problem on Solaris, where 'ar' is in the /usr/ccs/bin/
509*0Sstevel@tonic-gatedirectory.
510*0Sstevel@tonic-gate
511*0Sstevel@tonic-gate=back
512*0Sstevel@tonic-gate
513*0Sstevel@tonic-gate=head1 MAKE TEST
514*0Sstevel@tonic-gate
515*0Sstevel@tonic-gate=head2 op/stat.t test 4 in Solaris
516*0Sstevel@tonic-gate
517*0Sstevel@tonic-gateop/stat.t test 4 may fail if you are on a tmpfs of some sort.
518*0Sstevel@tonic-gateBuilding in /tmp sometimes shows this behavior.  The
519*0Sstevel@tonic-gatetest suite detects if you are building in /tmp, but it may not be able
520*0Sstevel@tonic-gateto catch all tmpfs situations.
521*0Sstevel@tonic-gate
522*0Sstevel@tonic-gate=head2 nss_delete core dump from op/pwent or op/grent
523*0Sstevel@tonic-gate
524*0Sstevel@tonic-gateSee L<perlhpux/"nss_delete core dump from op/pwent or op/grent">.
525*0Sstevel@tonic-gate
526*0Sstevel@tonic-gate=head1 PREBUILT BINARIES OF PERL FOR SOLARIS.
527*0Sstevel@tonic-gate
528*0Sstevel@tonic-gateYou can pick up prebuilt binaries for Solaris from
529*0Sstevel@tonic-gateL<http://www.sunfreeware.com/>, L<http://www.blastwave.org>,
530*0Sstevel@tonic-gateActiveState L<http://www.activestate.com/>, and
531*0Sstevel@tonic-gateL<http://www.perl.com/> under the Binaries list at the top of the
532*0Sstevel@tonic-gatepage.  There are probably other sources as well.  Please note that
533*0Sstevel@tonic-gatethese sites are under the control of their respective owners, not the
534*0Sstevel@tonic-gateperl developers.
535*0Sstevel@tonic-gate
536*0Sstevel@tonic-gate=head1 RUNTIME ISSUES FOR PERL ON SOLARIS.
537*0Sstevel@tonic-gate
538*0Sstevel@tonic-gate=head2 Limits on Numbers of Open Files on Solaris.
539*0Sstevel@tonic-gate
540*0Sstevel@tonic-gateThe stdio(3C) manpage notes that for LP32 applications, only 255
541*0Sstevel@tonic-gatefiles may be opened using fopen(), and only file descriptors 0
542*0Sstevel@tonic-gatethrough 255 can be used in a stream.  Since perl calls open() and
543*0Sstevel@tonic-gatethen fdopen(3C) with the resulting file descriptor, perl is limited
544*0Sstevel@tonic-gateto 255 simultaneous open files, even if sysopen() is used.  If this
545*0Sstevel@tonic-gateproves to be an insurmountable problem, you can compile perl as a
546*0Sstevel@tonic-gateLP64 application, see L<Building an LP64 perl> for details.  Note
547*0Sstevel@tonic-gatealso that the default resource limit for open file descriptors on
548*0Sstevel@tonic-gateSolaris is 255, so you will have to modify your ulimit or rctl
549*0Sstevel@tonic-gate(Solaris 9 onwards) appropriately.
550*0Sstevel@tonic-gate
551*0Sstevel@tonic-gate=head1 SOLARIS-SPECIFIC MODULES.
552*0Sstevel@tonic-gate
553*0Sstevel@tonic-gateSee the modules under the Solaris:: and Sun::Solaris namespaces on CPAN,
554*0Sstevel@tonic-gatesee L<http://www.cpan.org/modules/by-module/Solaris/> and
555*0Sstevel@tonic-gateL<http://www.cpan.org/modules/by-module/Sun/>.
556*0Sstevel@tonic-gate
557*0Sstevel@tonic-gate=head1 SOLARIS-SPECIFIC PROBLEMS WITH MODULES.
558*0Sstevel@tonic-gate
559*0Sstevel@tonic-gate=head2 Proc::ProcessTable on Solaris
560*0Sstevel@tonic-gate
561*0Sstevel@tonic-gateProc::ProcessTable does not compile on Solaris with perl5.6.0 and higher
562*0Sstevel@tonic-gateif you have LARGEFILES defined.  Since largefile support is the
563*0Sstevel@tonic-gatedefault in 5.6.0 and later, you have to take special steps to use this
564*0Sstevel@tonic-gatemodule.
565*0Sstevel@tonic-gate
566*0Sstevel@tonic-gateThe problem is that various structures visible via procfs use off_t,
567*0Sstevel@tonic-gateand if you compile with largefile support these change from 32 bits to
568*0Sstevel@tonic-gate64 bits.  Thus what you get back from procfs doesn't match up with
569*0Sstevel@tonic-gatethe structures in perl, resulting in garbage.  See proc(4) for further
570*0Sstevel@tonic-gatediscussion.
571*0Sstevel@tonic-gate
572*0Sstevel@tonic-gateA fix for Proc::ProcessTable is to edit Makefile to
573*0Sstevel@tonic-gateexplicitly remove the largefile flags from the ones MakeMaker picks up
574*0Sstevel@tonic-gatefrom Config.pm.  This will result in Proc::ProcessTable being built
575*0Sstevel@tonic-gateunder the correct environment.  Everything should then be OK as long as
576*0Sstevel@tonic-gateProc::ProcessTable doesn't try to share off_t's with the rest of perl,
577*0Sstevel@tonic-gateor if it does they should be explicitly specified as off64_t.
578*0Sstevel@tonic-gate
579*0Sstevel@tonic-gate=head2 BSD::Resource on Solaris
580*0Sstevel@tonic-gate
581*0Sstevel@tonic-gateBSD::Resource versions earlier than 1.09 do not compile on Solaris
582*0Sstevel@tonic-gatewith perl 5.6.0 and higher, for the same reasons as Proc::ProcessTable.
583*0Sstevel@tonic-gateBSD::Resource versions starting from 1.09 have a workaround for the problem.
584*0Sstevel@tonic-gate
585*0Sstevel@tonic-gate=head2 Net::SSLeay on Solaris
586*0Sstevel@tonic-gate
587*0Sstevel@tonic-gateNet::SSLeay requires a /dev/urandom to be present. This device is
588*0Sstevel@tonic-gateavailable from Solaris 9 onwards.  For earlier Solaris versions you
589*0Sstevel@tonic-gatecan either get the package SUNWski (packaged with several Sun
590*0Sstevel@tonic-gatesoftware products, for example the Sun WebServer, which is part of
591*0Sstevel@tonic-gatethe Solaris Server Intranet Extension, or the Sun Directory Services,
592*0Sstevel@tonic-gatepart of Solaris for ISPs) or download the ANDIrand package from
593*0Sstevel@tonic-gateL<http://www.cosy.sbg.ac.at/~andi/>. If you use SUNWski, make a
594*0Sstevel@tonic-gatesymbolic link /dev/urandom pointing to /dev/random.
595*0Sstevel@tonic-gate
596*0Sstevel@tonic-gateIt may be possible to use the Entropy Gathering Daemon (written in
597*0Sstevel@tonic-gatePerl!), available from L<http://www.lothar.com/tech/crypto/>.
598*0Sstevel@tonic-gate
599*0Sstevel@tonic-gate=head1 SunOS 4.x
600*0Sstevel@tonic-gate
601*0Sstevel@tonic-gateIn SunOS 4.x you most probably want to use the SunOS ld, /usr/bin/ld,
602*0Sstevel@tonic-gatesince the more recent versions of GNU ld (like 2.13) do not seem to
603*0Sstevel@tonic-gatework for building Perl anymore.  When linking the extensions, the
604*0Sstevel@tonic-gateGNU ld gets very unhappy and spews a lot of errors like this
605*0Sstevel@tonic-gate
606*0Sstevel@tonic-gate  ... relocation truncated to fit: BASE13 ...
607*0Sstevel@tonic-gate
608*0Sstevel@tonic-gateand dies.  Therefore the SunOS 4.1 hints file explicitly sets the
609*0Sstevel@tonic-gateld to be /usr/bin/ld.
610*0Sstevel@tonic-gate
611*0Sstevel@tonic-gateAs of Perl 5.8.1 the dynamic loading of libraries (DynaLoader, XSLoader)
612*0Sstevel@tonic-gatealso seems to have become broken in in SunOS 4.x.  Therefore the default
613*0Sstevel@tonic-gateis to build Perl statically.
614*0Sstevel@tonic-gate
615*0Sstevel@tonic-gateRunning the test suite in SunOS 4.1 is a bit tricky since the
616*0Sstevel@tonic-gateF<lib/Tie/File/t/09_gen_rs> test hangs (subtest #51, FWIW) for some
617*0Sstevel@tonic-gateunknown reason.  Just stop the test and kill that particular Perl
618*0Sstevel@tonic-gateprocess.
619*0Sstevel@tonic-gate
620*0Sstevel@tonic-gateThere are various other failures, that as of SunOS 4.1.4 and gcc 3.2.2
621*0Sstevel@tonic-gatelook a lot like gcc bugs.  Many of the failures happen in the Encode
622*0Sstevel@tonic-gatetests, where for example when the test expects "0" you get "&#48;"
623*0Sstevel@tonic-gatewhich should after a little squinting look very odd indeed.
624*0Sstevel@tonic-gateAnother example is earlier in F<t/run/fresh_perl> where chr(0xff) is
625*0Sstevel@tonic-gateexpected but the test fails because the result is chr(0xff).  Exactly.
626*0Sstevel@tonic-gate
627*0Sstevel@tonic-gateThis is the "make test" result from the said combination:
628*0Sstevel@tonic-gate
629*0Sstevel@tonic-gate  Failed 27 test scripts out of 745, 96.38% okay.
630*0Sstevel@tonic-gate
631*0Sstevel@tonic-gateRunning the C<harness> is painful because of the many failing
632*0Sstevel@tonic-gateUnicode-related tests will output megabytes of failure messages,
633*0Sstevel@tonic-gatebut if one patiently waits, one gets these results:
634*0Sstevel@tonic-gate
635*0Sstevel@tonic-gate Failed Test                     Stat Wstat Total Fail  Failed  List of Failed
636*0Sstevel@tonic-gate -----------------------------------------------------------------------------
637*0Sstevel@tonic-gate ...
638*0Sstevel@tonic-gate ../ext/Encode/t/at-cn.t            4  1024    29    4  13.79%  14-17
639*0Sstevel@tonic-gate ../ext/Encode/t/at-tw.t           10  2560    17   10  58.82%  2 4 6 8 10 12
640*0Sstevel@tonic-gate                                                                14-17
641*0Sstevel@tonic-gate ../ext/Encode/t/enc_data.t        29  7424    ??   ??       %  ??
642*0Sstevel@tonic-gate ../ext/Encode/t/enc_eucjp.t       29  7424    ??   ??       %  ??
643*0Sstevel@tonic-gate ../ext/Encode/t/enc_module.t      29  7424    ??   ??       %  ??
644*0Sstevel@tonic-gate ../ext/Encode/t/encoding.t        29  7424    ??   ??       %  ??
645*0Sstevel@tonic-gate ../ext/Encode/t/grow.t            12  3072    24   12  50.00%  2 4 6 8 10 12 14
646*0Sstevel@tonic-gate                                                                16 18 20 22 24
647*0Sstevel@tonic-gate  Failed Test                     Stat Wstat Total Fail  Failed  List of Failed
648*0Sstevel@tonic-gate ------------------------------------------------------------------------------
649*0Sstevel@tonic-gate ../ext/Encode/t/guess.t          255 65280    29   40 137.93%  10-29
650*0Sstevel@tonic-gate ../ext/Encode/t/jperl.t           29  7424    15   30 200.00%  1-15
651*0Sstevel@tonic-gate ../ext/Encode/t/mime-header.t      2   512    10    2  20.00%  2-3
652*0Sstevel@tonic-gate ../ext/Encode/t/perlio.t          22  5632    38   22  57.89%  1-4 9-16 19-20
653*0Sstevel@tonic-gate                                                                23-24 27-32
654*0Sstevel@tonic-gate ../ext/List/Util/t/shuffle.t       0   139    ??   ??       %  ??
655*0Sstevel@tonic-gate ../ext/PerlIO/t/encoding.t                    14    1   7.14%  11
656*0Sstevel@tonic-gate ../ext/PerlIO/t/fallback.t                     9    2  22.22%  3 5
657*0Sstevel@tonic-gate ../ext/Socket/t/socketpair.t       0     2    45   70 155.56%  11-45
658*0Sstevel@tonic-gate ../lib/CPAN/t/vcmp.t                          30    1   3.33%  25
659*0Sstevel@tonic-gate ../lib/Tie/File/t/09_gen_rs.t      0    15    ??   ??       %  ??
660*0Sstevel@tonic-gate ../lib/Unicode/Collate/t/test.t              199   30  15.08%  7 26-27 71-75
661*0Sstevel@tonic-gate                                                                81-88 95 101
662*0Sstevel@tonic-gate                                                                103-104 106 108-
663*0Sstevel@tonic-gate                                                                109 122 124 161
664*0Sstevel@tonic-gate                                                                169-172
665*0Sstevel@tonic-gate ../lib/sort.t                      0   139   119   26  21.85%  107-119
666*0Sstevel@tonic-gate op/alarm.t                                     4    1  25.00%  4
667*0Sstevel@tonic-gate op/utfhash.t                                  97    1   1.03%  31
668*0Sstevel@tonic-gate run/fresh_perl.t                              91    1   1.10%  32
669*0Sstevel@tonic-gate uni/tr_7jis.t                                 ??   ??       %  ??
670*0Sstevel@tonic-gate uni/tr_eucjp.t                    29  7424     6   12 200.00%  1-6
671*0Sstevel@tonic-gate uni/tr_sjis.t                     29  7424     6   12 200.00%  1-6
672*0Sstevel@tonic-gate 56 tests and 467 subtests skipped.
673*0Sstevel@tonic-gate Failed 27/811 test scripts, 96.67% okay. 1383/75399 subtests failed, 98.17% okay.
674*0Sstevel@tonic-gate
675*0Sstevel@tonic-gateThe alarm() test failure is caused by system() apparently blocking
676*0Sstevel@tonic-gatealarm().  That is probably a libc bug, and given that SunOS 4.x
677*0Sstevel@tonic-gatehas been end-of-lifed years ago, don't hold your breath for a fix.
678*0Sstevel@tonic-gateIn addition to that, don't try anything too Unicode-y, especially
679*0Sstevel@tonic-gatewith Encode, and you should be fine in SunOS 4.x.
680*0Sstevel@tonic-gate
681*0Sstevel@tonic-gate=head1 AUTHOR
682*0Sstevel@tonic-gate
683*0Sstevel@tonic-gateThe original was written by Andy Dougherty F<doughera@lafayette.edu>
684*0Sstevel@tonic-gatedrawing heavily on advice from Alan Burlison, Nick Ing-Simmons, Tim Bunce,
685*0Sstevel@tonic-gateand many other Solaris users over the years.
686*0Sstevel@tonic-gate
687*0Sstevel@tonic-gatePlease report any errors, updates, or suggestions to F<perlbug@perl.org>.
688*0Sstevel@tonic-gate
689*0Sstevel@tonic-gate=head1 LAST MODIFIED
690*0Sstevel@tonic-gate
691*0Sstevel@tonic-gate$Id: README.solaris,v 1.4 2000/11/11 20:29:58 doughera Exp $
692