[Info-vax] OpenVMS development tooling (was: Re: VSI strategy for OpenVMS)

Stephen Hoffman seaohveh at hoffmanlabs.invalid
Mon Sep 27 11:50:52 EDT 2021


On 2021-09-27 10:19:25 +0000, chris said:

> On 09/27/21 02:01, Lawrence D’Oliveiro wrote:
>> On Monday, September 27, 2021 at 5:17:31 AM UTC+13, chris wrote:
>>> Not uncommon to have /usr/lib full of various revisions of the same library.
>> 
>> Everything in /usr/lib (and /usr/bin, and /usr/share, and all the rest 
>> of it) belongs to an installed package. If that package was 
>> auto-installed, then it was brought in as a dependency of another 
>> package. Ultimately you can trace the dependency chain back to 
>> something that the user explicitly asked for. Maybe they later change 
>> their mind, and don’t want it. So you have “apt-get autoremove”, which 
>> will clean up everything that is not (directly or indirectly) a 
>> dependency of such an explicit installation. Thus, everything stays 
>> clean and tidy.
>> 
>> And all the tools for managing this are part of the distro itself. 
>> After all, the distro maintainers themselves use the same tools.
> 
> It's not a criticism. They have had years to fine tune and get it 
> right. Spent some time while back building packages for FreeBSD Sparc 
> and the build process is smart enough to know which other packages need 
> to be pulled in and built as well. In one case, Xvnc, ended up pulling 
> in around 50 other packages before finally building Xvnc. Very 
> impressive indeed...

That's typical in the other areas I'm working with. macOS has the 
open-source project homebrew, which pulls in some fairly complex 
recipes with many dependencies, and it typically all just builds. (Into 
/usr/local, as the /usr/bin, /usr/sbin, and related areas are now 
protected against access.) Lots of options for package managers around 
on various platforms, too. Some good, some bad.

OpenVMS tooling in this area is weak.

I'm perpetually struggling with PCSI.  It works for what DEC designed 
it for, thankfully the corruptions are much more rare, and support for 
limited rollbacks aside. Chunks of the PCSI database support ties back 
to gaps in database support on OpenVMS—that mess is underneath a number 
of other messes in app code.

If you decide to keep your app files outside of SYS$SYSROOT and/or off 
of SYS$SYSDEVICE:, PCSI becomes little better than a wrapper around 
increasingly-ginormous and fragile user-written DCL procedures.

Building the PCSI kit files is tedious, and most of us end up writing a 
tool which generates the PCSI files, where we have a changing 
collection of files that need to be installed. Multi-architecture 
support in PCSI gets get interesting too, though—with the official end 
of Alpha and Itanium versions—that will be of decreasing interest until 
the VSI OpenVMS Armv9 or Armv10 ports arrive.

Due to the effort involved, I've been seriously tempted to use 
VMSINSTAL in preference to PCSI, and ignore the extras that PCSI 
provides. Reverting is such sweet sorrow.

DECset MMS just isn't worth using for app builds. DECset MMS and much 
of the rest of DECset was pretty good for its time, but has been 
ignored for far too long. In that area, MMK has been less buggy than 
MMS. VSI will hopefully be releasing a viable CMake as part of the LLVM 
work. Yes, I'm interested in Visual Studio Code / VSI IDE here too, but 
it's early yet and the VSI IDE integration with OpenVMS is a little 
lacking. Getting it to install and work needs to be closer to 
installing DECset LSEDIT.

Installations have to create their own compatibility implementations 
either within the apps, or in the installers or posting some doc and 
pushing the problem into the apps, everybody does it differently, and 
the current HPE and VSI SSL multi-version compatibility... missed, and 
the mixed-version clustering support also... missed. This same pattern 
repeats. Clustering. The previous SSL V1.3-to-V1.4 mess, too. That old 
and broken APIs can't be gotten rid of ties in here, too. Things here 
have gotten bad enough here that system use of the GSMATCH mechanism 
was silently disabled within the RTLs a while back.

Updates and update notifications are a problem, too. Too many outdated 
app and tool and OpenVMS versions in use in too many places.  How the 
recently-teased tool VSP fits into any this, and whether VSP is tied 
into PCSI? VSI Support Portal?

And around abstracting apps using SSL/TLS and IPv6 and DNS and the rest 
from the changes that have and will continue in these areas, OpenVMS 
ignores.

And support for isolating apps from other apps is unavailable, whether 
for simple collisions of UICs (what a mess UICs have become) or 
usernames or any of the system-wide constructs, or to isolate the 
damage that can arise from app breaches.  There's no means to just get 
a username with a unique UIC, as a specific instance. And yes, I've met 
both UIC and username collisions, and if I want multiple versions of 
some app or service (see above) to install, now I have to manage those 
UICs and usernames and the rest myself.

I'd like to get these installs and multi-version and app isolation and 
the rest to work much more transparently, but far too often the only 
real option here is a pile of documentation that can then get ignored 
or incompletely followed, and with hopefully enough error checking 
present, and calls to support. Tossing these problems on the end-user 
is a cost-shift and a way to increase costs both for the vendor and for 
the end user. It's an approach that just isn't viable, but it is what 
it is.

Which all reminds me of another longstanding missing dependency that I 
need to check for, whether zip and unzip are in V9.1...

Ah, well. Back to work.



Some related reading:
https://nixos.org/guides/how-nix-works.html
https://wiki.archlinux.org/title/Pacman
https://brew.sh



-- 
Pure Personal Opinion | HoffmanLabs LLC 




More information about the Info-vax mailing list