xref: /freebsd-src/crypto/openssl/NOTES-VMS.md (revision b077aed33b7b6aefca7b17ddb250cf521f938613)
1*b077aed3SPierre ProncheryNotes for the OpenVMS platform
2*b077aed3SPierre Pronchery==============================
3*b077aed3SPierre Pronchery
4*b077aed3SPierre Pronchery - [Requirement details](#requirement-details)
5*b077aed3SPierre Pronchery - [About ANSI C compiler](#about-ansi-c-compiler)
6*b077aed3SPierre Pronchery - [About ODS-5 directory names and Perl](#about-ods-5-directory-names-and-perl)
7*b077aed3SPierre Pronchery - [About MMS and DCL](#about-mms-and-dcl)
8*b077aed3SPierre Pronchery - [About debugging](#about-debugging)
9*b077aed3SPierre Pronchery - [Checking the distribution](#checking-the-distribution)
10*b077aed3SPierre Pronchery
11*b077aed3SPierre ProncheryRequirement details
12*b077aed3SPierre Pronchery-------------------
13*b077aed3SPierre Pronchery
14*b077aed3SPierre ProncheryIn addition to the requirements and instructions listed
15*b077aed3SPierre Proncheryin [INSTALL.md](INSTALL.md), this are required as well:
16*b077aed3SPierre Pronchery
17*b077aed3SPierre Pronchery  * At least ODS-5 disk organization for source and build.
18*b077aed3SPierre Pronchery    Installation can be done on any existing disk organization.
19*b077aed3SPierre Pronchery
20*b077aed3SPierre ProncheryAbout ANSI C compiler
21*b077aed3SPierre Pronchery---------------------
22*b077aed3SPierre Pronchery
23*b077aed3SPierre ProncheryAn ANSI C compiled is needed among other things.  This means that
24*b077aed3SPierre ProncheryVAX C is not and will not be supported.
25*b077aed3SPierre Pronchery
26*b077aed3SPierre ProncheryWe have only tested with DEC C (aka HP VMS C / VSI C) and require
27*b077aed3SPierre Proncheryversion 7.1 or later.  Compiling with a different ANSI C compiler may
28*b077aed3SPierre Proncheryrequire some work.
29*b077aed3SPierre Pronchery
30*b077aed3SPierre ProncheryPlease avoid using C RTL feature logical names `DECC$*` when building
31*b077aed3SPierre Proncheryand testing OpenSSL.  Most of all, they can be disruptive when
32*b077aed3SPierre Proncheryrunning the tests, as they affect the Perl interpreter.
33*b077aed3SPierre Pronchery
34*b077aed3SPierre ProncheryAbout ODS-5 directory names and Perl
35*b077aed3SPierre Pronchery------------------------------------
36*b077aed3SPierre Pronchery
37*b077aed3SPierre ProncheryIt seems that the perl function canonpath() in the `File::Spec` module
38*b077aed3SPierre Proncherydoesn't treat file specifications where the last directory name
39*b077aed3SPierre Proncherycontains periods very well.  Unfortunately, some versions of VMS tar
40*b077aed3SPierre Proncherywill keep the periods in the OpenSSL source directory instead of
41*b077aed3SPierre Proncheryconverting them to underscore, thereby leaving your source in
42*b077aed3SPierre Proncherysomething like `[.openssl-1^.1^.0]`.  This will lead to issues when
43*b077aed3SPierre Proncheryconfiguring and building OpenSSL.
44*b077aed3SPierre Pronchery
45*b077aed3SPierre ProncheryWe have no replacement for Perl's canonpath(), so the best workaround
46*b077aed3SPierre Proncheryfor now is to rename the OpenSSL source directory, as follows (please
47*b077aed3SPierre Proncheryadjust for the actual source directory name you have):
48*b077aed3SPierre Pronchery
49*b077aed3SPierre Pronchery    $ rename openssl-1^.1^.0.DIR openssl-1_1_0.DIR
50*b077aed3SPierre Pronchery
51*b077aed3SPierre ProncheryAbout MMS and DCL
52*b077aed3SPierre Pronchery-----------------
53*b077aed3SPierre Pronchery
54*b077aed3SPierre ProncheryMMS has certain limitations when it comes to line length, and DCL has
55*b077aed3SPierre Proncherycertain limitations when it comes to total command length.  We do
56*b077aed3SPierre Proncherywhat we can to mitigate, but there is the possibility that it's not
57*b077aed3SPierre Proncheryenough.  Should you run into issues, a very simple solution is to set
58*b077aed3SPierre Proncheryyourself up a few logical names for the directory trees you're going
59*b077aed3SPierre Proncheryto use.
60*b077aed3SPierre Pronchery
61*b077aed3SPierre ProncheryAbout debugging
62*b077aed3SPierre Pronchery---------------
63*b077aed3SPierre Pronchery
64*b077aed3SPierre ProncheryIf you build for debugging, the default on VMS is that image
65*b077aed3SPierre Proncheryactivation starts the debugger automatically, giving you a debug
66*b077aed3SPierre Proncheryprompt.  Unfortunately, this disrupts all other uses, such as running
67*b077aed3SPierre Proncherytest programs in the test framework.
68*b077aed3SPierre Pronchery
69*b077aed3SPierre ProncheryGenerally speaking, if you build for debugging, only use the programs
70*b077aed3SPierre Proncherydirectly for debugging.  Do not try to use them from a script, such
71*b077aed3SPierre Proncheryas running the test suite.
72*b077aed3SPierre Pronchery
73*b077aed3SPierre Pronchery### The following is not available on Alpha
74*b077aed3SPierre Pronchery
75*b077aed3SPierre ProncheryAs a compromise, we're turning off the flag that makes the debugger
76*b077aed3SPierre Proncherystart automatically.  If there is a program that you need to debug,
77*b077aed3SPierre Proncheryyou need to turn that flag back on first, for example:
78*b077aed3SPierre Pronchery
79*b077aed3SPierre Pronchery    $ set image /flag=call_debug [.test]evp_test.exe
80*b077aed3SPierre Pronchery
81*b077aed3SPierre ProncheryThen just run it and you will find yourself in a debugging session.
82*b077aed3SPierre ProncheryWhen done, we recommend that you turn that flag back off:
83*b077aed3SPierre Pronchery
84*b077aed3SPierre Pronchery    $ set image /flag=nocall_debug [.test]evp_test.exe
85*b077aed3SPierre Pronchery
86*b077aed3SPierre ProncheryAbout assembler acceleration
87*b077aed3SPierre Pronchery----------------------------
88*b077aed3SPierre Pronchery
89*b077aed3SPierre ProncheryOpenSSL has assembler acceleration for a number of BIGNUM and crypto
90*b077aed3SPierre Proncheryroutines.  The VMS config targets tries to look for a selection of
91*b077aed3SPierre Proncheryassemblers and will use what they find.  If none of the assemblers are
92*b077aed3SPierre Proncheryfound, OpenSSL will be built as if `no-asm` was configured.
93*b077aed3SPierre Pronchery
94*b077aed3SPierre Pronchery### For Itanium / IA64 / I64
95*b077aed3SPierre Pronchery
96*b077aed3SPierre Pronchery-   There is only one assembler, a port of Intel's `ias`, found in the
97*b077aed3SPierre Pronchery    HP Open Source Tools CD, available through [DECUSlib](http://www.decuslib.com).
98*b077aed3SPierre Pronchery    It's assumed to be set up as per the instructions, where `disk` and
99*b077aed3SPierre Pronchery    `dir` are expected to be adapted to local conditions:
100*b077aed3SPierre Pronchery
101*b077aed3SPierre Pronchery        $ ias :== $disk:[dir]iasi64.exe
102*b077aed3SPierre Pronchery
103*b077aed3SPierre ProncheryChecking the distribution
104*b077aed3SPierre Pronchery-------------------------
105*b077aed3SPierre Pronchery
106*b077aed3SPierre ProncheryThere have been reports of places where the distribution didn't quite
107*b077aed3SPierre Proncheryget through, for example if you've copied the tree from a NFS-mounted
108*b077aed3SPierre ProncheryUnix mount point.
109*b077aed3SPierre Pronchery
110*b077aed3SPierre ProncheryThe easiest way to check if everything got through as it should is to
111*b077aed3SPierre Proncherycheck that this file exists:
112*b077aed3SPierre Pronchery
113*b077aed3SPierre Pronchery    [.include.openssl]configuration^.h.in
114*b077aed3SPierre Pronchery
115*b077aed3SPierre ProncheryThe best way to get a correct distribution is to download the gzipped
116*b077aed3SPierre Proncherytar file from ftp://ftp.openssl.org/source/, use `GZIP -d` to uncompress
117*b077aed3SPierre Proncheryit and `VMSTAR` to unpack the resulting tar file.
118*b077aed3SPierre Pronchery
119*b077aed3SPierre ProncheryGzip and VMSTAR are available here:
120*b077aed3SPierre Pronchery
121*b077aed3SPierre Pronchery   <http://antinode.info/dec/index.html#Software>
122*b077aed3SPierre Pronchery
123*b077aed3SPierre ProncheryShould you need it, you can find UnZip for VMS here:
124*b077aed3SPierre Pronchery
125*b077aed3SPierre Pronchery   <http://www.info-zip.org/UnZip.html>
126*b077aed3SPierre Pronchery
127*b077aed3SPierre Pronchery How the value of 'arch' is determined
128*b077aed3SPierre Pronchery -------------------------------------
129*b077aed3SPierre Pronchery
130*b077aed3SPierre Pronchery 'arch' is mentioned in INSTALL.  It's value is determined like this:
131*b077aed3SPierre Pronchery
132*b077aed3SPierre Pronchery    arch = f$edit( f$getsyi( "arch_name"), "upcase")
133