From a59b51006b307a1a3cbd79e6b85e6b80400cc8ab Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 30 Nov 2000 18:36:21 +0000 Subject: Function installation information now in config.modules --- Config/funcinst.mk | 47 ---------------------------------------- Config/installfns.sh | 48 +++++++++++----------------------------- Config/uninstallfns.sh | 59 ++++++++++++++++++++++++++++---------------------- 3 files changed, 46 insertions(+), 108 deletions(-) delete mode 100644 Config/funcinst.mk (limited to 'Config') diff --git a/Config/funcinst.mk b/Config/funcinst.mk deleted file mode 100644 index e473eb351..000000000 --- a/Config/funcinst.mk +++ /dev/null @@ -1,47 +0,0 @@ -# -# Makefile definitions for installing shell functions -# -# Copyright (c) 1999 Peter Stephenson -# All rights reserved. -# -# Permission is hereby granted, without written agreement and without -# license or royalty fees, to use, copy, modify, and distribute this -# software and to distribute modified versions of this software for any -# purpose, provided that the above copyright notice and the following -# two paragraphs appear in all copies of this software. -# -# In no event shall Peter Stephenson or the Zsh Development Group be liable -# to any party for direct, indirect, special, incidental, or consequential -# damages arising out of the use of this software and its documentation, -# even if Peter Stephenson and the Zsh Development Group have been advised of -# the possibility of such damage. -# -# Peter Stephenson and the Zsh Development Group specifically disclaim any -# warranties, including, but not limited to, the implied warranties of -# merchantability and fitness for a particular purpose. The software -# provided hereunder is on an "as is" basis, and Peter Stephenson and the -# Zsh Development Group have no obligation to provide maintenance, -# support, updates, enhancements, or modifications. -# - -# install functions, including those in subdirectories, creating -# install directory if necessary - -install.fns: - if test x$(fndir) != x && test x$(fndir) != xno; then \ - sdir_top="$(sdir_top)" fndir="$(fndir)" sdir="$(sdir)" \ - FUNCTIONS_INSTALL="$(FUNCTIONS_INSTALL)" \ - FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \ - INSTALL_DATA="$(INSTALL_DATA)" \ - $(SHELL) $(sdir_top)/Config/installfns.sh || exit 1; \ - fi; \ - exit 0 - -uninstall.fns: - if test x$(fndir) != x && test x$(fndir) != xno; then \ - fndir="$(fndir)" sdir="$(sdir)" \ - FUNCTIONS_INSTALL="$(FUNCTIONS_INSTALL)" \ - FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \ - $(SHELL) $(sdir_top)/Config/uninstallfns.sh || exit 1; \ - fi; \ - exit 0 diff --git a/Config/installfns.sh b/Config/installfns.sh index de7a52bce..eb552b76d 100755 --- a/Config/installfns.sh +++ b/Config/installfns.sh @@ -1,48 +1,26 @@ #!/bin/sh -if test -d $fndir.old; then - add_old=1 -fi +fndir=$DESTDIR$fndir $sdir_top/mkinstalldirs $fndir || exit 1; -# If the source directory is somewhere else, we need to force -# the shell to expand it in that directory, then strip it off. -install= -for file in $FUNCTIONS_INSTALL; do - if test -f "$sdir/$file"; then - install="$install $file" - else - install="$install `echo $sdir/$file | sed -e \"s%$sdir/%%g\"`" - fi -done +allfuncs="`grep ' functions=' ${dir_top}/config.modules | + sed -e '/^#/d' -e '/ link=no/d' -e 's/^.* functions=//'`" + +allfuncs="`cd $sdir_top; echo ${allfuncs}`" -for file in $install; do - if test -f $sdir/$file; then +# We now have a list of files, but we need to use `test -f' to check +# (1) the glob got expanded (2) we are not looking at directories. +for file in $allfuncs; do + if test -f $sdir_top/$file; then if test x$FUNCTIONS_SUBDIRS != x -a x$FUNCTIONS_SUBDIRS != xno; then - subfile="$file" - subdir="`echo $file | sed -e 's%/[^/]*$%%'`" - olddir="$fndir.old/$subdir" + subdir="`echo $file | sed -e 's%/[^/]*$%%' \ + -e s%^Functions/%% -e s%^Completion/%%`" instdir="$fndir/$subdir" else - subfile="`echo $file | sed -e 's%^.*/%%'`" - olddir="$fndir.old" instdir="$fndir" fi - if test -f $fndir/$subfile; then - if cmp $fndir/$subfile $sdir/$file >/dev/null; then :; else - $sdir_top/mkinstalldirs $olddir - mv $fndir/$subfile $olddir - : ${add_old:=1} - fi - fi - $sdir_top/mkinstalldirs $instdir || exit 1 - $INSTALL_DATA $sdir/$file $instdir || exit 1 + test -d $instdir || $sdir_top/mkinstalldirs $instdir || exit 1 + $INSTALL_DATA $sdir_top/$file $instdir || exit 1 fi done - -if test x$add_old != x1; then - rm -rf $fndir.old -fi - -exit 0 diff --git a/Config/uninstallfns.sh b/Config/uninstallfns.sh index ae1b4fef5..963daad66 100755 --- a/Config/uninstallfns.sh +++ b/Config/uninstallfns.sh @@ -1,31 +1,38 @@ #!/bin/sh -# If the source directory is somewhere else, we need to force -# the shell to expand it in that directory, then strip it off. -install= -for file in $FUNCTIONS_INSTALL; do - if test -f "$sdir/$file"; then - install="$install $file" - else - install="$install `echo $sdir/$file | sed -e \"s%$sdir/%%g\"`" - fi -done +fndir=$DESTDIR$fndir -for file in $install; do - if test -f $sdir/$file; then - if test x$FUNCTIONS_SUBDIRS != x -a x$FUNCTIONS_SUBDIRS != xno; then - rm -f $fndir/$file; - if test -f $fndir.old/$file; then - mv $fndir.old/$file $fndir/$file - fi - else - bfile="`echo $file | sed -e 's%^.*/%%'`" - rm -f "$fndir/$bfile"; \ - if test -f $fndir.old/$bfile; then - mv $fndir.old/$bfile $fndir/$bfile - fi - fi - fi -done +allfuncs="`grep ' functions=' ${dir_top}/config.modules | + sed -e '/^#/d' -e '/ link=no/d' -e 's/^.* functions=//'`" + +allfuncs="`cd ${sdir_top}; echo ${allfuncs}`" + +case $fndir in + *$VERSION*) + # Version specific function directory, safe to remove completely. + # However, we don't remove the top-level version directory since + # it could have other things than functions in it. We could + # do that instead in the top-level Makefile on a full uninstall, + # if we wanted. + rm -rf $fndir + ;; + *) # The following will only apply with a custom install directory + # with no version information. This is rather undesirable. + # But let's try and do the best we can. + # We now have a list of files, but we need to use `test -f' to check + # (1) the glob got expanded (2) we are not looking at directories. + for file in $allfuncs; do + if test -f $sdir_top/$file; then + if test x$FUNCTIONS_SUBDIRS != x -a x$FUNCTIONS_SUBDIRS != xno; then + file=`echo $file | sed -e 's%%^Completion/%' -e 's%%^Functions%'` + rm -f $fndir/$file; + else + bfile="`echo $file | sed -e 's%^.*/%%'`" + rm -f "$fndir/$bfile"; \ + fi + fi + done + ;; +esac exit 0 -- cgit 1.4.1