From ccc0fb6da0f856dfa19acee3a8687a92eaf29554 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sat, 19 Mar 2016 06:26:48 +0100 Subject: [PATCH] - updated to 3.5.0 (note: new libgeos soname) - removed obsolete ruby1.9 patch - added php7 patch (preliminary PHP 7.0.x support, at least builds without warnings in module code) - stabilize python install directory --- geos-php7.patch | 736 +++++++++++++++++++++++++++++++++++++++++++++ geos-ruby1.9.patch | 11 - geos.spec | 13 +- 3 files changed, 743 insertions(+), 17 deletions(-) create mode 100644 geos-php7.patch delete mode 100644 geos-ruby1.9.patch diff --git a/geos-php7.patch b/geos-php7.patch new file mode 100644 index 0000000..ed57773 --- /dev/null +++ b/geos-php7.patch @@ -0,0 +1,736 @@ +--- geos-3.5.0/php/geos.c.orig 2015-08-14 20:23:15.000000000 +0200 ++++ geos-3.5.0/php/geos.c 2016-03-18 22:08:27.255515276 +0100 +@@ -48,6 +48,21 @@ + #define zend_function_entry function_entry + #endif + ++#if PHP_MAJOR_VERSION >= 7 ++#define zend_uint zend_ulong ++#define PHP_RETURN_STRING(x, n) RETURN_STRING(x) ++#define PHP_RETURN_STRINGL(x, l, n) RETURN_STRINGL(x, l) ++#define php_zend_hash_get_current_key(s, k, i, n) zend_hash_get_current_key(s, k, i) ++#define php_add_assoc_string(rv, res, resv, n) add_assoc_string(rv, res, resv) ++#define PHP_KEY_VAL(key) ZSTR_VAL(key) ++#else ++#define PHP_RETURN_STRING(x, n) RETURN_STRING(x, n) ++#define PHP_RETURN_STRINGL(x, l, n) RETURN_STRINGL(x, l, n) ++#define php_zend_hash_get_current_key(s, k, i, n) zend_hash_get_current_key(s, k, i, n) ++#define php_add_assoc_string(rv, res, resv, n) add_assoc_string(rv, res, resv, n) ++#define PHP_KEY_VAL(key) (key) ++#endif ++ + static zend_function_entry geos_functions[] = { + PHP_FE(GEOSVersion, NULL) + PHP_FE(GEOSPolygonize, NULL) +@@ -104,21 +119,34 @@ + } + + typedef struct Proxy_t { ++#if PHP_MAJOR_VERSION >= 7 ++ void* relay; ++ zend_object std; ++#else + zend_object std; + void* relay; ++#endif + } Proxy; + + static void + setRelay(zval* val, void* obj) { + TSRMLS_FETCH(); ++#if PHP_MAJOR_VERSION >= 7 ++ Proxy* proxy = (Proxy*)((char*)(Z_OBJ_P(val)) - XtOffsetOf(Proxy, std)); ++#else + Proxy* proxy = (Proxy*)zend_object_store_get_object(val TSRMLS_CC); ++#endif + proxy->relay = obj; + } + + static inline void * + getRelay(zval* val, zend_class_entry* ce) { + TSRMLS_FETCH(); +- Proxy *proxy = (Proxy*)zend_object_store_get_object(val TSRMLS_CC); ++#if PHP_MAJOR_VERSION >= 7 ++ Proxy* proxy = (Proxy*)((char*)(Z_OBJ_P(val)) - XtOffsetOf(Proxy, std)); ++#else ++ Proxy* proxy = (Proxy*)zend_object_store_get_object(val TSRMLS_CC); ++#endif + if ( proxy->std.ce != ce ) { + php_error_docref(NULL TSRMLS_CC, E_ERROR, + "Relay object is not an %s", ce->name); +@@ -156,16 +184,29 @@ + return ret; + } + ++#if PHP_MAJOR_VERSION >= 7 ++static zend_object * ++#else + static zend_object_value ++#endif + Gen_create_obj (zend_class_entry *type, +- zend_objects_free_object_storage_t st, zend_object_handlers* handlers) ++#if PHP_MAJOR_VERSION < 7 ++ zend_objects_free_object_storage_t st, ++#endif ++ zend_object_handlers* handlers) + { + TSRMLS_FETCH(); ++#if PHP_MAJOR_VERSION < 7 + zend_object_value retval; ++#endif + +- Proxy *obj = (Proxy *)emalloc(sizeof(Proxy)); +- memset(obj, 0, sizeof(Proxy)); ++#if PHP_MAJOR_VERSION >= 7 ++ Proxy *obj = (Proxy *)ecalloc(1, sizeof(Proxy) + zend_object_properties_size(type)); ++ zend_object_std_init(&obj->std, type); ++#else ++ Proxy *obj = (Proxy *)ecalloc(1, sizeof(Proxy)); + obj->std.ce = type; ++#endif + + ALLOC_HASHTABLE(obj->std.properties); + zend_hash_init(obj->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0); +@@ -176,10 +217,14 @@ + object_properties_init(&(obj->std), type); + #endif + ++#if PHP_MAJOR_VERSION >= 7 ++ return &obj->std; ++#else + retval.handle = zend_objects_store_put(obj, NULL, st, NULL TSRMLS_CC); + retval.handlers = handlers; + + return retval; ++#endif + } + + +@@ -364,9 +409,15 @@ + + /* Serializer function for GEOSGeometry */ + ++#if PHP_MAJOR_VERSION >= 7 ++static int ++Geometry_serialize(zval *object, unsigned char **buffer, size_t *buf_len, ++ zend_serialize_data *data TSRMLS_DC) ++#else + static int + Geometry_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len, + zend_serialize_data *data TSRMLS_DC) ++#endif + { + GEOSWKBWriter *serializer; + GEOSGeometry *geom; +@@ -390,9 +441,15 @@ + return SUCCESS; + } + ++#if PHP_MAJOR_VERSION >= 7 ++static int ++Geometry_deserialize(zval *object, zend_class_entry *ce, const unsigned char *buf, ++ size_t buf_len, zend_unserialize_data *data TSRMLS_DC) ++#else + static int + Geometry_deserialize(zval **object, zend_class_entry *ce, const unsigned char *buf, + zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC) ++#endif + { + GEOSWKBReader* deserializer; + GEOSGeometry* geom; +@@ -406,8 +463,13 @@ + "Geometry_deserialize called with unexpected zend_class_entry"); + return FAILURE; + } ++#if PHP_MAJOR_VERSION >= 7 ++ object_init_ex(object, ce); ++ setRelay(object, geom); ++#else + object_init_ex(*object, ce); + setRelay(*object, geom); ++#endif + + return SUCCESS; + } +@@ -432,7 +494,11 @@ + ngeoms = GEOSGetNumGeometries(g); + for (i=0; i= 7 ++ zval tmp; ++#else + zval *tmp; ++#endif + GEOSGeometry* cc; + const GEOSGeometry* c = GEOSGetGeometryN(g, i); + if ( ! c ) continue; /* should get an exception */ +@@ -440,14 +506,30 @@ + cc = GEOSGeom_clone(c); + if ( ! cc ) continue; /* should get an exception */ + ++#if PHP_MAJOR_VERSION >= 7 ++ object_init_ex(&tmp, Geometry_ce_ptr); ++ setRelay(&tmp, cc); ++ add_next_index_zval(array, &tmp); ++#else + MAKE_STD_ZVAL(tmp); + object_init_ex(tmp, Geometry_ce_ptr); + setRelay(tmp, cc); + add_next_index_zval(array, tmp); ++#endif + } + } + + ++#if PHP_MAJOR_VERSION >= 7 ++static void ++Geometry_dtor (zend_object *object TSRMLS_DC) ++{ ++ Proxy *obj = (Proxy *)((char*)object - XtOffsetOf(Proxy, std)); ++ GEOSGeom_destroy((GEOSGeometry*)obj->relay); ++ ++ zend_object_std_dtor(object); ++} ++#else + static void + Geometry_dtor (void *object TSRMLS_DC) + { +@@ -459,13 +541,21 @@ + + efree(obj); + } ++#endif + ++#if PHP_MAJOR_VERSION >= 7 ++static zend_object * ++Geometry_create_obj (zend_class_entry *type TSRMLS_DC) ++{ ++ return Gen_create_obj(type, &Geometry_object_handlers); ++} ++#else + static zend_object_value + Geometry_create_obj (zend_class_entry *type TSRMLS_DC) + { + return Gen_create_obj(type, Geometry_dtor, &Geometry_object_handlers); + } +- ++#endif + + PHP_METHOD(Geometry, __construct) + { +@@ -500,7 +590,7 @@ + ret = estrdup(wkt); + GEOSFree(wkt); + +- RETURN_STRING(ret, 0); ++ PHP_RETURN_STRING(ret, 0); + } + + PHP_METHOD(Geometry, project) +@@ -595,10 +685,16 @@ + double mitreLimit = default_mitreLimit; + long singleSided = 0; + zval *style_val = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ zval *data; ++ zend_string *key; ++ zend_ulong index; ++#else + zval **data; +- HashTable *style; + char *key; + ulong index; ++#endif ++ HashTable *style; + + this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr); + +@@ -612,37 +708,62 @@ + if ( style_val ) + { + style = HASH_OF(style_val); +- while(zend_hash_get_current_key(style, &key, &index, 0) ++ while(php_zend_hash_get_current_key(style, &key, &index, 0) + == HASH_KEY_IS_STRING) + { +- if(!strcmp(key, "quad_segs")) ++ if(!strcmp(PHP_KEY_VAL(key), "quad_segs")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ quadSegs = getZvalAsLong(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + quadSegs = getZvalAsLong(*data); ++#endif + GEOSBufferParams_setQuadrantSegments(params, quadSegs); + } +- else if(!strcmp(key, "endcap")) ++ else if(!strcmp(PHP_KEY_VAL(key), "endcap")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ endCapStyle = getZvalAsLong(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + endCapStyle = getZvalAsLong(*data); ++#endif + GEOSBufferParams_setEndCapStyle(params, endCapStyle); + } +- else if(!strcmp(key, "join")) ++ else if(!strcmp(PHP_KEY_VAL(key), "join")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ joinStyle = getZvalAsLong(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + joinStyle = getZvalAsLong(*data); ++#endif + GEOSBufferParams_setJoinStyle(params, joinStyle); + } +- else if(!strcmp(key, "mitre_limit")) ++ else if(!strcmp(PHP_KEY_VAL(key), "mitre_limit")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ mitreLimit = getZvalAsDouble(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + mitreLimit = getZvalAsDouble(*data); ++#endif + GEOSBufferParams_setMitreLimit(params, mitreLimit); + } +- else if(!strcmp(key, "single_sided")) ++ else if(!strcmp(PHP_KEY_VAL(key), "single_sided")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ singleSided = getZvalAsLong(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + singleSided = getZvalAsLong(*data); ++#endif + GEOSBufferParams_setSingleSided(params, singleSided); + } + +@@ -687,10 +808,16 @@ + long int joinStyle = default_joinStyle; + double mitreLimit = default_mitreLimit; + zval *style_val = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ zval *data; ++ zend_string *key; ++ zend_ulong index; ++#else + zval **data; +- HashTable *style; + char *key; + ulong index; ++#endif ++ HashTable *style; + + this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr); + +@@ -702,23 +829,38 @@ + if ( style_val ) + { + style = HASH_OF(style_val); +- while(zend_hash_get_current_key(style, &key, &index, 0) ++ while(php_zend_hash_get_current_key(style, &key, &index, 0) + == HASH_KEY_IS_STRING) + { +- if(!strcmp(key, "quad_segs")) ++ if(!strcmp(PHP_KEY_VAL(key), "quad_segs")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ quadSegs = getZvalAsLong(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + quadSegs = getZvalAsLong(*data); ++#endif + } +- else if(!strcmp(key, "join")) ++ else if(!strcmp(PHP_KEY_VAL(key), "join")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ joinStyle = getZvalAsLong(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + joinStyle = getZvalAsLong(*data); ++#endif + } +- else if(!strcmp(key, "mitre_limit")) ++ else if(!strcmp(PHP_KEY_VAL(key), "mitre_limit")) + { ++#if PHP_MAJOR_VERSION >= 7 ++ data = zend_hash_get_current_data(style); ++ mitreLimit = getZvalAsDouble(data); ++#else + zend_hash_get_current_data(style, (void**)&data); + mitreLimit = getZvalAsDouble(*data); ++#endif + } + + zend_hash_move_forward(style); +@@ -970,7 +1112,7 @@ + if ( ! pat ) RETURN_NULL(); /* should get an exception first */ + retStr = estrdup(pat); + GEOSFree(pat); +- RETURN_STRING(retStr, 0); ++ PHP_RETURN_STRING(retStr, 0); + } else { + retInt = GEOSRelatePattern(this, other, pat); + if ( retInt == 2 ) RETURN_NULL(); /* should get an exception first */ +@@ -1007,7 +1149,7 @@ + if ( ! pat ) RETURN_NULL(); /* should get an exception first */ + retStr = estrdup(pat); + GEOSFree(pat); +- RETURN_STRING(retStr, 0); ++ PHP_RETURN_STRING(retStr, 0); + } + + /** +@@ -1409,6 +1551,9 @@ + char *reason = NULL; + zend_bool retBool; + char *reasonVal = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ zval locationValS; ++#endif + zval *locationVal = NULL; + long int flags = 0; + +@@ -1428,7 +1573,11 @@ + } + + if ( location ) { ++#if PHP_MAJOR_VERSION >= 7 ++ locationVal = &locationValS; ++#else + MAKE_STD_ZVAL(locationVal); ++#endif + object_init_ex(locationVal, Geometry_ce_ptr); + setRelay(locationVal, location); + } +@@ -1438,7 +1587,7 @@ + /* return value is an array */ + array_init(return_value); + add_assoc_bool(return_value, "valid", retBool); +- if ( reasonVal ) add_assoc_string(return_value, "reason", reasonVal, 0); ++ if ( reasonVal ) php_add_assoc_string(return_value, "reason", reasonVal, 0); + if ( locationVal ) add_assoc_zval(return_value, "location", locationVal); + + } +@@ -1538,7 +1687,7 @@ + typVal = estrdup(typ); + GEOSFree(typ); + +- RETURN_STRING(typVal, 0); ++ PHP_RETURN_STRING(typVal, 0); + } + + /** +@@ -1999,6 +2148,16 @@ + + static zend_object_handlers WKTReader_object_handlers; + ++#if PHP_MAJOR_VERSION >= 7 ++static void ++WKTReader_dtor (zend_object *object TSRMLS_DC) ++{ ++ Proxy *obj = (Proxy *)((char*)object - XtOffsetOf(Proxy, std)); ++ GEOSWKTReader_destroy((GEOSWKTReader*)obj->relay); ++ ++ zend_object_std_dtor(object); ++} ++#else + static void + WKTReader_dtor (void *object TSRMLS_DC) + { +@@ -2010,12 +2169,21 @@ + + efree(obj); + } ++#endif + ++#if PHP_MAJOR_VERSION >= 7 ++static zend_object * ++WKTReader_create_obj (zend_class_entry *type TSRMLS_DC) ++{ ++ return Gen_create_obj(type, &WKTReader_object_handlers); ++} ++#else + static zend_object_value + WKTReader_create_obj (zend_class_entry *type TSRMLS_DC) + { + return Gen_create_obj(type, WKTReader_dtor, &WKTReader_object_handlers); + } ++#endif + + + PHP_METHOD(WKTReader, __construct) +@@ -2082,6 +2250,16 @@ + + static zend_object_handlers WKTWriter_object_handlers; + ++#if PHP_MAJOR_VERSION >= 7 ++static void ++WKTWriter_dtor (zend_object *object TSRMLS_DC) ++{ ++ Proxy *obj = (Proxy *)((char*)object - XtOffsetOf(Proxy, std)); ++ GEOSWKTWriter_destroy((GEOSWKTWriter*)obj->relay); ++ ++ zend_object_std_dtor(object); ++} ++#else + static void + WKTWriter_dtor (void *object TSRMLS_DC) + { +@@ -2093,12 +2271,21 @@ + + efree(obj); + } ++#endif + ++#if PHP_MAJOR_VERSION >= 7 ++static zend_object * ++WKTWriter_create_obj (zend_class_entry *type TSRMLS_DC) ++{ ++ return Gen_create_obj(type, &WKTWriter_object_handlers); ++} ++#else + static zend_object_value + WKTWriter_create_obj (zend_class_entry *type TSRMLS_DC) + { + return Gen_create_obj(type, WKTWriter_dtor, &WKTWriter_object_handlers); + } ++#endif + + PHP_METHOD(WKTWriter, __construct) + { +@@ -2139,7 +2326,7 @@ + retstr = estrdup(wkt); + GEOSFree(wkt); + +- RETURN_STRING(retstr, 0); ++ PHP_RETURN_STRING(retstr, 0); + } + + PHP_METHOD(WKTWriter, setTrim) +@@ -2257,6 +2444,16 @@ + + static zend_object_handlers WKBWriter_object_handlers; + ++#if PHP_MAJOR_VERSION >= 7 ++static void ++WKBWriter_dtor (zend_object *object TSRMLS_DC) ++{ ++ Proxy *obj = (Proxy *)((char*)object - XtOffsetOf(Proxy, std)); ++ GEOSWKBWriter_destroy((GEOSWKBWriter*)obj->relay); ++ ++ zend_object_std_dtor(object); ++} ++#else + static void + WKBWriter_dtor (void *object TSRMLS_DC) + { +@@ -2268,12 +2465,21 @@ + + efree(obj); + } ++#endif + ++#if PHP_MAJOR_VERSION >= 7 ++static zend_object * ++WKBWriter_create_obj (zend_class_entry *type TSRMLS_DC) ++{ ++ return Gen_create_obj(type, &WKBWriter_object_handlers); ++} ++#else + static zend_object_value + WKBWriter_create_obj (zend_class_entry *type TSRMLS_DC) + { + return Gen_create_obj(type, WKBWriter_dtor, &WKBWriter_object_handlers); + } ++#endif + + /** + * GEOSWKBWriter w = new GEOSWKBWriter() +@@ -2356,7 +2562,7 @@ + retstr = estrndup(ret, retsize); + GEOSFree(ret); + +- RETURN_STRINGL(retstr, retsize, 0); ++ PHP_RETURN_STRINGL(retstr, retsize, 0); + } + + /** +@@ -2388,7 +2594,7 @@ + retstr = estrndup(ret, retsize); + GEOSFree(ret); + +- RETURN_STRING(retstr, 0); ++ PHP_RETURN_STRING(retstr, 0); + } + + /** +@@ -2481,6 +2687,16 @@ + + static zend_object_handlers WKBReader_object_handlers; + ++#if PHP_MAJOR_VERSION >= 7 ++static void ++WKBReader_dtor (zend_object *object TSRMLS_DC) ++{ ++ Proxy *obj = (Proxy *)((char*)object - XtOffsetOf(Proxy, std)); ++ GEOSWKBReader_destroy((GEOSWKBReader*)obj->relay); ++ ++ zend_object_std_dtor(object); ++} ++#else + static void + WKBReader_dtor (void *object TSRMLS_DC) + { +@@ -2492,12 +2708,21 @@ + + efree(obj); + } ++#endif + ++#if PHP_MAJOR_VERSION >= 7 ++static zend_object * ++WKBReader_create_obj (zend_class_entry *type TSRMLS_DC) ++{ ++ return Gen_create_obj(type, &WKBReader_object_handlers); ++} ++#else + static zend_object_value + WKBReader_create_obj (zend_class_entry *type TSRMLS_DC) + { + return Gen_create_obj(type, WKBReader_dtor, &WKBReader_object_handlers); + } ++#endif + + + PHP_METHOD(WKBReader, __construct) +@@ -2575,7 +2800,7 @@ + char *str; + + str = estrdup(GEOSversion()); +- RETURN_STRING(str, 0); ++ PHP_RETURN_STRING(str, 0); + } + + /** +@@ -2608,7 +2833,11 @@ + GEOSGeometry *cut_edges; + GEOSGeometry *dangles; + GEOSGeometry *invalid_rings; ++#if PHP_MAJOR_VERSION >= 7 ++ zval array_elem; ++#else + zval *array_elem; ++#endif + zval *zobj; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &zobj) +@@ -2624,11 +2853,36 @@ + /* return value should be an array */ + array_init(return_value); + ++#if PHP_MAJOR_VERSION >= 7 ++ ZVAL_NEW_ARR(&array_elem); ++ array_init(&array_elem); ++ dumpGeometry(rings, &array_elem); ++ GEOSGeom_destroy(rings); ++ add_assoc_zval(return_value, "rings", &array_elem); ++ ++ ZVAL_NEW_ARR(&array_elem); ++ array_init(&array_elem); ++ dumpGeometry(cut_edges, &array_elem); ++ GEOSGeom_destroy(cut_edges); ++ add_assoc_zval(return_value, "cut_edges", &array_elem); ++ ++ ZVAL_NEW_ARR(&array_elem); ++ array_init(&array_elem); ++ dumpGeometry(dangles, &array_elem); ++ GEOSGeom_destroy(dangles); ++ add_assoc_zval(return_value, "dangles", &array_elem); ++ ++ ZVAL_NEW_ARR(&array_elem); ++ array_init(&array_elem); ++ dumpGeometry(invalid_rings, &array_elem); ++ GEOSGeom_destroy(invalid_rings); ++ add_assoc_zval(return_value, "invalid_rings", &array_elem); ++#else + MAKE_STD_ZVAL(array_elem); + array_init(array_elem); + dumpGeometry(rings, array_elem); + GEOSGeom_destroy(rings); +- add_assoc_zval(return_value, "rings", array_elem); ++ add_assoc_zval(return_value, "rings", array_elem); + + MAKE_STD_ZVAL(array_elem); + array_init(array_elem); +@@ -2647,7 +2901,7 @@ + dumpGeometry(invalid_rings, array_elem); + GEOSGeom_destroy(invalid_rings); + add_assoc_zval(return_value, "invalid_rings", array_elem); +- ++#endif + } + + /** +@@ -2813,6 +3067,9 @@ + memcpy(&WKTReader_object_handlers, + zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + WKTReader_object_handlers.clone_obj = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ WKTReader_object_handlers.free_obj = &WKTReader_dtor; ++#endif + + /* WKTWriter */ + INIT_CLASS_ENTRY(ce, "GEOSWKTWriter", WKTWriter_methods); +@@ -2821,6 +3078,9 @@ + memcpy(&WKTWriter_object_handlers, + zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + WKTWriter_object_handlers.clone_obj = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ WKTWriter_object_handlers.free_obj = &WKTWriter_dtor; ++#endif + + /* Geometry */ + INIT_CLASS_ENTRY(ce, "GEOSGeometry", Geometry_methods); +@@ -2829,6 +3089,9 @@ + memcpy(&Geometry_object_handlers, + zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + Geometry_object_handlers.clone_obj = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ Geometry_object_handlers.free_obj = &Geometry_dtor; ++#endif + /* Geometry serialization */ + Geometry_ce_ptr->serialize = Geometry_serialize; + Geometry_ce_ptr->unserialize = Geometry_deserialize; +@@ -2840,6 +3103,9 @@ + memcpy(&WKBWriter_object_handlers, + zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + WKBWriter_object_handlers.clone_obj = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ WKBWriter_object_handlers.free_obj = &WKBWriter_dtor; ++#endif + + /* WKBReader */ + INIT_CLASS_ENTRY(ce, "GEOSWKBReader", WKBReader_methods); +@@ -2848,6 +3114,9 @@ + memcpy(&WKBReader_object_handlers, + zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + WKBReader_object_handlers.clone_obj = NULL; ++#if PHP_MAJOR_VERSION >= 7 ++ WKBReader_object_handlers.free_obj = &WKBReader_dtor; ++#endif + + + /* Constants */ diff --git a/geos-ruby1.9.patch b/geos-ruby1.9.patch deleted file mode 100644 index 03f7dcd..0000000 --- a/geos-ruby1.9.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- geos-3.4.1/macros/ruby.m4.orig 2013-08-25 17:35:18.906527499 +0200 -+++ geos-3.4.1/macros/ruby.m4 2013-08-25 17:53:45.516481059 +0200 -@@ -38,7 +38,7 @@ - RUBY_EXTENSION_DIR=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["vendorarchdir"]] || Config::CONFIG[["vendorarchdir"]]'` - - dnl Get Ruby shared library name, this does not include the lib prefix or extension name -- RUBY_SO_NAME=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["LIBRUBY_SO"]] || Config::CONFIG[["RUBY_SO_NAME"]]'` -+ RUBY_SO_NAME=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["RUBY_SO_NAME"]] || Config::CONFIG[["RUBY_SO_NAME"]]'` - - dnl Get Ruby shared libary name - RUBY_SHARED_LIB=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["LIBRUBY"]] || Config::CONFIG[["LIBRUBY"]]'` diff --git a/geos.spec b/geos.spec index 8bfa449..7332766 100644 --- a/geos.spec +++ b/geos.spec @@ -6,13 +6,13 @@ Summary: Geometry Engine - Open Source Summary(pl.UTF-8): GEOS - silnik geometryczny z otwartymi źródłami Name: geos -Version: 3.4.2 -Release: 7 +Version: 3.5.0 +Release: 1 License: LGPL v2.1 Group: Libraries Source0: http://download.osgeo.org/geos/%{name}-%{version}.tar.bz2 -# Source0-md5: fc5df2d926eb7e67f988a43a92683bae -Patch0: %{name}-ruby1.9.patch +# Source0-md5: 136842690be7f504fba46b3c539438dd +Patch0: %{name}-php7.patch Patch1: rubydir.patch URL: http://trac.osgeo.org/geos/ BuildRequires: autoconf >= 2.52 @@ -128,7 +128,8 @@ Wiązania języka Ruby do biblioteki GEOS. rm -rf $RPM_BUILD_ROOT %{__make} install \ - DESTDIR=$RPM_BUILD_ROOT + DESTDIR=$RPM_BUILD_ROOT \ + pythondir=%{py_sitescriptdir} %if %{with php} install -d $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d @@ -152,7 +153,7 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) %doc AUTHORS ChangeLog NEWS README TODO -%attr(755,root,root) %{_libdir}/libgeos-*.so +%attr(755,root,root) %{_libdir}/libgeos-%{version}.so %attr(755,root,root) %{_libdir}/libgeos_c.so.*.*.* %attr(755,root,root) %ghost %{_libdir}/libgeos_c.so.1 -- 2.43.0