about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2000-11-30 18:36:21 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2000-11-30 18:36:21 +0000
commita59b51006b307a1a3cbd79e6b85e6b80400cc8ab (patch)
treef57ffcc6593863c652ceb61a2930d55cb1b8ddc5
parent4b1191e209edecb5949b30038f310350e44273d3 (diff)
downloadzsh-a59b51006b307a1a3cbd79e6b85e6b80400cc8ab.tar.gz
zsh-a59b51006b307a1a3cbd79e6b85e6b80400cc8ab.tar.xz
zsh-a59b51006b307a1a3cbd79e6b85e6b80400cc8ab.zip
Function installation information now in config.modules
-rw-r--r--Completion/Makefile.in86
-rw-r--r--Config/funcinst.mk47
-rwxr-xr-xConfig/installfns.sh48
-rwxr-xr-xConfig/uninstallfns.sh59
-rw-r--r--Functions/Makefile.in86
-rw-r--r--Makefile.in23
-rw-r--r--Src/Modules/zftp.mdd1
-rw-r--r--Src/Zle/complete.mdd1
-rw-r--r--Src/Zle/zle.mdd1
-rw-r--r--Src/zsh.mdd1
-rw-r--r--configure.in43
11 files changed, 89 insertions, 307 deletions
diff --git a/Completion/Makefile.in b/Completion/Makefile.in
deleted file mode 100644
index 8b7776a7f..000000000
--- a/Completion/Makefile.in
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# Makefile for Completion subdirectory
-#
-# Copyright (c) 1999 Peter Stephensons
-# 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.
-#
-
-subdir = Completion
-dir_top = ..
-SUBDIRS =
-
-@VERSION_MK@
-
-# source/build directories
-VPATH           = @srcdir@
-sdir            = @srcdir@
-sdir_top        = @top_srcdir@
-INSTALL         = @INSTALL@
-
-@DEFS_MK@
-
-# ========== DEPENDENCIES FOR BUILDING ==========
-
-all:
-
-# ========== DEPENDENCIES FOR INSTALLING ==========
-
-install: install.fns
-
-uninstall: uninstall.fns
-
-# 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)/mkinstalldirs $(fndir) || exit 1; \
-	  for file in $(FUNCTIONS_INSTALL); do \
-	    if test -f $$file; then \
-	      $(INSTALL_DATA) $$file $(fndir) || exit 1; \
-	    fi; \
-	  done; \
-	fi; \
-	exit 0
-
-uninstall.fns:
-	if test x$(fndir) != x && test x$(fndir) != xno; then \
-	  for file in $(FUNCTIONS_INSTALL); do \
-	    if test -f $$file; then \
-	      rm -f "$(fndir)/`echo $$file | sed -e 's%^.*/%%'`"; \
-	    fi; \
-	  done; \
-	fi; \
-	exit 0
-
-# ========== DEPENDENCIES FOR CLEANUP ==========
-
-@CLEAN_MK@
-
-mostlyclean-here:
-
-distclean-here:
-
-realclean-here:
-
-# ========== DEPENDENCIES FOR MAINTENANCE ==========
-
-@CONFIG_MK@
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
diff --git a/Functions/Makefile.in b/Functions/Makefile.in
deleted file mode 100644
index d6344dd62..000000000
--- a/Functions/Makefile.in
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# Makefile for Functions subdirectory
-#
-# Copyright (c) 1999 Peter Stephensons
-# 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.
-#
-
-subdir = Functions
-dir_top = ..
-SUBDIRS =
-
-@VERSION_MK@
-
-# source/build directories
-VPATH           = @srcdir@
-sdir            = @srcdir@
-sdir_top        = @top_srcdir@
-INSTALL         = @INSTALL@
-
-@DEFS_MK@
-
-# ========== DEPENDENCIES FOR BUILDING ==========
-
-all:
-
-# ========== DEPENDENCIES FOR INSTALLING ==========
-
-install: install.fns
-
-uninstall: uninstall.fns
-
-# 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)/mkinstalldirs $(fndir) || exit 1; \
-	  for file in $(FUNCTIONS_INSTALL); do \
-	    if test -f $$file; then \
-	      $(INSTALL_DATA) $$file $(fndir) || exit 1; \
-	    fi; \
-	  done; \
-	fi; \
-	exit 0
-
-uninstall.fns:
-	if test x$(fndir) != x && test x$(fndir) != xno; then \
-	  for file in $(FUNCTIONS_INSTALL); do \
-	    if test -f $$file; then \
-	      rm -f "$(fndir)/`echo $$file | sed -e 's%^.*/%%'`"; \
-	    fi; \
-	  done; \
-	fi; \
-	exit 0
-
-# ========== DEPENDENCIES FOR CLEANUP ==========
-
-@CLEAN_MK@
-
-mostlyclean-here:
-
-distclean-here:
-
-realclean-here:
-
-# ========== DEPENDENCIES FOR MAINTENANCE ==========
-
-@CONFIG_MK@
diff --git a/Makefile.in b/Makefile.in
index 5882ce42c..cb1d14be2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -77,14 +77,25 @@ install.man uninstall.man:
 
 # install/uninstall just the shell functions
 install.fns:
