X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=README.tru64;h=e852a5cb11dccabf43acf7b09a5eb1caab7dae46;hb=1a67fee7d910c67790fff4a69f2f20f7628aa80a;hp=d65175a4c0b883a554ad5c9f4b0f37eb8bac75a3;hpb=d780cd7a0195e946e636d3ee546f6ef4f21d6acc;p=p5sagit%2Fp5-mst-13.2.git diff --git a/README.tru64 b/README.tru64 index d65175a..e852a5c 100644 --- a/README.tru64 +++ b/README.tru64 @@ -8,51 +8,89 @@ README.tru64 - Perl version 5 on Tru64 (formerly known as Digital UNIX formerly =head1 DESCRIPTION -This document describes various features of Compaq's (formerly Digital's) -Unix operating system (Tru64) that will affect how Perl version 5 -is compiled and/or runs. +This document describes various features of HP's (formerly Compaq's, +formerly Digital's) Unix operating system (Tru64) that will affect +how Perl version 5 (hereafter just Perl) is configured, compiled +and/or runs. =head2 Compiling Perl 5 on Tru64 The recommended compiler to use in Tru64 is the native C compiler. -The native compiler produces much faster code (the speed difference -is noticeable: several dozen percentages) and also more correct code: -if you are considering using the GNU C compiler you should use the -gcc 2.95.3 since all older gcc releases are known to produce broken -code when compiling Perl. One manifestation of this brokenness is -the lib/sdbm test dumping core; another is the op/regexp dumping core -(depending on the GCC release). +The native compiler produces much faster code (the speed difference is +noticeable: several dozen percentages) and also more correct code: if +you are considering using the GNU C compiler you should use at the +very least the release of 2.95.3 since all older gcc releases are +known to produce broken code when compiling Perl. One manifestation +of this brokenness is the lib/sdbm test dumping core; another is many +of the op/regexp and op/pat, or ext/Storable tests dumping core +(the exact pattern of failures depending on the GCC release and +optimization flags). + +gcc 3.2.1 is known to work okay with Perl 5.8.0. However, when +optimizing the toke.c gcc likes to have a lot of memory, 256 megabytes +seems to be enough. The default setting of the process data section +in Tru64 should be one gigabyte, but some sites/setups might have +lowered that. The configuration process of Perl checks for too low +process limits, and lowers the optimization for the toke.c if +necessary, and also gives advice on how to raise the process limits. =head2 Using Large Files with Perl on Tru64 -In Tru64 Perl is automatically able to use large files, that is, files -larger than 2 gigabytes, there is no need to use the Configure --Duselargefiles option as described in INSTALL. +In Tru64 Perl is automatically able to use large files, that is, +files larger than 2 gigabytes, there is no need to use the Configure +-Duselargefiles option as described in INSTALL (though using the option +is harmless). =head2 Threaded Perl on Tru64 -To compile Perl to use the old Perl 5.005 threads model, run Configure -with the -Dusethreads -Duse5005threads options as described in INSTALL. -This will probably only work in Tru64 4.0 and newer releases, older -operating releases like 3.2 aren't probably going to work properly -with threads. +If you want to use threads, you should primarily use the Perl +5.8.0 threads model by running Configure with -Duseithreads. -Beware: the Perl 5.005 threads model is known to have bugs, for -example the regular expressions are not thread-safe. The bugs are -very hard to fix are and therefore the 5.005 threads model is still -classified as an experimental feature. +Perl threading is going to work only in Tru64 4.0 and newer releases, +older operating releases like 3.2 aren't probably going to work +properly with threads. =head2 Long Doubles on Tru64 You cannot Configure Perl to use long doubles unless you have at least -Tru64 V5.0, the long double support simply wasn't functional before -that. +Tru64 V5.0, the long double support simply wasn't functional enough +before that. Perl's Configure will override attempts to use the long +doubles (you can notice this by Configure finding out that the modfl() +function does not work as it should). + +At the time of this writing (June 2002), there is a known bug in the +Tru64 libc printing of long doubles when not using "e" notation. +The values are correct and usable, but you only get a limited number +of digits displayed unless you force the issue by using C or the like. For Tru64 versions V5.0A through V5.1A, a +patch is expected sometime after perl 5.8.0 is released. If your libc +has not yet been patched, you'll get a warning from Configure when +selecting long doubles. + +=head2 db-hash.t failing on Tru64 + +The Berkeley DB 1.85 coming with the Tru64 is unfortunately buggy. +In general in Tru64 V4.* it seemed to be more stable, but in V5.* +something broke (even though the DB stayed at release 1.85) and +the DB_File extension test db-hash.t may fail by dumping core after +the subtest 21. There really is no good cure as of Tru64 V5.1A expect +installing a newer Berkeley DB and supplying the right directories for +-Dlocincpth=/some/include and -Dloclibpth=/some/lib when running Configure. + +You can also work around the problem by disabling the DB_File by +specifying -Ui_db to Configure, and then using the BerkeleyFile module +from CPAN instead of DB_File. The BerkeleyFile works with Berkeley DB +versions 2.* or greater. + +The Berkeley DB 4.0.14 has been tested with Tru64 V5.1A and found +to work. The latest Berkeley DB can be found from F. =head2 64-bit Perl on Tru64 In Tru64 Perl's integers are automatically 64-bit wide, there is no need to use the Configure -Duse64bitint option as described -in INSTALL. Similarly, there is no need for -Duse64bitall. +in INSTALL. Similarly, there is no need for -Duse64bitall +since pointers are automatically 64-bit wide. =head2 Warnings about floating-point overflow when compiling Perl on Tru64 @@ -63,12 +101,15 @@ release) see two warnings like this return HUGE_VAL; -----------^ - cc: Warning: POSIX.xs, line 1304: In this statement, floating-point overflow occurs in evaluating the expression "1.8e308". (floatoverfl) +and when compiling the POSIX extension + + cc: Warning: const-c.inc, line 2007: In this statement, floating-point overflow occurs in evaluating the expression "1.8e308". (floatoverfl) return HUGE_VAL; -------------------^ -The exact line numbers may vary between Perl releases. -The warnings are benign and can be ignored. +The exact line numbers may vary between Perl releases. The warnings +are benign and can be ignored: in later C compiler releases the warnings +should be gone. When the file F is being compiled you may (depending on the operating system release) see an additional compiler flag being used: @@ -83,6 +124,24 @@ During "make test" the C will be skipped because on Tru64 it cannot be tested before Perl has been installed. The test refers to the use of the C<-P> option of Perl. +=head1 ext/ODBM_File/odbm Test Failing With Static Builds + +The ext/ODBM_File/odbm is known to fail with static builds +(Configure -Uusedl) due to a known bug in Tru64's static libdbm +library. The good news is that you very probably don't need to ever +use the ODBM_File extension since more advanced NDBM_File works fine, +not to mention the even more advanced DB_File. + +=head1 Perl Fails Because Of Unresolved Symbol sockatmark + +If you get an error like + + Can't load '.../OSF1/lib/perl5/5.8.0/alpha-dec_osf/auto/IO/IO.so' for module IO: Unresolved symbol in .../lib/perl5/5.8.0/alpha-dec_osf/auto/IO/IO.so: sockatmark at .../lib/perl5/5.8.0/alpha-dec_osf/XSLoader.pm line 75. + +you need to either recompile your Perl in Tru64 4.0D or upgrade your +Tru64 4.0D to at least 4.0F: the sockatmark() system call was +added in Tru64 4.0F, and the IO extension refers that symbol. + =head1 AUTHOR Jarkko Hietaniemi