#60252 closed defect (fixed)
zeek: error: aligned allocation function of type 'void *(std::size_t, std::align_val_t)' is only available on macOS 10.14 or newer
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | Schamschula (Marius Schamschula) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | ||
Port: | zeek |
Description
I guess this will only work on extremely new systems:
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/3rdparty/pybind11/include/pybind11/cast.h:579:34: error: aligned allocation function of type 'void *(std::size_t, std::align_val_t)' is only available on macOS 10.14 or newer vptr = ::operator new(type->type_size, ^ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/3rdparty/pybind11/include/pybind11/cast.h:579:34: note: if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/_broker.cpp:13: In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/3rdparty/pybind11/include/pybind11/functional.h:12: /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/3rdparty/pybind11/include/pybind11/pybind11.h:1008:11: error: 'operator delete' is unavailable: introduced in macOS 10.12 ::operator delete(p, s, std::align_val_t(a)); ^ /opt/local/libexec/llvm-9.0/bin/../include/c++/v1/new:208:74: note: 'operator delete' has been explicitly marked unavailable here _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; ^ In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/_broker.cpp:13: In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/3rdparty/pybind11/include/pybind11/functional.h:12: /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_zeek/zeek/work/zeek-3.1.1/aux/broker/bindings/python/3rdparty/pybind11/include/pybind11/pybind11.h:1010:11: error: 'operator delete' is unavailable: introduced in macOS 10.12 ::operator delete(p, s); ^ /opt/local/libexec/llvm-9.0/bin/../include/c++/v1/new:191:74: note: 'operator delete' has been explicitly marked unavailable here _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz) _NOEXCEPT; ^
Change History (5)
comment:1 Changed 5 years ago by Schamschula (Marius Schamschula)
comment:2 Changed 5 years ago by kencu (Ken)
This is a bit interesting, actually. On 10.6.8, where we currently use libc++ from llvm 5.0, libcxx has capability far beyond what was installed on MacOSX 10.7.
Apple has not enabled any testing for the libc++ version installed; instead, it assumes that certain OS versions have certain versions of libc++. This is mostly true, of course.
However, if we ever do start upgrading libc++ on these older 10.7 to 10.12 systems, which we could do, then we would want to disable this system version testing.
There is a simple toggle to disable it in a clang header called _config
, and I have disabled that OS version testing on my older systems to not artificially limit them, when the libc++ version often has all these capabilities.
comment:3 follow-up: 5 Changed 5 years ago by kencu (Ken)
Ah -- it turns out they made this one more complicated, and the libc++ toggle doesn't work with this alignment operator.
They have this hardcoded into the clang driver, and can be overridden by passing a flag saying that you know you have an aligned allocator, and you want to override it.
So -- not for older systems without surgery.
comment:4 Changed 5 years ago by Schamschula (Marius Schamschula)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:5 Changed 2 months ago by barracuda156
Replying to kencu:
Ah -- it turns out they made this one more complicated, and the libc++ toggle doesn't work with this alignment operator.
They have this hardcoded into the clang driver, and can be overridden by passing a flag saying that you know you have an aligned allocator, and you want to override it.
So -- not for older systems without surgery.
It also pulls in a lot of third-party stuff which has to be fixed for this to build.
OK. Sounds like we'll have to limit week to new OS versions.