<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Dec 16, 2020 at 1:24 PM Rob Landley <<a href="mailto:rob@landley.net">rob@landley.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 12/15/20 12:59 PM, enh via Toybox wrote:<br>
> <br>
> If a chmod test fails it can leave files/directories in a state<br>
> that causes successive runs to suffer bogus failures, and that `make<br>
> clean` can't clean up without manual intervention.<br>
<br>
I thought I'd taught toybox rm -rf to chmod directories it couldn't delete and<br>
try again, but I guess the host rm isn't doing that? How about:<br>
<br>
diff --git a/Makefile b/Makefile<br>
index 21d3359f..52602d25 100644<br>
--- a/Makefile<br>
+++ b/Makefile<br>
@@ -63,6 +63,7 @@ root_clean:<br>
        @echo root cleaned<br>
<br>
 clean::<br>
+       @chmod -fR 700 generated || true<br>
        @rm -rf toybox generated change .singleconfig*<br>
        @echo cleaned<br>
<br>
<br>
While doing that, apparently host chmod -f on a directory that doesn't currently<br>
exist returns an error (which would make your && not continue and recreate it).<br>
rm -f thingy is happen if thingy doesn't already exist, but chmod -f isn't.<br></blockquote><div><br></div><div>i should have said "only tested on macOS".</div><div><br></div><div>the reason i changed the test but not `make clean` was that i thought repeatedly running `make test_foo` (without intervening calls to `make clean`) was more likely to be the usual path. but maybe that's an argument for `make tests` and `make test_foo` forcibly removing generated/testdir as if they were at least that part of `make clean`?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> Also, macOS seems to disallow +s in /tmp (but not otherwise), so<br>
> allow those tests to be skipped. This is why I was seeing macOS<br>
> test failures locally (because I pretty much always work on toybox<br>
> in /tmp) that we weren't seeing on the github CI runs (which<br>
> presumably don't run in /tmp).<br>
> <br>
> With this, all the tests are passing locally for me on macOS again.<br>
Needing to repeat skipnot before each line is awkward, lemme stare at it this<br>
evening...<br></blockquote><div><br></div><div>i started with a bash `if` but decided i preferred your style of explicitly listing every skipped test. (though i guess `if ... else <a message about skipping all +s tests> fi` would be fine too.)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Rob<br>
</blockquote></div></div>