Am Freitag, 7. Januar 2005 17:20 schrieb Tom Lane:
> > Does anyone object to installing the new mkinstalldirs?  I took the
> > latest version from the automake CVS.  The important change was
> > apparently to use mkdir -p only with GNU mkdir.
>
> Could you post a diff against what we have now?

Attached.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/
*** devel/pg75/cvs-pgsql/config/mkinstalldirs	2003-11-04 11:59:58.000000000 +0100
--- mkinstalldirs	2005-01-07 10:51:26.000000000 +0100
***************
*** 1,20 ****
  #! /bin/sh
  # mkinstalldirs --- make directory hierarchy
! # Author: Noah Friedman <[EMAIL PROTECTED]>
  # 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
--- 1,32 ----
  #! /bin/sh
  # mkinstalldirs --- make directory hierarchy
! 
! scriptversion=2004-02-15.20
! 
! # Original author: Noah Friedman <[EMAIL PROTECTED]>
  # Created: 1993-05-16
! # Public domain.
! #
! # This file is maintained in Automake, please report
! # bugs to <[EMAIL PROTECTED]> or send patches to
! # <[EMAIL PROTECTED]>.
  
  errstatus=0
  dirmode=""
  
  usage="\
! Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
! 
! Create each directory DIR (with mode MODE, if specified), including all
! leading file name components.
! 
! Report bugs to <[EMAIL PROTECTED]>."
  
  # process command line arguments
  while test $# -gt 0 ; do
    case $1 in
      -h | --help | --h*)         # -h for help
!       echo "$usage"
        exit 0
        ;;
      -m)                         # -m PERM arg
***************
*** 23,28 ****
--- 35,44 ----
        dirmode=$1
        shift
        ;;
+     --version)
+       echo "$0 $scriptversion"
+       exit 0
+       ;;
      --)                         # stop option processing
        shift
        break
***************
*** 50,66 ****
    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
--- 66,102 ----
    0) exit 0 ;;
  esac
  
+ # Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+ # mkdir -p a/c at the same time, both will detect that a is missing,
+ # one will create a, then the other will try to create a and die with
+ # a "File exists" error.  This is a problem when calling mkinstalldirs
+ # from a parallel make.  We use --version in the probe to restrict
+ # ourselves to GNU mkdir, which is thread-safe.
  case $dirmode in
    '')
!     if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
        echo "mkdir -p -- $*"
        exec mkdir -p -- "$@"
+     else
+       # On NextStep and OpenStep, the `mkdir' command does not
+       # recognize any option.  It will interpret all options as
+       # directories to create, and then abort because `.' already
+       # exists.
+       test -d ./-p && rmdir ./-p
+       test -d ./--version && rmdir ./--version
      fi
      ;;
    *)
!     if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
!        test ! -d ./--version; then
        echo "mkdir -m $dirmode -p -- $*"
        exec mkdir -m "$dirmode" -p -- "$@"
+     else
+       # Clean up after NextStep and OpenStep mkdir.
+       for d in ./-m ./-p ./--version "./$dirmode";
+       do
+         test -d $d && rmdir $d
+       done
      fi
      ;;
  esac
***************
*** 84,100 ****
        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
  
--- 120,136 ----
        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
  
***************
*** 107,111 ****
  # Local Variables:
  # mode: shell-script
  # sh-indentation: 2
  # End:
- # mkinstalldirs ends here
--- 143,150 ----
  # Local Variables:
  # mode: shell-script
  # sh-indentation: 2
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
+ # time-stamp-start: "scriptversion="
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
+ # time-stamp-end: "$"
  # End:
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to