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

[PATCH v3 0/6] meson: miscellaneous system detection fixes

From
Eli Schwartz <eschwartz@gentoo.org>
Date
Apr 25, 2025, 05:25 UTC
Message-ID
<20250425053345.17288-1-eschwartz@gentoo.org>
In-Reply-To
<20250421175247.240971-1-eschwartz@gentoo.org>

Principally motivated to handle an issue where these were failing to detect the system properly, on Solaris.

Changes:

v2: getpagesize check moved to !windows v3: style fixes, pass source files in

Eli Schwartz (6):
  meson: simplify and parameterize various standard function checks
  meson: check for getpagesize before using it
  meson: do a full usage-based compile check for sysinfo
  meson: add a couple missing networking dependencies
  meson: fix typo in function check that prevented checking for
    hstrerror
  meson: only check for missing networking syms on non-Windows; add
    compat impls
 meson.build | 117 +++++++++++++++++++++-------------------------------
 1 file changed, 48 insertions(+), 69 deletions(-)
Range-diff against v2:
1:  e137afaff2 ! 1:  037d2f8610 meson: simplify and parameterize various standard function checks
    @@ Commit message
         prefixes are used.
     
      ## meson.build ##
    +@@ meson.build: else
    +   build_options_config.set('NO_UNIX_SOCKETS', '1')
    + endif
    + 
    +-if not compiler.has_function('pread')
    +-  libgit_c_args += '-DNO_PREAD'
    +-  libgit_sources += 'compat/pread.c'
    +-endif
    +-
    + if host_machine.system() == 'darwin'
    +   libgit_sources += 'compat/precompose_utf8.c'
    +   libgit_c_args += '-DPRECOMPOSE_UNICODE'
     @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#include <pwd.h
        libgit_c_args += '-DNO_GECOS_IN_PWENT'
      endif
    @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#i
     -if compiler.has_function('sync_file_range')
     -  libgit_c_args += '-DHAVE_SYNC_FILE_RANGE'
     -endif
    -+checkfuncs = [
    -+  'strcasestr',
    -+  'memmem',
    -+  'strlcpy',
    -+  # no compat
    -+  'strtoull',
    -+  'setenv',
    -+  'mkdtemp',
    -+  # no compat
    -+  'initgroups',
    -+]
    ++checkfuncs = {
    ++  'strcasestr' : ['strcasestr.c'],
    ++  'memmem' : ['memmem.c'],
    ++  'strlcpy' : ['strlcpy.c'],
    ++  'strtoull' : [],
    ++  'setenv' : ['setenv.c'],
    ++  'mkdtemp' : ['mkdtemp.c'],
    ++  'initgroups' : [],
    ++  'strtoumax' : ['strtoumax.c', 'strtoimax.c'],
    ++  'pread' : ['pread.c'],
    ++}
      
     -if not compiler.has_function('strcasestr')
     -  libgit_c_args += '-DNO_STRCASESTR'
    @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#i
     +if host_machine.system() == 'windows'
     +  libgit_c_args += '-DUSE_WIN32_MMAP'
     +else
    -+  checkfuncs += [
    -+    'mmap',
    -+    # unsetenv is provided by compat/mingw.c.
    -+    'unsetenv',
    -+  ]
    ++  checkfuncs += {
    ++    'mmap' : ['mmap.c'],
    ++    # provided by compat/mingw.c.
    ++    'unsetenv' : ['unsetenv.c'],
    ++  }
      endif
      
     -if not compiler.has_function('memmem')
     -  libgit_c_args += '-DNO_MEMMEM'
     -  libgit_sources += 'compat/memmem.c'
     -endif
    -+foreach func: checkfuncs
    ++foreach func, impls : checkfuncs
     +  if not compiler.has_function(func)
     +    libgit_c_args += '-DNO_' + func.to_upper()
    -+    impl = 'compat/' + func + '.c'
    -+    if fs.exists(impl)
    -+      libgit_sources += impl
    -+    endif
    ++    foreach impl : impls
    ++      libgit_sources += 'compat/' + impl
    ++    endforeach
     +  endif
     +endforeach
      
    @@ meson.build: if not compiler.has_member('struct passwd', 'pw_gecos', prefix: '#i
      endif
      
      if not compiler.has_function('strdup')
    -@@ meson.build: if not compiler.has_function('strtoumax')
    -   ]
    +@@ meson.build: if not compiler.has_function('strdup')
    +   libgit_sources += 'compat/strdup.c'
      endif
      
    +-if not compiler.has_function('strtoumax')
    +-  libgit_c_args += '-DNO_STRTOUMAX'
    +-  libgit_sources += [
    +-    'compat/strtoumax.c',
    +-    'compat/strtoimax.c',
    +-  ]
    +-endif
    +-
     -if not compiler.has_function('strtoull')
     -  libgit_c_args += '-DNO_STRTOULL'
     -endif
2:  3c4918a7b3 ! 2:  291ac2579f meson: check for getpagesize before using it
    @@ Commit message
     
      ## meson.build ##
     @@ meson.build: else
    -     'mmap',
    -     # unsetenv is provided by compat/mingw.c.
    -     'unsetenv',
    -+    # no compat, is provided by compat/mingw.c
    -+    'getpagesize',
    -   ]
    +     'mmap' : ['mmap.c'],
    +     # provided by compat/mingw.c.
    +     'unsetenv' : ['unsetenv.c'],
    ++    # provided by compat/mingw.c.
    ++    'getpagesize' : [],
    +   }
      endif
      
3:  2c19f04f3e = 3:  9af41a0c23 meson: do a full usage-based compile check for sysinfo
4:  e62057094f = 4:  041859574f meson: add a couple missing networking dependencies
5:  a6a7bdacd1 = 5:  6e20afb77f meson: fix typo in function check that prevented checking for hstrerror
6:  15f48b8991 = 6:  a60c55bb02 meson: only check for missing networking syms on non-Windows; add compat impls
-- 
2.49.0
Previous: Eli SchwartzNext: Eli Schwartz
Message 33 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.