This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Updating top-level files for automake


As part of the autotools transition, libstdc++ will be going to automake
1.7, for its features and bugfixes.  However, trying to configure using
this version results in problems, because toplevel's 'missing' is too old.

I updated missing, install-sh, and mkinstalldirs to the versions which
aclocal/automake would install in a new project.  There do not appear
to be any backward incompatabilities, so directories which have not yet
converted to newer autoconfs, and/or are not using automake at all, should
have no difficulties.

Nevertheless, please look these diffs over.  I'll continue to use them in
my local tree as I wrestle with autoconf.  I tend to think of these files
like config.{guess,sub}, where they can simply be updated as needed.

It's been pointed out to me that there is a typo in the new version of
the 'missing' script:

  WARNING: \`$1' is needed, and you do not seem to have it handy on your
           system.  You might have modified some files without having the
           proper tools for further handling them.
           You can get \`$1Help2man' as part of \`Autoconf' from any GNU
-------------------------^^^^^^^^^^^

This should be $1 only, not $1Help2man.  We can fix that locally if
we want...?




Index: install-sh
===================================================================
RCS file: /home/pme/Repositories/GCC/gcc/install-sh,v
retrieving revision 1.4
diff -c -r1.4 install-sh
*** install-sh	25 Jan 2002 23:42:28 -0000	1.4
--- install-sh	10 Jul 2003 23:24:04 -0000
***************
*** 1,19 ****
  #!/bin/sh
  #
  # install - install a program, script, or datafile
- # This comes from X11R5 (mit/util/scripts/install.sh).
  #
! # Copyright 1991 by the Massachusetts Institute of Technology
  #
! # Permission to use, copy, modify, distribute, and sell this software and its
! # documentation for any purpose is hereby granted without fee, provided that
! # the above copyright notice appear in all copies and that both that
! # copyright notice and this permission notice appear in supporting
! # documentation, and that the name of M.I.T. not be used in advertising or
! # publicity pertaining to distribution of the software without specific,
! # written prior permission.  M.I.T. makes no representations about the
! # suitability of this software for any purpose.  It is provided "as is"
! # without express or implied warranty.
  #
  # Calling this script install-sh is preferred over install.sh, to prevent
  # `make' implicit rules from creating a file called install from it
--- 1,37 ----
  #!/bin/sh
  #
  # install - install a program, script, or datafile
  #
! # This originates from X11R5 (mit/util/scripts/install.sh), which was
! # later released in X11R6 (xc/config/util/install.sh) with the
! # following copyright and license.
  #
! # Copyright (C) 1994 X Consortium
! #
! # Permission is hereby granted, free of charge, to any person obtaining a copy
! # of this software and associated documentation files (the "Software"), to
! # deal in the Software without restriction, including without limitation the
! # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
! # sell copies of the Software, and to permit persons to whom the Software is
! # furnished to do so, subject to the following conditions:
! #
! # The above copyright notice and this permission notice shall be included in
! # all copies or substantial portions of the Software.
! #
! # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
! # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
! # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
! # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
! # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
! # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
! #
! # Except as contained in this notice, the name of the X Consortium shall not
! # be used in advertising or otherwise to promote the sale, use or other deal-
! # ings in this Software without prior written authorization from the X Consor-
! # tium.
! #
! #
! # FSF changes to this file are in the public domain.
  #
  # Calling this script install-sh is preferred over install.sh, to prevent
  # `make' implicit rules from creating a file called install from it
***************
*** 56,62 ****
  
  while [ x"$1" != x ]; do
      case $1 in
! 	-c) instcmd="$cpprog"
  	    shift
  	    continue;;
  
--- 74,80 ----
  
  while [ x"$1" != x ]; do
      case $1 in
! 	-c) instcmd=$cpprog
  	    shift
  	    continue;;
  
***************
*** 79,85 ****
  	    shift
  	    continue;;
  
! 	-s) stripcmd="$stripprog"
  	    shift
  	    continue;;
  
