Re: [PATCH] config.mak.uname: use iconv from Homebrew on macOS
- From
René Scharfe <l.s.r@web.de>
- Date
- Dec 10, 2025, 17:56 UTC
- Message-ID
- <1b3509d7-e421-4136-a62c-de86213d65b2@web.de>
- In-Reply-To
- <qnb77j3b5m6rfbzr3qhmwalo5lha4gqslvzqsfuq6zur74ze7j@wqriu4w7wbzw>
On 12/10/25 12:17 PM, Carlo Marcelo Arenas Belón wrote:
Show 14 quoted lines
> On Tue, Dec 09, 2025 at 08:35:34PM -0800, René Scharfe wrote: >> 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. > > While I think Homebrew libraries are usually better than the ones that > come with the system, there are reasons why you would prefer not linking > with them and therefore forcing Homebrew as a dependency of your binaries.
The patch doesn't force, it just changes the default. You can overrule it by setting ICONVDIR explicitly, e.g. this will use the system's libiconv:
$ make ICONVDIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr
> One particularly good reason is that if you are building a fat binary ( > useful if you target recent macOS which still supports x86_64 but don't > want to distribute different versions per CPU type) then the system > library (even if broken) might be preferred.
How do you do that? By calling clang(1) with -arch x86_64 and -arch arm64 and using lipo(1) on the results? Is this possible with the current make files?
> Slightly off topic, but should another patch that adds a `NO_HOMEBREW` > Makefile flag similar to `NO_FINK` or `NO_APPLE_PORTS` be added to help > drive this?
Sounds like a it could be useful to someone.
I'm a bit puzzled that they are implemented in a Darwin section of Makefile. config.mak.uname would be a better place, no?
René