summaryrefslogtreecommitdiff
path: root/php-pear-PEAR.spec
blob: 6161215df743f7c3d828cd35d3de78ca04a9fa91 (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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
# TODO
# - bootstrap fails if /usr/share/pear/.lock doesn't exist (just create it as 644)
# - should understand as php extension (php-pear-Auth):
#   pear/Auth can optionally use package "pecl/vpopmail" (version >= 0.2)
#   pear/Auth can optionally use package "pecl/kadm5" (version >= 0.2.3)
#
# Conditional build:
%bcond_with	FHS			# writable files in /var/lib/pear. NEEDS LOTS OF PATCHING AND CONVINCING UPSTREAM
#
%define		_class		PEAR
%define		_status		stable
%define		_pearname	%{_class}
#
%include	/usr/lib/rpm/macros.php
Summary:	PEAR Base System
Summary(pl.UTF-8):	Podstawowy system PEAR
Name:		php-pear-%{_pearname}
Version:	1.7.2
Release:	6
Epoch:		1
License:	PHP 3.0
Group:		Development/Languages/PHP
Source0:	http://pear.php.net/get/%{_pearname}-%{version}.tgz
# Source0-md5:	6614c4862f16c80eadb2d00b776d33c0
Source1:	http://pear.php.net/get/Console_Getopt-1.2.3.tgz
# Source1-md5:	d7618327f9302a7191893768982de823
Source2:	http://pear.php.net/get/Structures_Graph-1.0.2.tgz
# Source2-md5:	2664e2d024048f982e12fad4d1bfbb87
Patch0:		%{name}-sysconfdir.patch
Patch5:		%{name}-FHS.patch
URL:		http://pear.php.net/package/PEAR
BuildRequires:	/usr/bin/php
BuildRequires:	php(pcre)
BuildRequires:	php(xml)
BuildRequires:	rpm-php-pearprov >= 4.4.2-30.1
BuildRequires:	rpmbuild(macros) >= 1.375
Requires:	%{name}-core = %{epoch}:%{version}-%{release}
Requires:	/usr/bin/php
Requires:	php(pcre)
Requires:	php(xml)
Requires:	php(zlib)
Requires:	php-pear >= 4:1.0-14
Requires:	php-pear-Archive_Tar >= 1.1
Requires:	php-pear-Console_Getopt >= 1.2
Requires:	php-pear-Structures_Graph >= 1.0.2
Requires:	rpm-whiteout
Suggests:	php-pear-Net_FTP
Obsoletes:	php-pear-PEAR-Command
Obsoletes:	php-pear-PEAR-Frontend_CLI
Obsoletes:	php-pear-PEAR-OS
Conflicts:	php-pear-Archive_Tar = 1.3.0
Conflicts:	php-pear-PEAR_Frontend_Gtk < 0.4.0
Conflicts:	php-pear-PEAR_Frontend_Web < 0.5.0
Conflicts:	rpm-whiteout < 1.1
BuildArch:	noarch
BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)

# PEAR_Command_Packaging is separate package
%define		_noautoreq	'pear(PEAR/FTP.php)' 'pear(Net/FTP.php)' 'pear(XML/RPC.*)' 'pear(PEAR/Command/Packaging.php)'
%if %{with FHS}
%define		_statedir		/var/lib/pear
%define		_registrydir	%{_statedir}/registry
%define		_channelsdir	%{_statedir}/.channels
%else
%define		_statedir		%{php_pear_dir}
%define		_registrydir	%{_statedir}/.registry
%define		_channelsdir	%{_statedir}/.channels
%endif

%description
The PEAR package contains:
- the PEAR installer, for creating, distributing and installing
  packages
- the alpha-quality PEAR_Exception PHP5 error handling mechanism
- the beta-quality PEAR_ErrorStack advanced error handling mechanism
- the PEAR_Error error handling mechanism
- the OS_Guess class for retrieving info about the OS where PHP is
  running on