-	test x$(sitefndir) != xno && $(sdir_top)/mkinstalldirs $(DESTDIR)$(sitefndir)
-	@cd Completion && $(MAKE) $(MAKEDEFS) $@
-	@cd Functions && $(MAKE) $(MAKEDEFS) $@
+	if test x$(fndir) != x && test x$(fndir) != xno; then \
+	  test x$(sitefndir) != xno && \
+	    $(sdir_top)/mkinstalldirs $(DESTDIR)$(sitefndir); \
+	  sdir_top="$(sdir_top)" fndir="$(fndir)" dir_top="$(dir_top)" \
+	  FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \
+	  INSTALL_DATA="$(INSTALL_DATA)" \
+	  DESTDIR="$(DESTDIR)" VERSION="$(VERSION)" \
+	  $(SHELL) $(sdir_top)/Config/installfns.sh || exit 1; \
+	fi; \
+	exit 0
 
 uninstall.fns:
-	# never attempt to remove $(sitefndir)
-	@cd Completion && $(MAKE) $(MAKEDEFS) $@
-	@cd Functions && $(MAKE) $(MAKEDEFS) $@
+	if test x$(fndir) != x && test x$(fndir) != xno; then \
+	  fndir="$(fndir)" dir_top="$(dir_top)" \
+	  FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \
+	  DESTDIR="$(DESTDIR)" VERSION="$(VERSION)" \
+	  $(SHELL) $(sdir_top)/Config/uninstallfns.sh || exit 1; \
+	fi; \
+	exit 0
 
 # install/uninstall just the info pages
 install.info uninstall.info:
diff --git a/Src/Modules/zftp.mdd b/Src/Modules/zftp.mdd
index e295f254a..d9619b549 100644
--- a/Src/Modules/zftp.mdd
+++ b/Src/Modules/zftp.mdd
@@ -1,6 +1,7 @@
 name=zsh/zftp
 link=dynamic
 load=no
+functions='Functions/Zftp/*'
 
 autobins="zftp"
 
diff --git a/Src/Zle/complete.mdd b/Src/Zle/complete.mdd
index a8ed9a484..95c6e99a0 100644
--- a/Src/Zle/complete.mdd
+++ b/Src/Zle/complete.mdd
@@ -1,6 +1,7 @@
 name=zsh/complete
 link=either
 load=yes
+functions='Completion/Core/* Completion/Base/* Completion/Builtins/* Completion/User/* Completion/Commands/* Completion/Debian/* Completion/Linux/* Completion/Bsd/* Completion/AIX/* Completion/X/*'
 
 moddeps="zsh/zle"
 
diff --git a/Src/Zle/zle.mdd b/Src/Zle/zle.mdd
index c5675cb03..9981cec90 100644
--- a/Src/Zle/zle.mdd
+++ b/Src/Zle/zle.mdd
@@ -1,6 +1,7 @@
 name=zsh/zle
 link=either
 load=yes
+functions='Functions/Zle/*'
 
 autobins="bindkey vared zle"
 
diff --git a/Src/zsh.mdd b/Src/zsh.mdd
index 56cd081e8..72db7e059 100644
--- a/Src/zsh.mdd
+++ b/Src/zsh.mdd
@@ -2,6 +2,7 @@ name=zsh/main
 link=static
 load=yes
 # load=static should replace use of alwayslink
+functions='Functions/Misc/* Functions/Prompts/*'
 
 nozshdep=1
 alwayslink=1
diff --git a/configure.in b/configure.in
index 651d13ca4..9202c6216 100644
--- a/configure.in
+++ b/configure.in
@@ -236,16 +236,8 @@ undefine([function_subdirs])
 AC_ARG_ENABLE(function-subdirs,
 [  --enable-function-subdirs  install functions in subdirectories])
 