--- 97,103 ----
  	    shift
  	    continue;;
  
! 	-s) stripcmd=$stripprog
  	    shift
  	    continue;;
  
***************
*** 106,233 ****
  
  if [ x"$src" = x ]
  then
! 	echo "install:	no input file specified"
  	exit 1
  else
! 	true
  fi
  
  if [ x"$dir_arg" != x ]; then
  	dst=$src
  	src=""
! 	
! 	if [ -d $dst ]; then
  		instcmd=:
  		chmodcmd=""
  	else
! 		instcmd=mkdir
  	fi
  else
  
  # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
! # might cause directories to be created, which would be especially bad 
  # if $src (and thus $dsttmp) contains '*'.
  
! 	if [ -f $src -o -d $src ]
  	then
! 		true
  	else
! 		echo "install:  $src does not exist"
  		exit 1
  	fi
! 	
  	if [ x"$dst" = x ]
  	then
! 		echo "install:	no destination specified"
  		exit 1
  	else
! 		true
  	fi
  
  # If destination is a directory, append the input filename; if your system
  # does not like double slashes in filenames, you may need to add some logic
  
! 	if [ -d $dst ]
  	then
! 		dst="$dst"/`basename $src`
  	else
! 		true
  	fi
  fi
  
  ## this sed command emulates the dirname command
! dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
  
  # Make sure that the destination directory exists.
  #  this part is taken from Noah Friedman's mkinstalldirs script
  
  # Skip lots of stat calls in the usual case.
  if [ ! -d "$dstdir" ]; then
! defaultIFS='	
! '
! IFS="${IFS-${defaultIFS}}"
  
! oIFS="${IFS}"
  # Some sh's can't handle IFS=/ for some reason.
  IFS='%'