- the System class for quick handling of common operations with files
  and directories
- the PEAR base class packages

In PEAR status of this package is: %{_status}.

%description -l pl.UTF-8
Pakiet PEAR zawiara:
- PEAR installer do tworzenia, dystrybucji i instalowania pakietów,
- mechanizm PEAR_Exception (w fazie alpha) do obsługi błędów PHP5,
- zaawansowany mechanizm PEAR_ErrorStack (w fazie beta) do obsługi
  błędów,
- mechanizm obsługi błędów PEAR_Error,
- klasę OS_Guess do pozyskiwania informacji na temat systemu
  operacyjnego,
- klasę System do szybkiej obsługi typowych operacji na plikach i
  katalogach,
- podstawową klasy PEAR.

Ta klasa ma w PEAR status: %{_status}.

%package core
Summary:	PEAR core classes
Summary(pl.UTF-8):	Główne klasy PEAR-a
Group:		Development/Languages/PHP

%description core
This package includes PEAR core classes:
- PEAR class and PEAR_Error
- System
- OS_Guess
and classes for PHP 5:
- PEAR_ErrorStack and PEAR_Exception

%description core -l pl.UTF-8
Ten pakiet zawiera główne klasy PEAR-a:
- klasę PEAR i PEAR_Error
- System
- OS_Gueass
oraz klasy dla PHP 5:
- PEAR_ErrorStack i PEAR_Exception

%prep
%define __build_dir %{_builddir}/%{_class}-%{version}%{?_rc}
%define	__php_include_path %{__build_dir}/%{_class}-%{version}%{?_rc}:%{__build_dir}/%(basename %{SOURCE1} .tgz):%{__build_dir}/%(basename %{SOURCE2} .tgz)
%define __pear php -dmemory_limit=-1 -doutput_buffering=1 -dinclude_path="%__php_include_path" %{__build_dir}/%{_class}-%{version}%{?_rc}/scripts/pearcmd.php

%setup -q -c -n %{_pearname}-%{version} -a1 -a2
%pear_package_setup -z -D -n %{_pearname}-%{version}%{?_rc}

%patch0 -p1
%{?with_FHS:%patch5 -p1}

find '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v

%build
D=$(pwd)
pearcmd() {
	%{__pear} -c ${D}/pearrc "$@"
}
pearcmd config-set doc_dir %{_docdir} || exit
pearcmd config-set data_dir %{php_pear_dir}/data || exit
pearcmd config-set php_dir %{php_pear_dir} || exit
pearcmd config-set test_dir %{php_pear_dir}/tests || exit
pearcmd config-set sig_bin %{_bindir}/gpg || exit

%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{php_pear_dir},%{_bindir}}
%pear_package_install
cp pearrc $RPM_BUILD_ROOT%{_sysconfdir}/pear.conf

install -d $RPM_BUILD_ROOT%{_channelsdir}/.alias
install -d $RPM_BUILD_ROOT%{_registrydir}/{.channel.{__uri,pecl.php.net},channels/.alias}
touch $RPM_BUILD_ROOT%{_statedir}/.depdb{,lock}
touch $RPM_BUILD_ROOT%{_channelsdir}/{__uri,{pear,pecl}.php.net}.reg
touch $RPM_BUILD_ROOT%{_channelsdir}/.alias/{pear,pecl}.txt
touch $RPM_BUILD_ROOT%{php_pear_dir}/.filemap
touch $RPM_BUILD_ROOT%{php_pear_dir}/.lock

