]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Create symlinks when installing man pages
authorMatt Caswell <matt@openssl.org>
Mon, 17 May 2021 16:40:56 +0000 (17:40 +0100)
committerMatt Caswell <matt@openssl.org>
Thu, 20 May 2021 09:28:06 +0000 (10:28 +0100)
In 1.1.1 when installing the man pages we created symlinks to the base
page for all functions described on the page. We need to continue doing
this.

Fixes #14846

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

Configurations/unix-Makefile.tmpl
util/write-man-symlinks [new file with mode: 0755]

index 92e181befb9efd0af89c1df8c7e8bd938fe16b4c..59e404b5c7af288178517a316428a79f030dd7cb 100644 (file)
@@ -940,6 +940,7 @@ install_man_docs: build_man_docs
                $(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX)"; \
                cp $$x $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX); \
                chmod 644 $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man1 $(BLDDIR)/doc/man1 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man1; \
        done
        @set -e; for x in dummy $(MANDOCS3); do \
                if [ "$$x" = "dummy" ]; then continue; fi; \
@@ -947,6 +948,7 @@ install_man_docs: build_man_docs
                $(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX)"; \
                cp $$x $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX); \
                chmod 644 $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man3 $(BLDDIR)/doc/man3 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man3; \
        done
        @set -e; for x in dummy $(MANDOCS5); do \
                if [ "$$x" = "dummy" ]; then continue; fi; \
@@ -954,6 +956,7 @@ install_man_docs: build_man_docs
                $(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX)"; \
                cp $$x $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX); \
                chmod 644 $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man5 $(BLDDIR)/doc/man5 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man5; \
        done
        @set -e; for x in dummy $(MANDOCS7); do \
                if [ "$$x" = "dummy" ]; then continue; fi; \
@@ -961,33 +964,38 @@ install_man_docs: build_man_docs
                $(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX)"; \
                cp $$x $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX); \
                chmod 644 $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man7 $(BLDDIR)/doc/man7 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man7; \
        done
 
-uninstall_man_docs:
+uninstall_man_docs: build_man_docs
        @$(ECHO) "*** Uninstalling manpages"
        @set -e; for x in dummy $(MANDOCS1); do \
                if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                $(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX)"; \
                $(RM) $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man1 $(BLDDIR)/doc/man1 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man1; \
        done
        @set -e; for x in dummy $(MANDOCS3); do \
                if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                $(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX)"; \
                $(RM) $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man3 $(BLDDIR)/doc/man3 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man3; \
        done
        @set -e; for x in dummy $(MANDOCS5); do \
                if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                $(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX)"; \
                $(RM) $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man5 $(BLDDIR)/doc/man5 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man5; \
        done
        @set -e; for x in dummy $(MANDOCS7); do \
                if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                $(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX)"; \
                $(RM) $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX); \
+               $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man7 $(BLDDIR)/doc/man7 $${fn}$(MANSUFFIX) $(DESTDIR)$(MANDIR)/man7; \
        done
 
 install_html_docs: build_html_docs
diff --git a/util/write-man-symlinks b/util/write-man-symlinks
new file mode 100755 (executable)
index 0000000..97b72a3
--- /dev/null
@@ -0,0 +1,48 @@
+#! /usr/bin/env perl
+# Copyright 2021 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
+
+
+require 5.10.0;
+use warnings;
+use strict;
+
+use FindBin;
+use lib "$FindBin::Bin/perl";
+
+use OpenSSL::Util::Pod;
+
+if ($#ARGV + 1 != 5 || $ARGV[0] !~ /^(un)?install$/) {
+    print "Usage: write-man-symlinks [install|uninstall] src-dir build-dir man-page-name target-dir\n";
+    exit;
+}
+
+my $action = $ARGV[0];
+my $srcdir = $ARGV[1];
+my $builddir = $ARGV[2];
+my $manname = $ARGV[3];
+my $targetdir = $ARGV[4];
+
+$manname =~ m|(.+)\.(.+)|;
+my $mainf = $1;
+my $section = $2;
+die "Bad src file" if !defined $mainf;
+my $podfile = "$srcdir/$mainf.pod";
+#Some pod files are generated and are in the build dir
+unless (-e $podfile) {
+    $podfile = "$builddir/$mainf.pod";
+}
+my %podinfo = extract_pod_info($podfile);
+
+for my $name (@{$podinfo{names}}) {
+    next if $name eq $mainf;
+    if ($action eq "install") {
+        symlink "$targetdir/$manname", "$targetdir/$name.$section";
+    } else {
+        unlink "$targetdir/$name.$section";
+    }
+}