! set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
! IFS="${oIFS}"
  
  pathcomp=''
  
  while [ $# -ne 0 ] ; do
! 	pathcomp="${pathcomp}${1}"
  	shift
  
! 	if [ ! -d "${pathcomp}" ] ;
          then
! 		$mkdirprog "${pathcomp}"
  	else
! 		true
  	fi
  
! 	pathcomp="${pathcomp}/"
  done
  fi
  
  if [ x"$dir_arg" != x ]
  then
! 	$doit $instcmd $dst &&
  
! 	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
! 	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
! 	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
! 	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
  else
  
  # If we're going to rename the final executable, determine the name now.
  
! 	if [ x"$transformarg" = x ] 
  	then
! 		dstfile=`basename $dst`
  	else
! 		dstfile=`basename $dst $transformbasename | 
  			sed $transformarg`$transformbasename
  	fi
  
  # don't allow the sed command to completely eliminate the filename
  
! 	if [ x"$dstfile" = x ] 
  	then
! 		dstfile=`basename $dst`
  	else
! 		true
  	fi
  
! # Make a temp file name in the proper directory.
  
! 	dsttmp=$dstdir/_inst.$$_
  
! # Move or copy the file name to the temp name
  
! 	$doit $instcmd $src $dsttmp &&
  
! 	trap "rm -f ${dsttmp}" 0 &&
  
  # and set any options; do chmod last to preserve setuid bits
  
--- 124,255 ----
  
  if [ x"$src" = x ]
  then
! 	echo "$0: no input file specified" >&2
  	exit 1
  else
! 	:
  fi
  
  if [ x"$dir_arg" != x ]; then
  	dst=$src
  	src=""
! 
! 	if [ -d "$dst" ]; then
  		instcmd=:
  		chmodcmd=""
  	else
! 		instcmd=$mkdirprog
  	fi
  else
  
  # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
! # might cause directories to be created, which would be especially bad
  # if $src (and thus $dsttmp) contains '*'.
  
! 	if [ -f "$src" ] || [ -d "$src" ]
  	then
! 		:
  	else
! 		echo "$0: $src does not exist" >&2
  		exit 1
  	fi
! 
  	if [ x"$dst" = x ]
  	then
! 		echo "$0: no destination specified" >&2
  		exit 1
  	else
! 		:
  	fi
  
  # If destination is a directory, append the input filename; if your system
  # does not like double slashes in filenames, you may need to add some logic
  
! 	if [ -d "$dst" ]
  	then
! 		dst=$dst/`basename "$src"`
  	else
! 		:
  	fi
  fi
  
  ## this sed command emulates the dirname command
! dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
  
  # Make sure that the destination directory exists.
  #  this part is taken from Noah Friedman's mkinstalldirs script
  
  # Skip lots of stat calls in the usual case.
  if [ ! -d "$dstdir" ]; then
! defaultIFS='
! 	'
! IFS="${IFS-$defaultIFS}"
  
! oIFS=$IFS
  # Some sh's can't handle IFS=/ for some reason.
  IFS='%'
! set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
! IFS=$oIFS
  
  pathcomp=''
  
  while [ $# -ne 0 ] ; do
! 	pathcomp=$pathcomp$1
  	shift
  
! 	if [ ! -d "$pathcomp" ] ;
          then
! 		$mkdirprog "$pathcomp"
  	else
! 		:
  	fi
  
! 	pathcomp=$pathcomp/
  done
  fi
  
  if [ x"$dir_arg" != x ]
  then
! 	$doit $instcmd "$dst" &&
  
! 	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
! 	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
! 	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
! 	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
  else
  
  # If we're going to rename the final executable, determine the name now.
  
! 	if [ x"$transformarg" = x ]
  	then
! 		dstfile=`basename "$dst"`
  	else
! 		dstfile=`basename "$dst" $transformbasename |
  			sed $transformarg`$transformbasename
  	fi
  
  # don't allow the sed command to completely eliminate the filename
  
! 	if [ x"$dstfile" = x ]
  	then
! 		dstfile=`basename "$dst"`
  	else
! 		:
  	fi
  
! # Make a couple of temp file names in the proper directory.
  
! 	dsttmp=$dstdir/#inst.$$#
! 	rmtmp=$dstdir/#rm.$$#
  
! # Trap to clean up temp files at exit.
  
! 	trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
! 	trap '(exit $?); exit' 1 2 13 15
! 
! # Move or copy the file name to the temp name
  
! 	$doit $instcmd "$src" "$dsttmp" &&
  
  # and set any options; do chmod last to preserve setuid bits
  
***************
*** 235,251 ****
  # ignore errors from any of these, just make sure not to ignore
  # errors from the above "$doit $instcmd $src $dsttmp" command.
  
! 	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
! 	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
! 	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
! 	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
  
  # Now rename the file to the real destination.
  
! 	$doit $rmcmd -f $dstdir/$dstfile &&
! 	$doit $mvcmd $dsttmp $dstdir/$dstfile 
  
  fi &&
  
  
! exit 0
--- 257,294 ----
  # ignore errors from any of these, just make sure not to ignore
  # errors from the above "$doit $instcmd $src $dsttmp" command.
  
! 	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
! 	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
! 	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
! 	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
! 
! # Now remove or move aside any old file at destination location.  We try this
! # two ways since rm can't unlink itself on some systems and the destination
! # file might be busy for other reasons.  In this case, the final cleanup
! # might fail but the new file should still install successfully.
! 
! {
! 	if [ -f "$dstdir/$dstfile" ]
! 	then
! 		$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
! 		$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
! 		{
! 		  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
! 		  (exit 1); exit
! 		}
! 	else
! 		:
! 	fi
! } &&
  
  # Now rename the file to the real destination.
  
! 	$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
  
  fi &&
  
+ # The final little trick to "correctly" pass the exit status to the exit trap.
  
! {
! 	(exit 0); exit
! }
Index: missing
===================================================================
RCS file: /home/pme/Repositories/GCC/gcc/missing,v
retrieving revision 1.4
diff -c -r1.4 missing
*** missing	22 Jul 2000 08:08:22 -0000	1.4
--- missing	10 Jul 2003 23:24:04 -0000
***************
*** 1,7 ****
  #! /bin/sh
  # Common stub for a few missing GNU programs while installing.
! # Copyright (C) 1996, 1997 Free Software Foundation, Inc.
! # Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
  
  # This program is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 1,7 ----
  #! /bin/sh
  # Common stub for a few missing GNU programs while installing.
! # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
! # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
  
  # This program is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
***************
*** 18,28 ****
--- 18,54 ----
  # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  # 02111-1307, USA.
  
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+ 
  if test $# -eq 0; then
    echo 1>&2 "Try \`$0 --help' for more information"
    exit 1
  fi
  
+ run=:
+ 
+ # In the cases where this matters, `missing' is being run in the
+ # srcdir already.
+ if test -f configure.ac; then
+   configure_ac=configure.ac
+ else
+   configure_ac=configure.in
+ fi
+ 
+ case "$1" in
+ --run)
+   # Try to run requested program, and just exit if it succeeds.
+   run=
+   shift
+   "$@" && exit 0
+   ;;
+ esac
+ 
+ # If it does not exist, or fails to run (possibly an outdated version),
+ # try to emulate it.
  case "$1" in
  
    -h|--h|--he|--hel|--help)
