[php-pecl-xhprof] - git snapshot + php 5.5 fix https://github.com/facebook/xhprof/pull/15 - also provides php-xhprof -

Remi Collet remi at fedoraproject.org
Fri Jan 4 12:56:21 UTC 2013


commit 6def56d881481352dbef8971860063015dd3b614
Author: Remi Collet <remi at fedoraproject.org>
Date:   Fri Jan 4 13:56:14 2013 +0100

    - git snapshot + php 5.5 fix https://github.com/facebook/xhprof/pull/15
    - also provides php-xhprof
    - cleanups

 .gitignore           |    3 +
 php-pecl-xhprof.spec |   47 ++++++++------
 sources              |    2 +-
 xhprof-arginfo.patch |   54 ----------------
 xhprof-php54.patch   |   85 -------------------------
 xhprof-php55.patch   |  170 ++++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 201 insertions(+), 160 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 1840cd9..21b5a8e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,4 @@
+clog
+*spec~
 /xhprof-0.9.2.tgz
+/xhprof-b8c76ac5ab.tgz
diff --git a/php-pecl-xhprof.spec b/php-pecl-xhprof.spec
index ffb295a..6db5bdb 100644
--- a/php-pecl-xhprof.spec
+++ b/php-pecl-xhprof.spec
@@ -1,38 +1,45 @@
 %{!?__pecl:         %{expand: %%global __pecl %{_bindir}/pecl}}
 
 %global pecl_name xhprof
+%global gitver    b8c76ac5ab
 
 Name:           php-pecl-xhprof
 Version:        0.9.2
-Release:        7%{?dist}
+Release:        8%{?gitver:.git%{gitver}}%{?dist}
+
 Summary:        PHP extension for XHProf, a Hierarchical Profiler
 Group:          Development/Languages
 License:        ASL 2.0
 URL:            http://pecl.php.net/package/%{pecl_name}
+%if 0%{?gitver:1}
+# https://github.com/facebook/xhprof/archive/master.tar.gz
+Source0:        %{pecl_name}-%{gitver}.tgz
+%else
 Source0:        http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+%endif
 
-# From github
-Patch0:         %{pecl_name}-arginfo.patch
-Patch1:         %{pecl_name}-php54.patch
+# https://github.com/facebook/xhprof/pull/15
+Patch1:         %{pecl_name}-php55.patch
 
 # https://bugs.php.net/61262
 ExclusiveArch:  %{ix86} x86_64
 
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:  php-devel >= 5.2.0
-BuildRequires:  php-pear >= 1:1.4.0
+BuildRequires:  php-pear
 
 Requires:       php(zend-abi) = %{php_zend_api}
 Requires:       php(api) = %{php_core_api}
 Requires(post): %{__pecl}
 Requires(postun): %{__pecl}
+
+Provides:       php-%{pecl_name} = %{version}
+Provides:       php-%{pecl_name}%{?_isa} = %{version}
 Provides:       php-pecl(%{pecl_name}) = %{version}
+Provides:       php-pecl(%{pecl_name})%{?_isa} = %{version}
 
-# RPM 4.8
+# Filter private provides
 %{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$}
 %{?filter_setup}
-# RPM 4.9
-%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{_libdir}/.*\\.so$
 
 
 %description
@@ -47,9 +54,7 @@ The HTML based navigational interface is provided in the "xhprof" package.
 %package -n xhprof
 Summary:       A Hierarchical Profiler for PHP - Web interface
 Group:         Development/Tools
-%if 0%{?fedora} > 11 || 0%{?rhel} > 5
 BuildArch:     noarch
-%endif
 
 Requires:      php-pecl-xhprof = %{version}-%{release}
 Requires:      php >= 5.2.0
@@ -74,6 +79,10 @@ Documentation : %{_datadir}/doc/%{name}-%{version}/docs/index.html
 
 %prep
 %setup -c -q
+%if 0%{?gitver:1}
+mv %{pecl_name}-master/package.xml .
+mv %{pecl_name}-master %{pecl_name}-%{version}
+%endif
 
 # Extension configuration file
 cat >%{pecl_name}.ini <<EOF
@@ -108,8 +117,7 @@ Alias /xhprof /usr/share/xhprof/xhprof_html
 EOF
 
 cd %{pecl_name}-%{version}
-%patch0 -p1 -b .refl
-%patch1 -p1 -b .php54
+%patch1 -p1 -b .php55
 
 %if 0%{?__ztsphp:1}
 # duplicate for ZTS build
@@ -137,7 +145,6 @@ make %{?_smp_mflags}
 
 
 %install
