This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
First stab T_REFREF docs
[perl5.git] / README.hpux
index 4c173ab..7bd4b93 100644 (file)
@@ -4,7 +4,7 @@ designed to be readable as is.
 
 =head1 NAME
 
-README.hpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems
+perlhpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems
 
 =head1 DESCRIPTION
 
@@ -41,9 +41,17 @@ of Perl and the updated modules.
 
 The official (threaded) builds from HP, as they are shipped on the
 Application DVD/CD's are available on
-http://www.software.hp.com/cgi-bin/swdepot_parser.cgi/cgi/displayProductInfo.pl?productNumber=PERL
+L<http://www.software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=PERL>
 for both PA-RISC and IPF (Itanium Processor Family). They are built
-with the HP ANSI-C compiler.
+with the HP ANSI-C compiler. Up till 5.8.8 that was done by ActiveState.
+
+To see what version is included on the DVD (assumed here to be mounted
+on /cdrom), issue this command:
+
+  # swlist -s /cdrom perl
+  # perl           D.5.8.8.B  5.8.8 Perl Programming Language
+    perl.Perl5-32  D.5.8.8.B  32-bit 5.8.8 Perl Programming Language with Extensions
+    perl.Perl5-64  D.5.8.8.B  64-bit 5.8.8 Perl Programming Language with Extensions
 
 =head2 Using perl from HP's porting centre
 
@@ -61,7 +69,7 @@ HP has asked the porting centre to move Open Source binaries
 from /opt to /usr/local, so binaries produced since the start
 of July 2002 are located in /usr/local.
 
-One of HP porting centres URL's is http://hpux.connect.org.uk/
+One of HP porting centres URL's is L<http://hpux.connect.org.uk/>
 The port currently available is built with GNU gcc.
 
 =head2 Compiling Perl 5 on HP-UX
@@ -87,11 +95,11 @@ chips, but any machine with this chip in it is quite obsolete and this
 document will not attempt to address issues for compiling Perl on the
 Motorola chipset.
 
-The most recent version of PA-RISC at the time of this document's last
-update is 2.0. HP PA-RISC systems are usually refered to with model
-description "HP 9000". The last CPU in this series is the PA-8900.
-Support for PA-RISC architectured machines officially ends as shown
-in the following table:
+The version of PA-RISC at the time of this document's last update is 2.0,
+which is also the last there will be. HP PA-RISC systems are usually
+refered to with model description "HP 9000". The last CPU in this series
+is the PA-8900.  Support for PA-RISC architectured machines officially
+ends as shown in the following table:
 
    PA-RISC End-of-Life Roadmap
  +--------+----------------+----------------+-----------------+
@@ -114,6 +122,10 @@ in the following table:
  | cores  |                | PA-8900/rp34x0 | 2014            |
  +--------+----------------+----------------+-----------------+
 
+From L<http://www.hp.com/products1/evolution/9000/faqs.html>
+
+ The last order date for HP 9000 systems was December 31, 2008.
+
 A complete list of models at the time the OS was built is in the file
 /usr/sam/lib/mo/sched.models. The first column corresponds to the last
 part of the output of the "model" command.  The second column is the
@@ -234,9 +246,10 @@ is told to have Madison 6. As of the date of this document's last update,
 the following systems contain Itanium or Itanium 2 chips (this is likely
 to be out of date):
 
-  BL60p, BL860c, cx2600, cx2620, rx1600, rx1620, rx2600, rx2600hptc,
-  rx2620, rx2660, rx3600, rx4610, rx4640, rx5670, rx6600, rx7420,
-  rx7620, rx7640, rx8420, rx8620, rx8640, rx9610, sx1000, sx2000
+  BL60p, BL860c, BL870c, cx2600, cx2620, rx1600, rx1620, rx2600,
+  rx2600hptc, rx2620, rx2660, rx3600, rx4610, rx4640, rx5670,
+  rx6600, rx7420, rx7620, rx7640, rx8420, rx8620, rx8640, rx9610,
+  sx1000, sx2000
 
 To see all about your machine, type
 
