]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
Avoid redundant rm in compile mode, fix locking.
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Fri, 18 Apr 2008 22:01:12 +0000 (00:01 +0200)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Fri, 18 Apr 2008 22:01:12 +0000 (00:01 +0200)
* libltdl/config/ltmain.m4sh (func_mode_compile): Avoid
redundant removal of old output files before compilation.
Do not remove $obj until we have successfully grabbed the
lockfile (in case the compiler doesn't grok `-c -o'), because
it might be identical to $output_obj.
At the end of the function, before we remove the lockfile,
update $removelist so that if the trap hits after the lockfile
has been removed, we do not accidentally remove $output_obj that
does not belong to us.
(func_write_libtool_object): Use $MV instead of mv.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
ChangeLog
libltdl/config/ltmain.m4sh

index e5934060e492590a6aea873f534f84f9cd68b211..63760ce10ecbf452bc74493f8aa2ccb0f1581f58 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2008-04-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * libltdl/config/ltmain.m4sh (func_mode_compile): Avoid
+       redundant removal of old output files before compilation.
+       Do not remove $obj until we have successfully grabbed the
+       lockfile (in case the compiler doesn't grok `-c -o'), because
+       it might be identical to $output_obj.
+       At the end of the function, before we remove the lockfile,
+       update $removelist so that if the trap hits after the lockfile
+       has been removed, we do not accidentally remove $output_obj that
+       does not belong to us.
+       (func_write_libtool_object): Use $MV instead of mv.
+
 2008-04-18  Andreas Schwab  <schwab@suse.de>
 
        * libltdl/m4/ltoptions.m4 (AC_ENABLE_SHARED): Check optional
index 28022545f069ee703f5a669f779c10379960e3dd..8c5c45cfa46ff0239f1aa159b671f90beb97bb98 100644 (file)
@@ -650,7 +650,7 @@ pic_object=$write_lobj
 non_pic_object=$write_oldobj
 
 EOF
-      mv -f "${write_libobj}T" "${write_libobj}"
+      $MV "${write_libobj}T" "${write_libobj}"
     }
 }
 
@@ -831,9 +831,6 @@ func_mode_compile ()
       removelist="$lobj $libobj ${libobj}T"
     fi
 
-    $opt_dry_run || $RM $removelist
-    trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
-
     # On Cygwin there's no "real" PIC flag so we must build both object types
     case $host_os in
     cygwin* | mingw* | pw32* | os2*)
@@ -850,8 +847,6 @@ func_mode_compile ()
     if test "$compiler_c_o" = no; then
       output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
       lockfile="$output_obj.lock"
-      removelist="$removelist $output_obj $lockfile"
-      trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
     else
       output_obj=
       need_locks=no
@@ -881,17 +876,20 @@ compiler."
        $opt_dry_run || $RM $removelist
        exit $EXIT_FAILURE
       fi
+      removelist="$removelist $output_obj"
       $ECHO "$srcfile" > "$lockfile"
     fi
 
+    $opt_dry_run || $RM $removelist
+    removelist="$removelist $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
     if test -n "$fix_srcfile_path"; then
       eval srcfile=\"$fix_srcfile_path\"
     fi
     func_quote_for_eval "$srcfile"
     qsrcfile=$func_quote_for_eval_result
 
-    $opt_dry_run || $RM "$libobj" "${libobj}T"
-
     # Only build a PIC object if we are building libtool libraries.
     if test "$build_libtool_libs" = yes; then
       # Without this assignment, base_compile gets emptied.
@@ -911,8 +909,6 @@ compiler."
        command="$command -o $lobj"
       fi
 
-      $opt_dry_run || $RM "$lobj" "$output_obj"
-
       func_show_eval_locale "$command" \
           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
 
@@ -962,7 +958,6 @@ compiler."
 
       # Suppress compiler output if we already did a PIC compilation.
       command="$command$suppress_output"
-      $opt_dry_run || $RM "$obj" "$output_obj"
       func_show_eval_locale "$command" \
         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
@@ -998,6 +993,7 @@ compiler."
 
       # Unlock the critical section if it was locked
       if test "$need_locks" != no; then
+       removelist=$lockfile
         $RM "$lockfile"
       fi
     }