-rm -rf %{buildroot}
 make install -C %{pecl_name}-%{version}/extension  INSTALL_ROOT=%{buildroot}
 install -D -m 644 %{pecl_name}.ini %{buildroot}%{_sysconfdir}/php.d/%{pecl_name}.ini
 
@@ -172,10 +179,6 @@ php --no-php-ini \
 %endif
 
 
-%clean
-rm -rf %{buildroot}
-
-
 %post
 %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
 
@@ -187,7 +190,6 @@ fi
 
 
 %files
-%defattr(-,root,root,-)
 %doc %{pecl_name}-%{version}/{CHANGELOG,CREDITS,README,LICENSE,examples}
 %config(noreplace) %{_sysconfdir}/php.d/%{pecl_name}.ini
 %{php_extdir}/%{pecl_name}.so
@@ -200,13 +202,18 @@ fi
 
 
 %files -n xhprof
-%defattr(-,root,root,-)
 %doc docs
 %config(noreplace) %{_sysconfdir}/httpd/conf.d/xhprof.conf
 %{_datadir}/xhprof
 
 
 %changelog
+* Fri Jan  4 2013 Remi Collet <remi at fedoraproject.org> - 0.9.2-8.gitb8c76ac5ab
+- git snapshot + php 5.5 fix
+  https://github.com/facebook/xhprof/pull/15
+- also provides php-xhprof
+- cleanups
+
 * Sat Jul 21 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.9.2-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 
