]> Cypherpunks repositories - goredo.git/commitdiff
Properly search for .do during source file determination
authorSergey Matveev <stargrave@stargrave.org>
Fri, 12 Dec 2025 13:20:02 +0000 (16:20 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 12 Dec 2025 14:29:45 +0000 (17:29 +0300)
15 files changed:
do.go
doc/news.texi
ood.go
t/apenwarr-120-defaults-flat.t [deleted symlink]
t/apenwarr/120-defaults-flat/.gitignore [deleted file]
t/apenwarr/120-defaults-flat/all.do [deleted file]
t/apenwarr/120-defaults-flat/c.c.c.b.b.a [deleted file]
t/apenwarr/120-defaults-flat/c.do [deleted file]
t/apenwarr/120-defaults-flat/clean.do [deleted file]
t/apenwarr/120-defaults-flat/default.b.do [deleted file]
t/apenwarr/120-defaults-flat/default.c.c.do [deleted file]
t/apenwarr/120-defaults-flat/default.c.do [deleted file]
t/apenwarr/120-defaults-flat/default.do [deleted file]
t/goredo-rel-ifcreate.t
usage.go

diff --git a/do.go b/do.go
index 0d078aeb29625c3447e73c6253d4ac2111c1db4c..a05dea848f9559daa52d4c6eadf9f9895c3e0e8f 100644 (file)
--- a/do.go
+++ b/do.go
@@ -34,6 +34,9 @@ func existsDo(w io.Writer, fdDepName, cwd, pth string) (bool, error) {
        if FileExists(path.Join(cwd, pth)) {
                return true, nil
        }
+       if w == nil {
+               return false, nil
+       }
        return false, ifcreate(w, fdDepName, pth)
 }
 
index 726f1855594d53927773e61ad77eb276abfcdd38..f01a56a89cc206507b3a58dca9704302207e431d 100644 (file)
@@ -2,6 +2,13 @@
 @cindex news
 @unnumbered News
 
+@anchor{Release 2_7_0}
+@section Release 2.7.0
+@itemize
+@item
+    Proper @file{.do} file searching during source file determination.
+@end itemize
+
 @anchor{Release 2_6_5}
 @section Release 2.6.5
 @itemize
diff --git a/ood.go b/ood.go
index cecec68b1daead59a788f633f9646e323f6eba00..0e00ba9da3a018cbfd8c274bff59a2f9a5c2cbb4 100644 (file)
--- a/ood.go
+++ b/ood.go
@@ -74,10 +74,8 @@ func isSrc(tgt *Tgt) bool {
        if !FileExists(tgt.a) {
                return false
        }
-       if FileExists(tgt.a + ".do") {
-               return false
-       }
-       if FileExists(tgt.dep) {
+       tgtH, tgtT := pathSplit(tgt.a)
+       if do, _, _ := findDo(nil, tgt.a, tgtH, tgtT); do != "" {
                return false
        }
        return true
diff --git a/t/apenwarr-120-defaults-flat.t b/t/apenwarr-120-defaults-flat.t
deleted file mode 120000 (symlink)
index 5f1044b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-apenwarr/wrapper.rc
\ No newline at end of file
diff --git a/t/apenwarr/120-defaults-flat/.gitignore b/t/apenwarr/120-defaults-flat/.gitignore
deleted file mode 100644 (file)
index 580e8c9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-c
-c.c
-c.c.c
-c.c.c.b
-c.c.c.b.b
-d
diff --git a/t/apenwarr/120-defaults-flat/all.do b/t/apenwarr/120-defaults-flat/all.do
deleted file mode 100644 (file)
index f5753c3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-redo-ifchange c d
diff --git a/t/apenwarr/120-defaults-flat/c.c.c.b.b.a b/t/apenwarr/120-defaults-flat/c.c.c.b.b.a
deleted file mode 100644 (file)
index 4768c08..0000000
+++ /dev/null
@@ -1 +0,0 @@
-chicken
diff --git a/t/apenwarr/120-defaults-flat/c.do b/t/apenwarr/120-defaults-flat/c.do
deleted file mode 100644 (file)
index 3d6bd11..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-redo-ifchange $1.c
-echo c.do
-cat $1.c
diff --git a/t/apenwarr/120-defaults-flat/clean.do b/t/apenwarr/120-defaults-flat/clean.do
deleted file mode 100644 (file)
index 37c32b0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-rm -f c c.c c.c.c c.c.c.b c.c.c.b.b d \
-       *~ .*~
diff --git a/t/apenwarr/120-defaults-flat/default.b.do b/t/apenwarr/120-defaults-flat/default.b.do
deleted file mode 100644 (file)
index b8c9b1e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-if [ -e "$1.a" -o -e "default${1#$2}.a" ]; then
-       redo-ifchange "$1.a"
-       echo a-to-b
-       cat "$1.a"
-else
-       redo-ifchange "$1.b"
-       echo b-to-b
-       cat "$1.b"
-fi
-../sleep 1.1
diff --git a/t/apenwarr/120-defaults-flat/default.c.c.do b/t/apenwarr/120-defaults-flat/default.c.c.do
deleted file mode 100644 (file)
index 12798b4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-redo-ifchange $1.b
-echo b-to-cc
-cat $1.b
-../sleep 1.2
diff --git a/t/apenwarr/120-defaults-flat/default.c.do b/t/apenwarr/120-defaults-flat/default.c.do
deleted file mode 100644 (file)
index 9fc8bd7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-redo-ifchange $1.c
-echo c-to-c
-cat $1.c
-../sleep 1.3
diff --git a/t/apenwarr/120-defaults-flat/default.do b/t/apenwarr/120-defaults-flat/default.do
deleted file mode 100644 (file)
index 44aecf7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-redo-ifchange c
-echo default-rule
-cat c
-../sleep 1.4
index 74bc4a59bf02ceaf91bd4ef83354ec74f297eec2..42f57b06ecea47262ce4f5137342f800151777ef 100755 (executable)
@@ -4,24 +4,24 @@ test_description="Proper relative to DirPrefix ifcreate paths"
 . $SHARNESS_TEST_SRCDIR/sharness.sh
 export REDO_TOP_DIR="`pwd`" REDO_NO_PROGRESS=1
 
-mkdir -p a/b/c a/c
-echo whatever >a/b/c/dep
-cat >a/b/default.do <<EOF
+mkdir -p a/b/c/d a/e
+echo whatever >a/b/dep
+cat >a/b/c/default.do <<EOF
 echo called \$1
-redo-ifcreate ../c/dep
-redo-ifchange c/dep
+redo-ifcreate ../../e/dep
+redo-ifchange ../dep
 EOF
-redo-ifchange a/b/c/file
-stat1=`stat a/b/c/file`
+redo-ifchange a/b/c/d/file
+stat1=`stat a/b/c/d/file`
 sleep 1 # stat does not output fractions of seconds
-redo-ifchange a/b/c/file
-stat2=`stat a/b/c/file`
+redo-ifchange a/b/c/d/file
+stat2=`stat a/b/c/d/file`
 
 test_expect_success "file stays same" '[ "$stat1" = "$stat2" ]'
 
-touch a/c/dep
-redo-ifchange a/b/c/file
-stat3=`stat a/b/c/file`
+touch a/e/dep
+redo-ifchange a/b/c/d/file
+stat3=`stat a/b/c/d/file`
 
 test_expect_success "ifcreate target works" '[ "$stat1" != "$stat3" ]'
 
index 50d53c877506a92d6ca34032a61989edf526c993..e41fbd7ead400b52c6f78152a943dcd6adff1ef1 100644 (file)
--- a/usage.go
+++ b/usage.go
@@ -22,7 +22,7 @@ import (
 )
 
 const (
-       Version  = "2.6.5"
+       Version  = "2.7.0"
        Warranty = `Copyright (C) 2020-2025 Sergey Matveev
 
 This program is free software: you can redistribute it and/or modify