GNV Version 3.0-2F for VSI OpenVMS x86-64

Release Notes


1. Introduction

Thank you for your interest in GNV for VSI OpenVMS x86-64. The first release of GNV for VSI OpenVMS on x86-64 systems is V3.0-2F.

GNV is an open-source, GNU-based environment for OpenVMS that provides a UNIX-style environment on OpenVMS for application developers, system managers, and users.

This release of GNV includes the following:

  • Bash – a command processor alternative to DCL.

  • GNU Core Utilities – basic file, shell, and text manipulation utilities, such as sort, md5sum, ls, printf, etc.

  • GNU AWK – a special-purpose programming language for data reformatting.

  • GNU Grep – a tool that searches a file for lines containing a match to a specified pattern.

  • GNU SED – a non-interactive command-line text editor.

  • GNU LD – a linker that combines a number of object and archive files, relocates their data, and ties up symbol references.

  • GNU AR – a program that creates, modifies, and extracts from archives.

  • Make – a building tool.

  • GNU BINUTILS – a package that includes the utilities strip, size, strings, nm, and addr2linez.

  • GNU BISON – a general-purpose parser generator that converts an annotated context-free grammar into a deterministic LR or generalized LR (GLR) parser.

  • GNU FLEX – a free and open-source software alternative to lex.

  • GNU PATCH – shell command that updates text files according to instructions in a separate file, called a patch file.

  • GNU WHICH – a utility that is used to find which executable, alias, or shell function is executed when entered on the shell prompt.

  • GNU M4 – an implementation of the traditional Unix macro processor.

  • GNU LESS – a terminal pager program for Unix, Windows, and Unix-like systems used to view (but not change) the contents of a text file one screen at a time.

  • GNU DIFFUTILS – a package of several programs related to finding differences between files. Computer users often find occasion to ask how two files differ.

  • GNU FINDUTILS – a package that contains the GNU programs find, xargs, and locate.

  • MNT – VMS-specific commands to mount or unmount a file_system on an existing director (the mount_point)

  • DCL – a wrapper that allows to execute DCL commands from shell.

2. What’s New in This Release

Changes With MAKE Tools

This GNV package contains two instances of the MAKE utility. They are as follows:

  • MAKE.EXE version 3.78.1 (default), for use with UNIX-style Makefiles

  • VMS_MAKE.EXE version 4.4.90, for use with VMS-style Makefiles to run DCL scripts

To switch to VMS_MAKE.EXE instead of the default MAKE.EXE, enter the following command:

$ MAKE :== $ GNU:[BIN]VMS_MAKE.EXE

To use VMS_MAKE.EXE from bash, you must rename MAKE.EXE to GNV$MAKE.EXE and VMS_MAKE.EXE to MAKE.EXE.

VMS_MAKE.EXE now features the option to use bash as shell for executing commands, which provides the following benefits:

  • Improved tempfile generation (mkstemp is available on VMS), which should help to avoid errors due to being unable to open a tempfile.

  • Now, a build should not differ based on whether it was started from a Bash shell or not.

  • Tidying of whitespace, global VMS flags, and re-factoring the file vmsjobs.c to be a unit instead of being #included by another .c file.

When deciding whether to build rules with DCL or Bash, consider the following factors:

  • If the logical GNV$MAKE_OLD_VMS is defined, its value 0 means to process rules in DCL, while 1 means to process rules in GNV Bash.

  • Otherwise, if the Makefile being invoked contains a SHELL= directive: dcl will mean to process rules in DCL, anything else will mean to process rules in GNV Bash.

  • Otherwise (i.e. no SHELL directive): if the program name contains "VMS", e.g. VMS_MAKE, then process rules in DCL, otherwise process rules in GNV Bash.

  • Also, if a Makefile is not specified by the -f switch , then VMS_MAKE will search for Makefile.vms before falling back to GNUmakefile and Makefile as before.

Fixes in LD Tools
  • An issue with quotation marks has been fixed for clang (as part of ld-tools).

  • A bogus warning for cxx -Wall has been fixed.

  • The following GCC parsing issues have been fixed:
    • The Wc, argument now works and is processed like the -Wc/ argument.

    • Unrecognized multi-character switch is reported and skipped in full, instead of reporting and skipping just the first character.

    • Both --version and -version flags now work correctly and display the version number instead of attempting to build new the target.

M4 Fixes

The esyscmd command now works in M4. When the output of M4 exceeds 512 KB, it tries to use temporary files instead of memory buffers.

A bug with VMS paths that was causing M4 to crash has been fixed.

DCL Utility
  • Default DLC to not pass an output mailbox to lib$spawn. This hopefully will fix a range of display artifact problems. The drawback will be that stdout and stderr are not distinguished, and all output will go to stdout.

  • Add a switch -s to give the current behaviour of stdout/stderr separation in case anybody needs that functionality.

  • Added the switch -h to show help for command line switches.

  • When using -s, send define/proc decc$stdio_ctx_eol enable to the child. This will fix some of the display issues of excess newlines such as the bash DCL git config --global.

  • Suppress display of error message by setting the high bit on the DCL exit status.

Other Fixes
  • Using the TOUCH command on a directory now does not create a file with same name.

  • An issue that was causing the FIND command that uses -exec sh -c to rename .obj files to .o files to result in a fatal error has been fixed.

  • The command rm /usr/local/file.txt no longer fails for existing files.

Included GNU/BIN Utilities

Since the previous release, the support for the following GNU/BIN utilities have been added to GNV for OpenVMS x86-64:

  • strip

  • strings

  • nm

  • size

  • addr2line

Here is the full list of GNU/BIN utilities included in this kit:

