Need some advice on best packaging practices for a tricky package?

David Howells dhowells at redhat.com
Wed Jan 4 20:14:17 UTC 2012


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?

 (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?

 (3) The binutils installation installs some hard links and these cause rpmlint
     to issue "cross-directory-hard-link" warnings.  For instance the following
     are hardlinked together:

	/usr/cross/alpha-linux-gnu/bin/ar
	/usr/bin/alpha-linux-gnu-ar

     Should I manually turn the hardlinked variants into copies?  Or symlink
     between them?

 (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.

 (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.

And for cross-gcc:

 (6) I see "devel-file-in-non-devel-package" warnings for bits of gcc's
     internal workings (such as libgcc.a).  These are required by gcc to be
     able to work at all, so can't sensibly be split into a separate package.

     Is there a way to tell rpmlint that these belong here?

 (7) The common manpage and translation RPM triggers a "no-binary" warning as
     for cross-binutils.

 (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?

Thanks,
David


More information about the devel mailing list