From: René Scharfe Date: Sun, 14 Dec 2025 11:13:45 GMT Subject: Re: [PATCH v2 1/2] Makefile: add NO_HOMEBREW Message-ID: <435e4190-6c46-4404-b769-234f704f608a@web.de> In-Reply-To: On 12/14/25 8:13 AM, Junio C Hamano wrote: > Torsten Bögershausen writes: > >> On Sat, Dec 13, 2025 at 07:42:38PM +0100, René Scharfe wrote: >>> 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. >>> >>> Suggested-by: Carlo Marcelo Arenas Belón >>> Suggested-by: Torsten Bögershausen >>> Signed-off-by: René Scharfe >>> --- >>> 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 >>> # 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. > >> 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é