From 2ad9286ba7199aae118e000bb34c271a62484892 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 12 Sep 2012 16:04:54 +0200 Subject: php-pecl-parsekit: import from rawhide --- php-pecl-parsekit-1.3-php-5.4.patch | 205 ++++++++++++++++++++++++++++++++++++ php-pecl-parsekit.spec | 160 ++++++++++++++++++++++++++++ 2 files changed, 365 insertions(+) create mode 100644 php-pecl-parsekit-1.3-php-5.4.patch create mode 100644 php-pecl-parsekit.spec diff --git a/php-pecl-parsekit-1.3-php-5.4.patch b/php-pecl-parsekit-1.3-php-5.4.patch new file mode 100644 index 0000000..d1a0fe5 --- /dev/null +++ b/php-pecl-parsekit-1.3-php-5.4.patch @@ -0,0 +1,205 @@ +diff -NaurEbBH -xgrep '-x*.la' '-x*.lai' '-x*.o' '-x*.so' '-x*.lo' php-pecl-parsekit-1.3.orig/parsekit/parsekit.c php-pecl-parsekit-1.3/parsekit/parsekit.c +--- php-pecl-parsekit-1.3.orig/parsekit/parsekit.c 2009-01-22 09:21:11.000000000 -0700 ++++ php-pecl-parsekit-1.3/parsekit/parsekit.c 2012-02-26 13:10:04.515679427 -0700 +@@ -78,18 +78,18 @@ + #ifdef IS_CV + /* PHP >= 5.1 */ + } else if (node->op_type == IS_CV) { +- add_assoc_long(return_value, "var", node->u.var); +- add_assoc_stringl(return_value, "varname", op_array->vars[node->u.var].name, op_array->vars[node->u.var].name_len, 1); ++ add_assoc_long(return_value, "var", node->u.op.var); ++ add_assoc_stringl(return_value, "varname", op_array->vars[node->u.op.var].name, op_array->vars[node->u.op.var].name_len, 1); + #endif + } else { + /* IS_VAR || IS_TMP_VAR || IS_UNUSED */ + char sop[(sizeof(void *) * 2) + 1]; + +- snprintf(sop, (sizeof(void *) * 2) + 1, "%X", (unsigned int)node->u.var); ++ snprintf(sop, (sizeof(void *) * 2) + 1, "%X", (unsigned int)node->u.op.var); + + if ((flags & PHP_PARSEKIT_VAR) || + (options & PHP_PARSEKIT_ALL_ELEMENTS)) { +- add_assoc_long(return_value, "var", node->u.var / sizeof(temp_variable)); ++ add_assoc_long(return_value, "var", node->u.op.var / sizeof(temp_variable)); + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { + add_assoc_null(return_value, "var"); + } +@@ -114,7 +114,7 @@ + (options & PHP_PARSEKIT_ALL_ELEMENTS)) { + add_assoc_string(return_value, "jmp_addr", sop, 1); + snprintf(sop, sizeof(sop)-1, "%u", +- ((unsigned int)((char*)node->u.var - (char*)op_array->opcodes))/sizeof(zend_op)); ++ ((unsigned int)((char*)node->u.op.var - (char*)op_array->opcodes))/sizeof(zend_op)); + add_assoc_string(return_value, "jmp_offset", sop, 1); + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { + add_assoc_null(return_value, "jmp_addr"); +@@ -123,9 +123,9 @@ + + if ((flags & PHP_PARSEKIT_EA_TYPE) || + (options & PHP_PARSEKIT_ALL_ELEMENTS)) { +- add_assoc_long(return_value, "EA.type", node->u.EA.type); ++ add_assoc_long(return_value, "EA", node->EA); + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { +- add_assoc_null(return_value, "EA.type"); ++ add_assoc_null(return_value, "EA"); + } + } + } +@@ -300,7 +300,7 @@ + } + add_assoc_long(return_value, "num_args", ops->num_args); + add_assoc_long(return_value, "required_num_args", ops->required_num_args); +- add_assoc_bool(return_value, "pass_rest_by_reference", ops->pass_rest_by_reference); ++ add_assoc_bool(return_value, "pass_rest_by_reference", ops->fn_flags & ZEND_ACC_PASS_REST_BY_REFERENCE); + + if (ops->num_args && ops->arg_info) { + MAKE_STD_ZVAL(tmpzval); +@@ -374,15 +374,15 @@ + #endif + /* ZE1 and ZE2 */ + +- add_assoc_bool(return_value, "return_reference", ops->return_reference); ++ add_assoc_bool(return_value, "return_reference", ops->fn_flags & ZEND_ACC_RETURN_REFERENCE); + add_assoc_long(return_value, "refcount", *(ops->refcount)); + add_assoc_long(return_value, "last", ops->last); +- add_assoc_long(return_value, "size", ops->size); ++ add_assoc_long(return_value, "size", CG(context).opcodes_size); + add_assoc_long(return_value, "T", ops->T); + add_assoc_long(return_value, "last_brk_cont", ops->last_brk_cont); +- add_assoc_long(return_value, "current_brk_cont", ops->current_brk_cont); +- add_assoc_long(return_value, "backpatch_count", ops->backpatch_count); +- add_assoc_bool(return_value, "done_pass_two", ops->done_pass_two); ++ add_assoc_long(return_value, "current_brk_cont", CG(context).current_brk_cont); ++ add_assoc_long(return_value, "backpatch_count", CG(context).backpatch_count); ++ add_assoc_bool(return_value, "done_pass_two", ops->fn_flags & ZEND_ACC_DONE_PASS_TWO); + + if (ops->last_brk_cont > 0) { + MAKE_STD_ZVAL(tmpzval); +@@ -413,10 +413,10 @@ + add_assoc_null(return_value, "static_variables"); + } + +- if (ops->start_op) { ++ if (EG(start_op)) { + char sop[(sizeof(void *) * 2) + 1]; + +- snprintf(sop, sizeof(sop), "%X", (unsigned int)ops->start_op); ++ snprintf(sop, sizeof(sop), "%X", (unsigned int)EG(start_op)); + add_assoc_string(return_value, "start_op", sop, 1); + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { + add_assoc_null(return_value, "start_op"); +@@ -431,7 +431,7 @@ + /* Leave this last, it simplifies readability */ + MAKE_STD_ZVAL(tmpzval); + array_init(tmpzval); +- for(op = ops->opcodes, i = 0; op && i < ops->size; op++, i++) { ++ for(op = ops->opcodes, i = 0; op && i < CG(context).opcodes_size; op++, i++) { + zval *zop; + + MAKE_STD_ZVAL(zop); +@@ -447,17 +447,17 @@ + static int php_parsekit_parse_node_simple(char **pret, zend_op_array *op_array, znode *node, zend_op_array *oparray TSRMLS_DC) + { + if (node->op_type == IS_UNUSED) { +- if (node->u.var) { ++ if (node->u.op.var) { + #ifdef ZEND_ENGINE_2 +- if (node->u.jmp_addr >= oparray->opcodes && +- node->u.jmp_addr <= (oparray->opcodes + (sizeof(zend_op) * oparray->size))) ++ if (node->u.op.jmp_addr >= oparray->opcodes && ++ node->u.op.jmp_addr <= (oparray->opcodes + (sizeof(zend_op) * CG(context).opcodes_size))) + { +- spprintf(pret, 0, "#%d", node->u.jmp_addr - oparray->opcodes); ++ spprintf(pret, 0, "#%d", node->u.op.jmp_addr - oparray->opcodes); + } + else + #endif + { +- spprintf(pret, 0, "0x%X", node->u.var); ++ spprintf(pret, 0, "0x%X", node->u.op.var); + } + return 1; + } else { +@@ -514,7 +514,7 @@ + } + } + +- spprintf(pret, 0, "T(%d)", node->u.var / sizeof(temp_variable)); ++ spprintf(pret, 0, "T(%d)", node->u.op.var / sizeof(temp_variable)); + return 1; + } + /* }}} */ +@@ -528,7 +528,7 @@ + + array_init(return_value); + +- for (op = ops->opcodes, i = 0; op && i < ops->size; op++, i++) { ++ for (op = ops->opcodes, i = 0; op && i < CG(context).opcodes_size; op++, i++) { + char *opline, *result, *op1, *op2; + int opline_len, freeit = 0; + +@@ -633,7 +633,7 @@ + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { + add_assoc_null(return_value, "parent"); + } +- add_assoc_bool(return_value, "constants_updated", ce->constants_updated); ++ add_assoc_bool(return_value, "constants_updated", ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED); + #ifdef ZEND_ENGINE_2 + /* ZE2 class_entry members */ + add_assoc_long(return_value, "ce_flags", ce->ce_flags); +@@ -691,12 +691,12 @@ + add_assoc_null(return_value, "properties_info"); + } + +- if (ce->static_members && zend_hash_num_elements(ce->static_members) > 0) { ++ if (ce->static_members_table && zend_hash_num_elements(ce->static_members_table) > 0) { + zval *tmp_zval; + + MAKE_STD_ZVAL(tmpzval); + array_init(tmpzval); +- zend_hash_copy(HASH_OF(tmpzval), ce->static_members, (copy_ctor_func_t) zval_add_ref, (void *) &tmp_zval, sizeof(zval *)); ++ zend_hash_copy(HASH_OF(tmpzval), ce->static_members_table, (copy_ctor_func_t) zval_add_ref, (void *) &tmp_zval, sizeof(zval *)); + add_assoc_zval(return_value, "static_members", tmpzval); + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { + add_assoc_null(return_value, "static_members"); +@@ -724,11 +724,11 @@ + add_assoc_null(return_value, "interfaces"); + } + +- add_assoc_string(return_value, "filename", ce->filename, 1); +- add_assoc_long(return_value, "line_start", ce->line_start); +- add_assoc_long(return_value, "line_end", ce->line_end); +- if (ce->doc_comment) { +- add_assoc_stringl(return_value, "doc_comment", ce->doc_comment, ce->doc_comment_len, 1); ++ add_assoc_string(return_value, "filename", ce->info.user.filename, 1); ++ add_assoc_long(return_value, "line_start", ce->info.user.line_start); ++ add_assoc_long(return_value, "line_end", ce->info.user.line_end); ++ if (ce->info.user.doc_comment) { ++ add_assoc_stringl(return_value, "doc_comment", ce->info.user.doc_comment, ce->info.user.doc_comment_len, 1); + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { + add_assoc_null(return_value, "doc_comment"); + } +@@ -757,12 +757,12 @@ + add_assoc_null(return_value, "function_table"); + } + +- if (zend_hash_num_elements(&(ce->default_properties)) > 0) { ++ if (zend_hash_num_elements(&(ce->default_properties_table)) > 0) { + zval *tmp_zval; + + MAKE_STD_ZVAL(tmpzval); + array_init(tmpzval); +- zend_hash_copy(HASH_OF(tmpzval), &(ce->default_properties), (copy_ctor_func_t) zval_add_ref, (void *) &tmp_zval, sizeof(zval *)); ++ zend_hash_copy(HASH_OF(tmpzval), &(ce->default_properties_table), (copy_ctor_func_t) zval_add_ref, (void *) &tmp_zval, sizeof(zval *)); + add_assoc_zval(return_value, "default_properties", tmpzval); + } else if (options & PHP_PARSEKIT_ALWAYS_SET) { + add_assoc_null(return_value, "default_properties"); +@@ -1131,7 +1131,7 @@ + #endif + + /* {{{ function_entry */ +-function_entry parsekit_functions[] = { ++zend_function_entry parsekit_functions[] = { + PHP_FE(parsekit_compile_string, php_parsekit_second_arg_force_ref) + PHP_FE(parsekit_compile_file, php_parsekit_second_arg_force_ref) + PHP_FE(parsekit_opcode_flags, NULL) diff --git a/php-pecl-parsekit.spec b/php-pecl-parsekit.spec new file mode 100644 index 0000000..e9eae03 --- /dev/null +++ b/php-pecl-parsekit.spec @@ -0,0 +1,160 @@ +%global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1) +%{!?__pecl: %{expand: %%global __pecl %{_bindir}/pecl}} +%{!?php_extdir: %{expand: %%global php_extdir %(php-config --extension-dir)}} + +%global CVS 20120226 +%global peclName parsekit + +Summary: PHP Opcode Analyser +Name: php-pecl-%peclName +Version: 1.3 +Release: 2%{?CVS:.CVS%{CVS}}%{?dist} +License: PHP +Group: Development/Libraries +%if 0%{?CVS:1} +# cvs -d :pserver:cvsread@cvs.php.net/repository export -D 2009-03-09 pecl/parsekit ; tar cjf parsekit-1.2-CVS20090309.tar.bz2 -C pecl parsekit +Source0: %{peclName}-%{version}-CVS%{CVS}.tar.bz2 +%else +Source0: http://pecl.php.net/get/%{peclName}-%{version}.tgz +%endif +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +URL: http://pecl.php.net/package/%peclName +BuildRequires: php-pear >= 1.4.7 php-devel + +%if 0%{?php_zend_api:1} +Requires: php(zend-abi) = %{php_zend_api} +Requires: php(api) = %{php_core_api} +%else +Requires: php-api = %{php_apiver} +%endif +Provides: php-pecl(%peclName) = %{version} + +Requires(post): %{__pecl} +Requires(postun): %{__pecl} + +# https://bugs.php.net/bug.php?id=61187 +Patch1: php-pecl-parsekit-1.3-php-5.4.patch + +%description +Provides a userspace interpretation of the opcodes generated by the Zend engine +compiler built into PHP. +This extension is meant for development and debug purposes only and contains +some code which is potentially non-threadsafe. + +%prep +#%setup -qc -n %peclName-%{version} +%setup -qc + +%patch1 -p1 -b .php5.4 + +%build +cd %peclName +phpize +%{configure} --with-%peclName +%{__make} + +%install +cd %peclName +rm -rf %{buildroot} + +%{__make} install \ + INSTALL_ROOT=%{buildroot} + +# Install XML package description +install -m 0755 -d %{buildroot}%{pecl_xmldir} +install -m 0664 package.xml %{buildroot}%{pecl_xmldir}/%peclName.xml +install -d %{buildroot}%{_sysconfdir}/php.d/ + +cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/%peclName.ini +; Enable %{peclName} extension module +extension=%{peclName}.so +EOF + +%post +%if 0%{?pecl_install:1} +%{pecl_install} %{pecl_xmldir}/%{peclName}.xml >/dev/null || : +%endif + +%postun +%if 0%{?pecl_uninstall:1} +if [ $1 -eq 0 ] ; then + %{pecl_uninstall} %{peclName} >/dev/null || : +fi +%endif + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root,-) +%doc %peclName/examples/{compile_file.php,compile_string.php,compile_string_show_errors.php} %peclName/README +%{php_extdir}/%peclName.so +%{pecl_xmldir}/%peclName.xml +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php.d/%peclName.ini + +%changelog +* Sat Jul 21 2012 Fedora Release Engineering - 1.3-2.CVS20120226 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sun Mar 4 2012 Pavel Alexeev 1.3-1.CVS20120226 +- Change release enumerate manner as 1.3 was already released (Thanks to Remi Collet). + +* Sun Feb 26 2012 Pavel Alexeev 1.3-0.1.CVS20120226 +- Update to 1.3 branch, try fix FBFS on PHP 5.4. +- Urls by patch wrote: + https://bugs.php.net/bug.php?id=61187 + http://fossies.org/unix/www/php-5.4.0RC8.tar.gz:a/php-5.4.0RC8/NEWS + http://svn.php.net/viewvc/php/php-src/branches/PHP_5_4/Zend/zend_compile.h?r1=298202&r2=298203& + http://svn.php.net/viewvc/php/php-src/branches/PHP_5_4/Zend/zend_compile.h?annotate=321634 + http://svn.php.net/viewvc/php/php-src/branches/PHP_5_4/Zend/zend_compile.h?r1=301081&r2=303381 +- Add patch php-pecl-parsekit-1.3-php-5.4.patch + +* Sat Jan 14 2012 Fedora Release Engineering - 1.2-8.CVS20090309 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Sep 12 2011 Pavel Alexeev - 1.2-7.CVS20090309 +- Fix FBFS f16-17. Bz#716157 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.2-6.CVS20090309 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Jul 26 2009 Fedora Release Engineering - 1.2-5.CVS20090309 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jul 13 2009 Remi Collet - 1.2-4.CVS20090309 +- rebuild for new PHP 5.3.0 ABI (20090626) + +* Tue Jun 30 2009 Pavel Alexeev - 1.2-3.CVS20090309 +- Most of changes inspired by continue Fedora review by Jason Tibbitts. +- Prefer %%global over %%define +- Source0 is not URL now for CVS build. +- "PECL" prefix removed from summary. +- Add %%release part into BuildRoot tag. +- Add more magic into Release define and fit it into one line.OD + +* Mon Mar 9 2009 Pavel Alexeev - 1.2-2.CVS20090309 +- php-pecl-parsekit.Hu.spec renamed to normal php-pecl-parsekit.spec +- In Version changhes: As it is post release enumereate it after 0. Remove Hu-part. +- New CVS checkout 20090309 +- Add php_apiver and __pecl macroses define. Remove peardir. +- Remove define macros xmldir and replace it by common pecl_xmldir +- Add comment of command how to get source. +- Add patch Patch2: php-pecl-parsekit-1.2.APIstatic.patch to allow build on recent versions. +- Fix several inconsistent macros usages. +- Add standard Requires/provides of php-api, abi, zend abi, php-pecl(%%peclName) = %%{version}... +- Delete pathces, which is not needed anymore in ew checkout. +- Remove Obsoletes: php-pear-%%peclName +- Add Requires(post): %%{__pecl} and Requires(postun): %%{__pecl} +- Rpmlint warnings: + o Mixed spaces turned to tabs. + o Descrioption line too long: splited. + o License from "PHP License" changed to just PHP + o script-without-shebang /usr/share/pear/.pkgxml/parsekit.xml: chmod to 0664 + +* Tue May 13 2008 Pavel Alexeev - 1.2-0.CVS20080513.Hu.0 +- Initial spec (copy of php-pecl-imagick.Hu.spec) +- Add (import from runkit spec-file) CVS-build support +- Add patches: + Patch0: php-pecl-parsekit-php51.patch (http://www.mail-archive.com/pld-cvs-commit@lists.pld-linux.org/msg28512.html) + Patch1: php-pecl-parsekit-1.2-PHP5.3.0.patch (self) +- Post and Pustun steps replaced by it is macroses-representated form (from php-pecl-phar) -- cgit