[php-libvirt] PHP 5.4.0 Build

Remi Collet remi at fedoraproject.org
Fri Jan 20 17:13:28 UTC 2012


commit 1cffd022aebcb967c6324dd275af5302ed053fbc
Author: remi <fedora at famillecollet.com>
Date:   Fri Jan 20 18:12:53 2012 +0100

    PHP 5.4.0 Build

 .gitignore          |    1 +
 libvirt-php54.patch |  214 +++++++++++++++++++++++++++++++++++++++++++++++++++
 php-libvirt.spec    |   57 +++++++++++---
 sources             |    2 +-
 4 files changed, 262 insertions(+), 12 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index d1cd668..5f13096 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 /libvirt-php-0.4.1.tar.gz
 /php-libvirt-0.4.3.tar.gz
 /php-libvirt-0.4.4.tar.gz
+/libvirt-php-0.4.5.tar.gz
diff --git a/libvirt-php54.patch b/libvirt-php54.patch
new file mode 100644
index 0000000..3b493cd
--- /dev/null
+++ b/libvirt-php54.patch
@@ -0,0 +1,214 @@
+diff -up libvirt-php-0.4.5/src/libvirt-php.c.php54 libvirt-php-0.4.5/src/libvirt-php.c
+--- libvirt-php-0.4.5/src/libvirt-php.c.php54	2011-11-27 16:49:11.201682937 +0100
++++ libvirt-php-0.4.5/src/libvirt-php.c	2011-11-27 17:05:24.092827417 +0100
+@@ -16,6 +16,11 @@
+ 
+ #include "libvirt-php.h"
+ 
++// From vncfunc.c
++int vnc_get_dimensions(char *server, char *port, int *width, int *height);
++// From sockets.c
++int connect_socket(char *server, char *port, int keepalive, int nodelay, int allow_server_override);
++
+ #ifdef DEBUG_CORE
+ #define DPRINTF(fmt, ...) \
+ if (LIBVIRT_G(debug)) \
+@@ -50,7 +55,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_libvirt_c
+ 	ZEND_ARG_INFO(0, readonly)
+ ZEND_END_ARG_INFO()
+ 
+-static function_entry libvirt_functions[] = {
++static zend_function_entry libvirt_functions[] = {
+ 	/* Common functions */
+ 	PHP_FE(libvirt_get_last_error,NULL)
+ 	/* Connect functions */
+@@ -775,7 +780,7 @@ unsigned long long size_def_to_mbytes(ch
+ 		return 0;
+ 
+ 	unit = arg[strlen(arg)-1];
+-	switch (arg[strlen(arg)-1]) {
++	switch (unit) {
+ 		case 'G':
+ 			multiplicator = 1 << 10;
+ 			break;
+@@ -1419,7 +1424,7 @@ PHP_FUNCTION(libvirt_connect)
+ 					if (zend_hash_get_current_key_ex(arr_hash, &key, &key_len, &index, 0, &pointer) == HASH_KEY_IS_STRING) {
+ 						PHPWRITE(key, key_len);
+ 					} else {
+-						DPRINTF("%s: credentials index %d\n", PHPFUNC, index);
++						DPRINTF("%s: credentials index %d\n", PHPFUNC, (int)index);
+ 						creds[j].type=index;
+ 						creds[j].result=emalloc( Z_STRLEN_PP(data) + 1 );
+ 						memset(creds[j].result, 0, Z_STRLEN_PP(data) + 1);
+@@ -1623,7 +1628,7 @@ PHP_FUNCTION(libvirt_image_create)
+ 	zval *zconn;
+ 	char msg[1024];
+ 	char cmd[4096] = { 0 };
+-	char *path;
++	char *path = NULL;
+ 	char fpath[4096] = { 0 };
+ 	char *image = NULL;
+ 	int image_len;
+@@ -1965,7 +1970,7 @@ void dec_to_bin(unsigned long long decim
+ 	int  k = 0, n = 0;
+ 	int  neg_flag = 0;
+ 	int  remain;
+-	int  old_decimal;
++	// int  old_decimal;
+ 	char temp[128] = { 0 };
+ 
+ 	if (decimal < 0)
+@@ -1975,7 +1980,7 @@ void dec_to_bin(unsigned long long decim
+ 	}
+ 	do 
+ 	{
+-		old_decimal = decimal;
++		// old_decimal = decimal;
+ 		remain    = decimal % 2;
+ 		decimal   = decimal / 2;
+ 		temp[k++] = remain + '0';
+@@ -2050,7 +2055,7 @@ long get_next_free_numeric_value(virDoma
+ 	int retval = -1;
+ 	HashTable *arr_hash;
+ 	HashPosition pointer;
+-	int array_count;
++	// int array_count;
+ 	zval **data;
+ 	char *key;
+ 	unsigned int key_len;
+@@ -2063,7 +2068,7 @@ long get_next_free_numeric_value(virDoma
+ 	free( get_string_from_xpath(xml, xpath, &output, &retval) );
+ 
+ 	arr_hash = Z_ARRVAL_P(output);
+-	array_count = zend_hash_num_elements(arr_hash);
++	// array_count = zend_hash_num_elements(arr_hash);
+ 	for (zend_hash_internal_pointer_reset_ex(arr_hash, &pointer);
+ 			zend_hash_get_current_data_ex(arr_hash, (void**) &data, &pointer) == SUCCESS;
+ 			zend_hash_move_forward_ex(arr_hash, &pointer)) {
+@@ -2188,7 +2193,7 @@ char *connection_get_arch(virConnectPtr 
+ 	int retval = -1;
+ 	char *tmp = NULL;
+ 	char *caps = NULL;
+-	char xpath[1024] = { 0 };
++	// char xpath[1024] = { 0 };
+ 
+ 	caps = virConnectGetCapabilities(conn);
+ 	if (caps == NULL)
+@@ -2219,7 +2224,7 @@ char *generate_uuid_any()
+ 	int i;
+ 	char a[37] = { 0 };
+ 	char hexa[] = "0123456789abcdef";
+-	virDomainPtr domain=NULL;
++	// virDomainPtr domain=NULL;
+ 	
+ 	srand(time(NULL));
+ 	for (i = 0; i < 36; i++) {
+@@ -2304,7 +2309,7 @@ char *get_disk_xml(unsigned long long si
+ 		ret = WEXITSTATUS(system(cmd));
+ 		DPRINTF("%s: Command '%s' finished with error code %d\n", __FUNCTION__, cmd, ret);
+ 		if (ret != 0) {
+-			DPRINTF("%s: File creation failed\n");
++			DPRINTF("%s: File creation failed\n", path);
+ 			return NULL;
+ 		}
+ 		
+@@ -2387,7 +2392,7 @@ char *installation_get_xml(int step, vir
+ 	char features[128] = { 0 };
+ 	char *tmp = NULL;
+ 	char type[64] = { 0 };
+-	virDomainPtr domain=NULL;
++	// virDomainPtr domain=NULL;
+ 	
+ 	if (conn == NULL) {
+ 		DPRINTF("%s: Invalid libvirt connection pointer\n", __FUNCTION__);
+@@ -2978,7 +2983,7 @@ PHP_FUNCTION(libvirt_domain_send_keys)
+ 
+ 	GET_DOMAIN_FROM_ARGS("rss",&zdomain, &hostname, &hostname_len, &keys, &keys_len);
+ 
+-	DPRINTF("%s: Sending %d VNC keys to %s...\n", PHPFUNC, strlen(keys), hostname);
++	DPRINTF("%s: Sending %d VNC keys to %s...\n", PHPFUNC, (int)strlen(keys), hostname);
+ 
+ 	xml=virDomainGetXMLDesc(domain->domain, 0);
+ 	if (xml==NULL) {
+@@ -2992,7 +2997,7 @@ PHP_FUNCTION(libvirt_domain_send_keys)
+ 		RETURN_FALSE;
+ 	}
+ 
+-	DPRINTF("%s: About to send string '%s' (%d keys) to %s:%s\n", PHPFUNC, keys, strlen(keys), hostname, tmp);
++	DPRINTF("%s: About to send string '%s' (%d keys) to %s:%s\n", PHPFUNC, keys, (int)strlen(keys), hostname, tmp);
+ 
+ 	ret = vnc_send_keys(hostname, tmp, keys);
+ 	DPRINTF("%s: Sequence sending result is %d\n", PHPFUNC, ret);
+@@ -3214,15 +3219,15 @@ PHP_FUNCTION(libvirt_connect_get_emulato
+ void parse_array(zval *arr, tVMDisk *disk, tVMNetwork *network)
+ {
+ 	HashTable *arr_hash;
+-	int array_count;
+-	zval **zvalue, **data;
++	// int array_count;
++	zval **data; // removed **zvalue
+ 	HashPosition pointer;
+ 	char *key;
+ 	unsigned int key_len;
+ 	unsigned long index;
+ 
+ 	arr_hash = Z_ARRVAL_P(arr);
+-	array_count = zend_hash_num_elements(arr_hash);
++	//array_count = zend_hash_num_elements(arr_hash);
+ 
+ 	if (disk != NULL)
+ 		memset(disk, 0, sizeof(tVMDisk));
+@@ -3297,7 +3302,7 @@ PHP_FUNCTION(libvirt_domain_new)
+ 	char *tmp;
+ 	char *name;
+ 	char name_len=0;
+-	char *emulator;
++	// char *emulator;
+ 	char *iso_image = NULL;
+ 	int iso_image_len;
+ 	int vcpus = -1;
+@@ -3308,7 +3313,7 @@ PHP_FUNCTION(libvirt_domain_new)
+ 	int maxmemMB = -1;
+ 	HashTable *arr_hash;
+ 	int numDisks, numNets, i;
+-	zval **zvalue, **data;
++	zval **data; // removed **zvalue
+ 	HashPosition pointer;
+ 	char vncl[2048] = { 0 };
+ 	char tmpname[1024] = { 0 };
+@@ -3677,7 +3682,7 @@ PHP_FUNCTION(libvirt_domain_change_memor
+ 	long allocMem = 0;
+ 	long allocMax = 0;
+ 	int retval = -1;
+-	int pos = -1;
++	// int pos = -1;
+ 	int len = 0;
+ 	php_libvirt_domain *res_domain = NULL;
+ 	php_libvirt_connection *conn   = NULL;
+@@ -3703,7 +3708,7 @@ PHP_FUNCTION(libvirt_domain_change_memor
+ 	snprintf(new, sizeof(new), "  <memory>%d</memory>\n  <currentMemory>%d</currentMemory>\n", allocMax, allocMem);
+ 	tmpA = strstr(xml, "<memory>");
+ 	tmp1 = strstr(xml, "</currentMemory>") + strlen("</currentMemory>");
+-	pos = strlen(xml) - strlen(tmp1);
++	// pos = strlen(xml) - strlen(tmp1);
+ 	len = strlen(xml) - strlen(tmpA);
+ 
+ 	tmp2 = emalloc( ( len + 1 )* sizeof(char) );
+@@ -3770,7 +3775,7 @@ PHP_FUNCTION(libvirt_domain_change_boot_
+ 	char *second = NULL;
+ 	int second_len;
+ 	int retval = -1;
+-	int pos = -1;
++	// int pos = -1;
+ 	int len = 0;
+ 	php_libvirt_domain *res_domain = NULL;
+ 	php_libvirt_connection *conn   = NULL;
+@@ -3793,7 +3798,7 @@ PHP_FUNCTION(libvirt_domain_change_boot_
+ 
+ 	tmpA = strstr(xml, "</type>") + strlen("</type>");
+ 	tmp1 = strstr(xml, "</os>");
+-	pos = strlen(xml) - strlen(tmp1);
++	// pos = strlen(xml) - strlen(tmp1);
+ 	len = strlen(xml) - strlen(tmpA);
+ 
+ 	tmp2 = emalloc( ( len + 1 )* sizeof(char) );
diff --git a/php-libvirt.spec b/php-libvirt.spec
index 3d57ccf..471e3c7 100644
--- a/php-libvirt.spec
+++ b/php-libvirt.spec
@@ -1,16 +1,27 @@
 %define		req_libvirt_version 0.6.2
 
 %if 0%{?suse_version} 
-%define		php_confdir %{_sysconfdir}/php5/conf.d
+%define		php_inidir  %{_sysconfdir}/php5/conf.d
 %define		php_extdir  %{_libdir}/php5/extensions
 %else
-%define		php_confdir %{_sysconfdir}/php.d 
-%define		php_extdir  %{_libdir}/php/modules
+# Macro provided by php-devel
+%{!?php_inidir:	%{expand: %%global php_inidir %{_sysconfdir}/php.d }}
+%{!?php_extdir:	%{expand: %%global php_extdir %(php-config --extension-dir)}}
+
+# Fix private-shared-object-provides
+# 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$
 %endif
 
+%global         extname   libvirt-php
+
+
 Name:		php-libvirt
-Version:	0.4.4
-Release:	3%{?dist}%{?extra_release}
+Version:	0.4.5
+Release:	1%{?dist}%{?extra_release}
 Summary:	PHP language binding for Libvirt
 
 %if 0%{?suse_version}  
@@ -20,7 +31,11 @@ Group:		Development/Libraries
 %endif
 License:	PHP
 URL:		http://libvirt.org/php
-Source0:	http://libvirt.org/sources/php/php-libvirt-%{version}.tar.gz
+Source0:	http://libvirt.org/sources/php/libvirt-php-%{version}.tar.gz
+
+# https://www.redhat.com/archives/libvir-list/2011-November/msg01476.html
+Patch0:         libvirt-php54.patch
+
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root
 
 BuildRequires:	php-devel
@@ -36,7 +51,9 @@ Requires:	libvirt >= %{req_libvirt_version}
 %if 0%{?suse_version}  
 Requires:	php5
 %else
-Requires:	php
+# Requires php ABI
+Requires:	php(zend-abi) = %{php_zend_api}
+Requires:	php(api) = %{php_core_api}
 %endif
 
 %description
@@ -56,7 +73,10 @@ For more details see: http://www.libvirt.org/php/ http://www.php.net/
 This package contain the document for php-libvirt.
 
 %prep
-%setup -q -n php-libvirt-%{version}
+%setup -q -n libvirt-php-%{version}
+
+%patch0 -p1 -b .php54
+
 
 %build
 %configure
@@ -66,15 +86,22 @@ make %{?_smp_mflags}
 %install
 rm -rf %{buildroot}
 make install DESTDIR=%{buildroot}
-chmod +x %{buildroot}%{php_extdir}/php-libvirt.so
+chmod +x %{buildroot}%{php_extdir}/%{extname}.so
+
+%check
+# simple module load test
+php --no-php-ini \
+    --define extension_dir=%{buildroot}%{php_extdir} \
+    --define extension=%{extname}.so \
+    --modules | grep libvirt
 
 %clean
 rm -rf %{buildroot}
 
 %files
 %defattr(-,root,root,-)
-%{php_extdir}/php-libvirt.so
-%config(noreplace) %{php_confdir}/php-libvirt.ini
+%{php_extdir}/%{extname}.so
+%config(noreplace) %{php_inidir}/%{extname}.ini
 
 %files -n php-libvirt-doc
 %defattr(-,root,root,-)
@@ -83,6 +110,14 @@ rm -rf %{buildroot}
 %{_datadir}/doc/%{name}-%{version}/html
 
 %changelog
+* Thu Jan 19 2012 Remi Collet <remi at fedoraproject.org> - 0.4.5-1
+- update to 0.4.5 (upstream is libvirt-php)
+- build against php 5.4.0, with patch
+- add filter to fix private-shared-object-provides
+- add %%check for php extension
+- use macro from latest php (php_inidir, php_extdir)
+- requires php ABI
+
 * Sat Jan 14 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.4.4-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
 
diff --git a/sources b/sources
index 12fb345..9c2a6cf 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-20c7ca704e5a15350ccf83d6a3514836  php-libvirt-0.4.4.tar.gz
+c7a085d9c590392221244b3a3736f8a3  libvirt-php-0.4.5.tar.gz


More information about the scm-commits mailing list