On 2026/08/19 09:14, Theo Buehler wrote:
> fmt relies on libc++ headers pulling in stdlib.h somehow. This on longer
> happens in llvm22's libc++, and the build fails.  The diff fixes this by
> following the approach taken in
> 
> https://github.com/fmtlib/fmt/commit/b77a7516251d21aef1c6130dad116edff1a13173
> 
> It is not hard to update fmt itself to 12.2.0 which does build and pass
> tests, but I seem to remember that this has a tendency of breaking things
> that have embedded copies, so this seems the safer approach for now.

This seems a good approach for now. At this point embedded copies are
probably slightly less of an issue than API changes, which are very
common with fmt (there are some in 12.0.0 and 12.2.0, though I don't
know if they affect ports).

> /usr/ports/pobj/fmt-11.2.0/fmt-11.2.0/include/fmt/format.h:747:28: error: use 
> of undeclared identifier 'malloc'
>   747 |     T* p = static_cast<T*>(malloc(n * sizeof(T)));
>       |                            ^~~~~~
> /usr/ports/pobj/fmt-11.2.0/fmt-11.2.0/include/fmt/format.h:752:35: error: use 
> of undeclared identifier 'free'
>   752 |   void deallocate(T* p, size_t) { free(p); }
>       |                                   ^~~~
> 
> Index: Makefile
> ===================================================================

ok.

> RCS file: /cvs/ports/devel/fmt/Makefile,v
> diff -u -p -r1.7 Makefile
> --- Makefile  19 Nov 2025 11:50:17 -0000      1.7
> +++ Makefile  19 Aug 2026 07:07:52 -0000
> @@ -3,6 +3,7 @@ COMMENT=              alternative formatting library
>  GH_ACCOUNT=          fmtlib
>  GH_PROJECT=          fmt
>  GH_TAGNAME=          11.2.0
> +REVISION=            0
>  
>  SHARED_LIBS=         fmt     2.1
>  
> Index: patches/patch-include_fmt_format_h
> ===================================================================
> RCS file: patches/patch-include_fmt_format_h
> diff -N patches/patch-include_fmt_format_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-include_fmt_format_h        19 Aug 2026 07:07:42 -0000
> @@ -0,0 +1,12 @@
> +Index: include/fmt/format.h
> +--- include/fmt/format.h.orig
> ++++ include/fmt/format.h
> +@@ -41,6 +41,8 @@
> + #include "base.h"
> + 
> + #ifndef FMT_MODULE
> ++#  include <stdlib.h> // malloc, free
> ++
> + #  include <cmath>    // std::signbit
> + #  include <cstddef>  // std::byte
> + #  include <cstdint>  // uint32_t
> 

Reply via email to