From: Patrick Steinhardt <ps@pks.im>
To: Eli Schwartz <eschwartz@gentoo.org>
Cc: git@vger.kernel.org, Sam James <sam@gentoo.org>
Subject: Re: [PATCH 1/6] meson: simplify and parameterize various standard function checks
Date: Tue, 22 Apr 2025 09:31:44 +0200 [thread overview]
Message-ID: <aAdF4DzFCZ3uOJCx@pks.im> (raw)
In-Reply-To: <83d9fda5-8399-47fb-87b2-a8b376cf1625@gentoo.org>
On Mon, Apr 21, 2025 at 04:04:30PM -0400, Eli Schwartz wrote:
> On 4/21/25 1:51 PM, Eli Schwartz wrote:
> > diff --git a/meson.build b/meson.build
> > index c47cb79af0..6c147c22a4 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1322,45 +1339,15 @@ if not compiler.has_function('strtoumax')
> > ]
> > endif
> >
> > -if not compiler.has_function('strtoull')
> > - libgit_c_args += '-DNO_STRTOULL'
> > -endif
> > -
> > -if not compiler.has_function('setenv')
> > - libgit_c_args += '-DNO_SETENV'
> > - libgit_sources += 'compat/setenv.c'
> > -endif
> > -
> > if not compiler.has_function('qsort')
> > libgit_c_args += '-DINTERNAL_QSORT'
> > endif
> > libgit_sources += 'compat/qsort_s.c'
>
>
> ... for example, the Makefile says here:
>
>
> # Define INTERNAL_QSORT to use Git's implementation of qsort(), which
> # is a simplified version of the merge sort used in glibc. This is
> # recommended if Git triggers O(n^2) behavior in your platform's
> # qsort().
>
> cmake unconditionally defines it (???)
Our CMake build instructions shouldn't be treated as canonical source of
truth. They're good enough for some usecases, but they are not as
feature complete as any of Makefile/autoconf/Meson.
> config.mak.uname says:
>
> - AIX:
> INTERNAL_QSORT = UnfortunatelyYes
>
> Seems to date back to commit 377d9c409ffe0f0d994b929aeb94716139207b9d.
> "Unfortunate" indeed.
>
>
> - MinGW:
> INTERNAL_QSORT = YesPlease
>
> Windows claims to have a qsort but perhaps it is very slow and bes
> avoided?
>
> We should probably stop *checking* for qsort and simply encode the
> platforms we know are slow and automatically skip it there. Can I get
> confirmation regarding Windows? :)
I'd rather prefer to try and detect this generically instead of adding
more platform-specific configuration. It is way simpler to maintain, and
if we ever see that things don't work well on a specific platform we may
still reconsider at that point in time.
> > -# unsetenv is provided by compat/mingw.c.
> > -if host_machine.system() != 'windows' and not compiler.has_function('unsetenv')
> > - libgit_c_args += '-DNO_UNSETENV'
> > - libgit_sources += 'compat/unsetenv.c'
> > -endif
> > -
> > -if not compiler.has_function('mkdtemp')
> > - libgit_c_args += '-DNO_MKDTEMP'
> > - libgit_sources += 'compat/mkdtemp.c'
> > -endif
> > -
> > -if not compiler.has_function('initgroups')
> > - libgit_c_args += '-DNO_INITGROUPS'
> > -endif
> > -
> > if compiler.has_function('getdelim')
> > libgit_c_args += '-DHAVE_GETDELIM'
> > endif
>
>
> But stuff like this, why isn't it consistent with the other functions?
> What's the difference between HAVE_XXX and NO_XXX?
Inconsistencies like this are what you get in a codebase that is 20
years old. Many things have grown organically, and one hand doesn't
always know what the other hand is doing.
I agree that in the best case we'd unify these. But unfortunately, this
is not trivial because those are part of the build interface for our
Makefiles. People may have `HAVE_GETDELIM = YesPlease` in their
`config.mak` file, and we don't want to break this usecase. So if we
were to change this in the future, we'd have to also introduce shims for
backwards compatibility.
Patrick
next prev parent reply other threads:[~2025-04-22 7:31 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-21 17:51 [PATCH 1/6] meson: simplify and parameterize various standard function checks Eli Schwartz
2025-04-21 17:51 ` [PATCH 2/6] meson: check for getpagesize before using it Eli Schwartz
2025-04-22 7:31 ` Patrick Steinhardt
2025-04-24 23:48 ` Junio C Hamano
2025-04-25 0:06 ` Eli Schwartz
2025-04-21 17:51 ` [PATCH 3/6] meson: do a full usage-based compile check for sysinfo Eli Schwartz
2025-04-22 7:31 ` Patrick Steinhardt
2025-04-21 17:51 ` [PATCH 4/6] meson: add a couple missing networking dependencies Eli Schwartz
2025-04-22 7:31 ` Patrick Steinhardt
2025-04-21 17:51 ` [PATCH 5/6] meson: fix typo in function check that prevented checking for hstrerror Eli Schwartz
2025-04-22 7:31 ` Patrick Steinhardt
2025-04-21 17:51 ` [PATCH 6/6] meson: only check for missing networking syms on non-Windows; add compat impls Eli Schwartz
2025-04-22 7:31 ` Patrick Steinhardt
2025-04-22 15:27 ` Eli Schwartz
2025-04-23 11:25 ` Patrick Steinhardt
2025-04-21 20:04 ` [PATCH 1/6] meson: simplify and parameterize various standard function checks Eli Schwartz
2025-04-22 0:33 ` Junio C Hamano
2025-04-22 0:58 ` Eli Schwartz
2025-04-22 7:31 ` Patrick Steinhardt [this message]
2025-04-22 15:36 ` Eli Schwartz
2025-04-23 11:25 ` Patrick Steinhardt
2025-04-22 7:31 ` Patrick Steinhardt
2025-04-22 15:17 ` Junio C Hamano
2025-04-25 0:13 ` [PATCH v2 0/6] meson: miscellaneous system detection fixes Eli Schwartz
2025-04-25 0:13 ` [PATCH v2 1/6] meson: simplify and parameterize various standard function checks Eli Schwartz
2025-04-25 0:13 ` [PATCH v2 2/6] meson: check for getpagesize before using it Eli Schwartz
2025-04-25 0:13 ` [PATCH v2 3/6] meson: do a full usage-based compile check for sysinfo Eli Schwartz
2025-04-25 0:13 ` [PATCH v2 4/6] meson: add a couple missing networking dependencies Eli Schwartz
2025-04-25 0:13 ` [PATCH v2 5/6] meson: fix typo in function check that prevented checking for hstrerror Eli Schwartz
2025-04-25 0:13 ` [PATCH v2 6/6] meson: only check for missing networking syms on non-Windows; add compat impls Eli Schwartz
2025-04-25 4:39 ` [PATCH v2 0/6] meson: miscellaneous system detection fixes Patrick Steinhardt
2025-04-25 5:27 ` Eli Schwartz
2025-04-25 5:25 ` [PATCH v3 " Eli Schwartz
2025-04-25 5:25 ` [PATCH v3 1/6] meson: simplify and parameterize various standard function checks Eli Schwartz
2025-04-25 5:25 ` [PATCH v3 2/6] meson: check for getpagesize before using it Eli Schwartz
2025-04-25 5:25 ` [PATCH v3 3/6] meson: do a full usage-based compile check for sysinfo Eli Schwartz
2025-04-25 5:25 ` [PATCH v3 4/6] meson: add a couple missing networking dependencies Eli Schwartz
2025-04-25 5:25 ` [PATCH v3 5/6] meson: fix typo in function check that prevented checking for hstrerror Eli Schwartz
2025-04-25 5:25 ` [PATCH v3 6/6] meson: only check for missing networking syms on non-Windows; add compat impls Eli Schwartz
2025-04-25 9:53 ` [PATCH v3 0/6] meson: miscellaneous system detection fixes Patrick Steinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aAdF4DzFCZ3uOJCx@pks.im \
--to=ps@pks.im \
--cc=eschwartz@gentoo.org \
--cc=git@vger.kernel.org \
--cc=sam@gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).