diff --git a/sources b/sources
index 4e0f111..167528b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-ae40b153d157e6369a32e2c1a59a61ec  xhprof-0.9.2.tgz
+d137b0ae8b726de63244d22ed98d3de0  xhprof-b8c76ac5ab.tgz
diff --git a/xhprof-php55.patch b/xhprof-php55.patch
new file mode 100644
index 0000000..e341443
--- /dev/null
+++ b/xhprof-php55.patch
@@ -0,0 +1,170 @@
+diff --git a/extension/xhprof.c b/extension/xhprof.c
+index f7e2360..a053ede 100644
+--- a/extension/xhprof.c
++++ b/extension/xhprof.c
+@@ -28,7 +28,7 @@
+ #include "php_ini.h"
+ #include "ext/standard/info.h"
+ #include "php_xhprof.h"
+-#include "Zend/zend_extensions.h"
++#include "zend_extensions.h"
+ #include <sys/time.h>
+ #include <sys/resource.h>
+ #include <stdlib.h>
+@@ -233,12 +233,21 @@ typedef struct hp_global_t {
+ /* XHProf global state */
+ static hp_global_t       hp_globals;
+ 
++#if PHP_VERSION_ID < 50500
+ /* Pointer to the original execute function */
+ static ZEND_DLEXPORT void (*_zend_execute) (zend_op_array *ops TSRMLS_DC);
+ 
+ /* Pointer to the origianl execute_internal function */
+ static ZEND_DLEXPORT void (*_zend_execute_internal) (zend_execute_data *data,
+                            int ret TSRMLS_DC);
++#else
++/* Pointer to the original execute function */
++static void (*_zend_execute_ex) (zend_execute_data *execute_data TSRMLS_DC);
++
++/* Pointer to the origianl execute_internal function */
++static void (*_zend_execute_internal) (zend_execute_data *data,
++                      struct _zend_fcall_info *fci, int ret TSRMLS_DC);
++#endif
+ 
+ /* Pointer to the original compile function */
+ static zend_op_array * (*_zend_compile_file) (zend_file_handle *file_handle,
+@@ -880,8 +889,8 @@ size_t hp_get_function_stack(hp_entry_t *entry,
+  * a pointer to one-level directory and basefile name
+  * (d/foo.php) in the same string.
+  */
+-static char *hp_get_base_filename(char *filename) {
+-  char *ptr;
++static const char *hp_get_base_filename(const char *filename) {
++  const char *ptr;
+   int   found = 0;
+ 
+   if (!filename)
+@@ -909,7 +918,7 @@ static char *hp_get_base_filename(char *filename) {
+  */
+ static char *hp_get_function_name(zend_op_array *ops TSRMLS_DC) {
+   zend_execute_data *data;
+-  char              *func = NULL;
++  const char        *func = NULL;
+   const char        *cls = NULL;
+   char              *ret = NULL;
+   int                len;
+@@ -988,7 +997,7 @@ static char *hp_get_function_name(zend_op_array *ops TSRMLS_DC) {
+        * you'll see something like "run_init::foo.php" in your reports.
+        */
+       if (add_filename){
+-        char *filename;
++        const char *filename;
+         int   len;
+         filename = hp_get_base_filename((curr_func->op_array).filename);
+         len      = strlen("run_init") + strlen(filename) + 3;
+@@ -1629,18 +1638,31 @@ void hp_mode_sampled_endfn_cb(hp_entry_t **entries  TSRMLS_DC) {
+  *
+  * @author hzhao, kannan
+  */
++#if PHP_VERSION_ID < 50500
+ ZEND_DLEXPORT void hp_execute (zend_op_array *ops TSRMLS_DC) {
++#else
++ZEND_DLEXPORT void hp_execute_ex (zend_execute_data *execute_data TSRMLS_DC) {
++  zend_op_array *ops = execute_data->op_array;
++#endif
+   char          *func = NULL;
+   int hp_profile_flag = 1;
+ 
+   func = hp_get_function_name(ops TSRMLS_CC);
+   if (!func) {
++#if PHP_VERSION_ID < 50500
+     _zend_execute(ops TSRMLS_CC);
++#else
++    _zend_execute_ex(execute_data TSRMLS_CC);
++#endif
+     return;
+   }
+ 
+   BEGIN_PROFILING(&hp_globals.entries, func, hp_profile_flag);
++#if PHP_VERSION_ID < 50500
+   _zend_execute(ops TSRMLS_CC);
++#else
++  _zend_execute_ex(execute_data TSRMLS_CC);
++#endif
+   if (hp_globals.entries) {
+     END_PROFILING(&hp_globals.entries, hp_profile_flag);
+   }
+@@ -1649,7 +1671,6 @@ ZEND_DLEXPORT void hp_execute (zend_op_array *ops TSRMLS_DC) {
+ 
+ #undef EX
+ #define EX(element) ((execute_data)->element)
+-#define EX_T(offset) (*(temp_variable *)((char *) EX(Ts) + offset))
+ 
+ /**
+  * Very similar to hp_execute. Proxy for zend_execute_internal().
+@@ -1657,8 +1678,18 @@ ZEND_DLEXPORT void hp_execute (zend_op_array *ops TSRMLS_DC) {
+  *
+  * @author hzhao, kannan
+  */
++
++#if PHP_VERSION_ID < 50500
++#define EX_T(offset) (*(temp_variable *)((char *) EX(Ts) + offset))
++
+ ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data,
+                                        int ret TSRMLS_DC) {
++#else
++#define EX_T(offset) (*EX_TMP_VAR(execute_data, offset))
++
++ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data,
++                                       struct _zend_fcall_info *fci, int ret TSRMLS_DC) {
++#endif
+   zend_execute_data *current_data;
+   char             *func = NULL;
+   int    hp_profile_flag = 1;
+@@ -1691,7 +1722,11 @@ ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data,
+ #endif
+   } else {
+     /* call the old override */
++#if PHP_VERSION_ID < 50500
+     _zend_execute_internal(execute_data, ret TSRMLS_CC);
++#else
++    _zend_execute_internal(execute_data, fci, ret TSRMLS_CC);
++#endif
+   }
+ 
+   if (func) {
+@@ -1711,7 +1746,7 @@ ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data,
+ ZEND_DLEXPORT zend_op_array* hp_compile_file(zend_file_handle *file_handle,
+                                              int type TSRMLS_DC) {
+ 
+-  char           *filename;
++  const char     *filename;
+   char           *func;
+   int             len;
+   zend_op_array  *ret;
+@@ -1783,8 +1818,13 @@ static void hp_begin(long level, long xhprof_flags TSRMLS_DC) {
+     zend_compile_string = hp_compile_string;
+ 
+     /* Replace zend_execute with our proxy */
++#if PHP_VERSION_ID < 50500
+     _zend_execute = zend_execute;
+     zend_execute  = hp_execute;
++#else
++    _zend_execute_ex = zend_execute_ex;
++    zend_execute_ex  = hp_execute_ex;
++#endif
+ 
+     /* Replace zend_execute_internal with our proxy */
+     _zend_execute_internal = zend_execute_internal;
+@@ -1855,7 +1895,11 @@ static void hp_stop(TSRMLS_D) {
+   }
+ 
+   /* Remove proxies, restore the originals */
++#if PHP_VERSION_ID < 50500
+   zend_execute          = _zend_execute;
++#else
++  zend_execute_ex       = _zend_execute_ex;
++#endif
+   zend_execute_internal = _zend_execute_internal;
+   zend_compile_file     = _zend_compile_file;
+   zend_compile_string   = _zend_compile_string;


More information about the scm-commits mailing list