From: Junio C Hamano <gitster@pobox.com>
To: Brad Smith <brad@comstyle.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] exec_cmd: RUNTIME_PREFIX on OpenBSD systems
Date: Thu, 17 Sep 2026 06:45:14 -0700 [thread overview]
Message-ID: <xmqqy0d0t2j9.fsf@gitster.g> (raw)
In-Reply-To: <aqthQ3u4eW1wHCn7@humpty.home.comstyle.com> (Brad Smith's message of "Wed, 16 Sep 2026 23:40:51 -0400")
Brad Smith <brad@comstyle.com> writes:
> Enable Git to resolve its own binary location using getexecpath().
That may not be incorrect information per-se, but lacks critical
bits. Natural initial questions that come to my mind are...
Why would one want to use getexecpath() over whatever OpenBSD
ports of Git have been using happily? Is the old way being
removed? Is the new way being more accurate? In what
situations does the difference matter? Is everybody on OpenBSD
able to use this new function? Do only certain, and/or
presumably later, verions of OpenBSD have it? How widely is it
available? How long has it been available?
Your proposed commit log messages do not answer any of these
questions, but it should. The title can also use a bit of tweak to
identify which versions of OpenBSD this patch is relevant.
> Signed-off-by: Brad Smith <brad@comstyle.com>
> ---
> Makefile | 7 +++++++
> config.mak.uname | 3 +++
> exec-cmd.c | 24 ++++++++++++++++++++++++
> 3 files changed, 34 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index d4b775953d..9e3d37b5b4 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -378,6 +378,9 @@ include shared.mak
> # Perl scripts to use a modified entry point header allowing them to resolve
> # support files at runtime.
> #
> +# When using RUNTIME_PREFIX, define HAVE_GETEXECPATH if your platform supports
> +# the getexecpath() function.
> +#
> # When using RUNTIME_PREFIX, define HAVE_BSD_KERN_PROC_SYSCTL if your platform
> # supports the KERN_PROC BSD sysctl function.
> #
> @@ -2356,6 +2359,10 @@ endif
>
> ifdef RUNTIME_PREFIX
>
> + ifdef HAVE_GETEXECPATH
> + BASIC_CFLAGS += -DHAVE_GETEXECPATH
> + endif
> +
> ifdef HAVE_BSD_KERN_PROC_SYSCTL
> BASIC_CFLAGS += -DHAVE_BSD_KERN_PROC_SYSCTL
> endif
> diff --git a/config.mak.uname b/config.mak.uname
> index e28870434d..270aff1772 100644
> --- a/config.mak.uname
> +++ b/config.mak.uname
> @@ -343,6 +343,9 @@ ifeq ($(uname_S),OpenBSD)
> CSPRNG_METHOD = arc4random
> FREAD_READS_DIRECTORIES = UnfortunatelyYes
> FILENO_IS_A_MACRO = UnfortunatelyYes
> + ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -ge 8 && echo 1),1)
> + HAVE_GETEXECPATH = YesPlease
> + endif
> endif
> ifeq ($(uname_S),MirBSD)
> NO_STRCASESTR = YesPlease
> diff --git a/exec-cmd.c b/exec-cmd.c
> index 507e67d528..5251da4229 100644
> --- a/exec-cmd.c
> +++ b/exec-cmd.c
> @@ -129,6 +129,26 @@ static int git_get_exec_path_bsd_sysctl(struct strbuf *buf)
> }
> #endif /* HAVE_BSD_KERN_PROC_SYSCTL */
>
> +#ifdef HAVE_GETEXECPATH
> +/*
> + * Resolves the executable path using getexecpath(3).
> + *
> + * Returns 0 on success, -1 on failure.
> + */
> +static int git_get_exec_path_getexecpath(struct strbuf *buf)
> +{
> + char path[PATH_MAX];
> + if (getexecpath(path, sizeof(path)) == 0) {
> + trace_printf(
> + "trace: resolved executable path from getexecpath: %s\n",
> + path);
> + strbuf_addstr(buf, path);
> + return 0;
> + }
> + return -1;
> +}
> +#endif /* HAVE_GETEXECPATH */
> +
> #ifdef HAVE_NS_GET_EXECUTABLE_PATH
> /*
> * Resolves the executable path by querying Darwin application stack.
> @@ -209,6 +229,10 @@ static int git_get_exec_path(struct strbuf *buf, const char *argv0)
> * after the first successful method.
> */
> if (
> +#ifdef HAVE_GETEXECPATH
> + git_get_exec_path_getexecpath(buf) &&
> +#endif /* HAVE_GETEXECPATH */
> +
> #ifdef HAVE_BSD_KERN_PROC_SYSCTL
> git_get_exec_path_bsd_sysctl(buf) &&
> #endif /* HAVE_BSD_KERN_PROC_SYSCTL */
next prev parent reply other threads:[~2026-09-17 13:45 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 3:40 [PATCH] exec_cmd: RUNTIME_PREFIX on OpenBSD systems Brad Smith
2026-09-17 13:45 ` Junio C Hamano [this message]
2026-09-21 2:10 ` Brad Smith
2026-09-21 16:57 ` Junio C Hamano
[not found] <1789994808-30642-mlmmj-3f9f948b@vger.kernel.org>
2026-09-21 13:00 ` Chris Torek
2026-09-21 16:43 ` Johannes Sixt
2026-09-22 1:17 ` Chris Torek
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=xmqqy0d0t2j9.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=brad@comstyle.com \
--cc=git@vger.kernel.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