Operating System - OpenVMS
1752708 Members
5862 Online
108789 Solutions
New Discussion юеВ

Re: CVS Version Control on OpenVMS 8.3 Alpha

 
John T. Farmer
Regular Advisor

CVS Version Control on OpenVMS 8.3 Alpha

Hello,

I am trying to implement CVS on OpenVMS 8.3, Alpha. Corporate supports the CVS repository server on a Linux/Unix box. I intend to version Source, Object and Executable (keep the matching set).

I have successfully Added, Checked-out, Checked-in (Committed) COBOL source and COBOL EXE files. Upon checkout, the EXE runs find.

However, the intermediate object (.OBJ) files when checked out, give a link error (see attachement).

Wondering if there are CVS client options I need to use, etc. The only CVS client I could find was from a download I did in 2006 for version 1.9.27.

Any thoughts on this subject?

Thanks,

John Farmer
john dot farmer at genworth dot com
10 REPLIES 10
H.Becker
Honored Contributor

Re: CVS Version Control on OpenVMS 8.3 Alpha

It looks like the object file is not in the expected record format. Object files for VAX and Alpha usually are in variable length record format. If the object file was stored by a Linux/Unix box it very likely didn't restore as var.
John Gillings
Honored Contributor

Re: CVS Version Control on OpenVMS 8.3 Alpha

John,
I'm assuming checkin/out uses FTP or similar to move the file between systems?

This might "just work" on Itanium, as OBJ modules are:

Record format: Undefined, maximum 512 bytes, longest 0 bytes

which will possibly survive ftp enough to be recognised.

EXE files are FIX 512, so FTP won't break them as long as they're copied as BINARY.

On Alpha, OBJ modules are as Helmut said:

Record format: Variable length, maximum 0 bytes, longest bytes

Can you pre process the file being checked in and post process the file being checked out?

You may be able to get away with changing the record format. Change it to FIXED 512 before checking in, then back to VAR after checking out. Make sure it uses BINARY FTP for copying.

$ SET FILE/ATTR=(RFM:FIX,MRS:512) CHECKIN.OBJ
now checkin CHECKIN.OBJ

checkout CHECKOUT.OBJ
$ SET FILE/ATTR=(RFM:VAR,MRS:0) CHECKOUT.OBJ

Use ANALYZE/OBJECT to validate. I was able to FTP the FIX512 file, off VMS, then back, change back to VAR and successfully ANALYZE/OBJ.

Note that you'll lose the true LRL, but that probably won't matter. If you find it does, there are a few options:

1) "remember" the real LRL for each file "somewhere" and restore it with the RFM and MRS (yuk!)

2) Find a reasonable maximum and set them all to the same (kludge)

3) After fixing RFM and MRS:
$ CONVERT CHECKOUT.OBJ CHECKOUTFIX.OBJ
(this will recalculate the correct LRL, at the expense of reading through and copying the whole file)
A crucible of informative mistakes
Bill Pedersen
Regular Advisor

Re: CVS Version Control on OpenVMS 8.3 Alpha

Instead of messing around after the fact and "remembering" things why not use InfoZIP/UNZIP which remember the file and record attributes for you? This can be automated as well and all the information is in one file.
Bill Pedersen
CCSS - Computer Consulting System Services, LLC
H.Becker
Honored Contributor

Re: CVS Version Control on OpenVMS 8.3 Alpha

>>>
This might "just work" on Itanium, as OBJ modules are:

Record format: Undefined, maximum 512 bytes, longest 0 bytes
<<<

Additionally, EOF must be preserved.

>>>
Use ANALYZE/OBJECT to validate. I was able to FTP the FIX512 file, off VMS, then back, change back to VAR and successfully ANALYZE/OBJ.
<<<

Side note, analyze will not work, if there are major problems in the structure so these problems show, but in general, ANALYZE/OBJECT (and /IMAGE) is not a verification tool, it is a formatting tool.
John T. Farmer
Regular Advisor

Re: CVS Version Control on OpenVMS 8.3 Alpha

I did not implement FTP explicitly but I don't know what transport layer the CVS client uses. Program name is CVS_EXE_ALPHAVMS.EXE. Command line syntax is something like

$ cvs -d
":pserver:myusername@myserver.mycompany.com:/CVS/TestRepos" add "MYPROG.OBJ"

I hoped someone was using CVS from the VMS client that could give some pointers. I plan to version source (cob source, copybooks, etc.), object and executable, so I had all the "Parts" in play at a particular point in time.

Two other VC products are supported in the company, PVCS and small pockets of SubVersion. Are their clients available for VMS for either of those, and if so, do they interact with VMS any better than CVS?

For the moment, the Object file issue is the only negative I've found. Although CVS does seem to constrain a bit requiring checkout/in in the module subdirectory only. That will take some scripting to get it to fit into our dev/model/prod flow.

Thanks,

John
Glenn Wolf
Advisor

Re: CVS Version Control on OpenVMS 8.3 Alpha

John:

Are you setting binary mode for the objects/executables you are storing in CVS? You should probably set your CVSROOT/cvswrappers file to include the lines:
*.exe -k 'b'
*.obj -k 'b'
*.olb -k 'b'
*.bck -k 'b'

so CVS will treat these file types as binary.

This won't fix the record attributes issue noted above (you'll probably have to write a command procedure around the checkout/export to set the attributes correctly), but it will keep CVS from doing keyword substitution in your binary files.

Hope this helps a little!

Glenn
Tim E. Sneddon
Occasional Advisor

Re: CVS Version Control on OpenVMS 8.3 Alpha

There is also a more recent version of CVS available from Jouk Jansen. CVS 1.12.13 can be found here:

http://nchrem.tnw.tudelft.nl/openvms/software2.html#cvs

Tim.
John T. Farmer
Regular Advisor

Re: CVS Version Control on OpenVMS 8.3 Alpha

Both VMS related links on that page are "404 not found" as well as email to the owner bounced. Would someone have an active link to the binary downloads? Or if someone has that current (or more) copy, please provide a path where I may retrieve or by VMS Zipped email attachement.

I am unable to build my one EXE from source as I don't have a C compiler, only COBOL.

Thanks,

John
Tim E. Sneddon
Occasional Advisor

Re: CVS Version Control on OpenVMS 8.3 Alpha

I have dropped my CVS.EXE into the following location:

http://www.kednos.com/cvs/cvs.exe

This is version 1.12.9 for OpenVMS Alpha.

Tim.