-if test "x${FUNCTIONS_INSTALL+set}" != xset; then
-  FUNCTIONS_INSTALL="Core/* Base/* Builtins/* User/* Commands/* Debian/* Linux/* Bsd/* AIX/* X/* Zle/* Prompts/* Misc/*"
-  if test $dynamic != no; then
-    FUNCTIONS_INSTALL="${FUNCTIONS_INSTALL} Zftp/*"
-  fi
-fi
-
 if test "x${enable_function_subdirs}" != x -a \
-  "x${enable_function_subdirs}" != xno -a \
-  "x$FUNCTIONS_INSTALL" != x; then
+  "x${enable_function_subdirs}" != xno; then
   FUNCTIONS_SUBDIRS=yes
 else
   FUNCTIONS_SUBDIRS=no
@@ -253,7 +245,6 @@ fi
 
 AC_SUBST(fndir)dnl
 AC_SUBST(sitefndir)dnl
-AC_SUBST(FUNCTIONS_INSTALL)dnl
 AC_SUBST(FUNCTIONS_SUBDIRS)dnl
 
 dnl Do you want maildir support?
@@ -1733,15 +1724,19 @@ echo "# Values of \`auto' are \`yes' or \`no'. configure sets the value to"
 echo "# \`yes'.  If you set it by hand to \`no', the line will be retained"
 echo "# when the file is regenerated in future."
 echo "#"
+echo "# Note that the \`functions' entry extends to the end of the line."
+echo "# It should not be quoted; it is used verbatim to find files to install."
+echo "#"
 echo "# You will need to run \`config.status --recheck' if you add a new"
 echo "# module."
 echo "#"
 echo "# You should not change the values for the pseudo-module zsh/main,"
-echo "# which is the main shell."
+echo "# which is the main shell (apart from the functions entry)."
 for modfile in `cd ${srcdir}; echo */*.mdd */*/*.mdd`; do
   name=
   link=
   load=
+  functions=
   . ${srcdir}/$modfile
   if test x$name != x -a x"$link" != x; then
     case "$userlist" in
@@ -1758,26 +1753,32 @@ for modfile in `cd ${srcdir}; echo */*.mdd */*/*.mdd`; do
 	 *) load=" load=no"
 	    ;;
        esac
+       if test "x$functions" != x; then
+         # N.B. no additional quotes
+         f=" functions=$functions"
+       else
+         f=
+       fi
        case "$link" in
-	 static) echo "name=$name modfile=$modfile link=static auto=yes${load}"
+	 static) echo "name=$name modfile=$modfile link=static auto=yes${load}$f"
 	         ;;
 	 dynamic) if test $dynamic != no; then
 		    echo "name=$name modfile=$modfile link=dynamic\
- auto=yes${load}"
+ auto=yes${load}$f"
 		  else
 		    echo "name=$name modfile=$modfile link=no\
- auto=yes load=no"
+ auto=yes load=no$f"
 		  fi
 		  ;;
 	 either) if test $dynamic != no; then
 		   echo "name=$name modfile=$modfile link=dynamic\
- auto=yes${load}"
+ auto=yes${load}$f"
 		 else
 		   echo "name=$name modfile=$modfile link=static\
- auto=yes${load}"
+ auto=yes${load}$f"
 		 fi
 		 ;;
-	      *) echo "name=$name modfile=$modfile link=no auto=yes load=no"
+	      *) echo "name=$name modfile=$modfile link=no auto=yes load=no$f"
 		 ;;
        esac
        ;;
@@ -1803,7 +1804,7 @@ real_no_create=$no_create
 no_create=yes
 
 AC_OUTPUT(Config/defs.mk Makefile Doc/Makefile Etc/Makefile Src/Makefile \
-Test/Makefile Completion/Makefile Functions/Makefile, \
+Test/Makefile, \
 [test -z "$CONFIG_HEADERS" || echo > stamp-h])
 
 dnl The standard config.status is missing some essential features.
@@ -1848,7 +1849,7 @@ binary install path       : ${zshbin2}
 man page install path     : ${zshman}
 info install path         : ${zshinfo}"
 if test "$zshfndir" != no; then
-echo "functions install path    : ${zshfndir}
-installed functions       : ${FUNCTIONS_INSTALL}
-"
+  echo "functions install path    : ${zshfndir}"
 fi
+echo "See config.modules for installed modules and functions.
+"