man-page-installation-20051221

On installation, substitute the configured paths into the man pages,
replacing the Transarc paths.  Also fix a problem with the way that
pinstall was being used to install man pages.  (Silly me, I was assuming
it had the same behavior as install.)

This is just a quick first pass.  Longer term, it's probably better to
replace all paths in the man pages with unambiguous tokens and then
replace those tokens instead of assuming that the man pages use Transarc
paths and replacing those paths specifically.  The current method has a
few minor problems, such as not being able to distinguish between the
various paths that make up /usr/afs/bin.  Still, the results of this method
are good enough to start with.
This commit is contained in:
Russ Allbery 2005-12-22 07:29:52 +00:00
parent f874f6691b
commit 5fde299434
5 changed files with 63 additions and 8 deletions

View File

@ -812,7 +812,9 @@ distclean: clean
src/wsadmin.src/Makefile \ src/wsadmin.src/Makefile \
src/xstat/Makefile \ src/xstat/Makefile \
src/helper-splint.sh src/helper-splint.sh
if test -d doc/man-pages ; then rm -f doc/man-pages/Makefile ; fi if test -d doc/man-pages ; then \
rm -f doc/man-pages/Makefile doc/man-pages/install-man ; \
fi
pristine: distclean pristine: distclean
/bin/rm -f src/config/afsconfig.h.in configure configure-libafs aclocal.m4 /bin/rm -f src/config/afsconfig.h.in configure configure-libafs aclocal.m4

View File

@ -6,7 +6,7 @@ AC_PROG_CC
OPENAFS_CONFIGURE_COMMON OPENAFS_CONFIGURE_COMMON
if test -d 'doc/man-pages' ; then if test -d 'doc/man-pages' ; then
MAN_MAKEFILE=doc/man-pages/Makefile MAN_MAKEFILE="doc/man-pages/Makefile doc/man-pages/install-man"
else else
MAN_MAKEFILE= MAN_MAKEFILE=
fi fi

View File

@ -1,4 +1,5 @@
Makefile Makefile
install-man
man1 man1
man5 man5
man8 man8

View File

@ -9,26 +9,28 @@ maintclean:
rm -rf man1 man5 man8 rm -rf man1 man5 man8
dest: dest:
chmod +x install-man
mkdir -p $(DEST)/man/man1 $(DEST)/man/man5 $(DEST)/man/man8 mkdir -p $(DEST)/man/man1 $(DEST)/man/man5 $(DEST)/man/man8
set -e; cd man1 && for M in *.1 ; do \ set -e; cd man1 && for M in *.1 ; do \
$(INSTALL) -c -m 0644 $$M $(DEST)/man/man1/$$M ; \ ../install-man $$M $(DEST)/man/man1/$$M ; \
done done
set -e; cd man5 && for M in *.5 ; do \ set -e; cd man5 && for M in *.5 ; do \
$(INSTALL) -c -m 0644 $$M $(DEST)/man/man5/$$M ; \ ../install-man $$M $(DEST)/man/man5/$$M ; \
done done
set -e; cd man8 && for M in *.8 ; do \ set -e; cd man8 && for M in *.8 ; do \
$(INSTALL) -c -m 0644 $$M $(DEST)/man/man8/$$M ; \ ../install-man $$M $(DEST)/man/man8/$$M ; \
done done
install: $(MAN1) $(MAN8) install: $(MAN1) $(MAN8)
chmod +x install-man
mkdir -p $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 \ mkdir -p $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 \
$(DESTDIR)$(mandir)/man8 $(DESTDIR)$(mandir)/man8
set -e; cd man1 && for M in *.1 ; do \ set -e; cd man1 && for M in *.1 ; do \
$(INSTALL) -c -m 0644 $$M $(DESTDIR)$(mandir)/man1/$$M ; \ ../install-man $$M $(DESTDIR)$(mandir)/man1/$$M ; \
done done
set -e; cd man5 && for M in *.5 ; do \ set -e; cd man5 && for M in *.5 ; do \
$(INSTALL) -c -m 0644 $$M $(DESTDIR)$(mandir)/man5/$$M ; \ ../install-man $$M $(DESTDIR)$(mandir)/man5/$$M ; \
done done
set -e; cd man8 && for M in *.8 ; do \ set -e; cd man8 && for M in *.8 ; do \
$(INSTALL) -c -m 0644 $$M $(DESTDIR)$(mandir)/man8/$$M ; \ ../install-man $$M $(DESTDIR)$(mandir)/man8/$$M ; \
done done

View File

@ -0,0 +1,50 @@
#!/bin/sh
#
# Install a man page, but fixing up paths as we go. All of the man pages
# are written to use the Transarc paths, and this script fixes those paths to
# be correct for the chosen configure options as the man pages are installed.
# Takes the source man page file and the destination path as arguments.
set -e
manpage="$1"
dest="$2"
install=@TOP_OBJDIR@/src/pinstall/pinstall
# We have to include all of the variables here since several of them refer to
# each other and this is the only way we get them all expanded.
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
includedir=@includedir@
libdir=@libdir@
libexecdir=@libexecdir@
localstatedir=@localstatedir@
mandir=@mandir@
sbindir=@sbindir@
sysconfdir=@sysconfdir@
afsbackupdir=@afsbackupdir@
afsbosconfigdir=@afsbosconfigdir@
afsconfdir=@afsconfdir@
afsdbdir=@afsdbdir@
afslocaldir=@afslocaldir@
afslogsdir=@afslogsdir@
afssrvbindir=@afssrvbindir@
afskerneldir=@afskerneldir@
afssrvlibexecdir=@afssrvlibexecdir@
afssrvsbindir=@afssrvsbindir@
viceetcdir=@viceetcdir@
# Substitute the paths into a local temporary file and then install it with
# $install.
sed -e "s%/usr/afs/local/BosConfig%${afsbosconfigdir}/BosConfig%g" \
-e "s%/usr/afs/etc%${afsconfdir}%g" \
-e "s%/usr/afs/backup%${afsbackupdir}%g" \
-e "s%/usr/afs/bin%${afssrvlibexecdir}%g" \
-e "s%/usr/afs/db%${afsdbdir}%g" \
-e "s%/usr/afs/local%${afslocaldir}%g" \
-e "s%/usr/afs/logs%${afslogsdir}%g" \
-e "s%/usr/vice/etc%${viceetcdir}%g" "$manpage" > "$manpage".tmp
$install -c -f -m 0644 "$manpage".tmp "$dest"
rm "$manpage".tmp