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 "0" 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