cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: VMS fixes needed to allow building.

From: John E. Malmberg <wb8tyw_at_qsl.net>
Date: Thu, 07 Mar 2013 19:13:29 -0600

On 3/7/2013 4:38 PM, Daniel Stenberg wrote:
> On Wed, 6 Mar 2013, Tom Grace wrote:

> as I am starting a project to use CURL on VMS. So currently am
> prototyping solutions. I am using the binary kit as found on the
> download page of 7.19.5 with the matching source for compiling.

That version has a bug where the build procedure was linking in the 64
bit openssl shared images instead of the 32 bit openssl shared images.
I have not traced back to find out how far back that bug got introduced.

This bug caused curl to access violate (segfault) only on attempts to
use the OpenSSL library.

That was not fixed in the Curl distribution until just before the 7.29
release.

The next bug was introduced by HP making a building error in one to two
versions of their HP OpenSSL kits where they made the transfer vectors
incompatible with the previous ones.

Note to non-vms readers, a transfer vector is a function dispatch table
needed for upwardly compatible shared images on VMS.

The incompatible kits stopped the curl binary from running at all
because of a sanity check at image startup.

>> I have tried VMS_BUILD.COM but it is not working, is this because of
>> needed updates as said in the "thread" ?
>
> Quite likely. Let's see what further details on this that John can share
> with us!

Unfortunately I let a small bug slip by me into the 7.29.0 release,
after you download the source, make this small edit.

--- /src_root/curl/packages/vms/build_vms.com Wed Feb 6 03:47:19 2013
+++ /vms_root/curl/packages/vms/build_vms.com Thu Mar 7 18:10:04 2013
@@ -838,7 +838,7 @@
  $ 'vo_c' "CC (opts) ", file
  $ define/user curl 'curl_logical'
  $ if curl_sys_krbinc .nes. "" then define/user gssapi
'curl_sys_krbinc'
-$ define/user decc$system_include 'curl_sys_inc'
+$ define/user decc$system_include 'sys_inc'
  $ CC 'cc_defs' -
           'cc_qual1' -
           'cc_qual2' -

That gets curl 7.29.0 building properly on OpenVMS for VAX, ALPHA, and
Integrity.

But that is still not good enough if you want to use libcurl properly,
libcurl should really be built as a shareable image.

The VMS specific source code from the older curl packages at
ftp://encompasserve.org/gnv contains the procedure for generating a
shared image. Unfortunately that curl was built with G_FLOAT instead of
IEEE float, which will make it incompatible with many ported programs.

I am working on getting that code integrated updated for a Curl 7.29.0
kit, but this is a spare time effort.

TODO List:
1. libz/VAX shared image with exact case and upper case universal
symbols in a PCSI installation kit.

2. Create a procedure to unpack the OpenSSL shared images from the HP
SSL kit so that users can easily extract them for use with curl/libcurl
with out a forced upgrade to an incompatible shared image.

3. Submit to the curl repository the files and instructions on how to
use the GNV tools to build Curl. GNV uses the same build procedures as
on Linux that are augmented with some helper files that are to hide VMS
differences from the build procedure.

4. Bring over the shared image generation command procedure from the
older kit. Change it to use the extracted openSSL shared images by use
of logical names. Since the new shared image will use IEEE floating
unless on VAX, change the image name to GNV$LIBCURLI.EXE. That should
not take much effort.

4a. On VAX build a shared image with exact case and upper case transfer
vectors.

5. Change the gnv$curl_startup.com procedure to define logical names to
which HP SSL shared images to use based on checking which version of HP
SSL is installed.

6. Build PCSI kits for all three platforms.

It is taking me longer than anticipated. And I am also trying to
document the procedures that I use at the vmsports source forge project.
https://sourceforge.net/p/vms-ports/wiki/Home/

Eventually I plan to use the libcurl shared image in a port of git to
VMS. Right now, I only had the git clone working until HP made the
incompatible change to HP SSL noted above.

>> Second questions> Is the suggestion to HPSSL or OPENSSL?
>
> I don't know exactly what HPSSL is, but if it is something that is
> completely separate from OpenSSL then libcurl doesn't support using it
> so OpenSSL is the only choice.

HPSSL is port of OpenSSL to VMS that is maintained by HP and available
for free download at their web site. It claims to be OpenSSL 0.9.8w
The HPSSL for VAX is even older.

LION> curl --version
curl 7.29.0 (IA64-HP-VMS) libcurl/7.29.0 OpenSSL/0.9.8w
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps
pop3 pop3s rtsp smtp smtps telnet tftp
Features: GSS-Negotiate IPv6 Largefile NTLM SSL

Regards,
-John
wb8tyw_at_qsl.net
Personal Opinion Only

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2013-03-08