summaryrefslogtreecommitdiffstats
path: root/php-redis.spec
blob: 2e5faeb19e3f91a62442ee2e9acef91344d7be47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
%global ext_name redis

# not yet ready for zts, change to 0%{?__ztsphp:1} when ready
%global with_zts 0

Summary:       Extension for communicating with the Redis key-value store
Name:          php-%{ext_name}
Version:       2.2.1
Release:       1%{?dist}
License:       PHP
Group:         Development/Languages
URL:           https://github.com/nicolasff/phpredis
# wget https://github.com/nicolasff/phpredis/tarball/2.2.1 -O php-redis-2.2.1.tgz
# also check content from top dir (nicolasff-phpredis-250e81b)
Source:        %{name}-%{version}.tgz

BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: php-devel
BuildRequires: php-pecl-igbinary-devel

Requires:      php(zend-abi) = %{php_zend_api}
Requires:      php(api) = %{php_core_api}
# php-pecl-igbinary missing php-pecl(igbinary)%{?_isa}
Requires:      php-pecl-igbinary%{?_isa}

# RPM 4.8
%{?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
The phpredis extension provides an API for communicating
with the Redis key-value store.


%prep
%setup -q -c 

# rename source folder
mv nicolasff-phpredis-* nts

chmod -x nts/*{c,h}

# remove bundled lib
rm -rf nts/igbinary
sed -e 's:igbinary/[^ ]*\.c::g' \
    -i nts/config.m4

# Sanity check, really often broken
extver=$(sed -n '/#define PHP_REDIS_VERSION/{s/.* "//;s/".*$//;p}' nts/php_redis.h)
if test "x${extver}" != "x%{version}"; then
   : Error: Upstream extension version is ${extver}, expecting %{version}.
   exit 1
fi

%if %{with_zts}
# duplicate for ZTS build
cp -pr nts zts
%endif

# Drop in the bit of configuration
cat > %{ext_name}.ini << 'EOF'
; Enable %{ext_name} extension module
extension = %{ext_name}.so

; phpredis can be used to store PHP sessions. 
; To do this, uncomment and configure below
;session.save_handler = %{ext_name}
;session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"
EOF


%build
cd nts
%{_bindir}/phpize
%configure --with-php-config=%{_bindir}/php-config
make %{?_smp_mflags}

%if %{with_zts}
cd ../zts
%{_bindir}/zts-phpize
%configure --with-php-config=%{_bindir}/zts-php-config
make %{?_smp_mflags}
%endif


%install
rm -rf %{buildroot}
# Install the NTS stuff
make -C nts install INSTALL_ROOT=%{buildroot}
install -D -m 644 %{ext_name}.ini %{buildroot}%{_sysconfdir}/php.d/%{ext_name}.ini

# Install the ZTS stuff
%if %{with_zts}
make -C zts install INSTALL_ROOT=%{buildroot}
install -D -m 644 %{ext_name}.ini %{buildroot}%{php_ztsinidir}/%{ext_name}.ini
%endif


%check
# simple module load test
ln -s %{php_extdir}/igbinary.so nts/modules/
%{__php} --no-php-ini \
    --define extension_dir=nts/modules \
    --define extension=igbinary.so \
    --define extension=%{ext_name}.so \
    --modules | grep %{ext_name}

%if %{with_zts}
ln -s %{php_ztsextdir}/igbinary.so zts/modules/
%{__ztsphp} --no-php-ini \
    --define extension_dir=zts/modules \
    --define extension=igbinary.so \
    --define extension=%{ext_name}.so \
    --modules | grep %{ext_name}
%endif


%clean
rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%doc nts/COPYING nts/CREDITS nts/README.markdown
%config(noreplace) %{_sysconfdir}/php.d/%{ext_name}.ini
%{php_extdir}/%{ext_name}.so

%if %{with_zts}
%{php_ztsextdir}/%{ext_name}.so
%config(noreplace) %{php_ztsinidir}/%{ext_name}.ini
%endif


%changelog
* Tue Aug 28 2012 Remi Collet <remi@fedoraproject.org> - 2.2.1-1
- initial package