doc/news.texi | 7 +++++++ ood.go | 4 ++++ t/goredo-do-ood.t | 12 ++++++++++++ usage.go | 2 +- diff --git a/doc/news.texi b/doc/news.texi index f8c3c7969e6178564aff12f67e4c22d525a4e640a0ea93c16c6a997a16a36ccf..26e24e55af145b54b18834a6096ed9363e8f3ffcc0b25d9928cc084ca11db34d 100644 --- a/doc/news.texi +++ b/doc/news.texi @@ -2,6 +2,13 @@ @node News @cindex news @unnumbered News +@anchor{Release 2_8_0} +@section Release 2.8.0 +@itemize +@item + Fix always-OOD @file{.do}-targets with nearby @file{default.do}. +@end itemize + @anchor{Release 2_7_0} @section Release 2.7.0 @itemize diff --git a/ood.go b/ood.go index cb98247e0468bb9cebd3c7d4737ec7a8628bd33799c5a3409b756821ab9e0c41..57dd301e5c4b1bd2c0239994a35718472fa7031226e5a9b21f1063160c485627 100644 --- a/ood.go +++ b/ood.go @@ -25,6 +25,7 @@ "io" "io/fs" "log" "os" + "path" "strings" "golang.org/x/sys/unix" @@ -103,6 +104,9 @@ if errors.Is(err, fs.ErrNotExist) { if isSrc(tgt) { ood = false tracef(CDebug, "ood: %s%s -> is source", indent, tgt) + } else if path.Ext(tgt.a) == ".do" { + ood = false + tracef(CDebug, "ood: %s%s -> is .do", indent, tgt) } else { ood = true tracef(CDebug, "ood: %s%s -> no dep: %s", indent, tgt, tgt.dep) diff --git a/t/goredo-do-ood.t b/t/goredo-do-ood.t new file mode 100755 index 0000000000000000000000000000000000000000..2b13afa02434765acc5feed75ee05451b1e1b1fccb4008b13ffee21c93d80d2f --- /dev/null +++ b/t/goredo-do-ood.t @@ -0,0 +1,12 @@ +#!/bin/sh + +test_description="Check OOD of .do target" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export REDO_TOP_DIR="`pwd`" REDO_NO_PROGRESS=1 + +echo echo foo >foo.do +echo echo default >default.do +redo foo +test_expect_success "!ood" '[ -z "$(redo-ood foo)" ]' + +test_done diff --git a/usage.go b/usage.go index 94948f695410fe8dea9569411ede415ac695d9c4c286cf0506dd3b7415fc1394..6cf31bc3cfa5217409b4aa30c4d3c06ab0a58a7768bb922a3bbf61fc4623c31a 100644 --- a/usage.go +++ b/usage.go @@ -22,7 +22,7 @@ "os" ) const ( - Version = "2.7.0" + Version = "2.8.0" Warranty = `Copyright (C) 2020-2026 Sergey Matveev This program is free software: you can redistribute it and/or modify