Please do not reply directly to this email. All additional comments should be made in the comments box of this bug.
https://bugzilla.redhat.com/show_bug.cgi?id=537587
Mamoru Tasaka mtasaka@ioa.s.u-tokyo.ac.jp changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |mtasaka@ioa.s.u-tokyo.ac.jp
--- Comment #34 from Mamoru Tasaka mtasaka@ioa.s.u-tokyo.ac.jp 2009-11-29 13:46:10 EDT --- Some notes
A. Description, etc. * Naming - Please explain why you want to name subpackages in libdspam(-foo) style. On Fedora usually subpackages are named as "dspam-libs" or "dspam-devel" or "dspam-hash" or so.
! By the way, but for "libdspam" and "libdspam-devel", the naming of libdspam-foo subpackages are definitely wrong because none of these package contains system-wide libraries. - Files under %_libdir/dspam are just plugins and not system-wide libraries. Also see below (about calling ldconfig)
- "%package -n dspam-web" can simply be "%package web"
* Dependency between subpackages https://fedoraproject.org/wiki/Packaging/Guidelines#Requiring_Base_Package - "dspam" binary rpm should have "dspam-libs = %{version}-%{release}" - "dspam-hash" should have "dspam = %{version}-%{release}" (and other subpackage should have similar dependency). ! Note that dependency between subpackages should usually be EVR (Epoch-Version-Release) specific, not just version.
* Other dependency - "Requires: pkgconfig" (for -devel subpackage) is no longer needed (for F-11/12/13) https://fedoraproject.org/wiki/PackagingDrafts/PkgconfigAutoRequires (This is still a draft, however will be accepted on 2009-12-03).
- For perl module related dependency, please use virtual provides names instead of using rpm names directly. https://fedoraproject.org/wiki/Packaging/Perl#Perl_Requires_and_Provides
B. %prep, %build, %install, %check * Timestamp - Please consider to use --------------------------------------------------------------- make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" --------------------------------------------------------------- to keep timestamps on installed files. This method usually works for Makefiles generated by recent autotools.
C. scriptlets / service * "source"ing /etc/profile - Why do you "source" /etc/profile? (note that rpm executes these scriptlets in subshells and subshell exits when those scriptlets are done)
* Calling /sbin/ldconfig - You don't have to call /sbin/ldconfig for rpms not containing system-wide libraries (i.e. needed only for dspam-libs binary rpm)
* restart service on %postun - is wrong because "restart" activates service even if the service was off before (this should be condrestart)
https://fedoraproject.org/wiki/Packaging/SysVInitScript#Initscripts_in_spec_...
* Missing Requires - Add missing "Requires(post): chkconfig" or so:
https://fedoraproject.org/wiki/Packaging/SysVInitScript#Initscripts_in_spec_...
* service-default-enabled https://fedoraproject.org/wiki/Packaging/SysVInitScript#.23_chkconfig:_line - rpmlint shows: ------------------------------------------------------------- dspam.i686: W: service-default-enabled /etc/rc.d/init.d/dspam ------------------------------------------------------------- i.e. currently dspam service is enabled by default once dspam rpm is enabled, which is usually not desided. Usually service should be off by default, i.e. change the line ------------------------------------------------------------- # chkconfig: 345 70 30 ------------------------------------------------------------- to ------------------------------------------------------------- # chkconfig: - 70 30 -------------------------------------------------------------
D. %files * %defattr - Now we usually use %defattr(-.root.root,-)
* Owner/Group/Permission --------------------------------------------------------------- -r-x--s--x 1 root root 88252 Nov 29 16:10 /usr/bin/dspam --------------------------------------------------------------- - However your spec file shows: --------------------------------------------------------------- 120 %configure \ 137 --with-dspam-owner='%{dspam_user}' \ 138 --with-dspam-group='%{dspam_group}' \ --------------------------------------------------------------- and build.log shows: --------------------------------------------------------------- 779 chown: changing ownership of `/builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/usr/bin/dspam': Operation not permitted 784 chgrp: changing group of `/builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/usr/bin/dspam': Operation not permitted 801 chown: changing ownership of `/builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/var/lib/dspam': Operation not permitted 802 chgrp: changing group of `/builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/var/lib/dspam': Operation not permitted 815 chown: changing ownership of `/builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/var/log/dspam': Operation not permitted 816 chgrp: changing group of `/builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/var/log/dspam': Operation not permitted --------------------------------------------------------------- So the owner/group of these files/directories seem wrong (in the binary rpms). Set these explicitly by %attr.
- Also build.log shows: --------------------------------------------------------------- 798 chmod "770" /builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/var/lib/dspam; \ 812 chmod "770" /builddir/build/BUILDROOT/dspam-3.9.0-0.9.BETA4.fc13.i386/var/log/dspam; \ --------------------------------------------------------------- However, currently these directories have 0755 permission (in the binary rpm). Please check if permissions are set correctly.
* %files entry unification - By the way %files entry --------------------------------------------------------------- %files %dir foo/ foo/* --------------------------------------------------------------- (where foo/ is a directory) can be unified as --------------------------------------------------------------- %files foo/ --------------------------------------------------------------- This style contains the directory foo/ itself and all files/directories/etc under foo/.
* Macros - Use %{_initddir} for %_sysconfdir/rc.d/init.d:
https://fedoraproject.org/wiki/Packaging/SysVInitScript#Initscripts_on_the_f...
* Directory ownership issue - The following directories are not owned by any packages: -------------------------------------------------------------- /usr/share/dspam/ /usr/share/dspam/sql-scripts/ --------------------------------------------------------------
E. Misc * Permission of files in srpm -------------------------------------------------------------- dspam.src: W: strange-permission dspam-logrotate 0600 dspam.src: W: strange-permission dspam-cron 0775 dspam.src: W: strange-permission dspam-init.d 0600 -------------------------------------------------------------- - Usually we request that all files in srpm should be 0644.