diff options
Diffstat (limited to 'mk/plist/plist-man.awk')
-rw-r--r-- | mk/plist/plist-man.awk | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/mk/plist/plist-man.awk b/mk/plist/plist-man.awk new file mode 100644 index 00000000000..1676b416d2c --- /dev/null +++ b/mk/plist/plist-man.awk @@ -0,0 +1,149 @@ +# $NetBSD: plist-man.awk,v 1.1 2006/01/12 23:43:57 jlam Exp $ +# +# Copyright (c) 2006 The NetBSD Foundation, Inc. +# All rights reserved. +# +# This code is derived from software contributed to The NetBSD Foundation +# by Johnny C. Lam. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the NetBSD +# Foundation, Inc. and its contributors. +# 4. Neither the name of The NetBSD Foundation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### This awk script handles man page entries in PLISTs. This script +### requires the following scripts to be included: +### +### plist-functions.awk (print_entry) +### +### Certain environment variables must be set prior to running this script: +### +### IMAKE_INSTALL specifies how imake-using packages install man pages. +### Valid values are: +### +### no value the package doesn't use imake +### maninstall the package installed man pages +### catinstall the package installed catman pages +### +### Both "maninstall" and "catinstall" may be specified. +### +### MANINSTALL specifies if man pages are installed by the package. +### Valid values are: +### +### maninstall the package installed man pages +### catinstall the package installed catman pages +### +### Both "maninstall" and "catinstall" may be specified. +### +### MANZ is a yes/no variable that determines whether the man pages +### should be recorded as compressed or not. +### +### PKGMANDIR is the ${PREFIX}-relative path to the installed man pages. +### +BEGIN { + IMAKE_MANINSTALL = ENVIRON["IMAKE_MANINSTALL"] + MANINSTALL = ENVIRON["MANINSTALL"] + MANZ = ENVIRON["MANZ"] + PKGMANDIR = ENVIRON["PKGMANDIR"] +} + +### +### Canonicalize man page entries by stripping any ".gz" suffixes. +### +/^[^@]/ && \ +/^([^\/]*\/)+(man[1-9ln]\/[^\/]*\.[1-9ln]|cat[1-9ln]\/[^\/]*\.[0-9])\.gz$/ { + sub("\.gz$", "") +} + +### +### Rewrite "imake-installed" catman pages as man pages if imake only +### supports man pages. +### +(IMAKE_MANINSTALL == "maninstall") && /^[^@]/ && \ +/^([^\/]*\/)+cat[1-9ln]\/[^\/]*\.[0-9ln]$/ { + n = split($0, components, "/") + sub("cat", "man", components[n-1]) + section = substr(components[n-1], 4, 1) + sub("[0-9ln]$", section, components[n]) + $0 = join(components, 1, n, "/") + delete components +} +(IMAKE_MANINSTALL == "maninstall") && \ +/^@dirrm ([^\/]*\/)+cat[1-9ln]/ { + next +} + +### +### Rewrite "imake-installed" man pages as catman pages if imake only +### supports catman pages. +### +(IMAKE_MANINSTALL == "catinstall") && /^[^@]/ && \ +/^([^\/]*\/)+man[1-9ln]\/[^\/]*\.[0-9ln]$/ { + n = split($0, components, "/") + sub("man", "cat", components[n-1]) + section = "0" + sub("[0-9ln]$", section, components[n]) + $0 = join(components, 1, n, "/") + delete components +} +(IMAKE_MANINSTALL == "catinstall") && \ +/^@dirrm ([^\/]*\/)+man[1-9ln]/ { + next +} + +### +### If MANINSTALL doesn't contain "maninstall", then strip out man page +### entries from the PLIST, and similarly for "catinstall" and catman page +### entries. +### +(MANINSTALL !~ /catinstall/) && /^[^@]/ && \ +/^([^\/]*\/)+cat[1-9ln]\/[^\/]*\.[0-9ln]$/ { + next +} +(MANINSTALL !~ /maninstall/) && /^[^@]/ && \ +/^([^\/]*\/)+man[1-9ln]\/[^\/]*\.[0-9ln]$/ { + next +} + +### +### Append ".gz" to the end of man page entries if compressed pages are +### requested. +### +(MANZ ~ /[yY][eE][sS]/) && /^[^@]/ && \ +/^([^\/]*\/)+(man[1-9ln]\/[^\/]*\.[1-9ln]|cat[1-9ln]\/[^\/]*\.[0-9])$/ { + $0 = $0 ".gz" +} + +### +### Convert man/ to ${PKGMANDIR}/ for all man and catman page entries. +### +/^[^@]/ && \ +/^man\/([^\/]*\/)?(man[1-9ln]\/[^\/]*\.[1-9ln]|cat[1-9ln]\/[^\/]*\.[0-9])/ { + sub("^man/", PKGMANDIR "/") +} +/^@dirrm man\/([^\/]*\/)?(man[1-9ln]|cat[1-9ln])/ { + sub("^@dirrm man/", "@dirrm " PKGMANDIR "/") +} |