PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

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)