$ patch -p0 --verbose <patch_dir:glob-basic.patch -b --suffix=-pre_glob-basic
when your default is in the "root" Perl directory.
I use a hacked-for-VMS version of GNU Patch 2.5.4, see below. Some of the earlier VMS patch programs insert gratuitous record separators in long files (e.g., vms.c) so beware of old patch programs!
Because the list of patches was getting cumbersome, I combined them into four "big" patches that can be applied in any order to the base 5.6.0 kit.
Here's the cumbersome list of little patches if you want them.
Build VMS-Debug version: Y Always use default file types: Y(full @CONFIGURE dialog)
Here's a partial list of problems & solutions.
Here's VMS-Fileutils-0_012.tar-gz, which contains both VMS::FileUtils::Root and VMS::FileUtils::SafeName.
VMS::FileUtils::Root provides the ability to use "rooted" directories with concealed logical names. VMS::FileUtils::SafeName has routines for putting filenames into a VMS-acceptable form. Both are necessary for CPAN.
$ gzip -d VMS-Fileutils-0_012.tar-gz $ tar xvf VMS-Fileutils-0_012.tar $ set default [.VMS-Fileutils-0_012] $ perl makefile.pl $ mmk $ mmk test $ mmk install(Substitute "mms" for "mmk" if you use MMS instead)
Note that VMS::FileUtils has been updated to version 0.012; the change from 0.01 to 0.011 was in the test procedure for VMS::FileUtils::Root to properly escape "$" in disk names....otherwise you get a spurious failure in tests 17 and 19.
The change from 0.011 to 0.012 was a bit more substantial: a limitation in the number of directories in the "rooted" logicals was changed from 8 to 7 after testing showed that 7 works while 8 doesn't.
Then apply this cpan.patch (25 May 2000) before building CPAN v1.54.
You will be asked if you want to configure CPAN right away, so make sure you have symbols for "gzip", "tar" and (optionally) "unzip" set up beforehand.
$ gzip -d CPAN-1_54.tar-gz $ tar xvf CPAN-1_54.tar-gz $ set default [.CPAN-1_54] $ gnu_patch <somedev:[somedir]cpan_20000403.patch $ perl makefile.pl ...answer config questions here... $ mmk $ mmk test $ mmk installConfig questions: If a DCL symbol is defined for "where do I find this program" questions then it will be translated to get the EXE name.
The ones I answered were:
gzip -> gzip (if symbol defined, otherwise gzip filespec) tar -> tar (if symbol defined, etc.) unzip -> unzip (if symbol defined, etc.) make -> mmk (or mms) shell -> spawn pager -> more (I don't think we can actually *use* this...) ftp -> ftpJust take the default for the rest. When you need to enter URLs, you can just enter a list of space-separated numbers ("12 18 32").
I also set up a "local CPAN"; you enter a URL of something like:
file://localhost/mydisk/my-cpan-dir/(The "file://localhost/" is part a literal string, don't put your local host name, but you do need to substitute for "mydisk" and "my-cpan-dir").
The CPAN files are located in MYDISK:[MY-CPAN-DIR.AUTHORS.ID...] with the same directory structure as CPAN. When CPAN.pm goes to look up a module it will check if it is already in its cache, followed by the "local CPAN", followed by the remote sites.
Having a "local CPAN" allowed me to try out VMS-specific modifications of modules before sending patches to the authors.
Note: that you can sometimes have problems updating CPAN configurations, due to protection issues. I haven't tracked down the ultimate cause of this, but it may well be a result of poorly-applied Unixoid protections. If you get bitten by this, check that you have RWED permissions on PERL_ROOT:[LIB.CPAN]CONFIG.PM.
I set up CPAN.pm so that FTP on a VMS machine will use the following command line if the libnet bundle hasn't been installed:
$ FTP/USER="anonymous"/PASS="..yourname@wherever.." cpanhostnameWhich should be okay for UCX and Multinet. Please let me know about other networking software with different requirements.
For Bundle::libnet, when it asks if you want to set the config right now answer NO, otherwise you get a bunch of test errors.
I've put the module status table in its own page for ease of updating.
It's unfortunate that (AFAIK) all of the VMS:: modules are either non-CPAN.pm compatible or not distributed via the CPAN.pm mechanisms. You can grab them from a CPAN site via FTP, expand and build them just fine, but if you want to use CPAN.pm to do so you're (currently) out of luck.
One useful and kewl enhancement would be to provide a "Bundle::VMS" of VMS modules that you could get, make and install in one go. That is, once we get VMS:: modules better integrated in CPAN.
In addition, it might also be useful to have a bundle (not on CPAN necessarily) of modules that are "generally useful and build cleanly on VMS".
Here's the current (as of 30 Mar 2000) GZIP 1.2.4a distribution, original available from prep.ai.mit.edu.
Then apply this patch which contains Peter Prymmer's DECC patch, my own i/o redirection patch, (so things like "gzip -dc foo.tar-gz >bar." will work), and some extra VAX 7.1 patches.
And here's a AXP V6.2 binary if you really need one.
The distribution and patches are also available via FTP.
One feature about 2.5.4 that is worth having is the "--dry-run" flag; it lets you see if a patch will apply cleanly without actually applying it. And one warning: if you apply a patch to files in subdirectories (i.e., the patch refers to files in subdirectories) which is quite standard for Perl patches, you need to use the "-p0" flag. Otherwise, Patch will only look for the files to be patched in your current default directory.
Here's the base Patch 2.5.4 distribution (or by FTP or from the MIT GNU archive)
After un-gipping, untarring, etc, you have to apply this patch. The patch contains both Craig Berry's (craig.berry@metamorgs.com) patches from Jan 2000, plus my later patches.
Then just "MMK" or "MMS" to build; rather than try and integrate into the previous build procedures (based on VAXC) I just created a DESCRIP.MMS suitable for DECC.
Tested on VMS/AXP 6.2 and 7.1 and VMS/VAX 7.1.
Here's an AXP binary for VMS6.2, and a VAX binary for VMS7.1 if you're really stuck, but I strongly suggest building from source if possible. Here's a Gzipped tar archive of the patched sources.