Update of the fish package

Michael Schwendt bugs.michael at gmx.net
Mon Jul 31 22:28:19 UTC 2006


On Mon, 31 Jul 2006 21:43:34 +0200, Axel Liljencrantz wrote:

> > How about signing up as a Fedora Extras Contributor?
> 
> I could do that. I have a bugzilla account, (liljencrantz at gmail.com),
> and I belive I have performed all steps outlined on
> http://fedoraproject.org/wiki/Extras/Contributors up until 'Get
> Sponsored' except 'Make review request', but that should be
> superflous, since the package I want to become a contributor for is
> already in extras, was originally created by me, put through a review
> process, etc. Anyone willing to sponsor me?

Yes, go ahead, and I'll sponsor you.
 
> That said, the package has a kludge in it that didn't exist at the
> time of the original review. A utility shipped with fish needs various
> X headers to compile, and the name of the package providing X headers
> has changed from fc3 to fc4, and the file location has changed from
> fc4 to fc5, to work around that and make a single package that builds
> on all fedoras, I had to do a semi-ugly hack using a %define in the
> spec:
> 
> %define xinclude %( if test -d /usr/X11R6/include; then echo
> /usr/X11R6/include; else echo /usr/include; fi )
> 
> I asked on the main rpm mailing list how to do this and used the
> pointers I got, but if anyone has a better suggestion, I'd be happy to
> listen.

Since the X11 header package names have changed, you need a hack also for
the BuildRequires. And in that area it becomes dangerous, since run-time
detected "BuildRequires" package names become "Requires" of the src.rpm,
and you cannot rely on that the src.rpm is built on the target platform.

The least painful way is to create distribution specific spec files which
work only for one distribution until package names change. In Fedora
Extras CVS you have a separate branch directory for every distribution
release.

Another way is to evaluate the Fedora specific %fedora macro, which is set
inside the build system, and set it in the spec file to a good default
_if_ it is not defined:

%{!?fedora: %define fedora 6}

Your src.rpm then defaults to Fedora Core 6, and you can use conditionals
like this:

%if "%fedora" >= "5"
BuildRequires: libXfoo-devel
%define something /usr/include
%else
BuildRequires: foo-devel
%define something /usr/X11R6/include
%endif

%if "%fedora" = "3"
rm -f $RPM_BUILD_ROOT%{_bindir}/dont-want-that-file
%endif

and so on. More about this and the %{?dist} tag can be found here:

http://fedoraproject.org/wiki/Packaging/DistTag
 




More information about the fedora-extras-list mailing list