On Sat, 2019-08-31 at 13:59 +0300, Eli Zaretskii wrote: > The failures where all eyeballed, and the conclusion is that they are > due to non-portable assumptions that are too much work to fix. The > worst offenders are: > > . the assumption that $$FOO gets expanded by the shell into the > value of FOO; > . too sophisticated games with quoting; > . shell commands too complex to port easily, like this one from > output-sync: > > while [ ! -f ../mksync.$_[0] ]; do :; done; $CMD_rmfile > ../mksync.$_[0].wait; $sleep_command 1 > > I think the test suite could be made much more portable by using Make > itself instead of the shell as a subordinate program.
Sometimes this can be done. Other times not so much. And of course, there are tests which intentionally want to avoid running a sub-make, which can have side-effects. What I probably should do is implement a set of simple operations in Perl and invoke that to run recipes, instead of shell. We know we have Perl since that's what the test suite is written in. I did make an effort to write some of the very tricky code around testing output sync and parallelism using Perl scripting. The main idea was to try to speed up these tests and make them more reliable by using locking files and checking for existence to control the order in which recipes complete, rather than just relying on sleep calls. But IIRC I was doing this while recovering from an illness... so probably not my best work :) _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make