On Mon, May 20, 2024 at 5:04 AM John Paul Adrian Glaubitz <glaubitz@xxxxxxxxxxxxxxxxxxx> wrote: > Bisecting was successful and has lead me to this commit: > > d00113ec3474a1652a73c11695c7e7b5182d80a7 is the first bad commit > Author: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> > Date: Thu Sep 1 00:29:46 2022 +0000 > t/Makefile: apply chainlint.pl to existing self-tests > > Now that chainlint.pl is functional, take advantage of the existing > chainlint self-tests to validate its operation. (While at it, stop > validating chainlint.sed against the self-tests since it will soon be > retired.) That's the point at which chainlint.sed was replaced with chainlint.pl. It also leads to the same supposition expressed earlier that the "actual" file seems to be empty for some reason, perhaps because one of the commands which creates it is failing somehow. At that point in time, the creation command for "actual" in t/Makefile was: $(CHAINLINT) --emit-all '$(CHAINLINTTMP_SQ)'/tests | \ grep -v '^[ ]*$$' >'$(CHAINLINTTMP_SQ)'/actual && \ which uses `grep` rather than the `sed` used in the present-day t/Makefile. This may imply that Perl is somehow suspect or that PERL_PATH or PERL_PATH_SQ in t/Makefile are incorrectly set, or that t/chainlint.pl itself is not generating any output for some reason. After running: cd t make check-chainlint what is the output of: ls -l chainlinttmp For me the output using the latest "master" branch is: % ls -l chainlinttmp -rw------- 1 me me 14797 May 20 05:26 actual -rw------- 1 me me 14797 May 20 05:26 expect -rw------- 1 me me 15086 May 20 05:26 tests My suspicion is that "actual" will have size 0 for you. If that's the case, I'd suggest running the commands from the "check-chainlint" target in t/Makefile manually one at a time to see if you can figure out which is failing. For instance: % ./chainlint.pl --emit-all chainlinttmp/tests If that produces output, then that's a good sign. Try capturing that output and feeding it to the `sed` command: % ./chainlint.pl --emit-all chainlinttmp/tests >lint.out % sed -e 's/^[1-9][0-9]* //' lint.out If that produces output, then something else is going wrong (such as PERL_PATH or PERL_PATH_SQ being incorrect).