git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: FREAD_READS_DIRECTORIES test fails for the wrong reasons

From
JPJonathan Primrose <jprimros@gmail.com>
Date
Apr 6, 2018, 21:57 UTC
Message-ID
<8ed8491f-9410-c509-5ef7-77638aa74038@gmail.com>
In-Reply-To
<20180406193301.GA11450@sigill.intra.peff.net>
On 04/06/2018 03:33 PM, Jeff King wrote:
Show 17 quoted lines
> On Fri, Apr 06, 2018 at 02:06:50PM -0400, Jonathan Primrose wrote:
>
>> A while ago, the configure test for FREAD_READS_DIRECTORIES was changed
>> to (attempt to) check for a NULL result from fopen. Unfortunately, the
>> test will always fail - because it won't compile. The code snippet in
>> configure.ac translates to:
>>
>> return f);
>>
>> Either there's an extra ) or a missing (. A cast to int wouldn't hurt
>> either.
>
> Oops. This is due to my 3adf9fdecf (configure.ac: loosen
> FREAD_READS_DIRECTORIES test program, 2017-06-14).
>
> Neither I nor the original tester noticed, because we're on Linux, which
> needs that set.

I'm also running Linux, but somehow I ended up needing to check config.log and saw the error. I don't remember why I had to check. (I've been fixing the problem locally for the last few releases, figuring someone else would notice. I also remove the 'rm configure' from the distclean target in Makefile, just in case I decide to rebuild later.)

Show 7 quoted lines
>
>> I'd supply a patch to fix this, but I'm not sure what the results of
>> suddenly fixing the test would be. It seems to work well on my
>> machine, but I don't stress git much here, and it's just one machine.
>
> I think it should be fixed (and agreed on the "int" thing; the return
> value should be "f != NULL" or similar).

Ironically, most of the time I check config.log is because of the missing cast to int. A few years ago I set this machine up as a tri-arch system (x86, x86_64, and x32). Because of subtle errors that appear when converting between int and pointer on x32, I tend to use -Werror=int-conversion on all my builds, and I wrap configure in a script that (among other things) checks config.log for that particular error. Even though x32 isn't as promising anymore (thanks to a few projects rejecting support patches), there are very few packages that still trigger the error.

Show 6 quoted lines
>
> I don't know autoconf very well, but is there a way to invoke it that
> will let us know if a test-program fails to compile at all? Obviously
> for probing the system compler/includes, "does not compile" is an
> expected possible outcome. But for tests like this it's really a
> tristate: yes, no, or something went horribly wrong.

I don't know if that's supported. From what I've seen in the docs I've found online, it looks like the closest is a case for "I couldn't run the program because I'm cross-compiling." You might be able to determine that the compile and/or link failed by looking at some of autoconf's internal variables, but it would be fragile.

>
> -Peff
>
Jonathan
Previous: Jeff KingNext: Jeff King
Message 3 of 4 in “FREAD_READS_DIRECTORIES test fails for the wrong reasons”
  1. Jonathan PrimroseApr 6, 2018
  2. Jeff KingApr 6, 2018
  3. Jonathan PrimroseApr 6, 2018
  4. Jeff KingApr 6, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.