***************
*** 35,40 ****
--- 61,67 ----
  Options:
    -h, --help      display this help and exit
    -v, --version   output version information and exit
+   --run           try to run the given command, and emulate it if it fails
  
  Supported PROGRAM values:
    aclocal      touch file \`aclocal.m4'
***************
*** 43,55 ****
    automake     touch all \`Makefile.in' files
    bison        create \`y.tab.[ch]', if possible, from existing .[ch]
    flex         create \`lex.yy.c', if possible, from existing .c
    lex          create \`lex.yy.c', if possible, from existing .c
    makeinfo     touch the output file
    yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
      ;;
  
    -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
!     echo "missing - GNU libit 0.0"
      ;;
  
    -*)
--- 70,84 ----
    automake     touch all \`Makefile.in' files
    bison        create \`y.tab.[ch]', if possible, from existing .[ch]
    flex         create \`lex.yy.c', if possible, from existing .c
+   help2man     touch the output file
    lex          create \`lex.yy.c', if possible, from existing .c
    makeinfo     touch the output file
+   tar          try tar, gnutar, gtar, then tar without non-portable flags
    yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
      ;;
  
    -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
!     echo "missing 0.4 - GNU automake"
      ;;
  
    -*)
***************
*** 58,88 ****
      exit 1
      ;;
  
!   aclocal)
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`acinclude.m4' or \`configure.in'.  You might want
           to install the \`Automake' and \`Perl' packages.  Grab them from
           any GNU archive site."
      touch aclocal.m4
      ;;
  
    autoconf)
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`configure.in'.  You might want to install the
           \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
           archive site."
      touch configure
      ;;
  
    autoheader)
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`acconfig.h' or \`configure.in'.  You might want
           to install the \`Autoconf' and \`GNU m4' packages.  Grab them
           from any GNU archive site."
!     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
      test -z "$files" && files="config.h"
      touch_files=
      for f in $files; do
--- 87,132 ----
      exit 1
      ;;
  
!   aclocal*)
!     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
!        # We have it, but it failed.
!        exit 1
!     fi
! 
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
           to install the \`Automake' and \`Perl' packages.  Grab them from
           any GNU archive site."
      touch aclocal.m4
      ;;
  
    autoconf)
+     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+        # We have it, but it failed.
+        exit 1
+     fi
+ 
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`${configure_ac}'.  You might want to install the
           \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
           archive site."
      touch configure
      ;;
  
    autoheader)