# -C and -q options were for php-cgi, in php-cli they're enabled by default.
%define php_exec exec /usr/bin/php -dinclude_path=%{php_pear_dir} -doutput_buffering=1
cat > $RPM_BUILD_ROOT%{_bindir}/pear <<'EOF'
#!/bin/sh
%php_exec -dopen_basedir="" -dmemory_limit=24M %{php_pear_dir}/pearcmd.php "$@"
EOF
cat > $RPM_BUILD_ROOT%{_bindir}/peardev <<'EOF'
#!/bin/sh
%php_exec -dopen_basedir="" -dmemory_limit=-1 %{php_pear_dir}/pearcmd.php "$@"
EOF
# This -dextension=pcre.so works with php-5.1, and patched php-cli >= 4:5.0.5-18.1, php4-cli >= 3:4.4.1-6.1
# -n is there because devs on #pear said this avoids locking problems when replacing in use libraries.
cat > $RPM_BUILD_ROOT%{_bindir}/pecl <<'EOF'
#!/bin/sh
%php_exec -dmemory_limit=24M -dsafe_mode=0 -n -dextension=xml.so %{php_pear_dir}/peclcmd.php "$@"
EOF
# for rpm to find interpreter
chmod +x $RPM_BUILD_ROOT%{_bindir}/*

%post
%if %{with FHS}
if [ ! -L %{php_pear_dir}/.registry ]; then
	if [ -d %{php_pear_dir}/.registry ]; then
		install -d %{_registrydir}
		mv -f %{php_pear_dir}/.registry/*.reg %{_registrydir}
		rmdir %{php_pear_dir}/.registry/.channel.* 2>/dev/null
		rmdir %{php_pear_dir}/.registry/* 2>/dev/null
		rmdir %{php_pear_dir}/.registry 2>/dev/null || mv -v %{php_pear_dir}/.registry{,.rpmsave}
	fi
	ln -s %{_registrydir} %{php_pear_dir}/.registry
fi
%endif

if [ ! -f %{php_pear_dir}/.lock ]; then
	umask 2
	%{_bindir}/pear list > /dev/null
fi

if [ -f %{_docdir}/%{name}-%{version}/optional-packages.txt ]; then
	cat %{_docdir}/%{name}-%{version}/optional-packages.txt
fi

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(644,root,root,755)
%doc install.log optional-packages.txt
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pear.conf
%attr(755,root,root) %{_bindir}/pear
%attr(755,root,root) %{_bindir}/peardev
%attr(755,root,root) %{_bindir}/pecl
%{php_pear_dir}/.registry/pear.reg
%{php_pear_dir}/pearcmd.php
%{php_pear_dir}/peclcmd.php
%{php_pear_dir}/PEAR/*
# in -core subpackage
%exclude %{php_pear_dir}/PEAR/ErrorStack.php
%exclude %{php_pear_dir}/PEAR/Exception.php
%exclude %{php_pear_dir}/PEAR/FixPHP5PEARWarnings.php

%{php_pear_dir}/data/*

%if %{with FHS}
%dir %{_statedir}
%dir %{_registrydir}
%ghost %dir %{php_pear_dir}/.registry
%endif
%dir %{_channelsdir}
%dir %{_channelsdir}/.alias

%ghost %{_channelsdir}/.alias/pear.txt
%ghost %{_channelsdir}/.alias/pecl.txt
%ghost %{_channelsdir}/pear.php.net.reg
%ghost %{_channelsdir}/pecl.php.net.reg
%ghost %{_channelsdir}/__uri.reg
%ghost %{_registrydir}/.channel.__uri
%ghost %{_registrydir}/.channel.pecl.php.net
%ghost %{_statedir}/.depdblock
%ghost %{_statedir}/.depdb
%ghost %{php_pear_dir}/.filemap
%ghost %{php_pear_dir}/.lock

%files core
%defattr(644,root,root,755)
%{php_pear_dir}/PEAR.php
%{php_pear_dir}/System.php
%{php_pear_dir}/OS
%dir %{php_pear_dir}/PEAR
%{php_pear_dir}/PEAR/ErrorStack.php
%{php_pear_dir}/PEAR/Exception.php
%{php_pear_dir}/PEAR/FixPHP5PEARWarnings.php