From 67419ca36c09dc3489f9089399b37803fa94ae2a Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 14 Oct 2021 13:01:36 +0300 Subject: [PATCH] Always OOD unexistent targets --- doc/news.texi | 7 +++++++ ood.go | 4 ++++ t/redo-sh.tests/README | 1 + t/redo-sh.tests/ood_1/test | 4 ++-- t/redo-sh.tests/ood_2/test | 4 ++-- t/redo-sh.tests/ood_3/test | 4 ++-- usage.go | 2 +- 7 files changed, 19 insertions(+), 7 deletions(-) diff --git a/doc/news.texi b/doc/news.texi index ab7b9a1..2adfe78 100644 --- a/doc/news.texi +++ b/doc/news.texi @@ -1,6 +1,13 @@ @node News @unnumbered News +@anchor{Release 1_16_0} +@section Release 1.16.0 +@itemize +@item + Unexistent targets are considered always out-of-date, as it should be. +@end itemize + @anchor{Release 1_15_0} @section Release 1.15.0 @itemize diff --git a/ood.go b/ood.go index 64e8bc4..9dfed34 100644 --- a/ood.go +++ b/ood.go @@ -110,6 +110,10 @@ func isOOD(cwd, tgtOrig string, level int, seen map[string]struct{}) (bool, erro trace(CDebug, "ood: %s%s -> already built", indent, tgtOrig) return false, nil } + if _, err := os.Stat(path.Join(cwd, tgt)); err != nil && os.IsNotExist(err) { + trace(CDebug, "ood: %s%s -> non-existent", indent, tgtOrig) + return true, nil + } ood := false for _, dep := range depInfo.ifcreates { diff --git a/t/redo-sh.tests/README b/t/redo-sh.tests/README index 336d2a1..0ef3ea6 100644 --- a/t/redo-sh.tests/README +++ b/t/redo-sh.tests/README @@ -2,3 +2,4 @@ Those tests are taken from http://news.dieweltistgarnichtso.net/bin.git. Test parallel_2 removed, because goredo has no --jobs. Test always_rebuild_1 removed, because always-target is rebuilt once per run. stat call is replaced with portable perl script invocation in ood_*. +ood_* pay attention that "all" is always OOD. diff --git a/t/redo-sh.tests/ood_1/test b/t/redo-sh.tests/ood_1/test index 15a14dc..c6fd042 100755 --- a/t/redo-sh.tests/ood_1/test +++ b/t/redo-sh.tests/ood_1/test @@ -24,13 +24,13 @@ ood1=$(redo-ood) ' d printf '4\n'