[geos-devel] 3.9.0beta + GEOSwift + Linux

Andrew Hershberger andrew.d.hershberger at gmail.com
Wed Dec 2 12:47:33 PST 2020


The thread I started on the Swift forums has reached a conclusion (
https://forums.swift.org/t/confused-about-cxxlanguagestandard/42402). I'd
been conflating the C++ language standard (which is what I was specifying
via the Swift Package definition) and the C++ Standard Library (which isn't
exposed in a useful way to the Swift Package definition API at the moment).
Even if it were possible to require a specific C++ Standard Library, it
seems like it'd be more flexible to add the #import <algorithm> to the 2
files (LineLimiter.cpp and KdTree.cpp).

Andrew

On Tue, Dec 1, 2020 at 12:48 PM Andrew Hershberger <
andrew.d.hershberger at gmail.com> wrote:

> In case anyone is interested, here's the thread I started on the Swift
> forums:
> https://forums.swift.org/t/confused-about-cxxlanguagestandard/42402
>
> On Tue, Dec 1, 2020 at 12:13 AM Andrew Hershberger <
> andrew.d.hershberger at gmail.com> wrote:
>
>> Seems like the macOS builds are getting their <vector> from llvm's libc++
>> but that the build in the Swift Docker container is using the GNU C++.
>> LLVM's vector
>> (Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector)
>> imports algorithm. The GNU C++ version doesn't (at least not directly). I
>> find this Swift Package Manager behavior on Linux strange because the
>> GEOSwift/geos package definition specifically requests "cxx11" (as opposed
>> to "gnucxx11"). I'll see whether someone from the Swift team can shed
>> some light on what's going on here.
>>
>> On Mon, Nov 30, 2020 at 11:40 PM Andrew Hershberger <
>> andrew.d.hershberger at gmail.com> wrote:
>>
>>> That works. I had to add it to KdTree.cpp as well. Agree that it's
>>> strange.
>>>
>>> On Mon, Nov 30, 2020 at 9:17 PM Paul Ramsey <pramsey at cleverelephant.ca>
>>> wrote:
>>>
>>>>
>>>>
>>>> > On Nov 30, 2020, at 7:15 PM, Andrew Hershberger <
>>>> andrew.d.hershberger at gmail.com> wrote:
>>>> >
>>>> > Found another issue with the beta when testing GEOSwift on Linux
>>>> (specifically, compiling in a Docker container using the Swift Docker
>>>> image). Here's what I'm doing:
>>>> >
>>>> > $ sudo docker run -it --rm swift /bin/bash
>>>> > # cd home
>>>> > # git clone https://github.com/GEOSwift/GEOSwift.git
>>>> > # cd GEOSwift
>>>> > # git checkout geos-3.9.0-testing
>>>> > # swift test --enable-test-discovery -v
>>>> >
>>>> > Among other things, this yields the following line for
>>>> LineLimiter.cpp:
>>>> >
>>>> > /usr/bin/clang -target x86_64-unknown-linux-gnu -fPIC -g -O0
>>>> -DSWIFT_PACKAGE=1 -DDEBUG=1 -fblocks -fmodules -fmodule-name=geos -I
>>>> /home/GEOSwift/.build/checkouts/geos/Sources/geos/public
>>>> -fmodules-cache-path=/home/GEOSwift/.build/x86_64-unknown-linux-gnu/debug/ModuleCache
>>>> -DUSE_UNSTABLE_GEOS_CPP_API
>>>> -I/home/GEOSwift/.build/checkouts/geos/Sources/geos/include -MD -MT
>>>> dependencies -MF
>>>> /home/GEOSwift/.build/x86_64-unknown-linux-gnu/debug/geos.build/src/operation/overlayng/LineLimiter.cpp.d
>>>> -std=c++11 -c
>>>> /home/GEOSwift/.build/checkouts/geos/Sources/geos/src/operation/overlayng/LineLimiter.cpp
>>>> -o
>>>> /home/GEOSwift/.build/x86_64-unknown-linux-gnu/debug/geos.build/src/operation/overlayng/LineLimiter.cpp.o
>>>> >
>>>> > And this corresponding error:
>>>> >
>>>> >
>>>> /home/GEOSwift/.build/checkouts/geos/Sources/geos/src/operation/overlayng/LineLimiter.cpp:121:24:
>>>> error: no member named 'unique' in namespace 'std'
>>>> >     ptList->erase(std::unique(ptList->begin(), ptList->end()),
>>>> ptList->end());
>>>>
>>>> Add #include <algorithm>
>>>> to LineLimiter.cpp see if that helps?
>>>>
>>>> Not sure why only your version would have this problem. Maybe it's in
>>>> different headers sometimes?
>>>>
>>>>
>>>> >                   ~~~~~^
>>>> >
>>>> > Here's some clang version info:
>>>> >
>>>> > clang version 10.0.0 (git at github.com:apple/llvm-project.git
>>>> 3093af41dd65ad466dcd5603e9289244edfee4f5)
>>>> > Target: x86_64-unknown-linux-gnu
>>>> > Thread model: posix
>>>> > InstalledDir: /usr/bin
>>>> >
>>>> > Any idea what might be going on here?
>>>> >
>>>> > _______________________________________________
>>>> > geos-devel mailing list
>>>> > geos-devel at lists.osgeo.org
>>>> > https://lists.osgeo.org/mailman/listinfo/geos-devel
>>>>
>>>> _______________________________________________
>>>> geos-devel mailing list
>>>> geos-devel at lists.osgeo.org
>>>> https://lists.osgeo.org/mailman/listinfo/geos-devel
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geos-devel/attachments/20201202/0def87d1/attachment.html>


More information about the geos-devel mailing list