From: "René Scharfe" <l.s.r@web.de>
To: Git List <git@vger.kernel.org>
Cc: "Torsten Bögershausen" <tboegi@web.de>,
"Carlo Marcelo Arenas Belón" <carenas@gmail.com>,
"brian m . carlson" <sandals@crustytoothpaste.net>,
"Koji Nakamaru" <koji.nakamaru@gree.net>,
"Yee Cheng Chin" <ychin.macvim@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>
Subject: [PATCH v4 2/2] macOS: use iconv from Homebrew if needed and present
Date: Wed, 24 Dec 2025 09:03:01 +0100 [thread overview]
Message-ID: <33d65e54-4f02-4167-bc4e-ec0ee36fc786@web.de> (raw)
In-Reply-To: <ce030c90-f635-42b5-82e1-814cd4c29505@web.de>
The library function iconv(3) supplied with macOS versions 15.7.2
(Sequoia) and 26.1 (Tahoe) is unreliable when doing conversions from
ISO-2022-JP to UTF-8 in multiple steps; t3900 reports this breakage:
not ok 17 - ISO-2022-JP should be shown in UTF-8 now
not ok 25 - ISO-2022-JP should be shown in UTF-8 now
not ok 38 - commit --fixup into ISO-2022-JP from UTF-8
As a workaround, use libiconv from Homebrew, if available. Search it in
its default locations: /opt/homebrew for Apple Silicon and /usr/local
for macOS Intel, with the former taking precedence. Respect ICONVDIR if
already set by the user, though.
Helped-by: Koji Nakamaru <koji.nakamaru@gree.net>
Signed-off-by: René Scharfe <l.s.r@web.de>
---
Makefile | 12 ++++++++++--
config.mak.uname | 4 ++++
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 9aef22c032..b7eba509c6 100644
--- a/Makefile
+++ b/Makefile
@@ -101,12 +101,15 @@ 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 don't want to use gettext and msgfmt
-# installed by Homebrew.
+# Define NO_HOMEBREW if you don't want to use gettext, libiconv and
+# msgfmt installed by Homebrew.
#
# Define HOMEBREW_PREFIX if you have Homebrew installed in a non-default
# location on macOS or on Linux and want to use it.
#
+# Define USE_HOMEBREW_LIBICONV to link against libiconv installed by
+# Homebrew, if present.
+#
# 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.
@@ -1708,6 +1711,11 @@ endif
ifeq ($(shell test -x $(HOMEBREW_PREFIX)/opt/gettext/msgfmt && echo y),y)
MSGFMT = $(HOMEBREW_PREFIX)/opt/gettext/msgfmt
endif
+ifdef USE_HOMEBREW_LIBICONV
+ifeq ($(shell test -d $(HOMEBREW_PREFIX)/opt/libiconv && echo y),y)
+ ICONVDIR ?= $(HOMEBREW_PREFIX)/opt/libiconv
+endif
+endif
endif
endif
diff --git a/config.mak.uname b/config.mak.uname
index db2a922751..38b35af366 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -124,6 +124,7 @@ ifeq ($(uname_S),Darwin)
# - MacOS 10.0.* and MacOS 10.1.0 = Darwin 1.*
# - MacOS 10.x.* = Darwin (x+4).* for (1 <= x)
# i.e. "begins with [15678] and a dot" means "10.4.* or older".
+ DARWIN_MAJOR_VERSION = $(shell expr "$(uname_R)" : '\([0-9]*\)\.')
ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
OLD_ICONV = UnfortunatelyYes
NO_APPLE_COMMON_CRYPTO = YesPlease
@@ -154,6 +155,9 @@ ifeq ($(uname_S),Darwin)
else
HOMEBREW_PREFIX = /usr/local
endif
+ ifeq ($(shell test "$(DARWIN_MAJOR_VERSION)" -ge 24 && echo 1),1)
+ USE_HOMEBREW_LIBICONV = UnfortunatelyYes
+ endif
# The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require
# Unix domain sockets and PThreads.
--
2.52.0
prev parent reply other threads:[~2025-12-24 8:03 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-08 22:59 t3900 failure on macOS, iconv(3) broken? René Scharfe
2025-12-09 3:18 ` Koji Nakamaru
2025-12-09 3:50 ` Yee Cheng Chin
2025-12-09 4:03 ` Collin Funk
2025-12-09 16:33 ` Torsten Bögershausen
2025-12-09 19:35 ` René Scharfe
2025-12-09 21:24 ` Torsten Bögershausen
2025-12-09 22:25 ` René Scharfe
2025-12-09 19:35 ` [PATCH] config.mak.uname: use iconv from Homebrew on macOS René Scharfe
2025-12-09 20:39 ` Yee Cheng Chin
2025-12-09 21:27 ` René Scharfe
2025-12-10 11:17 ` Carlo Marcelo Arenas Belón
2025-12-10 17:56 ` René Scharfe
2025-12-11 2:53 ` Junio C Hamano
2025-12-11 11:17 ` Carlo Marcelo Arenas Belón
2025-12-12 2:20 ` Junio C Hamano
2025-12-12 9:16 ` René Scharfe
2025-12-12 10:02 ` Carlo Marcelo Arenas Belón
2025-12-12 13:04 ` Re* " Junio C Hamano
2025-12-12 13:48 ` René Scharfe
2025-12-12 23:39 ` Junio C Hamano
2025-12-10 16:42 ` Torsten Bögershausen
2025-12-10 17:56 ` René Scharfe
2025-12-10 23:10 ` brian m. carlson
2025-12-11 2:36 ` Junio C Hamano
2025-12-11 9:59 ` Junio C Hamano
2025-12-11 14:34 ` René Scharfe
2025-12-12 3:35 ` Junio C Hamano
2025-12-12 10:40 ` t3900 failure on macOS, iconv(3) broken? René Scharfe
2025-12-13 18:42 ` [PATCH v2 1/2] Makefile: add NO_HOMEBREW René Scharfe
2025-12-14 6:45 ` Torsten Bögershausen
2025-12-14 7:13 ` Junio C Hamano
2025-12-14 9:02 ` Torsten Bögershausen
2025-12-14 11:07 ` Junio C Hamano
2025-12-14 11:13 ` René Scharfe
2025-12-14 23:19 ` Junio C Hamano
2025-12-16 18:53 ` René Scharfe
2025-12-13 18:42 ` [PATCH v2 2/2] config.mak.uname: use iconv from Homebrew on macOS René Scharfe
2025-12-16 18:53 ` [PATCH v3 1/2] macOS: make Homebrew use configurable René Scharfe
2025-12-16 19:11 ` René Scharfe
2025-12-16 21:49 ` Torsten Bögershausen
2025-12-16 18:53 ` [PATCH v3 2/2] macOS: use iconv from Homebrew if present René Scharfe
2025-12-24 7:52 ` [PATCH v4 0/2] macOS: use iconv from Homebrew if needed and present René Scharfe
2025-12-24 8:02 ` [PATCH v4 1/2] macOS: make Homebrew use configurable René Scharfe
2025-12-24 8:03 ` René Scharfe [this message]
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=33d65e54-4f02-4167-bc4e-ec0ee36fc786@web.de \
--to=l.s.r@web.de \
--cc=carenas@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=koji.nakamaru@gree.net \
--cc=sandals@crustytoothpaste.net \
--cc=tboegi@web.de \
--cc=ychin.macvim@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.