home · contact · privacy
Server/py: Refactoring, heavier use of flush() and fsync().
[plomrogue] / build / redo_scripts / redo-ifchange
index bdec2d4dae215b11ab69c6d3451f0317762fed95..902ed16d5cef6b58c38d5ee6c306aef65f67c8a6 100755 (executable)
@@ -70,6 +70,10 @@ _dependencies_ne_uptodate() {
 
 _target_uptodate() {
   target=$1
+  # If a target is a top-level target, it is not up to date.
+  if [ -z "$REDO_TARGET" ]; then
+    return 1
+  fi
   # If a target does not exist, it is not up to date.
   if [ ! -e "$target" ]; then
     _echo_debug_message "$target does not exist."
@@ -124,8 +128,8 @@ _dependencies_uptodate() {
   _echo_debug_message "$target dependency check:"
   # If any dependency does not exist, the target is out of date.
   LANG=C stat -c%Y $(LANG=C cut -f1 "$REDO_DIR/$target".dependencies) > \
-    "$REDO_DIR/".dependencies.ctimes 2>&- || return 1
-  exec 3< "$REDO_DIR/".dependencies.ctimes
+    "$REDO_DIR/$target".dependencies.ctimes 2>&- || return 1
+  exec 3< "$REDO_DIR/$target".dependencies.ctimes
   exec 4< "$REDO_DIR/$target".dependencies
   while read ctime_actual <&3 && read dependency ctime_stored md5sum_stored <&4; do
     # If a .always file exists, the dependency is out of date.
@@ -192,7 +196,9 @@ _do() {
     [ -e "$target.do" ] || _find_dofile "$target"
     if [ ! -e "$dofile" ]; then
       # If .do file does not exist and target exists, it is a source file.
-      if [ -e "$target" ]; then
+      if [ -e "$target_abspath" ]; then
+        _add_dependency "$REDO_TARGET" "$target_abspath"
+        _add_ctime_md5sum "$target_abspath"
         return 0
       # If .do file does not exist and target does not exist, stop.
       else
@@ -231,7 +237,7 @@ _do() {
       "$REDO_DIR/$target_abspath".dependencies_ne >&2
   fi
   # Some do files (like all.do) do not usually generate output.
-  if [ -e "$target" ]; then
+  if [ -e "$target_abspath" ]; then
     # Record dependency on parent target.
     _add_dependency "$REDO_TARGET" "$target_abspath"
     _add_ctime_md5sum "$target_abspath"