joto / osmium

C++/Javascript framework for working with OSM files.
http://wiki.openstreetmap.org/wiki/Osmium
GNU General Public License v3.0
123 stars 31 forks source link

Fails to build with GEOS 3.6.0 #100

Open sebastic opened 7 years ago

sebastic commented 7 years ago

GEOS 3.6.0 has been released, and unfortunately osmium fails to build with it:

g++ -g -O2 -fdebug-prefix-map=/build/osmium-0.0~20160425-e2e4368=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I../include -I/usr/include/libshp -DOSMIUM_WITH_DEBUG -I/usr/include -Wall -Wextra -Wdisabled-optimization -pedantic -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wsign-promo -Wno-long-long -o osmjs osmjs.cpp -fPIE -pie -Wl,-z,relro -Wl,-z,now -lexpat -lz -lpthread -lprotobuf-lite -losmpbf -lv8 -licuuc -lshp -L/usr/lib/x86_64-linux-gnu -lgeos-3.6.0
In file included from ../include/osmium/geometry/multipolygon.hpp:34:0,
                 from ../include/osmium/javascript/wrapper/geometry.hpp:39,
                 from ../include/osmium/javascript/handler.hpp:32,
                 from ../include/osmium/javascript.hpp:27,
                 from osmjs.cpp:30:
../include/osmium/geometry/geos.hpp: In function 'geos::geom::GeometryFactory* Osmium::Geometry::geos_geometry_factory()':
../include/osmium/geometry/geos.hpp:54:63: error: 'geos::geom::GeometryFactory::GeometryFactory(const geos::geom::PrecisionModel*, int)' is protected within this context
             static geos::geom::GeometryFactory factory(&pm, -1);
                                                               ^
In file included from ../include/osmium/geometry/geos.hpp:28:0,
                 from ../include/osmium/geometry/multipolygon.hpp:34,
                 from ../include/osmium/javascript/wrapper/geometry.hpp:39,
                 from ../include/osmium/javascript/handler.hpp:32,
                 from ../include/osmium/javascript.hpp:27,
                 from osmjs.cpp:30:
/usr/include/geos/geom/GeometryFactory.h:464:2: note: declared protected here
  GeometryFactory(const PrecisionModel* pm, int newSRID);
  ^~~~~~~~~~~~~~~
In file included from ../include/osmium/geometry/multipolygon.hpp:34:0,
                 from ../include/osmium/javascript/wrapper/geometry.hpp:39,
                 from ../include/osmium/javascript/handler.hpp:32,
                 from ../include/osmium/javascript.hpp:27,
                 from osmjs.cpp:30:
../include/osmium/geometry/geos.hpp:54:63: error: 'virtual geos::geom::GeometryFactory::~GeometryFactory()' is protected within this context
             static geos::geom::GeometryFactory factory(&pm, -1);
                                                               ^
In file included from ../include/osmium/geometry/geos.hpp:28:0,
                 from ../include/osmium/geometry/multipolygon.hpp:34,
                 from ../include/osmium/javascript/wrapper/geometry.hpp:39,
                 from ../include/osmium/javascript/handler.hpp:32,
                 from ../include/osmium/javascript.hpp:27,
                 from osmjs.cpp:30:
/usr/include/geos/geom/GeometryFactory.h:474:10: note: declared protected here
  virtual ~GeometryFactory();
          ^

This change seems to be the culprit.

- C++ API changes:
  - Automatic memory management for GeometryFactory objects
joto commented 7 years ago

Osmium is not maintained any more. It is time to retire it and switch to libosmium.

sebastic commented 7 years ago

I'm aware of that :-)

Since the upcoming Debian stretch release will be the first to include libosmium & friends in the release itself (not via backports as for jessie), I'd prefer to have both the old and new osmium to allow users to switch during the stretch lifetime.

If we cannot patch this issue, we'll remove osmium from Debian forcing users to adopt libosmium.