On Tue, Feb 23, 2010 at 4:09 AM, Jay Hankinson
<jeremy.hankinson(a)ingres.com> wrote:
Hello Fedora Devs,
Hello Ingres Dev,
Over the last few weeks, I spent a lot of time review and amending
the
Ingres (a highly scalable, full-featured open source RDBMS) building and
packaging process with the intention of submitting it for inclusion in
the Fedora distribution. We've had binary RPM support for a while but
was far from being LSB compliant and violated other packaging standards.
The focus of the work has largely been based on information found at:
https://fedoraproject.org/wiki/Packaging/Guidelines
https://fedoraproject.org/wiki/Packaging:ReviewGuidelines
&
http://proton.pathname.com/fhs/
You'll also want to check
http://fedoraproject.org/wiki/Packaging_tricks
and I am now at a point where I can build 3 binary RPMs
(ingres-client,
ingres-server, ingres-devel) which comply with the above guidelines and
which cause rpmlint to return very few errors.
Ugh! They're a necessary evil at times (I've done a few of my own),
but since you have the source and intend to build source-based RPMs
anyway, it's almost always better to dive straight in and simply start
building RPMs from source. On the positive side, though, it's still a
learning experience: you know it's possible, what files need to go
where, etc.
However, one major thing
that is still missing is the ability to build an SRPM for the source
tree and crafting an SPEC file for this is the next thing on my task
list. As I think this will be a fairly substantial undertaking and
something I'm not very familiar with, I'm keen to get some advice and
guidance with the project in the hopes of getting things done right (or
at least more right) the first time.
It's not really that hard. In fact, if you can change the build
process, it may be easier than making the binary RPMs. In an ideal
world, the existing configure/compile/install process should handle
all the hard work; if it doesn't, hopefully you can change it so that
it does. Otherwise, you should be able to configure/compile/install
using the existing process and move the installed files around as you
do for your existing binary RPMs.
Also, there are a few issues that
have arisen from building the binary RPMs that I would like to get
clarification (i.e. how much of a problem are they) on before starting
on the SRPM spec:
* Ingres requires that the server executable is setuid (non-root)
That shouldn't be a problem; rpmlint may complain, but
%attr(4755,ingres,ingres) /usr/bin/ingres (or whatever) in %files list
is okay. But is it really necessary? Non-root daemons are normally
started by root user anyway using initscripts and can use
/sbin/runuser to start the daemon as the appropriate user.
* Current build process uses $ORIGIN for relative RPATH linking.
This one is slightly trickier. Using rpath for system libraries is
absolutely forbidden. But packaging guidelines has information for
removing rpath, and packaging tricks link (above) suggests that rpath
may be used for internal libraries.
* Executable stack code
Maybe it doesn't need this [1].
If the best approach is "write the spec, follow the guidelines,
create a
Bugzilla issue and we'll go from there", then that is what I will do. If
I can gain experience by assisting in with the packaging of other
software for fedora then I'm happy to do this too.
That's pretty much the way to go. Fedora package review is usually an
iterative process anyway. I think its better to start early and get
feedback right from the start.
If this is the wrong list for this posting, apologies and please
direct
me to the appropriate forum.
Nope, this is absolutely the right place. Welcome!
[1]
http://community.ingres.com/forum/dba-forum/11683-fedora-12-64bit-selinux...
--
Iain.