Thread (3 messages) read the whole thread 3 messages, 3 authors, 2025-12-14

Re: [PATCH v2 1/2] Makefile: add NO_HOMEBREW

From: René Scharfe <hidden>
Date: 2025-12-14 11:13:48

On 12/14/25 8:13 AM, Junio C Hamano wrote:
Torsten Bögershausen [off-list ref] writes:
quoted
On Sat, Dec 13, 2025 at 07:42:38PM +0100, René Scharfe wrote:
quoted
Allow disabling the use of Homebrew on macOS, or Linux for that matter,
like we already do for other package sources, MacPorts and Fink in
particular.  This is useful for packagers, or anyone else who wants to
control dependencies.
Good.
quoted
Suggested-by: Carlo Marcelo Arenas Belón <redacted>
Suggested-by: Torsten Bögershausen <redacted>
Signed-off-by: René Scharfe <redacted>
---
 Makefile         | 17 +++++++++++++++++
 config.mak.uname | 11 +++++------
 2 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index 6fc322ff88..dbd2760d18 100644
--- a/Makefile
+++ b/Makefile
@@ -100,6 +100,9 @@ include shared.mak
 # specify your own (or DarwinPort's) include directories and
 # library directories by defining CFLAGS and LDFLAGS appropriately.
 #
+# Define NO_HOMEBREW if you have Homebrew and don't want Git to link
+# against libraries installed by it.
+#
Good
quoted
 # Define NO_APPLE_COMMON_CRYPTO if you are building on Darwin/Mac OS X
 # and do not want to use Apple's CommonCrypto library.  This allows you
 # to provide your own OpenSSL library, for example from MacPorts.
@@ -1692,6 +1695,20 @@ ifeq ($(uname_S),Darwin)
 	PTHREAD_LIBS =
 endif
 
+ifndef NO_HOMEBREW
+        ifdef HOMEBREW_PREFIX
Question from a homebrew newbie, kind of:
Where do the HOMEBREW_PREFIX (and other HOMEBREW...) come from,
and what do they do ?
I understand these are purely _our_ thing.  HOMEBREW_PREFIX and
HOMEBREW_GETTEXT_PREFIX are set in config.mak.uname (added in this
patch).
Right.
I presume that those who installed homebrew at non-default
location and want to use homebrew would not set NO_HOMEBREW and set
HOMEBREW_PREFIX to the location they installed their homebrew which
would be different from the default set in config.mak.uname.  Those
who have homebrew installed at default location.
quoted
Running
git grep HOMEBREW
gives
ci/install-dependencies.sh:     export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1

Whould it make sense to have a few words here as a comment ?
Yeah, like 

# Define HOMEBREW_PREFIX to point at an appropriate directory, iff
# you want to use homebrew installed at a non-standard location.
# /opt/homebrew on Apple Silicon macOS and at /usr/local on Intel
# macOS are the standard locations (and you do not have to define
# this variable yourself).

perhaps?  Similarly for other variables.
Sounds useful, but before this can become a documented feature it
deserves more research and refinement.  The current code uses what it
can find in an ad-hoc manner, and the patches just extend this behavior
to libiconv.  A user-settable HOMEBREW_PREFIX would require a more
principled approach, so that overriding it affects the search for
gettext and libiconv.

I guess that would look like this in config.mak.uname:

ifeq ($(uname_S),Darwin)
ifeq ($(uname_M),arm64)
	HOMEBREW_PREFIX = /opt/homebrew
else
	HOMEBREW_PREFIX = /usr/local
endif
	USE_HOMEBREW_GETTEXT = IfAvailable
	USE_HOMEBREW_MSGFMT = IfAvailable
	USE_HOMEBREW_LIBICONV = IfAvailable
endif

... and in Makefile:

ifndef NO_HOMEBREW
ifdef HOMEBREW_PREFIX
ifdef USE_HOMEBREW_GETTEXT
	# magic!
endif
ifdef USE_HOMEBREW_MSGFMT
	# more magic!
endif
ifdef USE_HOMEBREW_LIBICONV
ifeq ($(shell test -d $(HOMEBREW_PREFIX)/opt/libiconv && echo y),y)
	ICONVDIR ?= $(HOMEBREW_PREFIX)/opt/libiconv
endif
endif
endif

Perhaps the magic parts just need to check for the existence of
$(HOMEBREW_PREFIX)/opt/gettext and use that, but the current code is
more complicated for some reason.

René
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help