@@ -244,6 +257,23 @@ To see all about your machine, type
   ia64 hp server rx2600
   # /usr/contrib/bin/machinfo
 
+=head2 HP-UX versions
+
+Not all architectures (PA = PA-RISC, IPF = Itanium Processor Family)
+support all versions of HP-UX, here is a short list
+
+  HP-UX version  Kernel  Architecture
+  -------------  ------  ------------
+  10.20          32 bit  PA
+  11.00          32/64   PA
+  11.11  11i v1  32/64   PA
+  11.22  11i v2     64        IPF
+  11.23  11i v2     64   PA & IPF
+  11.31  11i v3     64   PA & IPF
+
+See for the full list of hardware/OS support and expected end-of-life
+L<http://www.hp.com/go/hpuxservermatrix>
+
 =head2 Building Dynamic Extensions on HP-UX
 
 HP-UX supports dynamically loadable libraries (shared libraries).
@@ -372,20 +402,20 @@ for updates/patches. Enter "ANSI" as keyword.
 
 When you are going to use the GNU C compiler (gcc), and you don't have
 gcc yet, you can either build it yourself from the sources (available
-from e.g. http://www.gnu.ai.mit.edu/software/gcc/releases.html) or fetch
-a prebuilt binary from the HP porting center. There are two places where
-gcc prebuilds can be fetched; the first and best (for HP-UX 11 only) is
-http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,547,00.html
-the second is http://hpux.cs.utah.edu/hppd/hpux/Gnu/ where you can also
-find the GNU binutils package. (Browse through the list, because there
-are often multiple versions of the same package available).
+from e.g. L<http://gcc.gnu.org/mirrors.html>) or fetch
+a prebuilt binary from the HP porting center. gcc prebuilds can be
+fetched from
+L<http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,547,00.html>
+(Browse through the list, because there are often multiple versions of
+the same package available).
 
 Above mentioned distributions are depots. H.Merijn Brand has made prebuilt
-gcc binaries available on http://mirrors.develooper.com/hpux/ and/or
-http://www.cmve.net/~merijn/ for HP-UX 10.20, HP-UX 11.00, and HP-UX 11.11
-(HP-UX 11i) in both 32- and 64-bit versions. These are bzipped tar archives
-that also include recent GNU binutils and GNU gdb.  Read the instructions
-on that page to rebuild gcc using itself.
+gcc binaries available on L<http://mirrors.develooper.com/hpux/> and/or
+L<http://www.cmve.net/~merijn/> for HP-UX 10.20, HP-UX 11.00, HP-UX 11.11
+(HP-UX 11i v1), and HP-UX 11.23 (HP-UX 11i v2) in both 32- and 64-bit
+versions. These are bzipped tar archives that also include recent GNU
+binutils and GNU gdb.  Read the instructions on that page to rebuild gcc
+using itself.
 
 On PA-RISC you need a different compiler for 32-bit applications and for
 64-bit applications. On PA-RISC, 32-bit objects and 64-bit objects do
@@ -451,7 +481,8 @@ HP-UX versions before 10.30 require a separate installation of a POSIX
 threads library package. Two examples are the HP DCE package, available
 on "HP-UX Hardware Extensions 3.0, Install and Core OS, Release 10.20,
 April 1999 (B3920-13941)" or the Freely available PTH package, available
-on H.Merijn's site (http://mirrors.develooper.com/hpux/).
+on H.Merijn's site (L<http://mirrors.develooper.com/hpux/>). The use of PTH
+will be unsupported in perl-5.12 and up and is rather buggy in 5.11.x.
 
 If you are going to use the HP DCE package, the library used for threading
 is /usr/lib/libcma.sl, but there have been multiple updates of that
@@ -540,10 +571,18 @@ it is known to fail with 64-bit versions of GCC.
 
 =head2 GDBM and Threads on HP-UX
 
-If you attempt to compile Perl with threads on an 11.X system and also
-link in the GDBM library, then Perl will immediately core dump when it
-starts up.  The only workaround at this point is to relink the GDBM
-library under 11.X, then relink it into Perl.
+If you attempt to compile Perl with (POSIX) threads on an 11.X system
+and also link in the GDBM library, then Perl will immediately core dump
+when it starts up.  The only workaround at this point is to relink the
+GDBM library under 11.X, then relink it into Perl.
+
+the error might show something like:
+
+Pthread internal error: message: __libc_reinit() failed, file: ../pthreads/pthread.c, line: 1096
+Return Pointer is 0xc082bf33
+sh: 5345 Quit(coredump)
+
+and Configure will give up.
 
 =head2 NFS filesystems and utime(2) on HP-UX
 
@@ -551,25 +590,6 @@ If you are compiling Perl on a remotely-mounted NFS filesystem, the test
 io/fs.t may fail on test #18.  This appears to be a bug in HP-UX and no
 fix is currently available.
 
-=head2 perl -P and // and HP-UX
-
-If HP-UX Perl is compiled with flags that will cause problems if the
--P flag of Perl (preprocess Perl code with the C preprocessor before
-perl sees it) is used.  The problem is that C<//>, being a C++-style
-until-end-of-line comment, will disappear along with the remainder
-of the line.  This means that common Perl constructs like
-
-  s/foo//;
-
-will turn into illegal code
-
-  s/foo
-
-The workaround is to use some other quoting separator than C<"/">,
-like for example C<"!">:
-
-  s!foo!!;
-
 =head2 HP-UX Kernel Parameters (maxdsiz) for Compiling Perl
 
 By default, HP-UX comes configured with a maximum data segment size of
@@ -614,15 +634,41 @@ bug seems to be to create add to the file F</etc/nsswitch.conf>
 Whether you are using NIS does not matter.  Amazingly enough,
 the same bug also affects Solaris.
 
+=head1 error: pasting ")" and "l" does not give a valid preprocessing token
+
+There seems to be a broken system header file in HP-UX 11.00 that
+breaks perl building in 32bit mode with GNU gcc-4.x causing this
+error. The same file for HP-UX 11.11 (even though the file is older)
+does not show this failure, and has the correct definition, so the
+best fix is to patch the header to match:
+
+ --- /usr/include/inttypes.h  2001-04-20 18:42:14 +0200
+ +++ /usr/include/inttypes.h  2000-11-14 09:00:00 +0200
+ @@ -72,7 +72,7 @@
+  #define UINT32_C(__c)                   __CONCAT_U__(__c)
+  #else /* __LP64 */
+  #define INT32_C(__c)                    __CONCAT__(__c,l)
+ -#define UINT32_C(__c)                   __CONCAT__(__CONCAT_U__(__c),l)
+ +#define UINT32_C(__c)                   __CONCAT__(__c,ul)
+  #endif /* __LP64 */
+
+  #define INT64_C(__c)                    __CONCAT_L__(__c,l)
+
+
+=head1 Miscellaneous
+
+HP-UX 11 Y2K patch "Y2K-1100 B.11.00.B0125 HP-UX Core OS Year 2000
+Patch Bundle" has been reported to break the io/fs test #18 which
+tests whether utime() can change timestamps.  The Y2K patch seems to
+break utime() so that over NFS the timestamps do not get changed
+(on local filesystems utime() still works). This has probably been
+fixed on your system by now.
+
 =head1 AUTHOR
 
-Jeff Okamoto <okamoto@corp.hp.com>
 H.Merijn Brand <h.m.brand@xs4all.nl>
+Jeff Okamoto <okamoto@corp.hp.com>
 
 With much assistance regarding shared libraries from Marc Sabatella.
 
-=head1 DATE
-
-Version 0.7.9: 2007-03-14
-
 =cut