[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