summaryrefslogtreecommitdiff
path: root/php-pear-PEAR.spec
blob: f451aaf13205b747cc03798d84d6358d78278f3c (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
# 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)
#
%define		_pearname	PEAR
%define		_status		stable
%define		php_name	php%{?php_suffix}
%define		php_min_version 5.4.0
%include	/usr/lib/rpm/macros.php
Summary:	PEAR Base System
Summary(pl.UTF-8):	Podstawowy system PEAR
Name:		php-pear-%{_pearname}
Version:	1.10.1
Release:	2
Epoch:		1
License:	New BSD License
Group:		Development/Languages/PHP
Source0:	http://pear.php.net/get/%{_pearname}-%{version}.tgz
# Source0-md5:	da3f4d00c7415d39cb57848742e09894
Source1:	http://pear.php.net/get/Console_Getopt-1.4.1.tgz
# Source1-md5:	a95c86528f910562772274eefb90ca2c
Source2:	http://pear.php.net/get/Structures_Graph-1.1.1.tgz
# Source2-md5:	f1be7827074c4f51eb1af245f0f7c5c4
Patch0:		%{name}-sysconfdir.patch
Patch1:		ext-check.patch
Patch2:		%{name}-FHS.patch
URL:		http://pear.php.net/package/PEAR
BuildRequires:	%{php_name}-pcre
BuildRequires:	%{php_name}-xml
BuildRequires:	/usr/bin/php
BuildRequires:	rpm-php-pearprov >= 4.4.2-30.1
BuildRequires:	rpmbuild(macros) >= 1.654
Requires:	%{name}-core = %{epoch}:%{version}-%{release}
Requires:	/usr/bin/php
Requires:	php(core) >= %{php_min_version}
Requires:	php(pcre)
Requires:	php(xml)
Requires:	php(zlib)
Requires:	php-pear >= 4:1.2-1
Requires:	php-pear-Archive_Tar >= 1.3.11
Requires:	php-pear-Console_Getopt >= 1.2.3
Requires:	php-pear-Structures_Graph >= 1.0.4
Requires:	php-pear-XML_Util >= 1.2.3
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-PEAR_Frontend_Gtk < 0.4.0
Conflicts:	php-pear-PEAR_Frontend_Web < 0.5.0
Conflicts:	rpm-whiteout < 1.1
Conflicts:	rpmbuild(macros) < 1.563
BuildArch:	noarch
BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)

# PEAR_Command_Packaging is separate package
# PEAR_FTP is optional
%define		_noautoreq_pear PEAR/FTP.php Net/FTP.php XML/RPC.* PEAR/Command/Packaging.php

%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
Requires:	php(core) >= %{php_min_version}

%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}/%{_pearname}-%{version}%{?_rc}
%define	__php_include_path %{__build_dir}/%{_pearname}-%{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}/%{_pearname}-%{version}%{?_rc}/scripts/pearcmd.php

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

%patch0 -p1
%patch1 -p1
%{?with_FHS:%patch2 -p1}

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

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

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

# -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=128M %{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=64M -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 [ -f %{_docdir}/%{name}-%{version}/optional-packages.txt ]; then
	cat %{_docdir}/%{name}-%{version}/optional-packages.txt
fi

# need to bootstrap for non-root user
if [ ! -f %{php_pear_dir}/.lock ]; then
	umask 2
	%{_bindir}/pear list > /dev/null
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
%dir %{_sysconfdir}/pear
%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

%{php_pear_dir}/data/*

%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