[mapserver] - add minimal PHP extension load test - add upstream patch for PHP 5.6 (fix #1111478)

Remi Collet remi at fedoraproject.org
Fri Jun 20 07:09:18 UTC 2014


commit 417e6936e1ce6890f0cb39205203536006402f14
Author: Remi Collet <remi at fedoraproject.org>
Date:   Fri Jun 20 09:09:12 2014 +0200

    - add minimal PHP extension load test
    - add upstream patch for PHP 5.6 (fix #1111478)

 mapserver-6.2.1-php56.patch |   85 +++++++++++++++++++++++++++++++++++++++++++
 mapserver.spec              |   27 ++++++++++----
 2 files changed, 105 insertions(+), 7 deletions(-)
---
diff --git a/mapserver-6.2.1-php56.patch b/mapserver-6.2.1-php56.patch
new file mode 100644
index 0000000..bb2a121
--- /dev/null
+++ b/mapserver-6.2.1-php56.patch
@@ -0,0 +1,85 @@
+From fc99472b8b2fc837148f71755f23349a71e307bf Mon Sep 17 00:00:00 2001
+From: Bas Couwenberg <sebastic at xs4all.nl>
+Date: Sat, 26 Apr 2014 13:46:41 +0200
+Subject: [PATCH] Use php://input instead of raw_post_data to support PHP 5.6.
+
+php_stream handling largely taken from PECL HTTP:
+
+http://git.php.net/?p=pecl/http/pecl_http.git;a=blob;f=php_http_env.c;h=30ee32d7c68b3341aeaeb24c909b102537caccdf;hb=8ec2c825719482e62222163a300b0e18319591d0#l229
+
+Copyright (c) 2004-2014, Michael Wallner <mike at iworks.at>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Bug-Debian: https://bugs.debian.org/745600
+---
+ .travis.yml                |  1 +
+ mapscript/php/owsrequest.c | 23 +++++++++++++++++++++++
+ 2 files changed, 24 insertions(+)
+
+diff --git a/mapscript/php/owsrequest.c b/mapscript/php/owsrequest.c
+index 428c8dd..f01d361 100644
+--- a/mapscript/php/owsrequest.c
++++ b/mapscript/php/owsrequest.c
+@@ -32,6 +32,9 @@
+ #include "php_mapscript.h"
+ #include "SAPI.h"
+ #include "php_variables.h"
++#if PHP_VERSION_ID >= 50600
++#include "php_streams.h"
++#endif
+ 
+ char *owsrequest_getenv(const char *name, void *thread_context);
+ 
+@@ -193,9 +196,29 @@ PHP_METHOD(OWSRequestObj, loadParams)
+         cgirequestObj_loadParams(php_owsrequest->cgirequest, owsrequest_getenv, NULL, 0, thread_context);
+       }
+     } else {
++#if PHP_VERSION_ID >= 50600
++      php_stream *s = php_stream_temp_new();
++      php_stream *input = php_stream_open_wrapper("php://input", "r", 0, NULL);
++
++      /* php://input does not support stat */
++      php_stream_copy_to_stream_ex(input, s, -1, NULL);
++      php_stream_close(input);
++
++      php_stream_rewind(s);
++      
++      char *raw_post_data = NULL;
++      long raw_post_data_length = 0;
++
++      raw_post_data_length = php_stream_copy_to_mem(s, raw_post_data, -1, 0);
++
++      cgirequestObj_loadParams(php_owsrequest->cgirequest, owsrequest_getenv,
++                               raw_post_data,
++                               raw_post_data_length, thread_context);
++#else
+       cgirequestObj_loadParams(php_owsrequest->cgirequest, owsrequest_getenv,
+                                SG(request_info).raw_post_data,
+                                SG(request_info).raw_post_data_length, thread_context);
++#endif
+     }
+   }
+ 
+-- 
+1.9.3
+
diff --git a/mapserver.spec b/mapserver.spec
index 61b7feb..edf7ce5 100644
--- a/mapserver.spec
+++ b/mapserver.spec
@@ -22,6 +22,8 @@ Patch2:         %{name}-%{version}-python-%{MS_REL}.patch
 %endif
 # Fix check for libgd version (to be reported upstream)
 Patch3:         %{name}-6.2.1-gdver.patch
