Preferable way is to [Download] tarball with the signature from website:
- $ v=2.8.0
+ $ v=2.9.0
$ [fetch|wget] http://www.goredo.cypherpunks.su/download/goredo-$v.tar.zst
$ [fetch|wget] http://www.goredo.cypherpunks.su/download/goredo-$v.tar.zst.{asc,sig,cm}
[Integrity] verify
+A 2.9.0\r
+2.9.0
+ * Warn if non-top target did not write anything.
+ Idea was borrowed from redo-sh.
+
A 2.8.0\r
2.8.0
* Fix always-OOD .do-targets with nearby default.do.
targets, but ordinary redo is not: it builds specified targets
sequentially and stops when error happens.
+It will warn if non-top target did not write anything.
+
A [Env] REDO_STOP_IF_MODIFIED\r
If redo sees some target modified externally, then by default it warns
user about that, does not build that target, but continues the build
// Do we need to ifcreate it, or ifchange with renaming?
if fd == nil {
+ if Level > 0 {
+ tracef(CWarn, "%s: nothing written to target", tgt)
+ }
os.Remove(tgt.a)
err = ifcreate(fdDepW, fdDep.Name(), tgtT)
if err != nil {
echo redo-ifchange l3 l2 >l1.do
echo redo-ifchange l3 >l2.do
+echo echo ok >>l1.do
+echo echo ok >>l2.do
cat >l3.do <<EOF
sleep 1
touch \$(date +%s).touch
+echo ok
EOF
redo -j 1 l1
. $SHARNESS_TEST_SRCDIR/sharness.sh
export REDO_TOP_DIR="`pwd`" REDO_NO_PROGRESS=1
-echo redo-ifchange version.h >all.do
+cat >all.do <<EOF
+redo-ifchange version.h
+echo ok
+EOF
cat >version.h.do <<EOF
redo-ifchange date version version.h.in
VERSION=\$(cat version)
--- /dev/null
+#!/bin/sh -eu
+# A non-top-level build rule not writing to a target must yield a warning.
+
+>all.do printf 'redo-ifchange a
+'
+
+>a.do :
+
+2>stderr redo
+<stderr grep -q 'a: nothing written to target'
--- /dev/null
+#!/bin/sh -eu
+# Each non-top-level build rule not writing to a target must yield a warning.
+
+>all.do printf 'redo-ifchange a
+'
+
+>a.do printf 'redo-ifchange b
+'
+
+>b.do :
+
+2>stderr redo
+<stderr grep -q 'a: nothing written to target'
+<stderr grep -q 'b: nothing written to target'
>default.do cat <<EOF
redo-always
+date +%s
sleep 1
EOF
--- /dev/null
+redo-sh.tests/wrapper.rc
\ No newline at end of file
--- /dev/null
+redo-sh.tests/wrapper.rc
\ No newline at end of file
)
const (
- Version = "2.8.1"
+ Version = "2.9.0"
Warranty = `Copyright (C) 2020-2026 Sergey Matveev
This program is free software: you can redistribute it and/or modify