s2 icon indicating copy to clipboard operation
s2 copied to clipboard

error: use of undeclared identifier 'MAP_ANONYMOUS'

Open ryandesign opened this issue 1 year ago • 6 comments

s2 fails to build on OS X 10.10 and earlier:

https://trac.macports.org/ticket/67784

absl/debugging/internal/examine_stack.cc:58:34: error: use of undeclared identifier 'MAP_ANONYMOUS'
                   MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
                                 ^
1 error generated.

MAP_ANONYMOUS is equivalent to MAP_ANON which is available on older systems.

There are several places where you already have code to address this:

https://github.com/r-spatial/s2/blob/4fe0c97df91c98a24f379bfc3d8d4544f4835117/src/absl/base/internal/low_level_alloc.cc#L56-L63

https://github.com/r-spatial/s2/blob/4fe0c97df91c98a24f379bfc3d8d4544f4835117/src/absl/debugging/failure_signal_handler.cc#L154-L156

https://github.com/r-spatial/s2/blob/4fe0c97df91c98a24f379bfc3d8d4544f4835117/src/s2/base/port.h#L574-L581

Note that the comment is outdated: MAP_ANONYMOUS does exist on Darwin in OS X 10.11 (released 2015) and later.

There are two places where similar code needs to be added, or it needs to be moved into a more central include file:

https://github.com/r-spatial/s2/blob/4fe0c97df91c98a24f379bfc3d8d4544f4835117/src/absl/debugging/internal/examine_stack.cc#L57-L58

https://github.com/r-spatial/s2/blob/4fe0c97df91c98a24f379bfc3d8d4544f4835117/src/absl/debugging/internal/stack_consumption.cc#L113-L114

I see no reason to limit the fix to systems where __APPLE__ is defined.

ryandesign avatar Jul 29 '23 09:07 ryandesign

There are two places where similar code needs to be added

For example like this:

https://github.com/macports/macports-ports/blob/6102b5d9c70d7c21c9d20f79ce9ff65fc2b77772/R/R-s2/files/MAP_ANON.patch

ryandesign avatar Jul 29 '23 10:07 ryandesign

Thank you for reporting! We are about to update abseil and S2 to newer versions. Do you know if abseil-cpp and the latest version of google/s2geometry are able to compile on macports?

paleolimbot avatar Jul 29 '23 13:07 paleolimbot

I did not see this fix in the upstream abseil repository.

In MacPorts, the abseil port works around the problem by using a compatibility library developed by MacPorts which includes, among other things, the missing MAP_ANONYMOUS definition. It would be better to report the problem to the developers of abseil however so they can fix it.

ryandesign avatar Jul 29 '23 13:07 ryandesign

Build status information for abseil and s2geometry in MacPorts are here:

https://ports.macports.org/port/abseil/details/

https://ports.macports.org/port/s2geometry/details/

ryandesign avatar Jul 29 '23 14:07 ryandesign

It would be better to report the problem to the developers of abseil however so they can fix it.

https://github.com/abseil/abseil-cpp/pull/1500

ryandesign avatar Jul 31 '23 05:07 ryandesign

But abseil also now uses clock_gettime which is only available in macOS 10.12 and later. I reported this to them and they will not fix it; they state abseil requires macOS 10.13 or later. For MacPorts, we have a clock_gettime implementation in our compatibility library.

ryandesign avatar Jul 31 '23 15:07 ryandesign