*** spacefrogg [2026-08-20 17:01]:
>I think, I have argued that before and I still think this behaviour is very
>wrong.
>[...]
>As we all agree, redo is a stateful build system.
>[...]
>Now, where I think goredo currently takes the wrong turn:
>It should not consider OOD just because there is some .do file to
>produce . If exists before redo has a record of it, it should just
>treat as a source and be happy. Obviously, redo will never rebuild .
>So, if a user mistakenly has removed the .redo database, all current targets
>turn into sources and redo won't rebuild anything anymore. But hey, so is
>life. Complex project just have cleanup rules anyhow which the user can call
>and start over again.
I am convinced now.
I wanted to disagree, saying that the fact of .do-file appearance (or
its existence) is the change of the state already and we can
differentiate sources/targets without looking at the state-database.
But goredo already behaves differently with .do-files themselves: if
foo.do exists, then default.do nearby won't be executed. We can not
determine if foo.do was created by default.do or it is already existing
(source) file. And indeed you rely on proper cleanup rules, which leaves
real source .do files, removing the autogenerated ones.
Ongoing 2.10.0 release will behave differently now: any existing file
without corresponding .redo/*.dep will be treated like a source one.
--
* Origin: Stargrave's homepage http://www.stargrave.org/