RPM Community Forums

Mailing List Message of <rpm-devel>

Status quo on my build environment anti-convolution efforts

From: Ralf S. Engelschall <rse+rpm-devel@rpm5.org>
Date: Wed 27 Jun 2007 - 13:19:37 CEST
Message-ID: <20070627111937.GA58142@engelschall.com>
Status Quo:

The RPM build environment is really one of the most convoluted ones
I've ever seen. And I've really seen _MANY_ nasty build environments
during the last decade ;-) The RPM build environment is full of unclean
variable overrides, dozends of hacks and more. Most of the stuff seems
to be just left-overs from RPMs evolution during the last 10 years,
others were just ugly hacks for Red Hat Linux platforms, others were
done by accident, etc.

Following my personal agenda (for more details just see my BLOG
under http://trainofthoughts.org/blog/2007/06/05/rpm-relaunched/) my
ultimate goal is to get RPM 5 building in a _clean_, _straight-forward_
and _consistent_ way under _all_ major Unix platforms, so it
especially finally can be integrated also into the next version of the
cross-platform software distribution OpenPKG (which currently is still
using a hacked RPM 4.2.1). Although I've already completed most my step
5, the RPM build environment is such convoluted and spiked with special
cases that I got thrown back to step 4 ("modernize the Autoconf/Automake
based build environment").

Hence I'm still investigating how to further streamline the
RPM build environment. After many dozends of both surgical and
"sledgehammer-style" commits we already reached a state where the
"monster" named "configure.ac" is in at least in an "acceptable" state
again (all ugly hacks are at least bandaged) and the Makefile stuff is
slowly approaching a cleaner state, too.

Nevertheless, two major points still cause me headaches and hence I've
to still investigate there further. A few details follow in case you are
monitoring me ;-)

1. The "configure.ac" and "make install" code behaves slightly
   different on different platforms. This can be seen an advantage or a
   disadvantage. For me it is a disadvantage because I expect exactly
   the same results under all platforms. Hence, from my POV we at least
   need the possibility to explicitly _fixate_ the installation layout,
   etc.

   By default RPM could still use its current "do it differently
   for various platforms" approach, but IMHO we at least need the
   possibility to fine-tune at least all paths explicitly when needed.
   I'll investigate here and perhaps we need a bunch of additional
   Autoconf options. Reminds me somewhat about my efforts to the
   Apache 1.3 build environment where at the end I had to introduce a
   "config.layout" to make all parties happy. We'll see...

2. Although we finally have a sophisticated way to link against
   the third-party libraries, we still have a related problem: the
   internal copies of third-party libraries are linked differently
   against RPM. "db" is packed directly into "librpmdb.la", "lua" by
   accident is packed into "librpm.la", etc. All not consistent and
   hence confusing and on some platforms even causing problems (Jeff
   for instance got failures with the Lua linking).

   Here I've to investigate, too. I'm still not sure what the best
   approach is, but it should be clear that although the local copies of
   third-party libraries are not explicitly _installed_ (as libdb.la,
   liblua.la, etc) their _content_ has to be installed in some way or
   our librpm*.la are useless in practice. The approach of librpmdb.la
   to include libdb.la seems to be a ticky and acceptable solution
   although it has to be done for _all_ libraries and perhaps the
   third-party stuff should be grouped together (perhaps even in the new
   librpmmisc.la which is some sort of a container for remaining and
   dynamically selected stuff anyway). I'll look what I can do for us...

Watch out for more commits...
                                       Ralf S. Engelschall
                                       rse@engelschall.com
                                       www.engelschall.com
Received on Wed Jun 27 13:20:10 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.