8ea403ece5
compressed with "gzip". This stops it from creating a lot of broken symbolic links if "MANZ" is defined. Bump package revision because of this change.
205 lines
6 KiB
Text
205 lines
6 KiB
Text
#!@SH@
|
|
# $NetBSD: perllink.in,v 1.4 2012/03/04 10:26:57 tron Exp $
|
|
#
|
|
# Copyright (c) 2005 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 script parses the packlists listed on the command line and either
|
|
# adds or deletes the symlinks in
|
|
#
|
|
# <prefix>/bin
|
|
# <prefix>/@PKGMANDIR@/man1
|
|
#
|
|
# that match the files in the packlists.
|
|
#
|
|
|
|
perlprog="@PERL5@"
|
|
|
|
usage()
|
|
{
|
|
echo 1>&2 "usage: $0 [-fnv] [-p prefix] add|delete [packlist ...]"
|
|
exit 1
|
|
}
|
|
|
|
opt_action=
|
|
opt_force=
|
|
opt_noaction=
|
|
opt_prefix=
|
|
opt_packlists=
|
|
opt_verbose=
|
|
|
|
while test $# -gt 0; do
|
|
opt="$1"
|
|
case "$opt" in
|
|
-f|--force) opt_force=yes; shift ;;
|
|
-n|--noaction) opt_noaction=yes; shift ;;
|
|
-p) opt_prefix="$2"; shift; shift ;;
|
|
--prefix=*) opt_prefix="${1#--prefix=}"; shift ;;
|
|
-v|--verbose) opt_verbose=yes; shift ;;
|
|
--) break; shift ;;
|
|
-*) usage ;;
|
|
[!-]*) break ;;
|
|
esac
|
|
done
|
|
|
|
# We expect the action argument, as well as any packlists, to be left
|
|
# in the argument list.
|
|
#
|
|
test $# -gt 0 || usage
|
|
opt_action="$1"; shift
|
|
|
|
# Get the values of various Config.pm values from perl.
|
|
eval `$perlprog -V:prefix -V:scriptdir -V:man1dir -V:vendorprefix -V:vendorscript -V:vendorman1dir -V:siteprefix -V:sitescript -V:siteman1dir -V:archlib`
|
|
|
|
# The remaining arguments, if any, are packlists.
|
|
if test $# -gt 0; then
|
|
opt_packlists="$@"
|
|
elif test -f "$archlib/.packlist"; then
|
|
opt_packlists="$archlib/.packlist"
|
|
fi
|
|
|
|
test -n "$opt_prefix" || opt_prefix="$prefix"
|
|
|
|
pkgmandir="@PKGMANDIR@"
|
|
|
|
# Re-point variables so that if they are under $prefix, then they are
|
|
# recomputed to point under $opt_prefix.
|
|
#
|
|
case "$scriptdir" in
|
|
$prefix/*) scriptdir="$opt_prefix/${scriptdir#$prefix/}" ;;
|
|
"") scriptdir="$opt_prefix/bin" ;;
|
|
esac
|
|
case "$man1dir" in
|
|
$prefix/*) man1dir="$opt_prefix/${man1dir#$prefix/}" ;;
|
|
"") man1dir="$opt_prefix/$pkgmandir/man1" ;;
|
|
esac
|
|
case "$siteprefix" in
|
|
$prefix/*) siteprefix="$opt_prefix/${siteprefix#$prefix/}" ;;
|
|
"") siteprefix="$opt_prefix" ;;
|
|
esac
|
|
case "$sitescript" in
|
|
$prefix/*) sitescript="$opt_prefix/${sitescript#$prefix/}" ;;
|
|
"") sitescript="$scriptdir" ;;
|
|
esac
|
|
case "$siteman1dir" in
|
|
$prefix/*) siteman1dir="$opt_prefix/${siteman1dir#$prefix/}" ;;
|
|
"") siteman1dir="$man1dir" ;;
|
|
esac
|
|
case "$vendorprefix" in
|
|
$prefix/*) vendorprefix="$opt_prefix/${vendorprefix#$prefix/}" ;;
|
|
"") vendorprefix="$opt_prefix" ;;
|
|
esac
|
|
case "$vendorscript" in
|
|
$prefix/*) vendorscript="$opt_prefix/${vendorscript#$prefix/}" ;;
|
|
"") vendorscript="$scriptdir" ;;
|
|
esac
|
|
case "$vendorman1dir" in
|
|
$prefix/*) vendorman1dir="$opt_prefix/${vendorman1dir#$prefix/}" ;;
|
|
"") vendorman1dir="$man1dir" ;;
|
|
esac
|
|
|
|
destbindir="$opt_prefix/bin"
|
|
destman1dir="$opt_prefix/$pkgmandir/man1"
|
|
|
|
echo __dummy__ | $perlprog -pe '0' $opt_packlists |
|
|
{ while read file junk; do
|
|
if [ ! -f "$file" ] && [ -f "$file.gz" ]; then
|
|
file="$file.gz"
|
|
fi
|
|
|
|
case "$file" in
|
|
$scriptdir/*|$sitescript/*|$vendorscript/*) destdir="$destbindir" ;;
|
|
$man1dir/*|$siteman1dir/*|$vendorman1dir/*) destdir="$destman1dir" ;;
|
|
esac
|
|
|
|
case "$file" in
|
|
$scriptdir/*) dest="$destdir/${file#$scriptdir/}" ;;
|
|
$sitescript/*) dest="$destdir/${file#$sitescript/}" ;;
|
|
$vendorscript/*) dest="$destdir/${file#$vendorscript/}" ;;
|
|
$man1dir/*) dest="$destdir/${file#$man1dir/}" ;;
|
|
$siteman1dir/*) dest="$destdir/${file#$siteman1dir/}" ;;
|
|
$vendorman1dir/*) dest="$destdir/${file#$vendorman1dir/}" ;;
|
|
*) continue ;;
|
|
esac
|
|
|
|
test "$file" != "$dest" || continue
|
|
|
|
# Set $src to be a relative symlink from $file into $destdir.
|
|
file="${file#/}"
|
|
destdir="${destdir#/}"
|
|
while test "${file%%/*}" = "${destdir%%/*}"; do
|
|
case "$file" in
|
|
*/*) file="${file#*/}" ;;
|
|
*) file= ;;
|
|
esac
|
|
case "$destdir" in
|
|
*/*) destdir="${destdir#*/}" ;;
|
|
*) destdir= ;;
|
|
esac
|
|
done
|
|
src=""
|
|
while test -n "$destdir"; do
|
|
src="../$src"
|
|
case "$destdir" in
|
|
*/*) destdir="${destdir#*/}" ;;
|
|
*) destdir= ;;
|
|
esac
|
|
done
|
|
src="$src$file"
|
|
|
|
case "$opt_action" in
|
|
add|delete)
|
|
if test -n "$opt_force"; then
|
|
test -z "$opt_verbose" || \
|
|
echo "print STDERR \"rm $dest\\n\";"
|
|
test -n "$opt_noaction" || \
|
|
echo "unlink(\"$dest\");"
|
|
fi
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
case "$opt_action" in
|
|
add)
|
|
test -z "$opt_verbose" || \
|
|
echo "print STDERR \"ln -s $src $dest\\n\";"
|
|
test -n "$opt_noaction" || \
|
|
echo "symlink(\"$src\", \"$dest\");"
|
|
;;
|
|
esac
|
|
done;
|
|
echo "exit(0);"; } | $perlprog -w -
|