diff options
| author | Remi Collet <fedora@famillecollet.com> | 2014-05-04 19:57:27 +0200 | 
|---|---|---|
| committer | Remi Collet <fedora@famillecollet.com> | 2014-05-04 19:57:27 +0200 | 
| commit | aacf8fffaea55631542d8f61bc97bf964a0ee12b (patch) | |
| tree | 0a4cbd947a67b0ddcbef6fb384798b888b4441ad | |
php-pecl-pcsc: 0.3 (alpha) New package
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | pcsc-build.patch | 287 | ||||
| -rw-r--r-- | php-pecl-pcsc.spec | 214 | 
3 files changed, 505 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..13af741 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../../../common/Makefile + diff --git a/pcsc-build.patch b/pcsc-build.patch new file mode 100644 index 0000000..813669d --- /dev/null +++ b/pcsc-build.patch @@ -0,0 +1,287 @@ +--- pecl/pcsc/trunk/config.m4	2014/05/04 14:56:27	333470 ++++ pecl/pcsc/trunk/config.m4	2014/05/04 17:05:12	333471 +@@ -29,7 +29,7 @@ +   AC_MSG_RESULT($PCSC_DIR) +   PHP_ADD_INCLUDE($PCSC_DIR/include/PCSC/) +   dnl PHP_EVAL_LIBLINE($PCSC_LIBS, PCSC_SHARED_LIBADD) +-  PHP_ADD_LIBRARY_WITH_PATH(pcsclite, "$PCSC_DIR/lib/", PCSC_SHARED_LIBADD) ++  PHP_ADD_LIBRARY_WITH_PATH(pcsclite, "$PCSC_DIR/$PHP_LIBDIR", PCSC_SHARED_LIBADD) +    +   dnl Finally, tell the build system about the extension and what files are needed +   PHP_NEW_EXTENSION(pcsc, pcsc.c, $ext_shared) +--- pecl/pcsc/trunk/config.m4	2014/05/04 17:05:12	333471 ++++ pecl/pcsc/trunk/config.m4	2014/05/04 17:20:35	333472 +@@ -33,7 +33,7 @@ +    +   dnl Finally, tell the build system about the extension and what files are needed +   PHP_NEW_EXTENSION(pcsc, pcsc.c, $ext_shared) +-  PHP_INSTALL_HEADERS([php_pcsc.h]) ++  PHP_INSTALL_HEADERS([ext/pcsc], [php_pcsc.h]) +   PHP_SUBST(PCSC_SHARED_LIBADD) + fi +  +--- pecl/pcsc/trunk/pcsc.c	2014/05/04 17:20:35	333472 ++++ pecl/pcsc/trunk/pcsc.c	2014/05/04 17:50:17	333473 +@@ -135,71 +135,119 @@ + PHP_MINIT_FUNCTION(pcsc) + { +   /* Return Codes */ ++#ifdef SCARD_E_BAD_SEEK +   REGISTER_PCSC_CONSTANT(SCARD_E_BAD_SEEK); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_CANCELLED); +   REGISTER_PCSC_CONSTANT(SCARD_E_CANT_DISPOSE); +   REGISTER_PCSC_CONSTANT(SCARD_E_CARD_UNSUPPORTED); ++#ifdef SCARD_E_CERTIFICATE_UNAVAILABLE +   REGISTER_PCSC_CONSTANT(SCARD_E_CERTIFICATE_UNAVAILABLE); ++#endif ++#ifdef SCARD_E_COMM_DATA_LOST +   REGISTER_PCSC_CONSTANT(SCARD_E_COMM_DATA_LOST); ++#endif ++#ifdef SCARD_E_DIR_NOT_FOUND +   REGISTER_PCSC_CONSTANT(SCARD_E_DIR_NOT_FOUND); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_DUPLICATE_READER); ++#ifdef SCARD_E_FILE_NOT_FOUND +   REGISTER_PCSC_CONSTANT(SCARD_E_FILE_NOT_FOUND); ++#endif ++#ifdef SCARD_E_ICC_CREATEORDER +   REGISTER_PCSC_CONSTANT(SCARD_E_ICC_CREATEORDER); ++#endif ++#ifdef SCARD_E_ICC_INSTALLATION +   REGISTER_PCSC_CONSTANT(SCARD_E_ICC_INSTALLATION); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_INSUFFICIENT_BUFFER); +   REGISTER_PCSC_CONSTANT(SCARD_E_INVALID_ATR); ++#ifdef SCARD_E_INVALID_CHV +   REGISTER_PCSC_CONSTANT(SCARD_E_INVALID_CHV); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_INVALID_HANDLE); +   REGISTER_PCSC_CONSTANT(SCARD_E_INVALID_PARAMETER); +   REGISTER_PCSC_CONSTANT(SCARD_E_INVALID_TARGET); +   REGISTER_PCSC_CONSTANT(SCARD_E_INVALID_VALUE); ++#ifdef SCARD_E_NO_ACCESS +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_ACCESS); ++#endif ++#ifdef SCARD_E_NO_DIR +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_DIR); ++#endif ++#ifdef SCARD_E_NO_FILE +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_FILE); ++#endif ++#ifdef SCARD_E_NO_KEY_CONTAINER +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_KEY_CONTAINER); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_MEMORY); +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_READERS_AVAILABLE); +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_SERVICE); +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_SMARTCARD); ++#ifdef SCARD_E_NO_SUCH_CERTIFICATE +   REGISTER_PCSC_CONSTANT(SCARD_E_NO_SUCH_CERTIFICATE); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_NOT_READY); +   REGISTER_PCSC_CONSTANT(SCARD_E_NOT_TRANSACTED); +   REGISTER_PCSC_CONSTANT(SCARD_E_PCI_TOO_SMALL); +   REGISTER_PCSC_CONSTANT(SCARD_E_PROTO_MISMATCH); +   REGISTER_PCSC_CONSTANT(SCARD_E_READER_UNAVAILABLE); +   REGISTER_PCSC_CONSTANT(SCARD_E_READER_UNSUPPORTED); ++#ifdef SCARD_E_SERVER_TOO_BUSY +   REGISTER_PCSC_CONSTANT(SCARD_E_SERVER_TOO_BUSY); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_SERVICE_STOPPED); +   REGISTER_PCSC_CONSTANT(SCARD_E_SHARING_VIOLATION); +   REGISTER_PCSC_CONSTANT(SCARD_E_SYSTEM_CANCELLED); +   REGISTER_PCSC_CONSTANT(SCARD_E_TIMEOUT); ++#ifdef SCARD_E_UNEXPECTED +   REGISTER_PCSC_CONSTANT(SCARD_E_UNEXPECTED); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_UNKNOWN_CARD); +   REGISTER_PCSC_CONSTANT(SCARD_E_UNKNOWN_READER); ++#ifdef SCARD_E_UNKNOWN_RES_MNG +   REGISTER_PCSC_CONSTANT(SCARD_E_UNKNOWN_RES_MNG); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_E_UNSUPPORTED_FEATURE); ++#ifdef SCARD_E_WRITE_TOO_MANY +   REGISTER_PCSC_CONSTANT(SCARD_E_WRITE_TOO_MANY); ++#endif +    +   REGISTER_PCSC_CONSTANT(SCARD_F_COMM_ERROR); +   REGISTER_PCSC_CONSTANT(SCARD_F_INTERNAL_ERROR); +   REGISTER_PCSC_CONSTANT(SCARD_F_UNKNOWN_ERROR); +   REGISTER_PCSC_CONSTANT(SCARD_F_WAITED_TOO_LONG); +    ++#ifdef SCARD_P_SHUTDOWN +   REGISTER_PCSC_CONSTANT(SCARD_P_SHUTDOWN); ++#endif +    +   REGISTER_PCSC_CONSTANT(SCARD_S_SUCCESS); +    ++#ifdef SCARD_W_CANCELLED_BY_USER +   REGISTER_PCSC_CONSTANT(SCARD_W_CANCELLED_BY_USER); ++#endif ++#ifdef SCARD_W_CARD_NOT_AUTHENTICATED +   REGISTER_PCSC_CONSTANT(SCARD_W_CARD_NOT_AUTHENTICATED); ++#endif ++#ifdef SCARD_W_CHV_BLOCKED +   REGISTER_PCSC_CONSTANT(SCARD_W_CHV_BLOCKED); ++#endif ++#ifdef SCARD_W_EOF +   REGISTER_PCSC_CONSTANT(SCARD_W_EOF); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_W_REMOVED_CARD); +   REGISTER_PCSC_CONSTANT(SCARD_W_RESET_CARD); ++#ifdef SCARD_W_SECURITY_VIOLATION +   REGISTER_PCSC_CONSTANT(SCARD_W_SECURITY_VIOLATION); ++#endif +   REGISTER_PCSC_CONSTANT(SCARD_W_UNPOWERED_CARD); +   REGISTER_PCSC_CONSTANT(SCARD_W_UNRESPONSIVE_CARD); +   REGISTER_PCSC_CONSTANT(SCARD_W_UNSUPPORTED_CARD); ++#ifdef SCARD_W_WRONG_CHV +   REGISTER_PCSC_CONSTANT(SCARD_W_WRONG_CHV); ++#endif +  +   /* Protocols */ +   REGISTER_PCSC_CONSTANT(SCARD_PROTOCOL_RAW); +@@ -256,48 +304,80 @@ + /* map error codes to string */ + static char* php_pcsc_error_to_string(DWORD dwRC) { + 	switch(dwRC) { ++#ifdef SCARD_E_BAD_SEEK + 		case SCARD_E_BAD_SEEK: return "SCARD_E_BAD_SEEK"; ++#endif + 		case SCARD_E_CANCELLED: return "SCARD_E_CANCELLED"; + 		case SCARD_E_CANT_DISPOSE: return "SCARD_E_CANT_DISPOSE"; + 		case SCARD_E_CARD_UNSUPPORTED: return "SCARD_E_CARD_UNSUPPORTED"; ++#ifdef SCARD_E_CERTIFICATE_UNAVAILABLE + 		case SCARD_E_CERTIFICATE_UNAVAILABLE: return "SCARD_E_CERTIFICATE_UNAVAILABLE"; ++#endif ++#ifdef SCARD_E_COMM_DATA_LOST + 		case SCARD_E_COMM_DATA_LOST: return "SCARD_E_COMM_DATA_LOST"; ++#endif ++#ifdef SCARD_E_DIR_NOT_FOUND + 		case SCARD_E_DIR_NOT_FOUND: return "SCARD_E_DIR_NOT_FOUND"; ++#endif + 		case SCARD_E_DUPLICATE_READER: return "SCARD_E_DUPLICATE_READER"; ++#ifdef SCARD_E_FILE_NOT_FOUND + 		case SCARD_E_FILE_NOT_FOUND: return "SCARD_E_FILE_NOT_FOUND"; ++#endif ++#ifdef SCARD_E_ICC_CREATEORDER + 		case SCARD_E_ICC_CREATEORDER: return "SCARD_E_ICC_CREATEORDER"; ++#endif ++#ifdef SCARD_E_ICC_INSTALLATION + 		case SCARD_E_ICC_INSTALLATION: return "SCARD_E_ICC_INSTALLATION"; ++#endif + 		case SCARD_E_INSUFFICIENT_BUFFER: return "SCARD_E_INSUFFICIENT_BUFFER"; + 		case SCARD_E_INVALID_ATR: return "SCARD_E_INVALID_ATR"; ++#ifdef SCARD_E_INVALID_CHV + 		case SCARD_E_INVALID_CHV: return "SCARD_E_INVALID_CHV"; ++#endif + 		case SCARD_E_INVALID_HANDLE: return "SCARD_E_INVALID_HANDLE"; + 		case SCARD_E_INVALID_PARAMETER: return "SCARD_E_INVALID_PARAMETER"; + 		case SCARD_E_INVALID_TARGET: return "SCARD_E_INVALID_TARGET"; + 		case SCARD_E_INVALID_VALUE: return "SCARD_E_INVALID_VALUE"; ++#ifdef SCARD_E_NO_ACCESS + 		case SCARD_E_NO_ACCESS: return "SCARD_E_NO_ACCESS"; ++#endif ++#ifdef SCARD_E_NO_DIR + 		case SCARD_E_NO_DIR: return "SCARD_E_NO_DIR"; ++#endif ++#ifdef SCARD_E_NO_FILE + 		case SCARD_E_NO_FILE: return "SCARD_E_NO_FILE"; ++#endif ++#ifdef SCARD_E_NO_KEY_CONTAINER + 		case SCARD_E_NO_KEY_CONTAINER: return "SCARD_E_NO_KEY_CONTAINER"; ++#endif + 		case SCARD_E_NO_MEMORY: return "SCARD_E_NO_MEMORY"; + 		case SCARD_E_NO_READERS_AVAILABLE: return "SCARD_E_NO_READERS_AVAILABLE"; + 		case SCARD_E_NO_SERVICE: return "SCARD_E_NO_SERVICE"; + 		case SCARD_E_NO_SMARTCARD: return "SCARD_E_NO_SMARTCARD"; ++#ifdef SCARD_E_NO_ACCESS + 		case SCARD_E_NO_SUCH_CERTIFICATE: return "SCARD_E_NO_SUCH_CERTIFICATE"; ++#endif + 		case SCARD_E_NOT_READY: return "SCARD_E_NOT_READY"; + 		case SCARD_E_NOT_TRANSACTED: return "SCARD_E_NOT_TRANSACTED"; + 		case SCARD_E_PCI_TOO_SMALL: return "SCARD_E_PCI_TOO_SMALL"; + 		case SCARD_E_PROTO_MISMATCH: return "SCARD_E_PROTO_MISMATCH"; + 		case SCARD_E_READER_UNAVAILABLE: return "SCARD_E_READER_UNAVAILABLE"; + 		case SCARD_E_READER_UNSUPPORTED: return "SCARD_E_READER_UNSUPPORTED"; ++#ifdef SCARD_E_SERVER_TOO_BUSY + 		case SCARD_E_SERVER_TOO_BUSY: return "SCARD_E_SERVER_TOO_BUSY"; ++#endif + 		case SCARD_E_SERVICE_STOPPED: return "SCARD_E_SERVICE_STOPPED"; + 		case SCARD_E_SHARING_VIOLATION: return "SCARD_E_SHARING_VIOLATION"; + 		case SCARD_E_SYSTEM_CANCELLED: return "SCARD_E_SYSTEM_CANCELLED"; + 		case SCARD_E_TIMEOUT: return "SCARD_E_TIMEOUT"; +-		case SCARD_E_UNEXPECTED: return "SCARD_E_UNEXPECTED"; ++#ifdef SCARD_E_SERVER_TOO_BUSY ++		case SCARD_E_SERVER_TOO_BUSY: return "SCARD_E_UNEXPECTED"; ++#endif + 		case SCARD_E_UNKNOWN_CARD: return "SCARD_E_UNKNOWN_CARD"; + 		case SCARD_E_UNKNOWN_READER: return "SCARD_E_UNKNOWN_READER"; ++#ifdef SCARD_E_UNKNOWN_RES_MNG + 		case SCARD_E_UNKNOWN_RES_MNG: return "SCARD_E_UNKNOWN_RES_MNG"; ++#endif + /* apparently E_UNEXPECTED and E_UNSUPPORTED are defined  +    by a buggy header file on Linux, causing a "double used constant" +    error. Just leave this out on Linux, then. +@@ -305,14 +385,20 @@ + #ifdef PHP_WIN32 +                 case SCARD_E_UNSUPPORTED_FEATURE: return "SCARD_E_UNSUPPORTED_FEATURE"; + #endif ++#ifdef SCARD_E_WRITE_TOO_MANY + 		case SCARD_E_WRITE_TOO_MANY: return "SCARD_E_WRITE_TOO_MANY"; ++#endif + 		case SCARD_F_COMM_ERROR: return "SCARD_E_WRITE_TOO_MANY"; + 		case SCARD_F_INTERNAL_ERROR: return "SCARD_F_INTERNAL_ERROR"; + 		case SCARD_F_UNKNOWN_ERROR: return "SCARD_F_UNKNOWN_ERROR"; + 		case SCARD_F_WAITED_TOO_LONG: return "SCARD_F_WAITED_TOO_LONG"; ++#ifdef SCARD_P_SHUTDOWN + 		case SCARD_P_SHUTDOWN: return "SCARD_P_SHUTDOWN"; ++#endif + 		case SCARD_S_SUCCESS: return "SCARD_S_SUCCESS"; ++#ifdef SCARD_W_CANCELLED_BY_USER + 		case SCARD_W_CANCELLED_BY_USER: return "SCARD_W_CANCELLED_BY_USER"; ++#endif + #ifdef SCARD_W_CACHE_ITEM_NOT_FOUND + 		case SCARD_W_CACHE_ITEM_NOT_FOUND: return "SCARD_W_CACHE_ITEM_NOT_FOUND"; + #endif +@@ -322,16 +408,26 @@ + #ifdef SCARD_W_CACHE_ITEM_TOO_BIG + 		case SCARD_W_CACHE_ITEM_TOO_BIG: return "SCARD_W_CACHE_ITEM_TOO_BIG"; + #endif ++#ifdef SCARD_W_CARD_NOT_AUTHENTICATED + 		case SCARD_W_CARD_NOT_AUTHENTICATED: return "SCARD_W_CARD_NOT_AUTHENTICATED"; ++#endif ++#ifdef SCARD_W_CHV_BLOCKED + 		case SCARD_W_CHV_BLOCKED: return "SCARD_W_CHV_BLOCKED"; ++#endif ++#ifdef SCARD_W_EOF + 		case SCARD_W_EOF: return "SCARD_W_EOF"; ++#endif + 		case SCARD_W_REMOVED_CARD: return "SCARD_W_REMOVED_CARD"; + 		case SCARD_W_RESET_CARD: return "SCARD_W_RESET_CARD"; ++#ifdef SCARD_W_SECURITY_VIOLATION + 		case SCARD_W_SECURITY_VIOLATION: return "SCARD_W_SECURITY_VIOLATION"; ++#endif + 		case SCARD_W_UNPOWERED_CARD: return "SCARD_W_UNPOWERED_CARD"; + 		case SCARD_W_UNRESPONSIVE_CARD: return "SCARD_W_UNRESPONSIVE_CARD"; + 		case SCARD_W_UNSUPPORTED_CARD: return "SCARD_W_UNSUPPORTED_CARD"; ++#ifdef SCARD_W_WRONG_CHV + 		case SCARD_W_WRONG_CHV: return "SCARD_W_WRONG_CHV"; ++#endif + 		default: return "Unknown"; + 	} + } +--- pecl/pcsc/trunk/pcsc.c	2014/05/04 17:50:17	333473 ++++ pecl/pcsc/trunk/pcsc.c	2014/05/04 17:53:25	333474 +@@ -370,8 +370,8 @@ + 		case SCARD_E_SHARING_VIOLATION: return "SCARD_E_SHARING_VIOLATION"; + 		case SCARD_E_SYSTEM_CANCELLED: return "SCARD_E_SYSTEM_CANCELLED"; + 		case SCARD_E_TIMEOUT: return "SCARD_E_TIMEOUT"; +-#ifdef SCARD_E_SERVER_TOO_BUSY +-		case SCARD_E_SERVER_TOO_BUSY: return "SCARD_E_UNEXPECTED"; ++#ifdef SCARD_E_UNEXPECTED ++		case SCARD_E_UNEXPECTED: return "SCARD_E_UNEXPECTED"; + #endif + 		case SCARD_E_UNKNOWN_CARD: return "SCARD_E_UNKNOWN_CARD"; + 		case SCARD_E_UNKNOWN_READER: return "SCARD_E_UNKNOWN_READER"; diff --git a/php-pecl-pcsc.spec b/php-pecl-pcsc.spec new file mode 100644 index 0000000..1c07d28 --- /dev/null +++ b/php-pecl-pcsc.spec @@ -0,0 +1,214 @@ +# spec file for php-pecl-pcsc +# +# Copyright (c) 2014 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/3.0/ +# +# Please, preserve the changelog entries +# +%{?scl:          %scl_package        php-pecl-pcsc} +%{!?php_inidir:  %global php_inidir  %{_sysconfdir}/php.d} +%{!?__pecl:      %global __pecl      %{_bindir}/pecl} +%{!?__php:       %global __php       %{_bindir}/php} + +%global with_zts   0%{?__ztsphp:1} +%global pecl_name  pcsc +%if "%{php_version}" < "5.6" +%global ini_name   %{pecl_name}.ini +%else +%global ini_name   40-%{pecl_name}.ini +%endif + +Summary:        An extension for PHP using the winscard PC/SC API +Name:           %{?scl_prefix}php-pecl-%{pecl_name} +Version:        0.3 +Release:        1%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} +License:        BSD +Group:          Development/Languages +URL:            http://pecl.php.net/package/%{pecl_name} +Source0:        http://pecl.php.net/get/%{pecl_name}-%{version}.tgz + +# http://svn.php.net/viewvc?view=revision&revision=333471 +# http://svn.php.net/viewvc?view=revision&revision=333472 +# http://svn.php.net/viewvc?view=revision&revision=333473 +# http://svn.php.net/viewvc?view=revision&revision=333474 +Patch0:         %{pecl_name}-build.patch + +BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires:  pcsc-lite-devel +BuildRequires:  %{?scl_prefix}php-devel > 5.3 +BuildRequires:  %{?scl_prefix}php-pear + +Requires(post): %{__pecl} +Requires(postun): %{__pecl} +Requires:       %{?scl_prefix}php(zend-abi) = %{php_zend_api} +Requires:       %{?scl_prefix}php(api) = %{php_core_api} + +Provides:       %{?scl_prefix}php-%{pecl_name} = %{version} +Provides:       %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} +Provides:       %{?scl_prefix}php-pecl(%{pecl_name}) = %{version} +Provides:       %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version} + +%if "%{?vendor}" == "Remi Collet" +# Other third party repo stuff +%if "%{php_version}" > "5.4" +Obsoletes:     php53-pecl-%{pecl_name} +Obsoletes:     php53u-pecl-%{pecl_name} +Obsoletes:     php54-pecl-%{pecl_name} +%endif +%if "%{php_version}" > "5.5" +Obsoletes:     php55u-pecl-%{pecl_name} +%endif +%if "%{php_version}" > "5.6" +Obsoletes:     php56u-pecl-%{pecl_name} +%endif +%endif + +%if 0%{?fedora} < 20 && 0%{?rhel} < 7 +# Filter shared private +%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} +%{?filter_setup} +%endif + + +%description +This is an extension for using PC/SC based smart cards with PHP. +It is a wrapper to the wonderful and free project PCSC-Lite which is the +middleware to access a smart card using SCard API (PC/SC). + + +%package devel +Summary:       %{name} developer files (header) +Group:         Development/Libraries +Requires:      %{name}%{?_isa} = %{version}-%{release} +Requires:      %{?scl_prefix}php-devel%{?_isa} + +%description devel +These are the files needed to compile programs using %{name}. + + +%prep +%setup -q -c +mv %{pecl_name}-%{version} NTS + +cd NTS +%patch0 -p3 -b .build + +# Sanity check, really often broken +extver=$(sed -n '/#define PHP_PCSC_VERSION/{s/.* "//;s/".*$//;p}' php_pcsc.h) +if test "x${extver}" != "x%{version}"; then +   : Error: Upstream extension version is ${extver}, expecting %{version}. +   exit 1 +fi +cd .. + +%if %{with_zts} +# Duplicate source tree for NTS / ZTS build +cp -pr NTS ZTS +%endif + +# Create configuration file +cat > %{ini_name} << 'EOF' +; Enable %{pecl_name} extension module +extension=%{pecl_name}.so +EOF + + +%build +cd NTS +%{_bindir}/phpize +%configure \ +    --with-php-config=%{_bindir}/php-config \ +    --with-libdir=%{_lib} +make %{?_smp_mflags} + +%if %{with_zts} +cd ../ZTS +%{_bindir}/zts-phpize +%configure \ +    --with-php-config=%{_bindir}/zts-php-config \ +    --with-libdir=%{_lib} +make %{?_smp_mflags} +%endif + + +%install +rm -rf %{buildroot} + +make -C NTS \ +     install INSTALL_ROOT=%{buildroot} + +# install config file +install -D -m 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name} + +# Install XML package description +install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml + +%if %{with_zts} +make -C ZTS \ +     install INSTALL_ROOT=%{buildroot} + +install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} +%endif + +# Test & Documentation +for i in $(grep 'role="doc"' package.xml | sed -e 's/^.*name="//;s/".*$//') +do install -Dpm 644 NTS/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i +done + + +%post +%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : + + +%postun +if [ $1 -eq 0 ] ; then +    %{pecl_uninstall} %{pecl_name} >/dev/null || : +fi + + +%check +cd NTS +: Minimal load test for NTS extension +%{__php} --no-php-ini \ +    --define extension=modules/%{pecl_name}.so \ +    --modules | grep PC/SC + +%if %{with_zts} +cd ../ZTS +: Minimal load test for ZTS extension +%{__ztsphp} --no-php-ini \ +    --define extension=modules/%{pecl_name}.so \ +    --modules | grep PC/SC +%endif + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%doc %{pecl_docdir}/%{pecl_name} +%{pecl_xmldir}/%{name}.xml + +%config(noreplace) %{php_inidir}/%{ini_name} +%{php_extdir}/%{pecl_name}.so + +%if %{with_zts} +%config(noreplace) %{php_ztsinidir}/%{ini_name} +%{php_ztsextdir}/%{pecl_name}.so +%endif + +%files devel +%defattr(-,root,root,-) +%{php_incldir}/ext/%{pecl_name} + +%if %{with_zts} +%{php_ztsincldir}/ext/%{pecl_name} +%endif + + +%changelog +* Sun May  4 2014 Remi Collet <remi@fedoraproject.org> - 0.3-1 +- initial package, version 0.3 (alpha)
\ No newline at end of file  | 
