mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-13 12:53:53 +00:00
Fix a problem where the test cases were sometimes failing
Estimated hours taken: 0.5 Fix a problem where the test cases were sometimes failing if old /tmp/mmake* directories were left lying around. scripts/ml.in: scripts/mmake.in: When creating the temporary directory, if mkdir fails (e.g. because that directory already exists), then try again with a different directory name. Only report an error if it fails 20 times in a row.
This commit is contained in:
@@ -591,15 +591,21 @@ case $demangle in
|
||||
# create the pipe, making sure we remove it if interrupted
|
||||
old_umask=`umask`
|
||||
umask 022
|
||||
ML_TMPDIR=$TMPDIR/ml$$
|
||||
PIPE=$ML_TMPDIR/pipe
|
||||
trap 'rmdir $ML_TMPDIR >/dev/null 2>&1; exit 1' 1 2 3 13 15
|
||||
if mkdir $ML_TMPDIR ; then
|
||||
true
|
||||
else
|
||||
echo "Unable to create temporary pipe" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
try=0
|
||||
until
|
||||
ML_TMPDIR=$TMPDIR/ml$$
|
||||
PIPE=$ML_TMPDIR/pipe
|
||||
trap 'rmdir $ML_TMPDIR >/dev/null 2>&1; exit 1' 1 2 3 13 15
|
||||
mkdir $ML_TMPDIR
|
||||
do
|
||||
try="`expr $try + 1`"
|
||||
# give up after 20 tries
|
||||
case "$try" in 20)
|
||||
echo "ml: unable to create temporary directory" \
|
||||
"for pipe" 1>&2
|
||||
exit 1
|
||||
esac
|
||||
done
|
||||
trap 'rm -rf $ML_TMPDIR; exit 1' 1 2 3 13 15
|
||||
umask $old_umask
|
||||
$MKFIFO $PIPE
|
||||
|
||||
@@ -182,16 +182,22 @@ else
|
||||
case "$MKTEMP" in
|
||||
"") old_umask=`umask`
|
||||
umask 022
|
||||
mmake_tmpdir=$TMPDIR/mmake$$
|
||||
tmp=$mmake_tmpdir/mmake
|
||||
trap 'rmdir $mmake_tmpdir >/dev/null 2>&1; exit 1' \
|
||||
1 2 3 13 15
|
||||
if mkdir $mmake_tmpdir ; then
|
||||
true
|
||||
else
|
||||
echo "Unable to create temporary makefile" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
try=0
|
||||
until
|
||||
mmake_tmpdir=$TMPDIR/mmake$$-$try
|
||||
tmp=$mmake_tmpdir/mmake
|
||||
trap 'rmdir $mmake_tmpdir >/dev/null 2>&1; exit 1' \
|
||||
1 2 3 13 15
|
||||
mkdir $mmake_tmpdir
|
||||
do
|
||||
try=`expr $try + 1`
|
||||
# give up after 20 tries
|
||||
case $try in 20)
|
||||
echo "mmake: unable to create directory" \
|
||||
"for temporary makefile" 1>&2
|
||||
exit 1
|
||||
esac
|
||||
done
|
||||
trap 'status=$?; rm -rf $mmake_tmpdir; exit $status' \
|
||||
0 1 2 3 13 15
|
||||
umask $old_umask
|
||||
|
||||
Reference in New Issue
Block a user