summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRich Salz <rsalz@akamai.com>2020-01-15 20:53:29 +0100
committerTomas Mraz <tmraz@fedoraproject.org>2020-02-26 17:26:39 +0100
commit1ec45faba59660f3c0ce8ea0c19fb3a63b12b069 (patch)
tree6e1114d6a3cc8e6ac1065c3e018ab06950fbb318
parentapps x509: restrict CAkeyform option to OPT_FMT_PDE (diff)
downloadopenssl-1ec45faba59660f3c0ce8ea0c19fb3a63b12b069.tar.xz
openssl-1ec45faba59660f3c0ce8ea0c19fb3a63b12b069.zip
Use a wrapper for pod2html
Remove unused util/process_docs.pl Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/10856)
-rw-r--r--Configurations/descrip.mms.tmpl7
-rw-r--r--Configurations/unix-Makefile.tmpl8
-rw-r--r--Configurations/windows-makefile.tmpl5
-rwxr-xr-xutil/mkpod2html.pl52
-rwxr-xr-xutil/process_docs.pl282
5 files changed, 57 insertions, 297 deletions
diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl
index 15fefd2502..5b2936dea0 100644
--- a/Configurations/descrip.mms.tmpl
+++ b/Configurations/descrip.mms.tmpl
@@ -770,13 +770,10 @@ reconfigure reconf :
if ($args{src} =~ /\.html$/) {
my $title = basename($args{src}, ".html");
my $pod = $args{generator}->[0];
+ my $mkpod2html = sourcefile('util', 'mkpod2html.pl');
return <<"EOF";
$args{src}: $pod
- pipe pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. -
- --podpath=man1:man3:man5:man7 "--infile=$pod" -
- "--title=$title" -
- | \$(PERL) -pe "s|href=""http://man\\.he\\.net/(man\d/[^""]+)(?:\\.html)?""|href=""../\$1.html|g;" -
- > \$\@
+ \$(PERL) $mkpod2html -i $pod -o \$\@ -t "$title" -r "\$(SRCDIR)/doc"
EOF
} elsif (platform->isdef($args{src})) {
my $target = platform->def($args{src});
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 55c1b12573..51ba10f62a 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -1187,10 +1187,7 @@ reconfigure reconf:
my $pod = $args{generator}->[0];
return <<"EOF";
$args{src}: $pod
- pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. \\
- --podpath=man1:man3:man5:man7 --infile=$pod "--title=$title" \\
- | \$(PERL) -pe 's|href="http://man\\.he\\.net/(man\\d/[^"]+)(?:\\.html)?"|href="../\$1.html|g;' \\
- > \$\@
+ \$(PERL) \$(SRCDIR)/util/mkpod2html.pl -i "$pod" -o \$\@ -t "$title" -r "\$(SRCDIR)/doc"
EOF
} elsif ($args{src} =~ /\.(\d)$/) {
my $section = $1;
@@ -1199,8 +1196,7 @@ EOF
return <<"EOF";
$args{src}: $pod
pod2man --name=$name --section=$section --center=OpenSSL \\
- --release=\$(VERSION) $pod \\
- > \$\@
+ --release=\$(VERSION) $pod >\$\@
EOF
} elsif (platform->isdef($args{src})) {
my $target = platform->def($args{src});
diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl
index 074e8f74c5..afc386daec 100644
--- a/Configurations/windows-makefile.tmpl
+++ b/Configurations/windows-makefile.tmpl
@@ -587,10 +587,7 @@ reconfigure reconf:
my $pod = $args{generator}->[0];
return <<"EOF";
$args{src}: "$pod"
- pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. \\
- --podpath=man1:man3:man5:man7 "--infile=$pod" "--title=$title" \\
- | \$(PERL) -pe ^"s^|href=\\^"http://man\\.he\\.net/^(man\\d/[^^\\^"]+^)^(?:\.html^)?^"^|href=\\^"../\$\$1.html^|g;^" \\
- > \$\@
+ \$(PERL) \$(SRCDIR)/util/mkpod2html.pl -i "$pod" -o \$\@ -t "$title" -r "\$(SRCDIR)/doc"
EOF
} elsif (platform->isdef($args{src})) {
my $target = platform->def($args{src});
diff --git a/util/mkpod2html.pl b/util/mkpod2html.pl
new file mode 100755
index 0000000000..9e81d36653
--- /dev/null
+++ b/util/mkpod2html.pl
@@ -0,0 +1,52 @@
+#! /usr/bin/env perl
+# Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License"). You may not use
+# this file except in compliance with the License. You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+use strict;
+use warnings;
+
+use lib ".";
+use Getopt::Std;
+use Pod::Html;
+
+# Options.
+our($opt_i); # -i INFILE
+our($opt_o); # -o OUTFILE
+our($opt_t); # -t TITLE
+our($opt_r); # -r PODROOT
+
+getopts('i:o:t:r:');
+die "-i flag missing" unless $opt_i;
+die "-o flag missing" unless $opt_o;
+die "-t flag missing" unless $opt_t;
+die "-r flag missing" unless $opt_r;
+
+pod2html
+ "--infile=$opt_i",
+ "--outfile=$opt_o",
+ "--title=$opt_t",
+ "--podroot=$opt_r",
+ "--podpath=man1:man3:man5:man7",
+ "--htmldir=..";
+
+# Read in contents.
+open F, "<$opt_o"
+ or die "Can't read $opt_o, $!";
+my $contents = '';
+{
+ local $/ = undef;
+ $contents = <F>;
+}
+close F;
+unlink $opt_o;
+
+$contents =~
+ s|href="http://man\.he\.net/(man\d/[^"]+)(?:\.html)?"|href="../$1.html|g;
+open F, ">$opt_o"
+ or die "Can't write $opt_o, $!";
+print F $contents;
+close F;
diff --git a/util/process_docs.pl b/util/process_docs.pl
deleted file mode 100755
index a4287c27d7..0000000000
--- a/util/process_docs.pl
+++ /dev/null
@@ -1,282 +0,0 @@
-#! /usr/bin/env perl
-# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
-#
-# Licensed under the Apache License 2.0 (the "License"). You may not use
-# this file except in compliance with the License. You can obtain a copy
-# in the file LICENSE in the source distribution or at
-# https://www.openssl.org/source/license.html
-
-use strict;
-use warnings;
-
-use File::Spec::Functions;
-use File::Basename;
-use File::Copy;
-use File::Path;
-use FindBin;
-use lib "$FindBin::Bin/perl";
-use OpenSSL::Glob;
-use Getopt::Long;
-use Pod::Usage;
-
-use lib '.';
-use configdata;
-
-# We know we are in the 'util' directory and that our perl modules are
-# in util/perl
-use lib catdir(dirname($0), "perl");
-use OpenSSL::Util::Pod;
-
-my %options = ();
-GetOptions(\%options,
- 'sourcedir=s@', # Source directories
- 'section=i@', # Subdirectories to look through,
- # with associated section numbers
- 'destdir=s', # Destination directory
- #'in=s@', # Explicit files to process (ignores sourcedir)
- 'type=s', # The result type, 'man' or 'html'
- 'suffix:s', # Suffix to add to the extension.
- # Only used with type=man
- 'remove', # To remove files rather than writing them
- 'dry-run|n', # Only output file names on STDOUT
- 'debug|D+',
- );
-
-unless ($options{section}) {
- $options{section} = [ 1, 3, 5, 7 ];
-}
-unless ($options{sourcedir}) {
- $options{sourcedir} = [ catdir($config{sourcedir}, "doc"),
- catdir($config{builddir}, "doc") ];
-}
-pod2usage(1) unless ( defined $options{section}
- && defined $options{sourcedir}
- && defined $options{destdir}
- && defined $options{type}
- && ($options{type} eq 'man'
- || $options{type} eq 'html') );
-pod2usage(1) if ( $options{type} eq 'html'
- && defined $options{suffix} );
-
-if ($options{debug}) {
- print STDERR "DEBUG: options:\n";
- foreach (sort @{$options{sourcedir}}) {
- print STDERR "DEBUG: --sourcedir = $_\n";
- }
- print STDERR "DEBUG: --destdir = $options{destdir}\n"
- if defined $options{destdir};
- print STDERR "DEBUG: --type = $options{type}\n"
- if defined $options{type};
- print STDERR "DEBUG: --suffix = $options{suffix}\n"
- if defined $options{suffix};
- foreach (sort @{$options{section}}) {
- print STDERR "DEBUG: --section = $_\n";
- }
- print STDERR "DEBUG: --remove = $options{remove}\n"
- if defined $options{remove};
- print STDERR "DEBUG: --debug = $options{debug}\n"
- if defined $options{debug};
- print STDERR "DEBUG: --dry-run = $options{\"dry-run\"}\n"
- if defined $options{"dry-run"};
-}
-
-my $symlink_exists = eval { symlink("",""); 1 };
-
-foreach my $section (sort @{$options{section}}) {
- my $subdir = "man$section";
- foreach my $sourcedir (@{$options{sourcedir}}) {
- my $podsourcedir = catfile($sourcedir, $subdir);
- my $podglob = catfile($podsourcedir, "*.pod");
-
- foreach my $podfile (glob $podglob) {
- my $podname = basename($podfile, ".pod");
- my $podpath = catfile($podfile);
- my %podinfo = extract_pod_info($podpath,
- { debug => $options{debug},
- section => $section });
- my @podfiles = grep { $_ ne $podname } @{$podinfo{names}};
-
- my $updir = updir();
- my $name = uc $podname;
- my $suffix =
- { man => ".$podinfo{section}".($options{suffix} // ""),
- html => ".html" } -> {$options{type}};
- my $generate =
- { man => <<"_____",
-pod2man --name=$name --section=$podinfo{section} --center=OpenSSL --release=$config{version} "$podpath"
-_____
- html => <<"_____",
-pod2html "--podroot=$sourcedir" --htmldir=$updir --podpath=man1:man3:man5:man7 "--infile=$podpath" "--title=$podname" --quiet
-_____
- } -> {$options{type}};
- my $output_dir = catdir($options{destdir}, "man$podinfo{section}");
- my $output_file = $podname . $suffix;
- my $output_path = catfile($output_dir, $output_file);
-
- if (! $options{remove}) {
- my @output;
- print STDERR "DEBUG: Processing, using \"$generate\"\n"
- if $options{debug};
- unless ($options{"dry-run"}) {
- @output = `$generate`;
- map { s|href="http://man\.he\.net/(man\d/[^"]+)(?:\.html)?"|href="../$1.html"|g; } @output
- if $options{type} eq "html";
- if ($options{type} eq "man") {
- # Because some *roff parsers are more strict than
- # others, multiple lines in the NAME section must
- # be merged into one.
- my $in_name = 0;
- my $name_line = "";
- my @newoutput = ();
- foreach (@output) {
- if ($in_name) {
- if (/^\.SH "/) {
- $in_name = 0;
- push @newoutput, $name_line."\n";
- } else {
- chomp (my $x = $_);
- $name_line .= " " if $name_line;
- $name_line .= $x;
- next;
- }
- }
- if (/^\.SH +"NAME" *$/) {
- $in_name = 1;
- }
- push @newoutput, $_;
- }
- @output = @newoutput;
- }
- }
- print STDERR "DEBUG: Done processing\n" if $options{debug};
-
- if (! -d $output_dir) {
- print STDERR "DEBUG: Creating directory $output_dir\n"
- if $options{debug};
- unless ($options{"dry-run"}) {
- mkpath $output_dir
- or die "Trying to create directory $output_dir: $!\n";
- }
- }
- print STDERR "DEBUG: Writing $output_path\n" if $options{debug};
- unless ($options{"dry-run"}) {
- open my $output_fh, '>', $output_path
- or die "Trying to write to $output_path: $!\n";
- foreach (@output) {
- print $output_fh $_;
- }
- close $output_fh;
- }
- print STDERR "DEBUG: Done writing $output_path\n" if $options{debug};
- } else {
- print STDERR "DEBUG: Removing $output_path\n" if $options{debug};
- unless ($options{"dry-run"}) {
- while (unlink $output_path) {}
- }
- }
- print "$output_path\n";
-
- foreach (@podfiles) {
- my $link_file = $_ . $suffix;
- my $link_path = catfile($output_dir, $link_file);
- if (! $options{remove}) {
- if ($symlink_exists) {
- print STDERR "DEBUG: Linking $link_path -> $output_file\n"
- if $options{debug};
- unless ($options{"dry-run"}) {
- symlink $output_file, $link_path;
- }
- } else {
- print STDERR "DEBUG: Copying $output_path to link_path\n"
- if $options{debug};
- unless ($options{"dry-run"}) {
- copy $output_path, $link_path;
- }
- }
- } else {
- print STDERR "DEBUG: Removing $link_path\n" if $options{debug};
- unless ($options{"dry-run"}) {
- while (unlink $link_path) {}
- }
- }
- print "$link_path -> $output_path\n";
- }
- }
- }
-}
-
-__END__
-
-=pod
-
-=head1 NAME
-
-process_docs.pl - A script to process OpenSSL docs
-
-=head1 SYNOPSIS
-
-B<process_docs.pl>
-[B<--sourcedir>=I<dir>]
-B<--destdir>=I<dir>
-B<--type>=B<man>|B<html>
-[B<--suffix>=I<suffix>]
-[B<--remove>]
-[B<--dry-run>|B<-n>]
-[B<--debug>|B<-D>]
-
-=head1 DESCRIPTION
-
-This script looks for .pod files in the subdirectories 'apps', 'crypto'
-and 'ssl' under the given source directory.
-
-The OpenSSL configuration data file F<configdata.pm> I<must> reside in
-the current directory, I<or> perl must have the directory it resides in
-in its inclusion array. For the latter variant, a call like this would
-work:
-
- perl -I../foo util/process_docs.pl {options ...}
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<--sourcedir>=I<dir>
-
-Top directory where the source files are found.
-
-=item B<--destdir>=I<dir>
-
-Top directory where the resulting files should end up
-
-=item B<--type>=B<man>|B<html>
-
-Type of output to produce. Currently supported are man pages and HTML files.
-
-=item B<--suffix>=I<suffix>
-
-A suffix added to the extension. Only valid with B<--type>=B<man>
-
-=item B<--remove>
-
-Instead of writing the files, remove them.
-
-=item B<--dry-run>|B<-n>
-
-Do not perform any file writing, directory creation or file removal.
-
-=item B<--debug>|B<-D>
-
-Print extra debugging output.
-
-=back
-
-=head1 COPYRIGHT
-
-Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved.
-
-Licensed under the Apache License 2.0 (the "License"). You may not use
-this file except in compliance with the License. You can obtain a copy
-in the file LICENSE in the source distribution or at
-https://www.openssl.org/source/license.html
-
-=cut