4a25966
# spec file for php-pecl-amqp
4a25966
#
4a25966
# Copyright (c) 2012-2014 Remi Collet
4a25966
# License: CC-BY-SA
4a25966
# http://creativecommons.org/licenses/by-sa/3.0/
4a25966
#
4a25966
# Please, preserve the changelog entries
4a25966
#
4a25966
%{!?php_inidir:  %global php_inidir  %{_sysconfdir}/php.d}
4a25966
%{!?__pecl:      %global __pecl      %{_bindir}/pecl}
4a25966
%{!?__php:       %global __php       %{_bindir}/php}
4a25966
4a25966
%global with_zts    0%{?__ztsphp:1}
4a25966
%global with_tests  %{?_with_tests:1}%{!?_with_tests:0}
2982de7
%global pecl_name   amqp
4a25966
%global ini_name    %{pecl_name}.ini
2982de7
2982de7
Summary:       Communicate with any AMQP compliant server
2982de7
Name:          php-pecl-amqp
4a25966
Version:       1.4.0
a09cc96
Release:       1%{?dist}
2982de7
License:       PHP
2982de7
Group:         Development/Languages
2982de7
URL:           http://pecl.php.net/package/amqp
2982de7
Source0:       http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
2982de7
5d3c9fa
BuildRequires: php-devel > 5.2.0
2982de7
BuildRequires: php-pear
4a25966
BuildRequires: librabbitmq-devel >= 0.4.1
4a25966
%if %{with_tests}
4a25966
BuildRequires: rabbitmq-server
4a25966
%endif
2982de7
2982de7
Requires:         php(zend-abi) = %{php_zend_api}
2982de7
Requires:         php(api) = %{php_core_api}
2982de7
Requires(post):   %{__pecl}
2982de7
Requires(postun): %{__pecl}
2982de7
a09cc96
Provides:         php-%{pecl_name} = %{version}
a09cc96
Provides:         php-%{pecl_name}%{?_isa} = %{version}
a09cc96
Provides:         php-pecl(%{pecl_name}) = %{version}
a09cc96
Provides:         php-pecl(%{pecl_name})%{?_isa} = %{version}
2982de7
4a25966
%if 0%{?fedora} < 20 && 0%{?rhel} < 7
a09cc96
# filter private shared
2982de7
%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$}
2982de7
%{?filter_setup}
4a25966
%endif
2982de7
2982de7
2982de7
%description
2982de7
This extension can communicate with any AMQP spec 0-9-1 compatible server,
2982de7
such as RabbitMQ, OpenAMQP and Qpid, giving you the ability to create and
2982de7
delete exchanges and queues, as well as publish to any exchange and consume
2982de7
from any queue.
2982de7
2982de7
2982de7
%prep
2982de7
%setup -q -c
4a25966
mv %{pecl_name}-%{version}%{?prever} NTS
2982de7
4a25966
cd NTS
a09cc96
# Upstream often forget to change this
a09cc96
extver=$(sed -n '/#define PHP_AMQP_VERSION/{s/.* "//;s/".*$//;p}' php_amqp.h)
a09cc96
if test "x${extver}" != "x%{version}"; then
a09cc96
   : Error: Upstream version is ${extver}, expecting %{version}.
a09cc96
   exit 1
a09cc96
fi
a09cc96
cd ..
2982de7
4a25966
cat > %{ini_name} << 'EOF'
2982de7
; Enable %{pecl_name} extension module
2982de7
extension = %{pecl_name}.so
2982de7
2982de7
; http://www.php.net/manual/en/amqp.configuration.php
2982de7
2982de7
; Whether calls to AMQPQueue::get() and AMQPQueue::consume()
2982de7
; should require that the client explicitly acknowledge messages. 
2982de7
; Setting this value to 1 will pass in the AMQP_AUTOACK flag to
2982de7
: the above method calls if the flags field is omitted. 
2982de7
;amqp.auto_ack = 0
2982de7
2982de7
; The host to which to connect.
2982de7
;amqp.host = localhost
2982de7
2982de7
; The login to use while connecting to the broker.
2982de7
;amqp.login = guest
2982de7
2982de7
; The password to use while connecting to the broker.
2982de7
;amqp.password = guest
2982de7
2982de7
; The port on which to connect.
2982de7
;amqp.port = 5672
2982de7
2982de7
; The number of messages to prefect from the server during a 
2982de7
; call to AMQPQueue::get() or AMQPQueue::consume() during which
2982de7
; the AMQP_AUTOACK flag is not set.
2982de7
;amqp.prefetch_count = 3
2982de7
2982de7
; The virtual host on the broker to which to connect.
2982de7
;amqp.vhost = /
4a25966
4a25966
; Timeout
4a25966
;amqp.timeout=
4a25966
;amqp.read_timeout=0
4a25966
;amqp.write_timeout=0
4a25966
;amqp.connect_timeout=0
2982de7
EOF
2982de7
4a25966
%if %{with_zts}
4a25966
cp -pr NTS ZTS
4a25966
%endif
4a25966
2982de7
2982de7
%build
4a25966
cd NTS
4a25966
%{_bindir}/phpize
2982de7
%configure --with-php-config=%{_bindir}/php-config
2982de7
make %{?_smp_mflags}
2982de7
4a25966
%if %{with_zts}
4a25966
cd ../ZTS
4a25966
%{_bindir}/zts-phpize
4a25966
%configure --with-php-config=%{_bindir}/zts-php-config
4a25966
make %{?_smp_mflags}
4a25966
%endif
4a25966
2982de7
2982de7
%install
4a25966
make -C NTS install INSTALL_ROOT=%{buildroot}
2982de7
2982de7
# Drop in the bit of configuration
4a25966
install -Dpm 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name}
2982de7
2982de7
# Install XML package description
2982de7
install -Dpm 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
2982de7
4a25966
%if %{with_zts}
4a25966
make -C ZTS install INSTALL_ROOT=%{buildroot}
4a25966
install -Dpm 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name}
4a25966
%endif
4a25966
4a25966
# Test & Documentation
4a25966
cd NTS
4a25966
for i in $(grep 'role="test"' ../package.xml | sed -e 's/^.*name="//;s/".*$//')
4a25966
do install -Dpm 644 $i %{buildroot}%{pecl_testdir}/%{pecl_name}/$i
4a25966
done
4a25966
for i in $(grep 'role="doc"' ../package.xml | sed -e 's/^.*name="//;s/".*$//')
4a25966
do install -Dpm 644 $i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i
4a25966
done
4a25966
2982de7
2982de7
%check
4a25966
: Minimal load test for NTS extension
4a25966
%{__php} --no-php-ini \
4a25966
    --define extension=NTS/modules/%{pecl_name}.so \
