[php-pecl-mailparse] PHP 5.4.0 Build

Remi Collet remi at fedoraproject.org
Fri Jan 20 17:52:57 UTC 2012


commit c312cc8b987401ad83906477d9b885d14c0f80b8
Author: remi <fedora at famillecollet.com>
Date:   Fri Jan 20 18:52:27 2012 +0100

    PHP 5.4.0 Build

 mailparse-php54.patch   |  111 +++++++++++++++++++++++++++++++++++++++++++++++
 php-pecl-mailparse.spec |   71 ++++++++++++++++++-----------
 2 files changed, 155 insertions(+), 27 deletions(-)
---
diff --git a/mailparse-php54.patch b/mailparse-php54.patch
new file mode 100644
index 0000000..36bc067
--- /dev/null
+++ b/mailparse-php54.patch
@@ -0,0 +1,111 @@
+diff -up mailparse-2.1.5/mailparse.c.php54 mailparse-2.1.5/mailparse.c
+--- mailparse-2.1.5/mailparse.c.php54	2009-03-03 23:24:04.000000000 +0100
++++ mailparse-2.1.5/mailparse.c	2011-11-18 17:57:46.036409192 +0100
+@@ -56,7 +56,7 @@ static size_t mailparse_do_uudecode(php_
+ static int le_mime_part;
+ 
+ 
+-static function_entry mimemessage_methods[] = {
++static zend_function_entry mimemessage_methods[] = {
+ 	PHP_NAMED_FE(mimemessage,			PHP_FN(mailparse_mimemessage),					NULL)
+ 	PHP_NAMED_FE(get_child,				PHP_FN(mailparse_mimemessage_get_child),		NULL)
+ 	PHP_NAMED_FE(get_child_count,		PHP_FN(mailparse_mimemessage_get_child_count),	NULL)
+@@ -72,7 +72,7 @@ static function_entry mimemessage_method
+ 
+ static zend_class_entry *mimemsg_class_entry;
+ 
+-function_entry mailparse_functions[] = {
++zend_function_entry mailparse_functions[] = {
+ 	PHP_FE(mailparse_msg_parse_file,			NULL)
+ 	PHP_FE(mailparse_msg_get_part,				NULL)
+ 	PHP_FE(mailparse_msg_get_structure,			NULL)
+@@ -240,7 +240,7 @@ PHP_FUNCTION(mailparse_mimemessage)
+ 		RETURN_FALSE;
+ 
+ 	/* prepare the mime part for this object */
+-	part = php_mimepart_alloc();
++	part = php_mimepart_alloc(TSRMLS_C);
+ 	MAKE_STD_ZVAL(zpart);
+ 	php_mimepart_to_zval(zpart, part);
+ 
+@@ -1074,7 +1074,7 @@ PHP_FUNCTION(mailparse_msg_parse_file)
+ 
+ 	filebuf = emalloc(MAILPARSE_BUFSIZ);
+ 
+-	part = php_mimepart_alloc();
++	part = php_mimepart_alloc(TSRMLS_C);
+ 	php_mimepart_to_zval(return_value, part);
+ 
+ 	while(!php_stream_eof(stream))	{
+@@ -1113,7 +1113,7 @@ PHP_FUNCTION(mailparse_msg_free)
+    Returns a handle that can be used to parse a message */
+ PHP_FUNCTION(mailparse_msg_create)
+ {
+-	php_mimepart *part = php_mimepart_alloc();
++	php_mimepart *part = php_mimepart_alloc(TSRMLS_C);
+ 
+ 	php_mimepart_to_zval(return_value, part);
+ }
+diff -up mailparse-2.1.5/php_mailparse_mime.c.php54 mailparse-2.1.5/php_mailparse_mime.c
+--- mailparse-2.1.5/php_mailparse_mime.c.php54	2011-11-18 17:55:38.630980580 +0100
++++ mailparse-2.1.5/php_mailparse_mime.c	2011-11-18 17:59:03.735671654 +0100
+@@ -305,7 +305,7 @@ static void php_mimepart_free_child(php_
+ 	php_mimepart_free(*part TSRMLS_CC);
+ }
+ 
+-PHP_MAILPARSE_API php_mimepart *php_mimepart_alloc(void)
++PHP_MAILPARSE_API php_mimepart *php_mimepart_alloc(TSRMLS_D)
+ {
+ 	php_mimepart *part = ecalloc(1, sizeof(php_mimepart));
+ 
+@@ -508,9 +508,9 @@ static int php_mimepart_process_header(p
+ 	return SUCCESS;
+ }
+ 
+-static php_mimepart *alloc_new_child_part(php_mimepart *parentpart, size_t startpos, int inherit)
++static php_mimepart *alloc_new_child_part(php_mimepart *parentpart, size_t startpos, int inherit TSRMLS_DC)
+ {
+-	php_mimepart *child = php_mimepart_alloc();
++	php_mimepart *child = php_mimepart_alloc(TSRMLS_C);
+ 	int ret;
+ 
+ 	parentpart->parsedata.lastpart = child;
+@@ -599,7 +599,7 @@ static int php_mimepart_process_line(php
+ 				return SUCCESS;
+ 			}
+ 
+-			newpart = alloc_new_child_part(workpart, workpart->endpos + origcount, 1);
++			newpart = alloc_new_child_part(workpart, workpart->endpos + origcount, 1 TSRMLS_CC);
+ 			php_mimepart_update_positions(workpart, workpart->endpos + origcount, workpart->endpos + linelen, 1);
+ 			newpart->mime_version = estrdup(workpart->mime_version);
+ 			newpart->parsedata.in_header = 1;
+@@ -688,7 +688,7 @@ static int php_mimepart_process_line(php
+ 			}
+ 					
+ 			if (CONTENT_TYPE_IS(workpart, "message/rfc822")) {
+-				workpart = alloc_new_child_part(workpart, workpart->bodystart, 0);
++				workpart = alloc_new_child_part(workpart, workpart->bodystart, 0 TSRMLS_CC);
+ 				workpart->parsedata.in_header = 1;
+ 				return SUCCESS;
+ 				
+@@ -696,7 +696,7 @@ static int php_mimepart_process_line(php
+ 		
+ 			/* create a section for the preamble that precedes the first boundary */
+ 			if (workpart->boundary) {
+-				workpart = alloc_new_child_part(workpart, workpart->bodystart, 1);
++				workpart = alloc_new_child_part(workpart, workpart->bodystart, 1 TSRMLS_CC);
+ 				workpart->parsedata.in_header = 0;
+ 				workpart->parsedata.is_dummy = 1;
+ 				return SUCCESS;
+diff -up mailparse-2.1.5/php_mailparse_mime.h.php54 mailparse-2.1.5/php_mailparse_mime.h
+--- mailparse-2.1.5/php_mailparse_mime.h.php54	2011-11-18 17:55:45.702004867 +0100
++++ mailparse-2.1.5/php_mailparse_mime.h	2011-11-18 17:56:51.954226501 +0100
+@@ -81,7 +81,7 @@ struct _php_mimepart {
+ 
+ };
+ 
+-PHP_MAILPARSE_API php_mimepart *php_mimepart_alloc(void);
++PHP_MAILPARSE_API php_mimepart *php_mimepart_alloc(TSRMLS_D);
+ PHP_MAILPARSE_API void php_mimepart_free(php_mimepart *part TSRMLS_DC);
+ PHP_MAILPARSE_API int php_mimepart_parse(php_mimepart *part, const char *buf, size_t bufsize TSRMLS_DC);
+ PHP_MAILPARSE_API void php_mimepart_get_offsets(php_mimepart *part, off_t *start, off_t *end, off_t *start_body, int *nlines, int *nbodylines);
diff --git a/php-pecl-mailparse.spec b/php-pecl-mailparse.spec
index 70e13da..60b7306 100644
--- a/php-pecl-mailparse.spec
+++ b/php-pecl-mailparse.spec
@@ -6,12 +6,15 @@
 Summary:   PHP PECL package for parsing and working with email messages
 Name:      php-pecl-mailparse
 Version:   2.1.5
-Release:   5%{?dist}
+Release:   6%{?dist}
 License:   PHP
 Group:     Development/Languages
 URL:       http://pecl.php.net/package/mailparse
 Source0:   http://pecl.php.net/get/mailparse-%{version}.tgz
 
+# https://bugs.php.net/60331
+Patch0:    mailparse-php54.patch
+
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 BuildRequires: php-devel, php-pear
 # mbstring need for tests
@@ -27,10 +30,11 @@ Requires(postun): %{__pecl}
 Provides: php-pecl(%{pecl_name}) = %{version}-%{release}
 
 
-%{?filter_setup:
-%filter_provides_in %{php_extdir}/.*\.so$
-%filter_setup
-}
+# RPM 4.8
+%{?filter_provides_in: %filter_provides_in %{php_extdir}/.*\.so$}
+%{?filter_setup}
+# RPM 4.9
+%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{php_extdir}/.*\\.so$
 
 
 %description
@@ -43,39 +47,48 @@ It can deal with rfc822 and rfc2045 (MIME) compliant messages.
 # the sources extract straight to it
 %setup -q -c
 
-# Move back all other sources to the top level working directory
-%{__mv} mailparse-%{version}/* .
-%{__chmod} -x *.php *.c *.h
+extver=$(sed -n '/#define PHP_MAILPARSE_VERSION/{s/.* "//;s/".*$//;p}' %{pecl_name}-%{version}/php_mailparse.h)
+if test "x${extver}" != "x%{version}"; then
+   : Error: Upstream version is ${extver}, expecting %{version}.
+   exit 1
+fi
+
+cat > %{pecl_name}.ini << 'EOF'
+; Enable mailparse extension module
+extension = mailparse.so
+
+; Set the default charset
+;mailparse.def_charset = us-ascii
+EOF
+
+%patch0 -p0 -b .php54
+
+chmod -x %{pecl_name}-%{version}/*.{php,c,h}
 
 
 %build
+cd %{pecl_name}-%{version}
 phpize
 %configure
-%{__make} %{?_smp_mflags}
+make %{?_smp_mflags}
 
 
 %install
-%{__rm} -rf %{buildroot}
-%{__make} install INSTALL_ROOT=%{buildroot}
-
-# Drop in the bit of configuration
-%{__mkdir_p} %{buildroot}%{_sysconfdir}/php.d
-%{__cat} > %{buildroot}%{_sysconfdir}/php.d/z-mailparse.ini << 'EOF'
-; Enable mailparse extension module
-extension = mailparse.so
-
-; Set the default charset
-;mailparse.def_charset = us-ascii
-EOF
+rm -rf %{buildroot}
+make -C %{pecl_name}-%{version} \
+     install INSTALL_ROOT=%{buildroot}
 
 # Install XML package description
-# use 'name' rather than 'pecl_name' to avoid conflict with pear extensions
-%{__mkdir_p} %{buildroot}%{pecl_xmldir}
-%{__install} -m 644 package2.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
+install -Dpm 644 package2.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
+
+# Drop in the bit of configuration
+install -Dpm 644 %{pecl_name}.ini %{buildroot}%{_sysconfdir}/php.d/z-%{pecl_name}.ini
 
 
 %check
-%{__ln_s} %{php_extdir}/mbstring.so modules
+cd %{pecl_name}-%{version}
+ln -s %{php_extdir}/mbstring.so modules
+
 TEST_PHP_EXECUTABLE=$(which php) php run-tests.php \
     -n -q -d extension_dir=modules \
     -d extension=mbstring.so \
@@ -83,7 +96,7 @@ TEST_PHP_EXECUTABLE=$(which php) php run-tests.php \
 
 
 %clean
-%{__rm} -rf %{buildroot}
+rm -rf %{buildroot}
 
 
 %if 0%{?pecl_install:1}
@@ -102,7 +115,7 @@ fi
 
 %files
 %defattr(-,root,root,-)
-%doc README CREDITS try.php
+%doc %{pecl_name}-%{version}/{README,CREDITS,try.php}
 # We prefix the config file with "z-" so that it loads after mbstring.ini
 %config(noreplace) %{_sysconfdir}/php.d/z-mailparse.ini
 %{php_extdir}/mailparse.so
@@ -110,6 +123,10 @@ fi
 
 
 %changelog
+* Thu Jan 19 2012 Remi Collet <remi at fedoraproject.org> - 2.1.5-6
+- rebuild against PHP 5.4, with patch
+- fix filters
+
 * Sat Jan 14 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.1.5-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
 


More information about the scm-commits mailing list