Fix util/mkpod2html.pl to call pod2html with absolute paths
authorRichard Levitte <levitte@openssl.org>
Sun, 19 Sep 2021 09:05:35 +0000 (11:05 +0200)
committerRichard Levitte <levitte@openssl.org>
Tue, 21 Sep 2021 09:05:53 +0000 (11:05 +0200)
It turns out that on VMS, pod2html only recognises VMS directory
specifications if they contain a device name, which is accomplished by
making them absolute.  Otherwise, a VMS build that includes building
the document HTML files ends up with an error like this:

    $ perl [---.downloads.openssl-3_0-snap-20210916.util]mkpod2html.pl -i [---.downloads.openssl-3_0-snap-20210916.doc.man1]CA.pl.pod -o [.DOC.HTML.MAN1]CA.PL.HTML -t "CA.pl" -r "[---.downloads.openssl-3_0-snap-20210916.doc]"
    [---.downloads.openssl-3_0-snap-20210916.util]mkpod2html.pl: error changing to directory -/-/-/downloads/openssl-3_0-snap-20210916/doc/: no such file or directory
    %SYSTEM-F-ABORT, abort

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16626)

util/mkpod2html.pl

index 2df4b22b412c20b5f2a07b7242ff6d37b650f31e..ea1164d597c9ec9b71f2ba19cfe21af2f450714c 100755 (executable)
@@ -12,6 +12,7 @@ use warnings;
 use lib ".";
 use Getopt::Std;
 use Pod::Html;
+use File::Spec::Functions qw(:DEFAULT rel2abs);
 
 # Options.
 our($opt_i);    # -i INFILE
@@ -25,6 +26,14 @@ die "-o flag missing" unless $opt_o;
 die "-t flag missing" unless $opt_t;
 die "-r flag missing" unless $opt_r;
 
+# We originally used realpath() here, but the Windows implementation appears
+# to require that the directory or file exist to be able to process the input,
+# so we use rel2abs() instead, which only processes the string without
+# looking further.
+$opt_i = rel2abs($opt_i) or die "Can't convert to real path: $!";
+$opt_o = rel2abs($opt_o) or die "Can't convert to real path: $!";
+$opt_r = rel2abs($opt_r) or die "Can't convert to real path: $!";
+
 pod2html
     "--infile=$opt_i",
     "--outfile=$opt_o",