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