+     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+        # We have it, but it failed.
+        exit 1
+     fi
+ 
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
           to install the \`Autoconf' and \`GNU m4' packages.  Grab them
           from any GNU archive site."
!     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
      test -z "$files" && files="config.h"
      touch_files=
      for f in $files; do
***************
*** 95,104 ****
      touch $touch_files
      ;;
  
!   automake)
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
           You might want to install the \`Automake' and \`Perl' packages.
           Grab them from any GNU archive site."
      find . -type f -name Makefile.am -print |
--- 139,153 ----
      touch $touch_files
      ;;
  
!   automake*)
!     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
!        # We have it, but it failed.
!        exit 1
!     fi
! 
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
!          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
           You might want to install the \`Automake' and \`Perl' packages.
           Grab them from any GNU archive site."
      find . -type f -name Makefile.am -print |
***************
*** 106,111 ****
--- 155,188 ----
  	   while read f; do touch "$f"; done
      ;;
  
+   autom4te)
+     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+        # We have it, but it failed.
+        exit 1
+     fi
+ 
+     echo 1>&2 "\
+ WARNING: \`$1' is needed, and you do not seem to have it handy on your
+          system.  You might have modified some files without having the
+          proper tools for further handling them.
+          You can get \`$1Help2man' as part of \`Autoconf' from any GNU
+          archive site."
+ 
+     file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+     test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+     if test -f "$file"; then
+ 	touch $file
+     else
+ 	test -z "$file" || exec >$file
+ 	echo "#! /bin/sh"
+ 	echo "# Created by GNU Automake missing as a replacement of"
+ 	echo "#  $ $@"
+ 	echo "exit 0"
+ 	chmod +x $file
+ 	exit 1
+     fi
+     ;;
+ 
    bison|yacc)
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
***************
*** 159,165 ****
--- 236,272 ----
      fi
      ;;
  
+   help2man)
+     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+        # We have it, but it failed.
+        exit 1
+     fi
+ 
+     echo 1>&2 "\
+ WARNING: \`$1' is missing on your system.  You should only need it if
+ 	 you modified a dependency of a manual page.  You may need the
+ 	 \`Help2man' package in order for those modifications to take
+ 	 effect.  You can get \`Help2man' from any GNU archive site."
+ 
+     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+     if test -z "$file"; then
+ 	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+     fi
+     if [ -f "$file" ]; then
+ 	touch $file
+     else
+ 	test -z "$file" || exec >$file
+ 	echo ".ab help2man is required to generate this page"
+ 	exit 1
+     fi
+     ;;
+ 
    makeinfo)
+     if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+        # We have makeinfo, but it failed.
+        exit 1
+     fi
+ 
      echo 1>&2 "\
  WARNING: \`$1' is missing on your system.  You should only need it if
           you modified a \`.texi' or \`.texinfo' file, or any other file
***************
*** 175,180 ****
--- 282,326 ----
      touch $file
      ;;
  
+   tar)
+     shift
+     if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+     fi
+ 
+     # We have already tried tar in the generic part.
+     # Look for gnutar/gtar before invocation to avoid ugly error
+     # messages.
+     if (gnutar --version > /dev/null 2>&1); then
+        gnutar "$@" && exit 0
+     fi
+     if (gtar --version > /dev/null 2>&1); then
+        gtar "$@" && exit 0
+     fi
+     firstarg="$1"
+     if shift; then
+ 	case "$firstarg" in
+ 	*o*)
+ 	    firstarg=`echo "$firstarg" | sed s/o//`
+ 	    tar "$firstarg" "$@" && exit 0
+ 	    ;;
+ 	esac
+ 	case "$firstarg" in
+ 	*h*)
+ 	    firstarg=`echo "$firstarg" | sed s/h//`
+ 	    tar "$firstarg" "$@" && exit 0
+ 	    ;;
+ 	esac
+     fi
+ 
+     echo 1>&2 "\
+ WARNING: I can't seem to be able to run \`tar' with the given arguments.
+          You may want to install GNU tar or Free paxutils, or check the
+          command line arguments."
+     exit 1
+     ;;
+ 
    *)
      echo 1>&2 "\
  WARNING: \`$1' is needed, and you do not seem to have it handy on your
