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

Re: [PATCH 6/6] meson: only check for missing networking syms on non-Windows; add compat impls

From
Eli Schwartz <eschwartz@gentoo.org>
Date
Apr 22, 2025, 15:27 UTC
Message-ID
<aadfbd6b-ea1c-475e-b6a9-f1552afa06c8@gentoo.org>
In-Reply-To
<aAdF3eu1heCycaLJ@pks.im>
On 4/22/25 3:31 AM, Patrick Steinhardt wrote:
Show 12 quoted lines
> On Mon, Apr 21, 2025 at 01:51:50PM -0400, Eli Schwartz wrote:
>> These are added in the Makefile, but not in meson. They probably won't
>> work well on systems without them.
>>
>> CMake adds them, but only on non-Windows. Actually, it only performs
>> compiler checks for hstrerror, but excludes that check on Windows with
>> the note that it is "incompatible with the Windows build". This seems to
>> be misleading -- it is not incompatible, it simply doesn't exist. Still,
>> the compat version should not be used.
> 
> CMake only checks for `hstrerror()` though -- it doesn't check for the
> other functions at all.
Right, that's what I meant.

"cmake, like this patch, adds the compat/*.c when checking function availability. Actually, it only performs compiler checks for hstrerror, but does add the compat impl in that case".

Show 8 quoted lines
>> I interpret this cmake logic to mean we shouldn't even be checking for
>> symbol availability on Windows. In addition to making it simple to add
>> compat definitions, this also probably shaves off a second or two of
>> configure time on Windows as no compiler check needs to be performed.
> 
> I dunno. In this case I'd lean towards just using the check on Windows,
> too. The less platform-specific configuration we do the easier the build
> system is to reason about.

Maybe, but the issue is that it appears on Windows it is not correct to add the compat impl for hstrerror, which would still be a platform-specific configuration. Do I check for hstrerror everywhere but configure Windows to not add the compat impl, but do add it for inet_ntop and inet_pton? That is more configuration than skipping the checks on Windows...

Show 31 quoted lines
>> Signed-off-by: Eli Schwartz <eschwartz@gentoo.org>
>> ---
>>  meson.build | 13 ++++++++-----
>>  1 file changed, 8 insertions(+), 5 deletions(-)
>>
>> diff --git a/meson.build b/meson.build
>> index 1b7e55756b..24b304fb57 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -1088,11 +1088,14 @@ else
>>  endif
>>  libgit_dependencies += networking_dependencies
>>  
>> -foreach symbol : ['inet_ntop', 'inet_pton', 'hstrerror']
>> -  if not compiler.has_function(symbol, dependencies: networking_dependencies)
>> -    libgit_c_args += '-DNO_' + symbol.to_upper()
>> -  endif
>> -endforeach
>> +if host_machine.system() != 'windows'
>> +  foreach symbol : ['inet_ntop', 'inet_pton', 'hstrerror']
>> +    if not compiler.has_function(symbol, dependencies: networking_dependencies)
>> +      libgit_c_args += '-DNO_' + symbol.to_upper()
>> +      libgit_sources += 'compat/' + symbol + '.c'
>> +    endif
>> +  endforeach
>> +endif
> 
> We do have compat sources for `inet_ntop()` and `inet_pton()` indeed, so
> adding those makes sense. But we don't have a replacement for
> `hstrerror()`, so if that function wasn't found we would error out
> because "compat/hstrerror.c" wasn't found.

I don't really understand what you mean by this. Of course the file will be found.

$ grep hstrerror compat/hstrerror.c const char *githstrerror(int err)

File is there. (The function name is then #defined by compat/posix.h, no comment.)

-- 
Eli Schwartz
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 14 of 40 in “meson: simplify and parameterize various standard function checks”
  1. 1/6 meson: simplify and parameterize various standard function checksEli Schwartz, Apr 21, 2025
  2. 2/6 meson: check for getpagesize before using itEli Schwartz, Apr 21, 2025
  3. Patrick SteinhardtApr 22, 2025
  4. Junio C HamanoApr 24, 2025
  5. Eli SchwartzApr 25, 2025
  6. 3/6 meson: do a full usage-based compile check for sysinfoEli Schwartz, Apr 21, 2025
  7. Patrick SteinhardtApr 22, 2025
  8. 4/6 meson: add a couple missing networking dependenciesEli Schwartz, Apr 21, 2025
  9. Patrick SteinhardtApr 22, 2025
  10. 5/6 meson: fix typo in function check that prevented checking for hstrerrorEli Schwartz, Apr 21, 2025
  11. Patrick SteinhardtApr 22, 2025
  12. 6/6 meson: only check for missing networking syms on non-Windows; add compat implsEli Schwartz, Apr 21, 2025
  13. Patrick SteinhardtApr 22, 2025
  14. Eli SchwartzApr 22, 2025
  15. Patrick SteinhardtApr 23, 2025
  16. Eli SchwartzApr 21, 2025
  17. Junio C HamanoApr 22, 2025
  18. Eli SchwartzApr 22, 2025
  19. Patrick SteinhardtApr 22, 2025
  20. Eli SchwartzApr 22, 2025
  21. Patrick SteinhardtApr 23, 2025
  22. Patrick SteinhardtApr 22, 2025
  23. Junio C HamanoApr 22, 2025
  24. 0/6 meson: miscellaneous system detection fixesEli Schwartz, Apr 25, 2025
  25. 1/6 meson: simplify and parameterize various standard function checksEli Schwartz, Apr 25, 2025
  26. 2/6 meson: check for getpagesize before using itEli Schwartz, Apr 25, 2025
  27. 3/6 meson: do a full usage-based compile check for sysinfoEli Schwartz, Apr 25, 2025
  28. 5/6 meson: fix typo in function check that prevented checking for hstrerrorEli Schwartz, Apr 25, 2025
  29. 4/6 meson: add a couple missing networking dependenciesEli Schwartz, Apr 25, 2025
  30. 6/6 meson: only check for missing networking syms on non-Windows; add compat implsEli Schwartz, Apr 25, 2025
  31. Patrick SteinhardtApr 25, 2025
  32. Eli SchwartzApr 25, 2025
  33. 0/6 meson: miscellaneous system detection fixesEli Schwartz, Apr 25, 2025
  34. 1/6 meson: simplify and parameterize various standard function checksEli Schwartz, Apr 25, 2025
  35. 2/6 meson: check for getpagesize before using itEli Schwartz, Apr 25, 2025
  36. 3/6 meson: do a full usage-based compile check for sysinfoEli Schwartz, Apr 25, 2025
  37. 4/6 meson: add a couple missing networking dependenciesEli Schwartz, Apr 25, 2025
  38. 5/6 meson: fix typo in function check that prevented checking for hstrerrorEli Schwartz, Apr 25, 2025
  39. 6/6 meson: only check for missing networking syms on non-Windows; add compat implsEli Schwartz, Apr 25, 2025
  40. Patrick SteinhardtApr 25, 2025

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.