+# upstream patch for PHP 5.6
+Patch4:         %{name}-6.2.1-php56.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -97,6 +99,7 @@ within the Java programming language.
 %patch2 -p1 -b .python
 %endif
 %patch3 -p1 -b .gdver
+%patch4 -p1 -b .php56
 
 # fix spurious perm bits
 chmod -x mapscript/python/examples/*.py
@@ -189,8 +192,8 @@ popd
 rm -rf %{buildroot}
 
 mkdir -p %{buildroot}%{_libexecdir}
-mkdir -p %{buildroot}/%{_sysconfdir}/php.d
-mkdir -p %{buildroot}%{_libdir}/php/modules
+mkdir -p %{buildroot}%{php_inidir}
+mkdir -p %{buildroot}%{php_extdir}
 mkdir -p %{buildroot}/%{_bindir}
 mkdir -p %{buildroot}%{_datadir}/%{name}
 install -p -m 755 .libs/mapserv %{buildroot}%{_libexecdir}/mapserver%{MS_REL}
@@ -209,7 +212,7 @@ install -p -m 755 .libs/libmapserver-%{version}.so %{buildroot}%{_libdir}/
 install -p -m 644 xmlmapfile/mapfile.xsd %{buildroot}%{_datadir}/%{name}
 install -p -m 644 xmlmapfile/mapfile.xsl %{buildroot}%{_datadir}/%{name}
 
-install -p -m 755 mapscript/php/.libs/php_mapscript-%{version}.so %{buildroot}/%{_libdir}/php/modules/php_mapscript%{MS_REL}.so
+install -p -m 755 mapscript/php/.libs/php_mapscript-%{version}.so %{buildroot}/%{php_extdir}/php_mapscript%{MS_REL}.so
 
 # install perl module
 pushd mapscript/perl
@@ -227,8 +230,8 @@ install -p -m 644 mapscript/java/mapscript%{MS_REL}.jar %{buildroot}%{_javadir}/
 install -p -m 755 mapscript/java/.libs/libjavamapscript-%{version}.so %{buildroot}%{_libdir}/
 
 # install php config file
-mkdir -p %{buildroot}%{_sysconfdir}/php.d/
-cat > %{buildroot}%{_sysconfdir}/php.d/%{ini_name} <<EOF
+mkdir -p %{buildroot}%{php_inidir}
+cat > %{buildroot}%{php_inidir}/%{ini_name} <<EOF
 ; Enable %{name} extension module
 extension=php_mapscript%{MS_REL}.so
 EOF
@@ -241,6 +244,14 @@ done
 # fix some exec bits
 chmod 755 %{buildroot}%{perl_vendorarch}/auto/mapscript%{MS_REL}/mapscript%{MS_REL}.so
 
+
+%check
+: Minimal load test for PHP extension
+%{_bindir}/php \
+    -n -d extension=%{buildroot}%{php_extdir}/php_mapscript%{MS_REL}.so \
+    -m | grep MapScript
+
+
 %files
 %defattr(-,root,root)
 %doc README COMMITERS GD-COPYING HISTORY.TXT  
@@ -265,8 +276,8 @@ chmod 755 %{buildroot}%{perl_vendorarch}/auto/mapscript%{MS_REL}/mapscript%{MS_R
 %defattr(-,root,root)
 %doc mapscript/php/README
 %doc mapscript/php/examples
-%config(noreplace) %{_sysconfdir}/php.d/%{ini_name}
-%{_libdir}/php/modules/php_mapscript%{MS_REL}.so
+%config(noreplace) %{php_inidir}/%{ini_name}
+%{php_extdir}/php_mapscript%{MS_REL}.so
 
 %files perl
 %defattr(-,root,root)
@@ -294,6 +305,8 @@ chmod 755 %{buildroot}%{perl_vendorarch}/auto/mapscript%{MS_REL}/mapscript%{MS_R
 * Fri Jun 20 2014 Remi Collet <rcollet at redhat.com> - 6.2.1-7
 - rebuild for https://fedoraproject.org/wiki/Changes/Php56
 - add numerical prefix to extension configuration file
+- add minimal PHP extension load test
+- add upstream patch for PHP 5.6 (fix #1111478)
 
 * Sat Jun 07 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 6.2.1-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild


More information about the scm-commits mailing list