=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
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
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
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
+--------+----------------+----------------+-----------------+
| 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
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
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).
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
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
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
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
With much assistance regarding shared libraries from Marc Sabatella.
-=head1 DATE
-
-Version 0.8.0: 2007-09-09
-
=cut