1 | If you read this file _as_is_, just ignore the funny characters you see.
|
---|
2 | It is written in the POD format (see pod/perlpod.pod) which is specially
|
---|
3 | designed to be readable as is.
|
---|
4 |
|
---|
5 | =head1 NAME
|
---|
6 |
|
---|
7 | README.tru64 - Perl version 5 on Tru64 (formerly known as Digital UNIX formerly known as DEC OSF/1) systems
|
---|
8 |
|
---|
9 | =head1 DESCRIPTION
|
---|
10 |
|
---|
11 | This document describes various features of HP's (formerly Compaq's,
|
---|
12 | formerly Digital's) Unix operating system (Tru64) that will affect
|
---|
13 | how Perl version 5 (hereafter just Perl) is configured, compiled
|
---|
14 | and/or runs.
|
---|
15 |
|
---|
16 | =head2 Compiling Perl 5 on Tru64
|
---|
17 |
|
---|
18 | The recommended compiler to use in Tru64 is the native C compiler.
|
---|
19 | The native compiler produces much faster code (the speed difference is
|
---|
20 | noticeable: several dozen percentages) and also more correct code: if
|
---|
21 | you are considering using the GNU C compiler you should use at the
|
---|
22 | very least the release of 2.95.3 since all older gcc releases are
|
---|
23 | known to produce broken code when compiling Perl. One manifestation
|
---|
24 | of this brokenness is the lib/sdbm test dumping core; another is many
|
---|
25 | of the op/regexp and op/pat, or ext/Storable tests dumping core
|
---|
26 | (the exact pattern of failures depending on the GCC release and
|
---|
27 | optimization flags).
|
---|
28 |
|
---|
29 | gcc 3.2.1 is known to work okay with Perl 5.8.0. However, when
|
---|
30 | optimizing the toke.c gcc likes to have a lot of memory, 256 megabytes
|
---|
31 | seems to be enough. The default setting of the process data section
|
---|
32 | in Tru64 should be one gigabyte, but some sites/setups might have
|
---|
33 | lowered that. The configuration process of Perl checks for too low
|
---|
34 | process limits, and lowers the optimization for the toke.c if
|
---|
35 | necessary, and also gives advice on how to raise the process limits.
|
---|
36 |
|
---|
37 | =head2 Using Large Files with Perl on Tru64
|
---|
38 |
|
---|
39 | In Tru64 Perl is automatically able to use large files, that is,
|
---|
40 | files larger than 2 gigabytes, there is no need to use the Configure
|
---|
41 | -Duselargefiles option as described in INSTALL (though using the option
|
---|
42 | is harmless).
|
---|
43 |
|
---|
44 | =head2 Threaded Perl on Tru64
|
---|
45 |
|
---|
46 | If you want to use threads, you should primarily use the new Perl
|
---|
47 | 5.8.0 threads model by running Configure with -Duseithreads.
|
---|
48 |
|
---|
49 | The old Perl 5.005 threads is obsolete, unmaintained, and its use is
|
---|
50 | discouraged. If you really want it, run Configure with the
|
---|
51 | -Dusethreads -Duse5005threads options as described in INSTALL.
|
---|
52 |
|
---|
53 | Either thread model is going to work only in Tru64 4.0 and newer
|
---|
54 | releases, older operating releases like 3.2 aren't probably going
|
---|
55 | to work properly with threads.
|
---|
56 |
|
---|
57 | In Tru64 V5 (at least V5.1A, V5.1B) you cannot build threaded Perl with gcc
|
---|
58 | because the system header <pthread.h> explicitly checks for supported
|
---|
59 | C compilers, gcc (at least 3.2.2) not being one of them. But the
|
---|
60 | system C compiler should work just fine.
|
---|
61 |
|
---|
62 | =head2 Long Doubles on Tru64
|
---|
63 |
|
---|
64 | You cannot Configure Perl to use long doubles unless you have at least
|
---|
65 | Tru64 V5.0, the long double support simply wasn't functional enough
|
---|
66 | before that. Perl's Configure will override attempts to use the long
|
---|
67 | doubles (you can notice this by Configure finding out that the modfl()
|
---|
68 | function does not work as it should).
|
---|
69 |
|
---|
70 | At the time of this writing (June 2002), there is a known bug in the
|
---|
71 | Tru64 libc printing of long doubles when not using "e" notation.
|
---|
72 | The values are correct and usable, but you only get a limited number
|
---|
73 | of digits displayed unless you force the issue by using C<printf
|
---|
74 | "%.33e",$num> or the like. For Tru64 versions V5.0A through V5.1A, a
|
---|
75 | patch is expected sometime after perl 5.8.0 is released. If your libc
|
---|
76 | has not yet been patched, you'll get a warning from Configure when
|
---|
77 | selecting long doubles.
|
---|
78 |
|
---|
79 | =head2 DB_File tests failing on Tru64
|
---|
80 |
|
---|
81 | The DB_File tests (db-btree.t, db-hash.t, db-recno.t) may fail you
|
---|
82 | have installed a newer version of Berkeley DB into the system and the
|
---|
83 | -I and -L compiler and linker flags introduce version conflicts with
|
---|
84 | the DB 1.85 headers and libraries that came with the Tru64. For example,
|
---|
85 | mixing a DB v2 library with the DB v1 headers is a bad idea. Watch
|
---|
86 | out for Configure options -Dlocincpth and -Dloclibpth, and check your
|
---|
87 | /usr/local/include and /usr/local/lib since they are included by default.
|
---|
88 |
|
---|
89 | The second option is to explicitly instruct Configure to detect the
|
---|
90 | newer Berkeley DB installation, by supplying the right directories with
|
---|
91 | C<-Dlocincpth=/some/include> and C<-Dloclibpth=/some/lib> B<and> before
|
---|
92 | running "make test" setting your LD_LIBRARY_PATH to F</some/lib>.
|
---|
93 |
|
---|
94 | The third option is to work around the problem by disabling the
|
---|
95 | DB_File completely when build Perl by specifying -Ui_db to Configure,
|
---|
96 | and then using the BerkeleyDB module from CPAN instead of DB_File.
|
---|
97 | The BerkeleyDB works with Berkeley DB versions 2.* or greater.
|
---|
98 |
|
---|
99 | The Berkeley DB 4.1.25 has been tested with Tru64 V5.1A and found
|
---|
100 | to work. The latest Berkeley DB can be found from F<http://www.sleepycat.com>.
|
---|
101 |
|
---|
102 | =head2 64-bit Perl on Tru64
|
---|
103 |
|
---|
104 | In Tru64 Perl's integers are automatically 64-bit wide, there is
|
---|
105 | no need to use the Configure -Duse64bitint option as described
|
---|
106 | in INSTALL. Similarly, there is no need for -Duse64bitall
|
---|
107 | since pointers are automatically 64-bit wide.
|
---|
108 |
|
---|
109 | =head2 Warnings about floating-point overflow when compiling Perl on Tru64
|
---|
110 |
|
---|
111 | When compiling Perl in Tru64 you may (depending on the compiler
|
---|
112 | release) see two warnings like this
|
---|
113 |
|
---|
114 | cc: Warning: numeric.c, line 104: In this statement, floating-point overflow occurs in evaluating the expression "1.8e308". (floatoverfl)
|
---|
115 | return HUGE_VAL;
|
---|
116 | -----------^
|
---|
117 |
|
---|
118 | and when compiling the POSIX extension
|
---|
119 |
|
---|
120 | cc: Warning: const-c.inc, line 2007: In this statement, floating-point overflow occurs in evaluating the expression "1.8e308". (floatoverfl)
|
---|
121 | return HUGE_VAL;
|
---|
122 | -------------------^
|
---|
123 |
|
---|
124 | The exact line numbers may vary between Perl releases. The warnings
|
---|
125 | are benign and can be ignored: in later C compiler releases the warnings
|
---|
126 | should be gone.
|
---|
127 |
|
---|
128 | When the file F<pp_sys.c> is being compiled you may (depending on the
|
---|
129 | operating system release) see an additional compiler flag being used:
|
---|
130 | C<-DNO_EFF_ONLY_OK>. This is normal and refers to a feature that is
|
---|
131 | relevant only if you use the C<filetest> pragma. In older releases of
|
---|
132 | the operating system the feature was broken and the NO_EFF_ONLY_OK
|
---|
133 | instructs Perl not to use the feature.
|
---|
134 |
|
---|
135 | =head1 Testing Perl on Tru64
|
---|
136 |
|
---|
137 | During "make test" the C<comp/cpp> will be skipped because on Tru64 it
|
---|
138 | cannot be tested before Perl has been installed. The test refers to
|
---|
139 | the use of the C<-P> option of Perl.
|
---|
140 |
|
---|
141 | =head1 ext/ODBM_File/odbm Test Failing With Static Builds
|
---|
142 |
|
---|
143 | The ext/ODBM_File/odbm is known to fail with static builds
|
---|
144 | (Configure -Uusedl) due to a known bug in Tru64's static libdbm
|
---|
145 | library. The good news is that you very probably don't need to ever
|
---|
146 | use the ODBM_File extension since more advanced NDBM_File works fine,
|
---|
147 | not to mention the even more advanced DB_File.
|
---|
148 |
|
---|
149 | =head1 Perl Fails Because Of Unresolved Symbol sockatmark
|
---|
150 |
|
---|
151 | If you get an error like
|
---|
152 |
|
---|
153 | 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.
|
---|
154 |
|
---|
155 | you need to either recompile your Perl in Tru64 4.0D or upgrade your
|
---|
156 | Tru64 4.0D to at least 4.0F: the sockatmark() system call was
|
---|
157 | added in Tru64 4.0F, and the IO extension refers that symbol.
|
---|
158 |
|
---|
159 | =head1 AUTHOR
|
---|
160 |
|
---|
161 | Jarkko Hietaniemi <[email protected]>
|
---|
162 |
|
---|
163 | =cut
|
---|