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

Re: [PATCH v3] meson: disable PCRE2 dependency by default in macOS

From
Patrick Steinhardt <ps@pks.im>
Date
Jul 15, 2025, 08:46 UTC
Message-ID
<aHYVdMii_rP5-ywa@pks.im>
In-Reply-To
<2414b962-e843-4ac0-814f-bb4bc7aacda7@gentoo.org>
On Mon, Jul 14, 2025 at 09:55:27PM -0400, Eli Schwartz wrote:
Show 29 quoted lines
> On 7/13/25 1:48 PM, Carlo Marcelo Arenas Belón wrote:
> > diff --git a/meson.build b/meson.build
> > index 7fea4a34d6..e1475be6c8 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1055,7 +1055,8 @@ else
> >    build_options_config.set('NO_ICONV', '1')
> >  endif
> >  
> > -pcre2 = dependency('libpcre2-8', required: get_option('pcre2'), default_options: ['default_library=static', 'test=false'])
> > +pcre2_feature = get_option('pcre2').disable_auto_if(host_machine.system() == 'darwin' and not get_option('macos_workaround_system_pcre2'))
> > +pcre2 = dependency('libpcre2-8', required: pcre2_feature, default_options: ['default_library=static', 'test=false'])
> >  if pcre2.found()
> >    libgit_dependencies += pcre2
> >    libgit_c_args += '-DUSE_LIBPCRE2'
> 
> 
> Instead of disable_auto_if, we should simply verify a working install.
> 
> if pcre2.found() and pcre2.type_name() != 'internal' and
> host_machine.system() == 'darwin'
>     # macOS installs a broken system package, double check
>     if not compiler.has_header('pcre2.h', dependencies: pcre2)
>         if get_option('pcre2').enabled()
>             error('broken pcre2 install found but pcre2 is required')
>         endif
>         # Replace with not-found-dependency
>         pcre2 = dependency('', required: false)
>         warning('broken pcre2 install found, disabling pcre2 feature')

Okay. So if the `pcre2` feature was explicitly enabled we error out and abort, otherwise we print a warning and disable it. This makes a lot of sense to me.

Show 12 quoted lines
>     endif
> endif
> 
> if pcre2.found()
>     libgit_dependencies += pcre2
> 
> [...]
> 
> 
> Please double-check my work, that this compiler.has_header() is
> sufficient on your reproducer system to detect and disable the
> non-working feature.

I think auto-detecting such broken PCRE2 libraries is indeed the best way forward, thanks!

Show 14 quoted lines
> > diff --git a/meson_options.txt b/meson_options.txt
> > index e7f768df24..f63ff32556 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -45,7 +45,7 @@ option('gitweb', type: 'feature', value: 'auto',
> >    description: 'Build Git web interface. Requires Perl.')
> >  option('iconv', type: 'feature', value: 'auto',
> >    description: 'Support reencoding strings with different encodings.')
> > -option('pcre2', type: 'feature', value: 'enabled',
> > +option('pcre2', type: 'feature', value: 'auto',
> 
> 
> This part is fine. We shouldn't default-fail if it isn't found, when we
> can't expect it to be universally available.

Agreed. I guess tha only reason why I picked "enabled" here is because we also got a wrapper in "subprojects/". But with this new workaround in place I agree that it is sensible to switch to "auto".

Patrick
Previous: Eli SchwartzNext: Carlo Arenas
Message 11 of 28 in “meson: disable PCRE2 dependency by default”
  1. meson: disable PCRE2 dependency by defaultCarlo Marcelo Arenas Belón, Jul 12, 2025
  2. brian m. carlsonJul 12, 2025
  3. Carlo ArenasJul 14, 2025
  4. Junio C HamanoJul 14, 2025
  5. Carlo Marcelo Arenas BelónJul 14, 2025
  6. Junio C HamanoJul 14, 2025
  7. meson: disable PCRE2 dependency by default in macOSCarlo Marcelo Arenas Belón, Jul 13, 2025
  8. Junio C HamanoJul 13, 2025
  9. meson: disable PCRE2 dependency by default in macOSCarlo Marcelo Arenas Belón, Jul 13, 2025
  10. Eli SchwartzJul 15, 2025
  11. Patrick SteinhardtJul 15, 2025
  12. Carlo ArenasJul 15, 2025
  13. Patrick SteinhardtJul 15, 2025
  14. Carlo ArenasJul 15, 2025
  15. Eli SchwartzJul 15, 2025
  16. Carlo ArenasJul 15, 2025
  17. Eli SchwartzJul 15, 2025
  18. meson: woraround broken system PCRE2 dependency in macOSCarlo Marcelo Arenas Belón, Jul 15, 2025
  19. Junio C HamanoJul 15, 2025
  20. Eric SunshineJul 15, 2025
  21. meson: work around broken system PCRE2 dependency in macOSCarlo Marcelo Arenas Belón, Jul 16, 2025
  22. Junio C HamanoJul 16, 2025
  23. Junio C HamanoJul 16, 2025
  24. Eli SchwartzJul 16, 2025
  25. Carlo ArenasJul 16, 2025
  26. meson: work around broken system PCRE2 dependency in macOSCarlo Marcelo Arenas Belón, Jul 18, 2025
  27. Junio C HamanoJul 23, 2025
  28. Patrick SteinhardtJul 24, 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.