[geos-devel] [GEOS] #983: Problem with 3.7 branch and shapely

GEOS geos-trac at osgeo.org
Mon Aug 12 04:52:52 PDT 2019

#983: Problem with 3.7 branch and shapely
 Reporter:  aom         |      Owner:  geos-devel@…
     Type:  defect      |     Status:  new
 Priority:  major       |  Milestone:
Component:  Default     |    Version:  3.7.0
 Severity:  Unassigned  |   Keywords:

 == problem

 Using the git 3.7 branch (which I guess provides the current 3.7.x
 distribution), the GEOSversion function returns:

 ``3.7.3-CAPI-1.11.3 3.7.2-6-ge1399c2``

 Which makes the shapely installation fails, as it expect a "%d.%d.%d blah
 %d.%d.%d" format and assert otherwise:
 # pip install shapely --no-binary shapely
 Collecting shapely
   Using cached
     Complete output from command python setup.py egg_info:
     Traceback (most recent call last):
       File "<string>", line 1, in <module>
       File "/tmp/pip-install-2spcnx3e/shapely/setup.py", line 80, in
         from shapely._buildcfg import geos_version_string, geos_version, \
       File "/tmp/pip-install-2spcnx3e/shapely/shapely/_buildcfg.py", line
 248, in <module>
         geos_version_string, geos_version, geos_capi_version =
       File "/tmp/pip-install-2spcnx3e/shapely/shapely/_buildcfg.py", line
 242, in _geos_version
         assert len(res) == 2, res
     AssertionError: [('3', '7', '3'), ('1', '11', '3'), ('3', '7', '2')]

 As a result, it is impossible to use that branch through the python

 Although it could be considered an issue with the python bidings.

 == To reproduce

 (moonflash) 170135 13:26:30 [root at gemini ~]# more src/geosversion.c
 #include <stdio.h>

 extern char const *GEOSversion();

 int main() {
   printf("Got %s\n", GEOSversion());
   return 0;
 (moonflash) 170135 13:26:34 [root at gemini ~]# icc ./src/geosversion.c
 (moonflash) 170135 13:26:38 [root at gemini ~]# ./a.out
 Got 3.7.3-CAPI-1.11.3 3.7.2-6-ge1399c2
 (moonflash) 170135 13:26:40 [root at gemini ~]#

 == Possible cause

 In that branch, the current definition of GEOSversion
 const char* GEOSversion()
   static char version[256];
   sprintf(version, "%s " GEOS_REVISION, GEOS_CAPI_VERSION);
   return version;

 And GEOS_REVISION contains more than the git revision:

 [alainm at gemini build]$ more geos_revision.h
 #define GEOS_REVISION "3.7.2-6-ge1399c2"
 [alainm at gemini build]$ more geos_revision.h.in
 [alainm at gemini build]$ more geos_revision.h.in

Ticket URL: <https://trac.osgeo.org/geos/ticket/983>
GEOS <http://trac.osgeo.org/geos>
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).

More information about the geos-devel mailing list