PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » PEAR » PEAR_Command_Packaging » Bug #7129

A better template.spec

Details

Request #7129A better template.spec
Submitted2006-03-15 18:07 UTC
FromFedora at FamilleCollet dot com
Assignedtimj
StatusClosed
PackagePEAR_Command_Packaging
PHP Version5.1.2
OSFC4
Roadmaps(Not assigned)

Comments

[2006-03-15 18:07 UTC] Fedora at FamilleCollet dot com

Description:
------------
See https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=185321

I think the template.spec use by "makerpm" could be improve in somme ways.

I know PEAR_Command_Packaging is on the road but "makerpm" still usefull, at least to make the rpm of PEAR_Command_Packaging ;)

I see a lot of bugs with the comment "fixed in CVS" but i don't see any change in pear-1.4.8.

Some improvement :

1. don't remove the .xml (it's owned by the RPM)
2. use "pear config-get php_dir"
3. use "--nodeps --soft --force --register-only" on install / upgrade (because upgrading a RPM could keep the same package version)
4. use "-ignore-errors --register-only" on uninstall
5. remove .channels, .depdb, .depdblock during %install
6. don't own / but %{peardir}/* and @rpm_xml_dir@/@package@.xml instead.

Next is the patch I use on FC4 to build the RPM of php-pear-1.4.8 (some changes are already include in the official RPM in Fedora "rawhide"). I think it can apply on all distro and could be include upstream.

Hope that help a little.

Test script:
---------------
--- data/PEAR/template.spec.orig 2006-03-13 17:57:44.000000000 +0100
+++ data/PEAR/template.spec 2006-03-13 18:27:51.000000000 +0100
@@ -1,7 +1,9 @@
+%define peardir %(pear config-get php_dir 2> /dev/null || echo %{_datadir}/pear)
+
Summary: PEAR: @summary@
Name: @rpm_package@
Version: @version@
-Release: 1
+Release: @release@
License: @release_license@
Group: Development/Libraries
Source: http://@master_server@/get/@package@-%{version}.tgz
@@ -19,11 +21,11 @@
%setup -c -T
# XXX Source files location is missing here in pear cmd
pear -v -c %{buildroot}/pearrc \
- -d php_dir=%{_libdir}/php/pear \
+ -d php_dir=%{peardir} \
-d doc_dir=/docs \
-d bin_dir=%{_bindir} \
- -d data_dir=%{_libdir}/php/pear/data \
- -d test_dir=%{_libdir}/php/pear/tests \
+ -d data_dir=%{peardir}/data \
+ -d test_dir=%{peardir}/tests \
-d ext_dir=%{_libdir} \@extra_config@
-s

@@ -33,40 +35,41 @@
%postun
# if refcount = 0 then package has been removed (not upgraded)
if [ "$1" -eq "0" ]; then
- pear uninstall --nodeps -r @possible_channel@@package@
- rm @rpm_xml_dir@/@package@.xml
+ pear uninstall --nodeps --ignore-errors --register-only @possible_channel@@package@
fi


%post
# if refcount = 2 then package has been upgraded
if [ "$1" -ge "2" ]; then
- pear upgrade --nodeps -r @rpm_xml_dir@/@package@.xml
+ pear upgrade --nodeps --soft --force --register-only @rpm_xml_dir@/@package@.xml
else
- pear install --nodeps -r @rpm_xml_dir@/@package@.xml
+ pear install --nodeps --soft --force --register-only @rpm_xml_dir@/@package@.xml
fi

%install
pear -c %{buildroot}/pearrc install --nodeps -R %{buildroot} \
$RPM_SOURCE_DIR/@package@-%{version}.tgz
+
rm %{buildroot}/pearrc
-rm %{buildroot}/%{_libdir}/php/pear/.filemap
-rm %{buildroot}/%{_libdir}/php/pear/.lock
-rm -rf %{buildroot}/%{_libdir}/php/pear/.registry
+rm %{buildroot}/%{peardir}/.filemap
+rm %{buildroot}/%{peardir}/.lock
+rm -rf %{buildroot}/%{peardir}/.registry
+rm -rf %{buildroot}/%{peardir}/.channels
+rm %{buildroot}/%{peardir}/.depdb
+rm %{buildroot}/%{peardir}/.depdblock
+
if [ "@doc_files@" != "" ]; then
mv %{buildroot}/docs/@package@/* .
rm -rf %{buildroot}/docs
fi
+
mkdir -p %{buildroot}@rpm_xml_dir@
tar -xzf $RPM_SOURCE_DIR/@package@-%{version}.tgz package@package2xml@.xml
cp -p package@package2xml@.xml %{buildroot}@rpm_xml_dir@/@package@.xml

-#rm -rf %{buildroot}/*
-#pear -q install -R %{buildroot} -n package@package2xml@.xml
-#mkdir -p %{buildroot}@rpm_xml_dir@
-#cp -p package@package2xml@.xml %{buildroot}@rpm_xml_dir@/@package@.xml
-
%files
%defattr(-,root,root)
%doc @doc_files@
- /
+ %{peardir}/*
+ @rpm_xml_dir@/@package@.xml

[2006-03-15 19:40 UTC] Fedora at FamilleCollet dot com

Mini patch (as most improvement already in)

--- data/PEAR_Command_Packaging/template.spec.orig 2006-03-15 20:35:12.000000000 +0100
+++ data/PEAR_Command_Packaging/template.spec 2006-03-15 20:36:39.000000000 +0100
@@ -67,4 +67,5 @@
%files
%defattr(-,root,root)
%doc @doc_files@
-/
+%{peardir}/*
+@rpm_xml_dir@/@package@.xml

However, the previous still needed (i think) while PEAR_Command_Packaging is an "alpha" version.

[2006-03-15 23:36 UTC] timj at php dot net

We are not going to make any more fixes to the old "makerpm" code in PEAR. Although PEAR_Command_Packaging is marked as alpha, it is a direct fork of the "makerpm" code and is therefore no less stable than it. Please use PEAR_Command_Packaging. If there are any bugs in that please file as appropriate. The specific bug with ownership of / has been fixed in CVS (for PEAR_Command_Packaging) just now, so thanks for that fix. (It may be fixed more comprehensively at some point by fulling enumerating all the expected owned files)