addr2line.exear.exearch.exeawk.exe
base64.exebasename.exebash.exebashdebug.exe
bigram.exebison.exebunzip2.exebzip2.exe
cat.execc.exechcon.exechgrp.exe
chmod.exechown.exechroot.execksum.exe
clang.execmp.execode.execomm.exe
cp.execsplit.execut.execxx.exe
date.exedcl.exedd.exedf.exe
diff.exediff3.exedir.exedircolors.exe
dirname.exedu.exeecho.exeegrep.exe
env.exeexecv_symbol.exeexpand.exeexpr.exe
factor.exefalse.exefgrep.exefind.exe
flex.exefmt.exefold.exefrcode.exe
gawk.exegcc.exegnv$ar.exegnv$bash.exe
gnv$bzip2.exegnv$bzip2recover.exegnv$debug-ar.exegnv$debug-ld.exe
gnv$grep.exegnv$ld.exegnv$libbz2_32.exegnv$libbz2_64.exe
gnv$make.exegnv$sed.exegrep.exegroups.exe
head.exehostid.exehostname.exeid.exe
install.exejoin.exekill.exelbracket.exe
ld.exeless.exelink.exeln.exe
locate.exelogname.exels.exem4.exe
make.exemd5sum.exemkbuiltins.exemkdir.exe
mkfifo.exemknod.exemksignames.exemksyntax.exe
mktemp.exemv.exenice.exenl.exe
nm.exenohup.exenproc.exenumfmt.exe
od.exepaste.exepatch.exepathchk.exe
pinky.exepr.exeprintenv.exeprintf.exe
ptx.exepwd.exereadlink.exerealpath.exe
recho.exeregexprops.exerm.exermdir.exe
runcon.exesdiff.exesed.exesed_debug.exe
sed_hack.exesed_hack_debug.exeseq.exesh.exe
sha1sum.exesha224sum.exesha256sum.exesha384sum.exe
sha512sum.exeshred.exeshuf.exesize.exe
sleep.exesort.exesplit.exestat.exe
stdbuf.exestrings.exestrip.exestty.exe
sum.exesync.exetac.exetail.exe
tar.exetee.exetest.exetimeout.exe
touch.exetr.exetrue.exetruncate.exe
tsort.exetty.exeuname.exeunexpand.exe
uniq.exeunlink.exeunzip.exeuptime.exe
users.exevdir.exevms_make.exewc.exe
which.exewho.exewhoami.exexargs.exe
xcase.exeyes.exezecho.exezip.exe
^[.exe   

The GNU/LIB files contained in this kit are as follows:

  • GNV_SETUP.COM

  • libstdbuf.so

  • libzshr.exe

The GNU/ETC files included in this kit are as follows:

  • bison.hairy

  • bison.simple

3. Requirements

This kit requires VSI OpenVMS x86-64 Version 9.2-3 or higher. Note that while you probably will not have any problems installing and using this kit on systems running higher versions of the operating system, older versions are unsupported and will likely cause problems.

4. Recommended Reading

Users may find it helpful to refer to the following documentation in order to better understand how to configure and use the GNV software:

For more information about using GNU, users should refer to documentation available via the GNU website (https://www.gnu.org/), as well as other resources available online.

5. Installing the Kit

The kit is provided as an OpenVMS PCSI kit (VSI-X86VMS-GNV-V0300-2F-1.PCSI$COMPRESSED) that can be installed by a suitably privileged user using the following command:

$ PRODUCT INSTALL GNV

The installation will then proceed as follows (output may differ slightly from that shown depending on various factors):

The following product has been selected:
    VSI X86VMS GNV V3.0-2F                 Layered Product

Do you want to continue? [YES]

Configuration phase starting ...

You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.

Configuring VSI X86VMS GNV V3.0-2F: GNV for VSI OpenVMS x86-64

    © Copyright 2024 VMS Software Inc.

    VMS Software Inc.

* This product does not have any configuration options.

Execution phase starting ...

The following product will be installed to destination:
    VSI X86VMS GNV V3.0-2F                 DISK$X86SYS:[VMS$COMMON.]

Portion done: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

The following product has been installed:
    VSI X86VMS GNV V3.0-2F                 Layered Product

VSI X86VMS GNV V3.0-2F: GNV for VSI OpenVMS x86-64

    Post-installation tasks are required.


    To use GNV, users must execute the following command:

        $ @SYS$STARTUP:GNV$SETUP.COM

6. Known Issues and Limitations

The following issues and limitations are known at the time of this release:

  • GCC does not link executable files from object files. As a workaround, use the following command:

    touch dummy.c; gcc -o foo.exe a.obj b.obj dummy.c

    You will get a warning message that the file dummy.c is empty. This message may be safely ignored.

  • Executing the command rm -f *.xxx causes an error with the following message:

    cannot remove '.xxx': invalid wildcard operation

    As a workaround, use the following command:

    touch dummy.xxx; rm -f *.xxx
  • Hardlinks cannot be created via the ln command. As a workaround, use the following commands:

    dcl set file source /enter=target
  • The current implementation of the Strip utility is not fully functional. VSI recommends that you avoid using it until further notice.

  • The SED utility does not currently work with the -i flag unless the user has the SYSPRV privilege.

  • The AR tool does not currently support the delete and move options. Using either of these options will return a warning and do nothing.

  • The AR tool incorrectly ignores the extract and print options. Using either of these options will do nothing.

  • The Make 4.4.90 utility does not work well with shell.

  • There are currently some issues with redirections in files.

  • There are currently some issues with tar options (tar x and tar c)

  • Bash hangs on combination of redirects and pipes.

  • The cp -p command does not preserve timestamps.

  • Executing bash script under a pipe results in failed reads.

  • SED hangs if the input does not end in a newline character (from bash).

  • There are currently some issues with bashrc (work with pipes).