On 06/29/2010 08:12 PM, Jay Hankinson wrote:
Hello Fedora Devs,
I'm currently going through the pre-review process for adding Ingres to
the Fedora distribution
(
https://bugzilla.redhat.com/show_bug.cgi?id=578024). I'm getting some
conflicting information for a couple of issues and I was hoping for some
clarification.
Firstly, "%defattr()". The standard says it should be
"%defattr(-.root,root-)" unless there is a good reason for it not to be.
The vast majority of the files included in the Ingres packages are owned
by the user 'ingres', which seems (IMHO) to be a good reason to use
"%defattr(-,ingres,ingres,-)". One reviewer disagreed, one agreed this
was probably OK but that I should check. What's the consensus here?
If there is a valid reason for the ingres user to own those files, then
it is correct to do so as a defattr. Just be careful. :)
Next, use of -f in the %files section. There are over 1700 files
between
the 4 RPMs and the ownership and permission for each file is maintained
by one of the build tools. The file lists are generated as part of the
build process, not stored statically in the source. In order to add the
file lists to the SPEC files, I would need to do full build of the exact
same source outside of RPM, generate the files list, add them to SPEC
file and then run the RPM build. This is a fairly large over head for
each update and makes maintenance a much larger task and much more
susceptible to human error. By using the -f flag, I can generate the
lists at build time using the existing manifest and they will always be
correct. %files -f is also used by PostgreSQL so it's not completely
outlawed. Am I OK to use it?
%files -f is permitted. You might find that things end up being more
complicated, especially if you have config files or locale files, as
your file list won't handle those properly.
I tend to be of the opinion that the file lists in the spec are unlikely
to change radically for most packages, except for major revision
changes, and the fact that you can leverage tricks like:
# This entry in the %%files list causes your package to own
# /usr/share/ingres/ and all of the files and directories below it
# as found in the buildroot.
%{_datadir}/ingres/
Not to mention * being valid in %files lists. If it were me, I'd try not
to use %files -f unless I absolutely had to.
~spot