4a25966
    -m | grep %{pecl_name}
4a25966
4a25966
%if %{with_zts}
4a25966
: Minimal load test for ZTS extension
4a25966
%{__ztsphp} --no-php-ini \
4a25966
    --define extension=ZTS/modules/%{pecl_name}.so \
2982de7
    -m | grep %{pecl_name}
4a25966
%endif
4a25966
4a25966
%if %{with_tests}
4a25966
mkdir log run base
4a25966
: Launch the RabbitMQ service
4a25966
export RABBITMQ_PID_FILE=$PWD/run/pid
4a25966
export RABBITMQ_LOG_BASE=$PWD/log
4a25966
export RABBITMQ_MNESIA_BASE=$PWD/base
4a25966
/usr/lib/rabbitmq/bin/rabbitmq-server &>log/output &
4a25966
/usr/lib/rabbitmq/bin/rabbitmqctl wait $RABBITMQ_PID_FILE
4a25966
4a25966
ret=0
4a25966
pushd NTS
4a25966
: Run the upstream test Suite for NTS extension
4a25966
TEST_PHP_EXECUTABLE=%{__php} \
4a25966
TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \
4a25966
NO_INTERACTION=1 \
4a25966
REPORT_EXIT_STATUS=1 \
4a25966
%{__php} -n run-tests.php || ret=1
4a25966
popd
4a25966
4a25966
%if %{with_zts}
4a25966
pushd ZTS
4a25966
: Run the upstream test Suite for ZTS extension
4a25966
TEST_PHP_EXECUTABLE=%{__ztsphp} \
4a25966
TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \
4a25966
NO_INTERACTION=1 \
4a25966
REPORT_EXIT_STATUS=1 \
4a25966
%{__ztsphp} -n run-tests.php || ret=1
4a25966
popd
4a25966
%endif
4a25966
4a25966
: Cleanup
4a25966
if [ -s $RABBITMQ_PID_FILE ]; then
4a25966
   kill $(cat $RABBITMQ_PID_FILE)
4a25966
fi
4a25966
rm -rf log run base
4a25966
4a25966
exit $ret
4a25966
%endif
2982de7
2982de7
2982de7
%post
2982de7
%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
2982de7
2982de7
2982de7
%postun
2982de7
if [ $1 -eq 0 ] ; then
2982de7
    %{pecl_uninstall} %{pecl_name} >/dev/null || :
2982de7
fi
2982de7
2982de7
2982de7
%files
4a25966
%doc %{pecl_docdir}/%{pecl_name}
4a25966
%doc %{pecl_testdir}/%{pecl_name}
4a25966
%config(noreplace) %{php_inidir}/%{ini_name}
2982de7
%{php_extdir}/%{pecl_name}.so
2982de7
%{pecl_xmldir}/%{name}.xml
2982de7
4a25966
%if %{with_zts}
4a25966
%config(noreplace) %{php_ztsinidir}/%{ini_name}
4a25966
%{php_ztsextdir}/%{pecl_name}.so
4a25966
%endif
4a25966
2982de7
2982de7
%changelog
4a25966
* Tue Apr 15 2014 Remi Collet <remi@fedoraproject.org> - 1.4.0-1
4a25966
- update to 1.6.0 (stable)
4a25966
- install doc in pecl doc_dir
4a25966
- install tests in pecl test_dir (in devel)
4a25966
- add --with tests option to run upstream tests during build
4a25966
- build ZTS extension
4a25966
a09cc96
* Thu Aug  1 2013 Remi Collet <remi@fedoraproject.org> - 1.2.0-1
a09cc96
- Update to 1.2.0
a09cc96
- rebuild for new librabbitmq
a09cc96
- cleanups
a09cc96
- LICENSE now provided in upstream tarball
a09cc96
- add extension version check
a09cc96
5d3c9fa
* Mon Mar 19 2012 Remi Collet <remi@fedoraproject.org> - 1.0.1-3
5d3c9fa
- clean EL-5 stuff as requires php 5.2.0, https://bugs.php.net/61351
5d3c9fa
2982de7
* Sat Mar 10 2012 Remi Collet <remi@fedoraproject.org> - 1.0.1-1
2982de7
- Initial RPM release without ZTS extension
2982de7
- open request for LICENSE file https://bugs.php.net/61337
2982de7