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), " %d\n %d\n", allocMax, allocMem); + tmpA = strstr(xml, ""); + tmp1 = strstr(xml, "") + strlen(""); +- 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, "") + strlen(""); + tmp1 = strstr(xml, ""); +- 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 - 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 - 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