Index: mkinstalldirs
===================================================================
RCS file: /home/pme/Repositories/GCC/gcc/mkinstalldirs,v
retrieving revision 1.2
diff -c -r1.2 mkinstalldirs
*** mkinstalldirs	3 Apr 1998 16:22:05 -0000	1.2
--- mkinstalldirs	10 Jul 2003 23:24:04 -0000
***************
*** 2,36 ****
  # mkinstalldirs --- make directory hierarchy
  # Author: Noah Friedman <friedman@prep.ai.mit.edu>
  # Created: 1993-05-16
- # Last modified: 1994-03-25
  # Public domain
  
  errstatus=0
  
! for file in ${1+"$@"} ; do 
!    set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
!    shift
! 
!    pathcomp=
!    for d in ${1+"$@"} ; do
!      pathcomp="$pathcomp$d"
!      case "$pathcomp" in
!        -* ) pathcomp=./$pathcomp ;;
!      esac
! 
!      if test ! -d "$pathcomp"; then
!         echo "mkdir $pathcomp" 1>&2
!         mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
!      fi
! 
!      if test ! -d "$pathcomp"; then
! 	errstatus=$lasterr
!      fi
  
!      pathcomp="$pathcomp/"
!    done
  done
  
  exit $errstatus
  
  # mkinstalldirs ends here
--- 2,111 ----
  # mkinstalldirs --- make directory hierarchy
  # Author: Noah Friedman <friedman@prep.ai.mit.edu>
  # Created: 1993-05-16
  # Public domain
  
  errstatus=0
+ dirmode=""
  
! usage="\
! Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
  
! # process command line arguments
! while test $# -gt 0 ; do
!   case $1 in
!     -h | --help | --h*)         # -h for help
!       echo "$usage" 1>&2
!       exit 0
!       ;;
!     -m)                         # -m PERM arg
!       shift
!       test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
!       dirmode=$1
!       shift
!       ;;
!     --)                         # stop option processing
!       shift
!       break
!       ;;
!     -*)                         # unknown option
!       echo "$usage" 1>&2
!       exit 1
!       ;;
!     *)                          # first non-opt arg
!       break
!       ;;
!   esac
! done
! 
! for file
! do
!   if test -d "$file"; then
!     shift
!   else
!     break
!   fi
! done
! 
! case $# in
!   0) exit 0 ;;
! esac
! 
! case $dirmode in
!   '')
!     if mkdir -p -- . 2>/dev/null; then
!       echo "mkdir -p -- $*"
!       exec mkdir -p -- "$@"
!     fi
!     ;;
!   *)
!     if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
!       echo "mkdir -m $dirmode -p -- $*"
!       exec mkdir -m "$dirmode" -p -- "$@"
!     fi
!     ;;
! esac
! 
! for file
! do
!   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
!   shift
! 
!   pathcomp=
!   for d
!   do
!     pathcomp="$pathcomp$d"
!     case $pathcomp in
!       -*) pathcomp=./$pathcomp ;;
!     esac
! 
!     if test ! -d "$pathcomp"; then
!       echo "mkdir $pathcomp"
! 
!       mkdir "$pathcomp" || lasterr=$?
! 
!       if test ! -d "$pathcomp"; then
!   	errstatus=$lasterr
!       else
!   	if test ! -z "$dirmode"; then
! 	  echo "chmod $dirmode $pathcomp"
!     	  lasterr=""
!   	  chmod "$dirmode" "$pathcomp" || lasterr=$?
! 
!   	  if test ! -z "$lasterr"; then
!   	    errstatus=$lasterr
!   	  fi
!   	fi
!       fi
!     fi
! 
!     pathcomp="$pathcomp/"
!   done
  done
  
  exit $errstatus
  
+ # Local Variables:
+ # mode: shell-script
+ # sh-indentation: 2
+ # End:
  # mkinstalldirs ends here




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]