From 066c28a8f0704c59e2041d97665694a4f799f9f2 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Nov 16 2016 07:17:51 +0000 Subject: - add patch to use pkg-config instead of gdlib-config - improve patch for PHP 7+ - arched inter package dependency --- diff --git a/libpuzzle-0.11-php7.patch b/libpuzzle-0.11-php7.patch new file mode 100644 index 0000000..e2155b0 --- /dev/null +++ b/libpuzzle-0.11-php7.patch @@ -0,0 +1,155 @@ +From f84c910a305a8dbae3a4d8548764b0603819e05f Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Wed, 16 Nov 2016 07:41:19 +0100 +Subject: [PATCH 2/2] fix PHP 5/7 compatibility + +--- + php/libpuzzle/libpuzzle.c | 40 +++++++++++++++++++++++++--------------- + 1 file changed, 25 insertions(+), 15 deletions(-) + +diff --git a/php/libpuzzle/libpuzzle.c b/php/libpuzzle/libpuzzle.c +index 82e84c3..f69ee4a 100644 +--- a/php/libpuzzle/libpuzzle.c ++++ b/php/libpuzzle/libpuzzle.c +@@ -8,6 +8,16 @@ + #include + #include "php_libpuzzle.h" + ++/* Compatibility layer */ ++#if PHP_MAJOR_VERSION < 7 ++#define RV_STRINGL(s,l) RETVAL_STRINGL(s, l, 1); ++typedef int strsize_t; ++typedef long zend_long; ++#else ++#define RV_STRINGL(s,l) RETVAL_STRINGL(s, l); ++typedef size_t strsize_t; ++#endif ++ + ZEND_DECLARE_MODULE_GLOBALS(libpuzzle) + + /* True global resources - no need for thread safety here */ +@@ -122,7 +132,7 @@ PHP_MINFO_FUNCTION(libpuzzle) + PHP_FUNCTION(puzzle_fill_cvec_from_file) + { + char *arg = NULL; +- int arg_len; ++ strsize_t arg_len; + PuzzleContext *context; + PuzzleCvec cvec; + +@@ -137,7 +147,7 @@ PHP_FUNCTION(puzzle_fill_cvec_from_file) + puzzle_free_cvec(context, &cvec); + RETURN_FALSE; + } +- RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec, 1); ++ RV_STRINGL((char *)cvec.vec, cvec.sizeof_vec); + puzzle_free_cvec(context, &cvec); + } + /* }}} */ +@@ -147,7 +157,7 @@ PHP_FUNCTION(puzzle_fill_cvec_from_file) + PHP_FUNCTION(puzzle_compress_cvec) + { + char *arg = NULL; +- int arg_len; ++ strsize_t arg_len; + PuzzleContext *context; + PuzzleCompressedCvec compressed_cvec; + PuzzleCvec cvec; +@@ -160,7 +170,7 @@ PHP_FUNCTION(puzzle_compress_cvec) + } + puzzle_init_compressed_cvec(context, &compressed_cvec); + puzzle_init_cvec(context, &cvec); +- cvec.vec = arg; ++ cvec.vec = (signed char *)arg; + cvec.sizeof_vec = (size_t) arg_len; + if (puzzle_compress_cvec(context, &compressed_cvec, &cvec) != 0) { + puzzle_free_compressed_cvec(context, &compressed_cvec); +@@ -168,8 +178,8 @@ PHP_FUNCTION(puzzle_compress_cvec) + puzzle_free_cvec(context, &cvec); + RETURN_FALSE; + } +- RETVAL_STRINGL(compressed_cvec.vec, +- compressed_cvec.sizeof_compressed_vec, 1); ++ RV_STRINGL((char *)compressed_cvec.vec, ++ compressed_cvec.sizeof_compressed_vec); + puzzle_free_compressed_cvec(context, &compressed_cvec); + cvec.vec = NULL; + puzzle_free_cvec(context, &cvec); +@@ -181,7 +191,7 @@ PHP_FUNCTION(puzzle_compress_cvec) + PHP_FUNCTION(puzzle_uncompress_cvec) + { + char *arg = NULL; +- int arg_len; ++ strsize_t arg_len; + PuzzleContext *context; + PuzzleCompressedCvec compressed_cvec; + PuzzleCvec cvec; +@@ -194,7 +204,7 @@ PHP_FUNCTION(puzzle_uncompress_cvec) + } + puzzle_init_compressed_cvec(context, &compressed_cvec); + puzzle_init_cvec(context, &cvec); +- compressed_cvec.vec = arg; ++ compressed_cvec.vec = (unsigned char *)arg; + compressed_cvec.sizeof_compressed_vec = (size_t) arg_len; + if (puzzle_uncompress_cvec(context, &compressed_cvec, &cvec) != 0) { + puzzle_free_cvec(context, &cvec); +@@ -202,7 +212,7 @@ PHP_FUNCTION(puzzle_uncompress_cvec) + puzzle_free_compressed_cvec(context, &compressed_cvec); + RETURN_FALSE; + } +- RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec, 1); ++ RV_STRINGL((char *)cvec.vec, cvec.sizeof_vec); + puzzle_free_cvec(context, &cvec); + compressed_cvec.vec = NULL; + puzzle_free_compressed_cvec(context, &compressed_cvec); +@@ -214,7 +224,7 @@ PHP_FUNCTION(puzzle_uncompress_cvec) + PHP_FUNCTION(puzzle_vector_normalized_distance) + { + char *vec1 = NULL, *vec2 = NULL; +- int vec1_len, vec2_len; ++ strsize_t vec1_len, vec2_len; + PuzzleContext *context; + PuzzleCvec cvec1, cvec2; + double d; +@@ -232,9 +242,9 @@ PHP_FUNCTION(puzzle_vector_normalized_distance) + } + puzzle_init_cvec(context, &cvec1); + puzzle_init_cvec(context, &cvec2); +- cvec1.vec = vec1; ++ cvec1.vec = (signed char *)vec1; + cvec1.sizeof_vec = (size_t) vec1_len; +- cvec2.vec = vec2; ++ cvec2.vec = (signed char *)vec2; + cvec2.sizeof_vec = (size_t) vec2_len; + d = puzzle_vector_normalized_distance(context, &cvec1, &cvec2, + (int) fix_for_texts); +@@ -250,7 +260,7 @@ PHP_FUNCTION(puzzle_vector_normalized_distance) + PHP_FUNCTION(puzzle_set_max_width) + { + PuzzleContext *context; +- long width; ++ zend_long width; + + context = &LIBPUZZLE_G(global_context); + if (zend_parse_parameters +@@ -270,7 +280,7 @@ PHP_FUNCTION(puzzle_set_max_width) + PHP_FUNCTION(puzzle_set_max_height) + { + PuzzleContext *context; +- long height; ++ zend_long height; + + context = &LIBPUZZLE_G(global_context); + if (zend_parse_parameters +@@ -290,7 +300,7 @@ PHP_FUNCTION(puzzle_set_max_height) + PHP_FUNCTION(puzzle_set_lambdas) + { + PuzzleContext *context; +- long lambdas; ++ zend_long lambdas; + + context = &LIBPUZZLE_G(global_context); + if (zend_parse_parameters +-- +2.9.3 + diff --git a/libpuzzle-0.11-pkgconfig.patch b/libpuzzle-0.11-pkgconfig.patch new file mode 100644 index 0000000..55121d9 --- /dev/null +++ b/libpuzzle-0.11-pkgconfig.patch @@ -0,0 +1,50 @@ +From 4d2da65b1416e07bd2529ab03d2c32a87041945d Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Wed, 16 Nov 2016 07:27:59 +0100 +Subject: [PATCH 1/2] Use pkg-config instead of deprecated gdlib-config + +--- + php/libpuzzle/config.m4 | 27 ++++++++++++++++++--------- + 1 file changed, 18 insertions(+), 9 deletions(-) + +diff --git a/php/libpuzzle/config.m4 b/php/libpuzzle/config.m4 +index 84f954a..2d8bbc0 100644 +--- a/php/libpuzzle/config.m4 ++++ b/php/libpuzzle/config.m4 +@@ -6,15 +6,24 @@ PHP_ARG_WITH(libpuzzle, for libpuzzle support, + [ --with-libpuzzle Include libpuzzle support]) + + if test "$PHP_LIBPUZZLE" != "no"; then +- for i in $PHP_LIBPUZZLE /usr/local /usr; do +- if test -x "$i/bin/gdlib-config"; then +- GDLIB_CONFIG=$i/bin/gdlib-config +- break +- fi +- done +- GDLIB_LIBS=$($GDLIB_CONFIG --ldflags --libs) +- GDLIB_INCS=$($GDLIB_CONFIG --cflags) +- ++ ++ AC_PATH_PROG(PKG_CONFIG, pkg-config, no) ++ AC_PATH_PROG(GDLIB_CONFIG, gdlib-config, no) ++ ++ AC_MSG_CHECKING(for libgd) ++ if test -x "$PKG_CONFIG" && $PKG_CONFIG gdlib --exists; then ++ GDLIB_LIBS=$($PKG_CONFIG gdlib --libs) ++ GDLIB_INCS=$($PKG_CONFIG gdlib --cflags) ++ GDLIB_VERS=$($PKG_CONFIG gdlib --modversion) ++ AC_MSG_RESULT(from pkg_config: found $GDLIB_VERS) ++ elif test -x "$GDLIB_CONFIG"; then ++ GDLIB_LIBS=$($GDLIB_CONFIG --ldflags --libs) ++ GDLIB_INCS=$($GDLIB_CONFIG --cflags) ++ GDLIB_VERS=$($GDLIB_CONFIG --version) ++ AC_MSG_RESULT(from gdlib_config: found $GDLIB_VERS) ++ else ++ AC_MSG_ERROR(not found) ++ fi + PHP_EVAL_LIBLINE($GDLIB_LIBS, LIBPUZZLE_SHARED_LIBADD) + PHP_EVAL_INCLINE($GDLIB_INCS) + +-- +2.9.3 + diff --git a/libpuzzle-0.11-retval_stringl-fix.patch b/libpuzzle-0.11-retval_stringl-fix.patch deleted file mode 100644 index 3f3bb88..0000000 --- a/libpuzzle-0.11-retval_stringl-fix.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -up libpuzzle-0.11/php/libpuzzle/libpuzzle.c.stringlfix libpuzzle-0.11/php/libpuzzle/libpuzzle.c ---- libpuzzle-0.11/php/libpuzzle/libpuzzle.c.stringlfix 2016-07-22 16:03:12.255156115 -0400 -+++ libpuzzle-0.11/php/libpuzzle/libpuzzle.c 2016-07-22 16:03:35.941999142 -0400 -@@ -137,7 +137,7 @@ PHP_FUNCTION(puzzle_fill_cvec_from_file) - puzzle_free_cvec(context, &cvec); - RETURN_FALSE; - } -- RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec, 1); -+ RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec); - puzzle_free_cvec(context, &cvec); - } - /* }}} */ -@@ -169,7 +169,7 @@ PHP_FUNCTION(puzzle_compress_cvec) - RETURN_FALSE; - } - RETVAL_STRINGL(compressed_cvec.vec, -- compressed_cvec.sizeof_compressed_vec, 1); -+ compressed_cvec.sizeof_compressed_vec); - puzzle_free_compressed_cvec(context, &compressed_cvec); - cvec.vec = NULL; - puzzle_free_cvec(context, &cvec); -@@ -202,7 +202,7 @@ PHP_FUNCTION(puzzle_uncompress_cvec) - puzzle_free_compressed_cvec(context, &compressed_cvec); - RETURN_FALSE; - } -- RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec, 1); -+ RETVAL_STRINGL(cvec.vec, cvec.sizeof_vec); - puzzle_free_cvec(context, &cvec); - compressed_cvec.vec = NULL; - puzzle_free_compressed_cvec(context, &compressed_cvec); diff --git a/libpuzzle.spec b/libpuzzle.spec index 5db7861..c46850a 100644 --- a/libpuzzle.spec +++ b/libpuzzle.spec @@ -8,7 +8,7 @@ Name: libpuzzle Version: 0.11 -Release: 29%{?dist} +Release: 30%{?dist} Summary: Library to quickly find visually similar images (gif, png, jpg) Group: System Environment/Libraries License: BSD @@ -16,8 +16,10 @@ URL: http://libpuzzle.pureftpd.org/project/libpuzzle Source0: http://download.pureftpd.org/pub/pure-ftpd/misc/libpuzzle/releases/%{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gd-devel -# This seems to only be needed in F25+ -Patch0: libpuzzle-0.11-retval_stringl-fix.patch +# Compatibility with PHP 5 and 7 and use pkg-config +Patch0: libpuzzle-0.11-php7.patch +# Use pkg-config instead of gdlib-config when available +Patch1: libpuzzle-0.11-pkgconfig.patch %description The Puzzle library is designed to quickly find visually similar images @@ -30,7 +32,7 @@ security in mind. Summary: PHP extension for %{name} Group: Development/Libraries BuildRequires: php-devel -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} Requires: php(zend-abi) = %{php_zend_api} Requires: php(api) = %{php_core_api} @@ -48,7 +50,7 @@ use %{name}. %package devel Summary: Development files for %{name} Group: Development/Libraries -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} %description devel The %{name}-devel package contains libraries and header files for @@ -57,7 +59,8 @@ developing applications that use %{name}. %prep %setup -q -%patch0 -p1 -b .stringlfix +%patch0 -p1 -b .php7 +%patch1 -p1 -b .pkgconfig %build %{__cat} <<'EOF' >%{ini_name} @@ -134,6 +137,11 @@ php --no-php-ini \ %{_mandir}/man3/* %changelog +* Wed Nov 16 2016 Remi Collet - 0.11-30 +- add patch to use pkg-config instead of gdlib-config +- improve patch for PHP 7+ +- arched inter package dependency + * Tue Nov 15 2016 Remi Collet - 0.11-29 - rebuild for https://fedoraproject.org/wiki/Changes/php71