On Wed, Jan 4, 2012 at 2:14 PM, David Howells <dhowells(a)redhat.com> wrote:
Hi,
I've produced a pair of specfiles that I'm aiming to get into Fedora that take
the standard Fedora binutils and gcc SRPM sources and patches and produce a
series of cross-compilation binutils and gcc RPMs for all the Linux kernel
arches that I can manage to get working.
The inclusion request BZs can be found here:
cross-binutils:
https://bugzilla.redhat.com/show_bug.cgi?id=761619
cross-gcc:
https://bugzilla.redhat.com/show_bug.cgi?id=766166
However, there are a number of warnings that rpmlint produces that I'd like
some advice on. For cross-binutils:
(1) As each set of cross-binutils manual pages is the same as every other set
(and the core set come to that), I've stuffed the base manual pages in
their own RPM and put symlinks to them from the individual arch RPMs.
However, this results in lots of "dangling-relative-symlink" warnings,
even though the targets are in another RPM passed to rpmlint.
Can I make rpmlint ignore these?
Probably not, but zero rpmlint output isn't required, although one
should do as much as possible to fix the problems.
(2) The manual pages and translation files RPM gets the warning
"no-binary" -
which is true.
Is there any way to make the spec file produce a noarch RPM at the same
time as a bunch of binary RPMs?
Within any sub-package you can specify "BuildArch: noarch" since the
same package can be installed regardless of arch.
%package doc
Summary: Documentation and man pages for %{name}
BuildArch: noarch
Requires: %{name} = %{version}-%{release}
%description
...
or something like that.
(4) The binutils installer would like to create
/usr/<target>/. I'm creating
/usr/cross/<target>/ to group all the stuff together into one dir under
/usr. However, rpmlint likes neither of these and gives a
"non-standard-dir-in-usr" warning.
Should I put the stuff somewhere else? /usr/lib/ or /usr/libexec/
perhaps? I've tried to persuade the cross-gcc to use the things in
/usr/bin/, but it really doesn't want to do that.
Not sure here. Maybe they should be /usr/lib/<target>. I as /usr/lib
and not /usr/lib{,64} because lib64 I would think should be only for
x86_64 libraries.
(5) The binutils installer creates a supplementary
"<target>-ld.bfd" that's a
hardlink to "<target>-ld". It doesn't, however, supply a manual
page for
this.
Is there a way to tell rpmlint that this is correct? Or should I just
discard the ld.bfd entirely? What is it for, anyway? I could even link
the manual page, I suppose.
If you want to keep them then symlinking the man pages would work.
And for cross-gcc:
(7) The common manpage and translation RPM triggers a "no-binary" warning as
for cross-binutils.
Same as #2 above.
(8) The package installs gpl.7.gz and similar common-looking
manpages in man7.
Is this a bad idea, just in case there's a conflict with another package
wanting to do the same?
Is there/ should there be a common GPL licence text RPM with these files
in it that RPMs can be made dependent on?
You'll have to take a look and see what's in them. You can run man and
add the path to the file (it doesn't have to be installed) to see what
they contain.
man /path/to/gpl.7.gz
I quick check didn't find any other packages providing gpl.7
# repoquery --whatprovides /usr/share/man/man7/gpl.7*
<no output>
Richard